как отправить нажатия клавиш только одной программе?

мне было трудно найти что-нибудь полезное, но я обнаружил, что кто-то спросил, как это сделать (Как отправлять нажатия клавиш в окно?)

если используется код, и я могу установить текст блокнота, но я хочу отправлять ключи, но задаю текст, я хочу отправлять ключи, такие как keybd_event, я использовал его, но я хочу, чтобы он отправлялся только одной программе.

keybd_event('a', NULL, NULL, NULL);  
keybd_event('a', NULL, KEYEVENTF_KEYUP, NULL); 

как я мог это сделать?


person blood    schedule 23.02.2010    source источник
comment
Я добавил тег win32 / windows. Если Windows не является ОС, пожалуйста, отредактируйте заново, чтобы обновить правильную.   -  person    schedule 23.02.2010
comment
(1) Нужно ли вам вообще иметь возможность отправлять сообщения в какую-либо программу или вы имеете в виду определенный набор программ? (2) Вы смотрели AutoHotKey? Это автономное приложение (без интерфейса C ++), но оно часто используется для выполнения такого рода задач.   -  person jdigital    schedule 23.02.2010
comment
придурок: xD tyvm за добавление тега извините, я не подумал об этом. jdigital: просто программа, которую я выбираю ручкой. autoHotkey я не смотрел, но должен быть какой-то способ отправить его только одной программе. Моя программа - это просто окно консоли, меня не волнует окно, потому что оно ничего не делает, я мог бы просто скрыть его, но idk.   -  person blood    schedule 23.02.2010
comment
Принимает ли программа ввод по стандартному вводу? Если это так, то вместо отправки нажатий клавиш вы можете передавать свои данные по конвейеру.   -  person jdigital    schedule 23.02.2010


Ответы (1)


Похоже, вы пытаетесь сделать окно фокусом перед отправкой ключей. Посмотрите на FindWindow и _ 2_.

Примерно так должно работать:

SetForegroundWindow(FindWindow(0,"Untitled - Notepad"));
keybd_event(....);

Если вместо этого вы говорите об изменении текста окна напрямую, посмотрите GetWindow для навигации по дереву окон и SendMessage с параметром WM_SETTEXT .

person Blindy    schedule 25.02.2010