امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 2
  • 1
  • 2
  • 3
  • 4
  • 5
هندل های یک پنجره
نویسنده پیام
spase آفلاین
تازه وارد

ارسال‌ها: 11
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۹۳

تشکرها : 4
( 5 تشکر در 5 ارسال )
ارسال: #1
Question  هندل های یک پنجره
سلام
یه سوال داشتن من دارم یه برنامه با کمک هندل واسه یاهو می نویسم ولی به مشکل برخوردم

به عنوان مثال توی صفحه لاگین یاهو دو تا تکست باکس هست که اولی یوزنیم میشه و دومی پسورد من با استفاده از findWindow و findwindowex دارم یوزر نیم رو با هندل وارد می کنم ولی چون جفتشون تکس باکسن و class جفتشون رو یکی داره نشون میده پسورد به جای اینکه توی تکست باکس پسورد وارد بشه بازم توی همون تکست باکس یوزرنیم وارد میشه . کسی می تونه کمکم کنه که چه جوری هندل تکس باکس دومی رو بدست بیارم یا اینکه کل هندل های اون پنجره رو پیدا کنم؟ . مرسی

فقط ممنون میشم در حد مبتدی توضیح بدید
۲۱-اردیبهشت-۱۳۹۳, ۰۹:۰۶:۰۲
ارسال‌ها
پاسخ
تشکر شده توسط : aleas
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #2
RE: هندل های یک پنجره
از رو classname مربوط به parent اون Editbox میتونی تشخیص بدی کدوم به کدوم هست
مثلا parent مربوط به password تو یاهو 7-8 بودش #32770

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۲۱-اردیبهشت-۱۳۹۳, ۱۷:۱۵:۵۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, spase, aleas
spase آفلاین
تازه وارد

ارسال‌ها: 11
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۹۳

تشکرها : 4
( 5 تشکر در 5 ارسال )
ارسال: #3
RE: هندل های یک پنجره
ممنون از پاسختون ولی هنوز نتونستم مشکلم رو حل کنم ممنون میشم اگه بتونین بصورت کد همین چیزی رو که گفتید رو بهم توضیح بدید خودم دارم تست می کنم ولی بازم به مشکل بر می خورم
۲۲-اردیبهشت-۱۳۹۳, ۰۸:۵۲:۱۰
ارسال‌ها
پاسخ
تشکر شده توسط : aleas
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #4
RE: هندل های یک پنجره
این کدی هست که زمان یاهو 8-9 برای تست نوشته بودم

کد:
var
handle:HWND;
classname:array[0..255]of Char;
begin
GetClassName(h,classname,256);
if classname='Edit'then
begin
  handle:=GetParent(h);
  GetClassName(handle,classname,256);
  if classname='#32770'then
  begin
  if SendMessage(h,EM_GETPASSWORDCHAR,0,0)>0 then
  begin
  PostMessage(h,EM_SETPASSWORDCHAR,0,0);
  Sleep(10);
  SendMessage(h,WM_GETTEXT,256,Integer(@classname));
  list.Add(classname);
  Sleep(10);
  PostMessage(h,EM_SETPASSWORDCHAR,integer('*'),0);
  end
  else
  begin
    SendMessage(h,WM_GETTEXT,256,Integer(@classname));
    list.Add(classname);
  end;    
  end;  
end;

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۲۲-اردیبهشت-۱۳۹۳, ۰۹:۲۸:۵۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, spase, veyskarami, aleas, The.Ghost
spase آفلاین
تازه وارد

ارسال‌ها: 11
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۹۳

تشکرها : 4
( 5 تشکر در 5 ارسال )
ارسال: #5
RE: هندل های یک پنجره
مرسی ولی بازم به اون چیزی که می خواسنم نرسیدم من مشکلم اینه که نمی تونم توی اون پنجره هندل های مختلف رو پیدا کنم واسه اینکه classnameشون یکیه caption هم ندارن ، واسه همین یا هندل رو پیدا نمیکنه یا فقط هندل editor اول رو پیدا میکنه

الان من فقط میخوام هندل های بعدی رو هم که classnameشون با اولی یکی هست رو پیدا کنم ؟

ممنون
۲۴-اردیبهشت-۱۳۹۳, ۲۰:۱۵:۵۷
ارسال‌ها
پاسخ
تشکر شده توسط : aleas
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #6
RE: هندل های یک پنجره
باید از تابع enumchildproc و enumchildwindow استفاده کنید

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۲۵-اردیبهشت-۱۳۹۳, ۱۸:۱۹:۳۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, spase, veyskarami, aleas
spase آفلاین
تازه وارد

ارسال‌ها: 11
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۹۳

تشکرها : 4
( 5 تشکر در 5 ارسال )
ارسال: #7
RE: هندل های یک پنجره
مرسی
میشه در مورد enumchildwindow و enumWindows بیشتر توضیح بدید و چه جوری باید ازش استفاده کنم ؟
۲۶-اردیبهشت-۱۳۹۳, ۲۱:۵۱:۲۲
ارسال‌ها
پاسخ
تشکر شده توسط : aleas
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #8
RE: هندل های یک پنجره
در اینجور مواقع از تابع GetWindow استفاده میشه و پارامترهای زیر:
کد:
1-GW_HWNDNEXT
پنجره بعد از هندلی که میگیره.
کد:
2-GW_HWNDPREV
پنجره قبل از هندلی که میگیره
کد:
3-GW_HWNDFIRST
آخرین پنجره در parent مشترک از هندلی که میگیره.
کد:
4-GW_HWNDLAST
اولین پنجره در parent مشترک از هندلی که میگیره.

ساختار تابع هم به شکل زیر هستش:
کد:
function GetWindow(hWnd: HWND; uCmd: UINT): HWND;

hwnd: هندل ورودی که نسبت به اون هندل پنجره های قبل یا بعد رو انتخاب میکنی.
uCmd: آرگومنت مورد نظر برای انتخاب پنجره قبلی یا بعدی شما که در بالا توضیح دادم.

مثال:
کد:
var
PwTxt:Hwnd;
begin
PwTxt:=GetWindow(YHandle,GW_HWNDNEXT);
end;

پیروز باشید.

۱۷-مرداد-۱۳۹۳, ۱۲:۱۴:۲۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : aleas, babyy, WhiteNoise, helma, lord_viper, Di Di, The.Ghost
veyskarami غایب
مدیر بازنشسته
*****

ارسال‌ها: 861
موضوع‌ها: 82
تاریخ عضویت: مرداد ۱۳۸۴

تشکرها : 477
( 2479 تشکر در 611 ارسال )
ارسال: #9
RE: هندل های یک پنجره
اگر متوجه نشدی فانکشن زیر هندل ادیت باکس پسورد یاهو رو بهت میده
کد:
function GetYahooPwHandle():Hwnd;
var
PwHandle:Hwnd;
begin
PwHandle:=0;
Result:=0;
PwHandle:=FindWindow('YahooBuddyMain',nil);
PwHandle:=FindWindowEx(PwHandle,0,'#32770','YLoginWnd');
PwHandle:=FindWindowEx(PwHandle,0,'Edit',nil);
PwHandle := GetWindow(PwHandle, GW_HWNDNEXT);
PwHandle := GetWindow(PwHandle, GW_HWNDNEXT);
Result:=PwHandle;
end;

پیروز باشید.

۱۸-مرداد-۱۳۹۳, ۱۴:۴۸:۲۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise, babyy, lord_viper, The.Ghost


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مخفی کردن هندل The.Ghost 1 1,849 ۲۰-مرداد-۱۳۹۴, ۲۲:۵۸:۲۹
آخرین ارسال: veyskarami
Question بدست آوردن زبان نوشتار(input language) پنجره فعال ویندوز The.Ghost 1 2,169 ۲۴-خرداد-۱۳۹۲, ۲۳:۲۹:۴۶
آخرین ارسال: veyskarami
Question [سوال] کار با هندل پنجره ها در دلفی sajjad1390 3 4,712 ۰۵-دى-۱۳۹۰, ۱۱:۰۳:۰۲
آخرین ارسال: lord_viper
myBB بدست آوردن دستگيره (Handle) موضوعات در پنجره ها P.Bayat 1 3,106 ۰۷-اسفند-۱۳۸۷, ۱۳:۵۹:۵۰
آخرین ارسال: lord_viper

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS