尝试使用InputSimulator来模拟键盘输入。除了使用sim.Keyboard.ModifiedKeyStroke
来模拟ASCII字符的输入之外,其他一切都正常。
我尝试使用以下两种不同的方法模拟Alt down + numpad1 + numpad4 + numpad7 + Alt up
:
sim.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LMENU, new[] { VirtualKeyCode.NUMPAD1, VirtualKeyCode.NUMPAD4, VirtualKeyCode.NUMPAD7});
和
sim.Keyboard.KeyDown(VirtualKeyCode.LMENU);
sim.Keyboard.KeyDown(VirtualKeyCode.NUMPAD1);
sim.Keyboard.KeyUp(VirtualKeyCode.NUMPAD1);
sim.Keyboard.KeyDown(VirtualKeyCode.NUMPAD4);
sim.Keyboard.KeyUp(VirtualKeyCode.NUMPAD4);
sim.Keyboard.KeyDown(VirtualKeyCode.NUMPAD7);
sim.Keyboard.KeyUp(VirtualKeyCode.NUMPAD7);
sim.Keyboard.KeyUp(VirtualKeyCode.LMENU);
我试着在控制台中打印出按键状态,真实按键和模拟按键都给出了相同的结果:
LMenu key down
NumPad1 key down
NumPad1 key up
NumPad4 key down
NumPad4 key up
NumPad7 key down
NumPad7 key up
LMenu key up
我想图书馆应该有些问题:issue 1。有人能帮我吗?还有其他方法吗?
更新1
我发现“Alt+Tab”在Win8中也不起作用。我想这可能是同一个原因,所以我尝试先修复这个问题。结果发现它们是两个不同的问题:
1.要使“Alt+Tab”工作,我需要在“app.manifest”中设置uiAccess=true
,并使用测试数字签名对“.exe”文件进行签名;
1.模拟ASCII字符的输入仍然不起作用。
3条答案
按热度按时间8xiog9wr1#
将
keybd_event
与MapVirtualKey
一起使用,或者如果使用SendInput
,则添加到输入的扫描MapVirtualKey
。这是一个两者都有例子:
对于
InputSimulator
,您需要使用SendInput
或keybd_event
与MapVirtualKey
来编写自己的类,以处理输入...huus2vyu2#
1.0.4版本有一个ModifiedKeyStroke(IEnumerable modifierKeyCodes,IEnumerable keyCodes)方法,它应该允许以下操作:
0lvr5msh3#