我使用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);