如何让用MFC设计的程序控制外部的程序,如控制外部程序的一些按钮

如何让用MFC设计的程序控制外部的程序,如控制外部程序的一些按钮,第1张

用CWnd::Findwindow这个函数获取外部程序的窗口指针、然后调用CWnd::FindwindowEx获取该窗口上的子控件咐乎(按钮)的窗口指针,然后就可以用这个指针控瞎简罩制这个按钮了,比如磨闹SetWindowtext

安装鼠标钩子

      用到的函数有:

SetWindowsHookExA()       //设置钩子

GetModuleHandle()           //获取模块句柄

UnhookWindowsHookEx()    //关闭钩子

SetDlgItemText()              //设置控件文本

用到的结构体有:

KBDLLHOOKSTRUCT

步骤一:在XXXXXDlg.cpp顶端橡源肢定义

#define WH_KEYBOARD_LL     13

typedef struct tagKBDLLHOOKSTRUCT {

DWORD   vkCode

DWORD   scanCode

DWORD   flags

DWORD   time

DWORD   梁世dwExtraInfo

} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT

HHOOK 键盘

HWND hwnd

LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)

{

//这些就是HOOK代码

LRESULT lResult = CallNextHookEx(键盘, nCode, wParam, lParam)

//PMSG pmsg = (PMSG)lParam

//这时候pmsg->message就是消息

CString I

I.Format(_T("键盘状态:%d"),wParam)

SetDlgItemText(hwnd,IDC_EDIT3,I)

KBDLLHOOKSTRUCT* 指针=(KBDLLHOOKSTRUCT*)lParam

I.Format(_T("键代码:%d"),指针->vkCode)

SetDlgItemText(hwnd,IDC_EDIT4,I)

return FALSE

}

步骤二:代码写:

hwnd=m_hWnd

//键盘事件的响应步骤是:

//键盘驱动->系统键盘消息处理->当前进程消息处理->当前窗口消息处理

//WH_KEYBOARD_LL插在系统键盘消息处理前

     //而WH_KEYBOARD则插在当前进程消息处理前.

//因此如果你WH_KEYBOARD hook正确而WH_KEYBOARD_LL hook得不到想要得结裂姿果,那么唯一可能就是你把一些不该过滤的键盘消息给过滤掉了。

键盘 = SetWindowsHookExA(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle(NULL),NULL)

步骤三:在类视图XXXXXXDlg->消息->WM_DESTROY写:

UnhookWindowsHookEx(键盘)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12390636.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存