朴志渊的程序,要模拟键盘输入,目标是callus95,想用SendInput向WINDOZ消息泵中加入键盘消息,VC6总提示INPUT未声明,查找发现winuser.h中有声明,查找资料后明白了:
|
如果windows中的某个函数是不向下兼容的,那就要用 #define _WIN32_WINNT 0x0500
来标明版号才能使用。 |
INPUT input[2];
memset(input, 0, sizeof(input));
input[0].type= input[1].type= INPUT_KEYBOARD;
input[0].ki.wVk = input[1].ki.wVk ='J';
input[0].ki.wScan = input[1].ki.wScan = 'J';
//接下来释放它,这一点很重要。
input[1].ki.dwFlags= KEYEVENTF_KEYUP;
input[0].ki.time = input[0].ki.time = GetTickCount();
for(int i=0;i<200;i++)
SendInput(2, input, sizeof(INPUT));
但是后来发现,callus95调用了directinput,它是驱动程序之后,消息泵之前或得控制,所以往windows消息泵里加消息是无效的,定说加入初始化钩子可以解决(游戏外挂),目前还没有找到相关资料。