发送密钥失败 - 窗口处于活动状态

时间:2018-04-11 07:28:24

标签: c# sendkeys active-window inputsimulator

我使用InputSimulator向活动的Windows发送击键(ctrl + c) 为了实现这一点,我最小化了我自己的表单并设置了我希望使用WIN32 API和SetForegroundWindow将密钥发送到前台的应用程序。这一切都适用于大多数应用程序。 但是,我正在使用Windows Mail应用程序来解决问题。 在发送keycombo之前,GetForegroundwindow向我保证邮件应用程序确实是活动的。但是不执行复制命令。如果我在发送命令之前等待1-2秒(使用Thread.sleep)它可以工作。有没有人知道如何解决这个问题?

让我的表单无效

this.Hide();
this.WindowState = FormWindowState.Minimized; //this seem to be the most reliable way

设置前景和按键

if (foreGroundHandle != null && foreGroundHandle != IntPtr.Zero)
SetForegroundWindow(foreGroundHandle);

new InputSimulator().Keyboard.ModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.VK_C);

0 个答案:

没有答案