Не удается отправить ключи - окно активно

Я посылаю нажатие клавиши (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);

0 ответов

Другие вопросы по тегам