PDA

View Full Version : دو تابع



lord_viper
چهارشنبه 04 خرداد 1384, 07:05 صبح
با سلام
کارتابع getwindowوsetwindowچیه اگه میشه با مثال توزیح بدین
با تشکر

Ali_Hashemi
چهارشنبه 04 خرداد 1384, 11:28 صبح
تابع GetWindow در حقیقت این کار رو انجام میده که
Handel یک پنجره اصلی رو بهش میدیم و یک پارامتر دیگه.
با این تابع میتونیم handle پنجره های عضو اون پنجره اصلی رو پیدا کنیم
که توسط چندین حالت که توسط پارامتر دوم تعیین میشه ، میتونیم به handle پنجره های مورد نظر
دسترسی پیدا کنیم.
مقادیر قابل قبول برای این پارامتر دوم رو میتونید در SDK Help خود دلفی ملاحظه کنید.
البته توجه کنید که یک Button که روی فرم قرار دارد نیز یک پنجره است و میتوان Handle آنرا با این تابع بدست آورد.

البته من نمیدونم چرا باید از این تابع استفاده کرد . چون من هر نیازی در این مورد داشتم با توابع
FindWindow و FindWindowEx بدست آوردم.

در مورد تابع SetWindow هم تا اونجا که اطلاعات ناقص بنده قد میده همچین تابعی هنوز توسط میکروسافت
ساخته نشده. البته توابع زیادی وجود داره که با Setwindow شروع میشه ولی تابعی به نام Setwindow نه.

البته میتونه چند تا دلیل داشته باشه ، یا نیازی به این تابع نبوده ، یا ساخته شده من خبر ندارم ، یا نتونستن دیگه
چه میدونم والا.

اگر نیاز خاصی داری که میخوای با این توابع انجام بدی بگو تا راهنماییت کنم.
ولی خدا شاهده همین قدر بیشتر اطلاعات نداشتم :sorry:

vcldeveloper
پنج شنبه 05 خرداد 1384, 03:24 صبح
البته من نمیدونم چرا باید از این تابع استفاده کرد . چون من هر نیازی در این مورد داشتم با توابع
FindWindow و FindWindowEx بدست آوردم.
FindWindow فقط هندل پنجره های parent رو برمیگردونه و در بین پنجره های Child جستجو نمی کنه.
مثال: پیدا کردن پنجره Internet Explorer و Minimize کردن آن.


var
hIE : HWND;
begin
hIE := FindWindow('IEFrame',nil);
if hIE <> 0 then
SendMessage(hIE,WM_SYSCOMMAND,SC_MINIMIZE,0);
end;

FindWindowEx پنجره های Child یک پنجره Parent رو جستجو میکنه.
مثال: پیدا کردن دکمه ایی با عنوان Button1 در برنامه و مخفی کردن آن.


var
h : HWND;
begin
h := FindWindowEx(Handle,0,nil,'Button1',);
if h > 0 then
showWindow(h,SW_Hide);
end;

GetWindow دو پارامتر میگیره، پارامتر اول (hWnd) هندل یک پنجره است و پارامتر دوم (uCmd) یک خصوصیت (یا رابطه). این تابع پنجره ایی رو پیدا میکنه که با پنجره hWnd رابطه uCmd داشته باشه.
مثال: لیست کردن نام پنجره های parent باز در یک ListBox.


var
hNext : HWND;
strText : string; //array[0..255] of char;
begin
SetLength(strText,255);
hNext := GetWindow(Application.Handle,GW_HWNDFIRST);
lbx1.Clear;
while hNext > 0 do
begin
GetWindowText(hNext,pAnsiChar(strText),Length(strT ext));
ListBox1.Items.Add(strText);
hNext := GetWindow(hNext,GW_HWNDNEXT);
end;
end;


درباره هر سه تابع بالا می تونید در Windows SDK، که با دلفی نصب میشه، اطلاعات کاملی بدست بیارید.

lord_viper
پنج شنبه 05 خرداد 1384, 07:09 صبح
با تشکر از اقای کشاورز
چطور میشه هندل یکtextboxرو در یک پنجره childبدست اورد؟
ایایکwebpageکه درweb browserبازه عناصر داخلhandleدارن؟

vcldeveloper
جمعه 06 خرداد 1384, 03:29 صبح
چطور میشه هندل یکtextboxرو در یک پنجره childبدست اورد؟
اول به این نکته توجه داشته باشید که TextBox خودش یک پنجره child محسوب میشه.
برای بدست آوردن handle یک کنترل می تونید ابتدا هندل پنجره parent رو با استفاده از تابع FindWindow بدست بیارید، بعد handle پنجره parent و نام کلاس ( و یا نام کنترل) رو به تابع FindWindowEx ارسال کنید.


ایایکwebpageکه درweb browserبازه عناصر داخلhandleدارن؟
تاجایی که من میدونم، خیر.

lord_viper
جمعه 06 خرداد 1384, 03:43 صبح
کار تابع getwindowlogonچیه ؟
با تشکر