|
|
C++ Builder 5 模拟键盘按键 自动输入文字 |
出处:电脑爱好者 责任编辑:zwg |
[04-2-14 9:29]
| 作者:周世攀
|
AttachThreadInput()函数的原形如下:
BOOL AttachThreadInput(
DWORD idAttach, // 需要附加的线程ID
DWORD idAttachTo, // 附加到的线程ID
BOOL fAttach // true 附加 false 取消
);
函数使用的过程大致如下:
HWND hWnd;
hWnd = GetForegroundWindow(); // 得到当前窗口
if (hWnd == Form1->Handle) return; // 排除程序本身的窗口
DWORD FormThreadID = GetCurrentThreadId(); // 本程序的线程ID
// 当前窗口的线程ID
DWORD CWndThreadID = GetWindowThreadProcessId(hWnd, NULL);
// 附加输入线程
AttachThreadInput(CWndThreadID, FormThreadID, true);
// 得到当前键盘光标所在的窗口
hWnd = GetFocus();
// 取消附加的输入线程
AttachThreadInput(CWndThreadID, FormThreadID, false);
hWnd就是当前键盘光标所在的窗口句柄。另外,经过测试发现,在Windows2000系统下发送字符消息(WM_CHAR)时,如果字符是一个汉字,则该字符对应的虚拟键盘码高位不为0,这样得到的字符就不正确。解决办法是做一个“与”运算: ch & 0xFF就可以了。
相关文章:
个性凸现的动画 特技效果
木马是如何编写的(三)
木马是如何编写的(二)
木马是如何编写的(一)
| | | -
| |