Отправить Ctrl + Key в стороннее приложение - PullRequest
4 голосов
/ 08 декабря 2011

Я использую стороннее приложение, которое экспортирует файл. Приложение использует горячую клавишу ( Ctrl + E ) в качестве ярлыка для этой функции.

Как я могу отправить эту комбинацию клавиш из моего приложения Delphi XE третьему лицу?

Ответы [ 2 ]

5 голосов
/ 08 декабря 2011

Вот пример, который показывает, как отправить Ctrl + E в приложение переднего плана, используя SendInput :

var
  Inputs: array [0..3] of TInput;
begin
  // press
  Inputs[0].Itype := INPUT_KEYBOARD;
  Inputs[0].ki.wVk := VK_CONTROL;
  Inputs[0].ki.dwFlags := 0;

  Inputs[1].Itype := INPUT_KEYBOARD;
  Inputs[1].ki.wVk := Ord('E');
  Inputs[1].ki.dwFlags := 0;

  // release
  Inputs[2].Itype := INPUT_KEYBOARD;
  Inputs[2].ki.wVk := Ord('E');
  Inputs[2].ki.dwFlags := KEYEVENTF_KEYUP;

  Inputs[3].Itype := INPUT_KEYBOARD;
  Inputs[3].ki.wVk := VK_CONTROL;
  Inputs[3].ki.dwFlags := KEYEVENTF_KEYUP;

  SendInput(Length(Inputs), Inputs[0], SizeOf(TInput));
end;

Iтакже используйте слегка модифицированную версию SendKeys.pas от Стива Сеймура.У него были некоторые проблемы с различными раскладками клавиатуры, и это с 1999 года. Не удалось найти его нигде в сети.

3 голосов
/ 08 декабря 2011

См. Вопрос: Отправить ключи в тебброузер? Там есть ответ (Мэтт Хендель), который ссылается на статью с примером использования модуля SendKeys и получения дескриптора целевого окна.

...