键盘和鼠标模拟问题(200分)

  • 主题发起人 主题发起人 xurifeng
  • 开始时间 开始时间
X

xurifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有很多游戏对用postmessage、keybd_event等方法模拟键盘动作都不响应,但并不是不是进行模拟,因为像按键精灵,和JoyToKey这个手柄模拟键盘模拟的键盘或鼠标操作游戏都能响应,求高手富翁给与解答。
 
没人回答吗,我知道如果不用消息机制可以控制,但我用DirectInput 可以只可以读键盘信息,但不会用DirectInput模拟,
 
你的意思不太明白
 
不大明白,我感觉应该可以,你检查一下代码,或者人家游戏屏蔽了你的钩子。。。。
这个可能性不大,使用DirectInPut和使用keybd_event不冲突。
 
就是指,游戏只认物理按键,和鼠标的物理单击,用消息方式发消息进行模拟是行不通的。还有,现在的游戏都是基于DX9的,里面响应键盘鼠标,手柄是用DirectInput控制,根本不用windwo消息的,所以在这种游戏中进行模拟操作只能用对硬件层进行编程,我对硬件编程不太了解,所以想问一下懂这方面的高手,用汇编的方法写端口什么的,本人不甚感激。
 
没人会吗,看来这问题是深了点
 
是不是分不够啊,我可以加的,不能让这贴沉了
 
我今天终于解决了键盘模拟的问题,DirectInput 可以识别,游戏里自动行走的爽啊!!但就是鼠标不行,高手来搞定
 
我有许多DELPHI的小程序待开发,有兴趣给我联系:QQ:88209091
 
不会directinput,听课ing
 
DirectInput 没研究过..
procedure TMainForm.Button2Click(Sender: TObject);
var
wnd: Hwnd;
s: string;
i: integer;
begin
WinExec('notepad.exe',SW_SHOW);

wnd := FindWindow('notepad', nil);
if wnd<>0 then
begin
wnd := FindWindowEx(wnd,0,'Edit',nil);
s := 'hello, world.';
for i := 1 to length(s) do
SendMessage(wnd, WM_CHAR, ord(s), 0);
end
else ShowMessage('notepad not find');

keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('S'), MapVirtualKey(ord('S'), 0), 0, 0);
keybd_event(ord('S'), MapVirtualKey(ord('S'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);

wnd := FindWindow('#32770', nil);
if wnd<>0 then
begin
keybd_event(ord('S'), MapVirtualKey(ord('S'), 0), 0, 0);
keybd_event(ord('S'), MapVirtualKey(ord('S'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(13, MapVirtualKey(13, 0), 0, 0);
keybd_event(13, MapVirtualKey(13, 0), KEYEVENTF_KEYUP, 0);
end
else ShowMessage('Save Dialog not found');

end;
 
接受答案了.
 
后退
顶部