Developer Programmer
شنبه 29 آذر 1382, 22:30 عصر
باسلام خدمت همه عزیزان و عرض خسته نباشید
من می خوام با یه کد API وقتی ماوس بر روی فرمی اشاره کرد تمام button های آن شناسایی بشند اگر hidden بودند visible بشند و اگر disable بودند enable بشند
کد من تا این حد تونست پیش بره ولی خوب کار نمی کنه
procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(lpPoint);
winHandle:=WindowFromPoint(lpPoint);
edtHandle.Text:=IntToStr(winHandle) ;
if winHandle<>0 then { if found }
begin
GetClassName(winHandle,O,SizeOf(O)); edtClassName.Text:=StrPAS(O);
GetWindowText(winHandle,O,SizeOf(O)); edtCaption.Text:=StrPAS(O);
Child:=GetWindow(winHandle,GW_Child); {where is your child ? }
while Child<>0 do { Wow! no child ? }
begin
GetClassName(Child,C,SizeOf(C));
S:=StrPAS(C);
Temp1:=UpperCase(O); Temp2:=UpperCase(C);
if (Pos('BUTTON',Temp1)>0 ) Then
begin
EnableWindow(winHandle,True);
SendMessage(winHandle,WM_ShowWindow or WM_Activate or WM_Enable,0,0);
end;
if ( Pos('BUTTON',Temp2)>0 ) then
begin
EnableWindow(Child,True);
SendMessage(Child,WM_ShowWindow or WM_Activate or WM_Enable,0,0);
end;
Child := GetWindow(Child, GW_HWNDNEXT);
end; {while child<>0}
end; {if winHandle<>0}
end;
اینهم نوع متغیرهای بکار رفته
private
lpPoint:TPoint;
Child,winHandle:hwnd;
C:Array[0..127] of Char;
O:Array[0..127] of Char;
S:String;
Temp1:String;
Temp2:String;
winHandle هندل اون پنجره ای است که ماوس روشه
child هندل پچه
lpPoint مکان ماوس
c,o هم برای ذخیره نام کلاس پنجره بکار می ره
Temp1,Temp2 هم برای اونکه کلمه button رو به صورت BUTTON تبدیل کنم (برای اطمینان بیشتر)
:roll:
من می خوام با یه کد API وقتی ماوس بر روی فرمی اشاره کرد تمام button های آن شناسایی بشند اگر hidden بودند visible بشند و اگر disable بودند enable بشند
کد من تا این حد تونست پیش بره ولی خوب کار نمی کنه
procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(lpPoint);
winHandle:=WindowFromPoint(lpPoint);
edtHandle.Text:=IntToStr(winHandle) ;
if winHandle<>0 then { if found }
begin
GetClassName(winHandle,O,SizeOf(O)); edtClassName.Text:=StrPAS(O);
GetWindowText(winHandle,O,SizeOf(O)); edtCaption.Text:=StrPAS(O);
Child:=GetWindow(winHandle,GW_Child); {where is your child ? }
while Child<>0 do { Wow! no child ? }
begin
GetClassName(Child,C,SizeOf(C));
S:=StrPAS(C);
Temp1:=UpperCase(O); Temp2:=UpperCase(C);
if (Pos('BUTTON',Temp1)>0 ) Then
begin
EnableWindow(winHandle,True);
SendMessage(winHandle,WM_ShowWindow or WM_Activate or WM_Enable,0,0);
end;
if ( Pos('BUTTON',Temp2)>0 ) then
begin
EnableWindow(Child,True);
SendMessage(Child,WM_ShowWindow or WM_Activate or WM_Enable,0,0);
end;
Child := GetWindow(Child, GW_HWNDNEXT);
end; {while child<>0}
end; {if winHandle<>0}
end;
اینهم نوع متغیرهای بکار رفته
private
lpPoint:TPoint;
Child,winHandle:hwnd;
C:Array[0..127] of Char;
O:Array[0..127] of Char;
S:String;
Temp1:String;
Temp2:String;
winHandle هندل اون پنجره ای است که ماوس روشه
child هندل پچه
lpPoint مکان ماوس
c,o هم برای ذخیره نام کلاس پنجره بکار می ره
Temp1,Temp2 هم برای اونکه کلمه button رو به صورت BUTTON تبدیل کنم (برای اطمینان بیشتر)
:roll: