我想做一个劲乐团的外挂程序,所有需要程序模拟键盘输入第一次我使用了keybd_event('A',0,0,0);进游戏,发现毫无反映,倒是聊天的时候会自动跳A,但打的时候没反映第二次使用INPUT input[2];
memset(input,0,sizeof(INPUT));input[0].type = INPUT_KEYBOARD;
input[1].type = INPUT_KEYBOARD;input[0].ki.wVk = 'A';input[1].ki.wVk = 'A';
input[1].ki.dwFlags = KEYEVENTF_KEYUP;::SendInput(2, &input[0], sizeof(INPUT));
结果和上次一样!!!第3次使用:获得鼠标所在位置的窗口HANDEL 然后发送消息CPoint pt;
GetCursorPos(&pt);
HWND hWnd;
hWnd=::WindowFromPoint(pt);::SendMessage(hWnd,WM_CHAR ,'A',0);
结果还是不行
现在我认为是窗口句丙问题,用FindWindow(NULL,"????") 因为不知道他窗口标题所以没法查
而且可能还有子窗口,请教这该怎么办?
memset(input,0,sizeof(INPUT));input[0].type = INPUT_KEYBOARD;
input[1].type = INPUT_KEYBOARD;input[0].ki.wVk = 'A';input[1].ki.wVk = 'A';
input[1].ki.dwFlags = KEYEVENTF_KEYUP;::SendInput(2, &input[0], sizeof(INPUT));
结果和上次一样!!!第3次使用:获得鼠标所在位置的窗口HANDEL 然后发送消息CPoint pt;
GetCursorPos(&pt);
HWND hWnd;
hWnd=::WindowFromPoint(pt);::SendMessage(hWnd,WM_CHAR ,'A',0);
结果还是不行
现在我认为是窗口句丙问题,用FindWindow(NULL,"????") 因为不知道他窗口标题所以没法查
而且可能还有子窗口,请教这该怎么办?
解决方案 »
- 哪有在Windows底部的状态栏开一个输入框的资料,谢谢!里面有图片,大家看下,谢谢!
- 一个奇怪的问题。急切的等待解决!
- *** C2039: 'CoInitializeEx' : is not a member of '`global namespace'' ****
- ado vc 添加记录时 idispatch error #3105错误问题
- 两个问题. win32的
- 如何复制和删除文件?
- 如何对Execl文件进行操作,进行读写数据。
- 一个关于DirectSound的问题,急!
- 想知道wma格式的详细资料,最好有中文的。不详细的也有分,up也有分。
- 关于监控windows下的文件信息
- 请问SetSel(-1, -1)应该怎样理解, 当SetSel()函数中参数都为负数的时候意味着什么?
- 请问怎么把BYTE转为char*?
只是keybd_event('A',0,0,0);这样的用法不对。后面几个参数不能随便置0的。
因为只有最普通的编辑控件才仅用到字符编码,多数游戏都忽略字符编码,使用扫描码或其它东东来识别按键。所以你要多看看MSDN,把它的参数搞明白了,一定要填正确,不能省略或乱填。SendMessage 是很麻烦的,通常这样做都不能成功,因为windows从内核到应用是很复杂的。你不了解目标程序的底层实现,乱用SendMeesage多半会导致失败。
sendInput 的INPUT结构差了很多参数都没填,给他们用0值是不会成功的。
先用Spy++看究竟哪个子窗口,才是接受输入的,然后用FindWindowEx或遍历子窗口得到
keybd_event('A',MapVirtualKey('A',0),0,0);
keybd_event('A',MapVirtualKey('A',0),KEYEVENTF_KEYUP,0);函数MapVirtualKey把键值转成扫描码
UINT MapVirtualKey(UINT uCode, // virtual-key code or scan code
UINT uMapType // translation to perform
);还是老样子,我试在其他游戏,比如魔兽里 都能启动快界键就是劲乐团不行