我可以成功地将任何单个密钥消息发送到应用程序,但我不知道如何发送密钥组合(如Ctrl+ F12,Shift+ F1,Ctrl+ R等...)
试过这样做:
SendMessage(handle, WM_KEYDOWN, Keys.Control, 0);
SendMessage(handle, WM_KEYDOWN, Keys.F12, 0);
SendMessage(handle, WM_KEYUP, Keys.F12, 0);
SendMessage(handle, WM_KEYUP, Keys.Control, 0);
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用(应用程序的行为只是F12按下,而不是Ctrl+ F12).
任何想法如何使这项工作?
您可能会发现使用SendInput (此处的文档)可以更好地工作.你需要从C#调用它,例如这里.可以提供数据的阵列,键向下和向上,并适当地设置其它消息参数,例如是否向左或向右Ctrl/ Shift/ Alt压制.
您也可以使用SendKeys该类(此处的文档).这使您可以按名称指定键,例如,{^F12}为Ctrl+ F12.
编辑:OP现在说他需要将输入发送到最小化的应用程序而不激活它们.这是不可能以任何方式可靠地进行,包括使用专门的硬件.我从事自动化工作.这是不可能的.OP需要使用FindWindow/ SetForegroundWindow切换目标应用程序,然后他可以切换回他的应用程序.