Не удается отправить ключи - окно активно
Я посылаю нажатие клавиши (ctrl+c) в активную Windows, используя InputSimulator. Для достижения этой цели я минимизирую свою собственную форму и устанавливаю приложение, которое хочу отправить ключ на передний план, используя WIN32 API и SetForegroundWindow. Теперь все это работает на большинстве приложений. Я, однако, допускаю проблему с приложением Windows Mail, например. Перед отправкой ключевого слова 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);