如何捕获桌面得到焦点和失去焦点事件???(100分)

  • 主题发起人 主题发起人 qaz1znz
  • 开始时间 开始时间
桌面?  windows的??  看能不能用Screen对象的 Activeform获得。。
 
是windows桌面,我用WM_CBT钩子方法没有实现,你说的方法我没用过:(,可以给几句代码吗
 
应该用HOOK(DLL中)拦截
 
是用钩子(HOOK)啊。可我没有得到我要的消息,下面是我的代码,那位帮忙看看:<br>function EnabledesktopHook(h: HWND): Boolean; stdcall;<br>var wnd:HWND;<br>begin<br> if SData.hHk &lt;&gt; 0 then begin<br> &nbsp; Result := false;<br> &nbsp; exit;<br> end;<br> SData.Wnd := h;<br> SData.recvl := RegisterWindowMessage('tsdf&%$#klhjds)*(dkfgj');<br> SData.recvr := RegisterWindowMessage('tguw,em%^$fnj*^d)*bfgj');<br> Wnd := GetDesktopWindow;<br> Wnd := FindWindowEx(Wnd, 0, 'Progman', nil);<br> SData.hHk := SetWindowsHookEx(WH_CBT,DesktopHookProc,0{hInstance},Wnd);<br> Result:=SData.hHk&lt;&gt;0;<br>end;<br><br>function DesktopHookProc(nCode: integer; wParam, lParam: longint): LRESULT; stdcall;<br>begin<br> &nbsp;if nCode &lt;0 then begin<br> &nbsp; &nbsp;Result:=CallNextHookEx(SData.hHk,nCode,wParam,lParam);<br> &nbsp; &nbsp;exit;<br> &nbsp;end;<br> &nbsp;if (nCode=HC_ACTION) then<br> &nbsp; &nbsp;if wParam=WM_SETFOCUS then begin//获得焦点<br> &nbsp; &nbsp; &nbsp;SendMessage(SData.Wnd,SData.recvl,0,0);<br> &nbsp; &nbsp;end;<br> &nbsp;Result:=0;<br>end;
 
后退
顶部