模拟键盘鼠标事件有两种方法。
Sendmessage或postmessage
Keybd_event、mouse_event
电子更强大。如果指定hwnd,则可以在后台发送,后者只能发送前台信息。也就是说,窗户必须排在最前面。
对于keybd_event,mouse_event,可以用一个简单的实例说明一下:
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
keybd_event(k,0,0,0);
keybd_event(k,0,KEYEVENTF_KEYUP,0);
模拟按钮单击事件
如有以下对话框:
编辑框关连了一个CString变量m-var。按钮定义了一个单击事件:
void CMyDlg::OnButton1()
{
UpdateData(1);
m_var = "simulation of Mouse single-click event!";
UpdateData(0);
}
在对话框类函数的OnInitDialog事件加入如下代码:
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
HWND hWnddlg = AfxGetMainWnd()->m_hWnd; //主窗口句柄
HWND hwnd2=::GetDlgItem(hWnddlg,IDC_BUTTON1);//子窗口(或控件)句柄
::SendMessage(hwnd2,WM_LBUTTONDOWN,0,0);
::SendMessage(hwnd2,WM_LBUTTONUP,0,0);
……
}
对话框运行后,即可在编辑框中输入以下文字:simulation of Mouse single-click event!
自动向打开的记事本文件中输入一个字母
//需要先打开记事本
int main()
{
HWND hWnd = ::FindWindowW(L"Notepad",NULL); //搜索记事本程序主窗口句柄
HWND hWndc = ::GetWindow(hWnd,GW_CHILD); //获得记事本客户区句柄(该窗口是记事本主窗口的子窗口,即那个白色的可编辑区域) 。
if(hWndc) //如果获得了该句柄
::SendMessage(hWndc,WM_CHAR,'keyboard input!',NULL);//发送按键消息
system("pause");
return 0;
}
上面控制台程序运行后,即可在打开的词本中添加"keyboard input!"文本。
-End-
1.文章《如何在对话框中捕获键盘组合按键消息》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《如何在对话框中捕获键盘组合按键消息》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好