求救~~谁知道获取鼠标所在的那个控件的句柄呀,不是窗口句柄哦~~(50分)

  • 主题发起人 主题发起人 cy820202
  • 开始时间 开始时间
C

cy820202

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在想要一个这样的api函数,知道的请教教我呀,谢谢
 
先取得鼠标所在的窗口句柄,<br>WindowFromPoint好像可以取得窗口的句柄,<br>GetCursorPos取鼠标的坐标<br>然后用ChildWindowFromPoint取得控件的句柄,<br>你自己试试啰!
 
同意楼上,不过可能涉及到坐标变换,<br>ChildWindowsFromPointEx坐标是以父窗体客户区参照,
 
csdn上好像有一个问题类似,如果获取一个窗体上的Edit中的text。
 
可以利用鼠标hook得到。pMOUSEHOOKSTRUCT(lparam)^<br>具体程序请留email
 
张大侠的作品: &nbsp; http://yckxzjj.efile.com.cn/ &nbsp;的 &nbsp;handleviewer.rar
 
procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br>&nbsp; rPos: TPoint;<br>begin<br>&nbsp; if boolean(GetCursorPos(rPos)) then<br>&nbsp; &nbsp; &nbsp; GetMousePosHwndAndClassName(rPos);<br>end;<br><br>procedure TForm1.GetMousePosHwndAndClassName(Sender: TPoint);<br>var<br>&nbsp; hWnd: THandle;<br>&nbsp; aName: array [0..255] of char;<br>begin<br>&nbsp; hWnd := WindowFromPoint(Sender);<br>&nbsp; NameLB.Caption := ’Handle : &nbsp;’ + IntToStr(hWnd);<br><br>&nbsp; if boolean(GetClassName(hWnd, aName, 256)) then<br>&nbsp; &nbsp; &nbsp; ClassLB.Caption := ’ClassName : &nbsp;’ + string(aName)<br>&nbsp; else<br><br>&nbsp; &nbsp;ClassLB.Caption := ’ClassName : &nbsp;not found’;<br>end;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>&nbsp; Form1.FormStyle := fsStayOnTop;<br>&nbsp; Timer1.Interval := 50;<br>end;<br>给分行吗 &nbsp;等用~~~
 
&nbsp;或者用鼠标钩子也可以。。。
 
后退
顶部