怎样模拟键盘输入到别的应用程序窗口?
我想实现模拟键盘输入到别的应用程序的Edit窗口。
已经获得了窗口句柄,并且使用::SendMessage(hWnd,WM_CHAR, 'A', 0);可以发送字符A到窗口。
但是发送字符串怎么做?
CString info = "欢迎";
for(int i=0; i < info.GetLength(); ++i)
{
char ch = info.GetAt(i);
::SendMessage(hWnd,WM_CHAR, (WPARAM)ch,0);
}
这样的代码段不能成功。
如果要模拟输入Ctrl+A和Ctrl+C又怎么实现呢?
如下的程序段没有效果。
::SendMessage(hWnd, WM_KEYDOWN , VK_CONTROL, 0);
::SendMessage(hWnd, WM_KEYDOWN, 'A', 0);
::SendMessage(hWnd, WM_KEYUP , 'A', 0);
::SendMessage(hWnd, WM_KEYUP, VK_CONTROL, 0);
::SendMessage(hWnd, WM_KEYDOWN , VK_CONTROL, 0);
::SendMessage(hWnd, WM_KEYDOWN, 'C', 0);
::SendMessage(hWnd, WM_KEYUP , 'C', 0);
::SendMessage(hWnd, WM_KEYUP, VK_CONTROL, 0);
不能获取其中的数据
,使用
::SendMessage(hWnd, WM_GETTEXT, sizeof(szBuffer) / sizeof(TCHAR), (LPARAM)szBuffer);
在记事本中可以获得文本,但在该应用程序中无法获得文本(不是密码框)。
高手请指教。