mfc上做了对话框,按钮里的代码如下:
void CKeyDlg::OnButton5()
{
HWND hwnd=::FindWindow(NULL,"1.txt - 记事本");
Sleep(1111);
::SendMessage( hwnd, WM_KEYDOWN,VK_CONTROL,0); //ctrl
Sleep(555);
::SendMessage( hwnd, WM_KEYDOWN,0x4f,0); // 字母 O
}
获取 一个已经打开的记事本的handle,然后摁下 ctrl 键后再摁 O ,但是记事本毫无反应,无法实现敲击键盘ctrl + O 的效果。但是同样代码,获取一个游戏的handle,然后摁下O键,就会有反应,比如摁下O键就打开了一个窗口。
为什么游戏窗口跟1.txt - 记事本会有不同呢?那该怎样模拟键盘控制 1.txt - 记事本 呢?
void CKeyDlg::OnButton5()
{
HWND hwnd=::FindWindow(NULL,"1.txt - 记事本");
Sleep(1111);
::SendMessage( hwnd, WM_KEYDOWN,VK_CONTROL,0); //ctrl
Sleep(555);
::SendMessage( hwnd, WM_KEYDOWN,0x4f,0); // 字母 O
}
获取 一个已经打开的记事本的handle,然后摁下 ctrl 键后再摁 O ,但是记事本毫无反应,无法实现敲击键盘ctrl + O 的效果。但是同样代码,获取一个游戏的handle,然后摁下O键,就会有反应,比如摁下O键就打开了一个窗口。
为什么游戏窗口跟1.txt - 记事本会有不同呢?那该怎样模拟键盘控制 1.txt - 记事本 呢?
{
HWND hwnd=::FindWindow(NULL,"1.txt - 记事本");
hwnd=::GetWindow(hwnd,GW_CHILD);::PostMessage( hwnd, WM_KEYDOWN,VK_CONTROL,0); //ctrl
Sleep(555);
::PostMessage( hwnd, WM_KEYDOWN,0x4f,0); // 字母 O
}
{
HWND hwnd=::FindWindow(NULL,"1.txt - 记事本");
hwnd=::GetWindow(hwnd,GW_CHILD);::PostMessage( hwnd, WM_KEYDOWN,VK_CONTROL,0); //ctrl
Sleep(555);
::PostMessage( hwnd, WM_KEYDOWN,0x4f,0); // 字母 O
}