View Full Version : سوال: بدست آوردن هندل برنامه با دادن آدرس فایل
loo30fer
دوشنبه 30 خرداد 1390, 13:21 عصر
با سلام
من میخواستم بدونم آدرس فایل اجراییمون رو که البته در حال اجراست رو بدم و هندلش رو بگیرم مثلا بدین شکل :
var
Handle: THandle;
begin
GetHandleFilePath('C:\File.exe',Handle);
end;
آیا تابعی برای اینکار وجود داره ؟ ممنون میشم راهنمایی کنید. با تشکر
Mask
دوشنبه 30 خرداد 1390, 13:27 عصر
منظورتون هندل کجاست؟
Felony
دوشنبه 30 خرداد 1390, 13:34 عصر
هندل پروسه مربوط به برنامه رو بگیرید ؟ میتونید از کامپوننت ProcessInfo استفاده کنید .
BORHAN TEC
دوشنبه 30 خرداد 1390, 14:28 عصر
آیا منظورتان از Handle همان Process ID مربوط به برنامه است؟؟!!!! :متفکر:
loo30fer
دوشنبه 30 خرداد 1390, 14:52 عصر
دوست عزیز من میخوام تو یک برنامه که دستوری برای چک کردن فوکوس و امکان گرفتن Hanlde رو نداره با دادن آدرس اون فایل هندلش رو بگیرم چون دیگه نمیتونم مانند برنامه نویسی بدین شکل عمل کنم Form1.Hanldle چون یکجورایی میخوام چک کنم آیا برنامه من در حال فوکوس هست یا برنامه من و پنجره های دیگه
Felony
دوشنبه 30 خرداد 1390, 14:58 عصر
دوست عزیز من میخوام تو یک برنامه که دستوری برای چک کردن فوکوس و امکان گرفتن Hanlde رو نداره
چرا نداره ؟ برنامه ای که فرم داشته باشه میشه هندلش رو گرفت ، برنامه ای هم که فرم نداشته باشه پس فوکوس براش معنایی نداره !
loo30fer
دوشنبه 30 خرداد 1390, 15:07 عصر
چرا نداره ؟ برنامه ای که فرم داشته باشه میشه هندلش رو گرفت ، برنامه ای هم که فرم نداشته باشه پس فوکوس براش معنایی نداره !
من میخوام تو بیلدر استفاده کنم همونطور که میدونید تو بیلدر همچین دستوری برای اینکار وجود نداره.
Felony
دوشنبه 30 خرداد 1390, 15:12 عصر
اگه از همون اول میگفتی ما رو الاف نمیکردی ...
خود SDK بیلدر یک متغییر با نام hMMBWindow داره که حاوی هندل پنجره برنامه هست ، از اون استفاده کنید .
loo30fer
دوشنبه 30 خرداد 1390, 15:35 عصر
اگه از همون اول میگفتی ما رو الاف نمیکردی ...خوب گفتم بهتره سوالم رو اینطوری نپرسم چون خیال میکنید میخوام پلاگینش رو برام درست کنید یا سورس آماده میخوام البته درست بعضی مواقع از پس بعضی مشکلات تو دلفی بر نمیام و لطف میکنید کد آماده میذارین که واقعا ازتون ممنونم و باعث شرمندگی. انشا الله روزی حرفه ای بشم و دیگه به شما زحمت ندم و اگه مشکلی تو دلفی داشتین من براتون حل کنم و کد بنویسم . :لبخند:
خود SDK بیلدر یک متغییر با نام hMMBWindow داره که حاوی هندل پنجره برنامه هست ، از اون استفاده کنید . ممنون از راهنماییتون . راستی یک سوال دیگرم داشتم چرا کلاس بیلدر و دانلود منیجر یکیه . 32770# چون قبلا به ذهنم رسید از کلاس استفاده کنم ولی دیدم امکان اشتباه زیاده.
Felony
دوشنبه 30 خرداد 1390, 16:21 عصر
ممنون از راهنماییتون . راستی یک سوال دیگرم داشتم چرا کلاس بیلدر و دانلود منیجر یکیه . 32770# چون قبلا به ذهنم رسید از کلاس استفاده کنم ولی دیدم امکان اشتباه زیاده.
اون کلاس 32770# صرفا برای Download Manager یا Multimedia Builder نیست ؛ پنجره خیلی از برنامه های دیگه ( مثلا خود Task Manager ویندوز ) از این کلاس مشتق شدن ، اون 32770# یک کلاس پایه برای Dialog Box ها هست ؛ توضیحات کاملتر رو میتونید تو این لینک (http://msdn.microsoft.com/en-us/library/ms633574(v=vs.85).aspx) ببینید .
loo30fer
یک شنبه 09 مرداد 1390, 18:37 عصر
راستش الان فقط میخوام با دادن آدرس فایل هندل فرم اون برنامه رو بگیرم چطور میتونم اینکار رو بکنم خیلی جستجو کردم چیزی نیافتم؟؟ یک دنیا ممنون میشم راهنمایی کنید
vcldeveloper
دوشنبه 10 مرداد 1390, 16:05 عصر
اگر از ProcessInfo استفاده کنید، با کدی مثل این می تونید هندل پنجره اصلی یک برنامه در حال اجرا را بر اساس مسیر فایل اجرایی برنامه به دست بیارید:
function FindWindowByFileName2(const FileName: string): THandle;
var
Window : TWindowItem;
AppInfo1 : TAppInfo;
begin
Result := 0;
AppInfo1 := TAppInfo.Create(nil);
try
for Window in AppInfo1.RunningApps do
begin
if SameText(FileName, Window.AppPath) then
Exit(Window.Handle);
end;
finally
AppInfo1.Free;
end;
end;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.