Im using a 3rd Party Application that exports a file. The application uses a hot key (Ctrl + E) as a shortcut for this function.
How can I send this key combination from my Delphi XE application to the 3rd Party one?
Here is an example which shows how to send Ctrl+E to the foreground application using 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 also use a slightly modified version of SendKeys.pas from Steve Seymour. It had some problems with different keyboard layouts and is from 1999. Couldn't find it anywhere in the net.
See question: Send keys to a twebbrowser? There is an answer there (Matt Handel) that links to an article with an example of using the SendKeys unit, and obtaining the handle of the target window.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With