Как отправить ярлык в другое приложение на c ++ в MS Windows? - PullRequest
1 голос
/ 15 августа 2010

У меня вопрос, как отправить ярлык из c ++ в другое приложение.Скажем, например, что блокнот открыт, и я хочу отправить им ярлык, например, CTRL + P, или более сложный ярлык, например, CTRL + SHIFT + HOME или ALT + F4. Я нашел много хороших руководств, в которых объясняется, как отправить один ключ.как «A» или «ALT», но я не нашел, как отправить его вместе.

Ответы [ 3 ]

3 голосов
/ 15 августа 2010

Вы можете использовать SendInput() или keybd_event() для отправки ключей в текущее окно.SendInput() может быть лучшим выбором, поскольку он не будет перемежать события клавиатуры с теми, которые образуют фактическую клавиатуру.

// send CTRL+SHIFT+HOME
INPUT input[6];
memset(input, 0, sizeof(INPUT)*6);
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_CONTROL;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = VK_SHIFT;
input[2].type = INPUT_KEYBOARD;
input[2].ki.wVk = VK_HOME;
input[3].type = INPUT_KEYBOARD;
input[3].ki.wVk = VK_HOME;
input[3].ki.dwFlags = KEYEVENTF_KEYUP;
input[4].type = INPUT_KEYBOARD;
input[4].ki.wVk = VK_SHIFT;
input[4].ki.dwFlags = KEYEVENTF_KEYUP;
input[5].type = INPUT_KEYBOARD;
input[5].ki.wVk = VK_CONTROL;
input[5].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(6, input, sizeof(INPUT));
0 голосов
/ 16 августа 2010

Этот тип «сочетаний клавиш» обычно называют ускорителями клавиш в Microsoft Windows. Начальная страница MSDN

0 голосов
/ 15 августа 2010

Вы можете отправить несколько WM_KEYDOWN, а затем несколько WM_KEYUP, чтобы вы могли попробовать отправить DOWN ctrl, shift, home, UP home, shift, ctrl - это должно сработать.

...