我已经取得开始按钮的句柄:
HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
WND hButtonBegin = GetWindow(hWnd, GW_CHILD);
证明是对的.
然后由该句柄调用getwindowlong()取得按钮的回凋函数
用setwindowlong()设置新的回调函数,在新的回调用函数中对click
消息进行控制,遇到wm_lbuttondown 就弹出一对话框要求输入密码.
但实现起来总是控制不了?
为什么? 如何做?
HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
WND hButtonBegin = GetWindow(hWnd, GW_CHILD);
证明是对的.
然后由该句柄调用getwindowlong()取得按钮的回凋函数
用setwindowlong()设置新的回调函数,在新的回调用函数中对click
消息进行控制,遇到wm_lbuttondown 就弹出一对话框要求输入密码.
但实现起来总是控制不了?
为什么? 如何做?
1.初始化的时候 OriginalClientProc = SetWindowLong(hCtl,GWL_WNDPROC,(long)MyProc);
void MyProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_LBUTTONDOWN:
//...........
}
return CallWindowProc((FARPROC OriginalClientProc,hCtl,uMsg,uMsg.WParam,uMsg.LParam);
}
2.在窗体关闭时
SetWindowLong(hCtl,GWL_WNDPROC,(long)OriginalClientProc);
说明:
hCtl是你的控件的句柄;
MyProc是控件新的窗口过程函数,在里面进行你的操作;
处理后,最后再调用它原来的窗口过程函数。