alibek писал(а):А чем не устраивает стандартная MS?
Ну хочется человеку своё написать
Помниться, писал я что-то похожее месяца три назад... Сорсы только погибли
По памяти:
1. Для начала находим активное окно ф-цией
GetForegroundWindow.
2. Дальше нужно узнать на каком именно окне установлен фокус. Но чтобы это сделать, для начала нужно вызвать ф-цию
AttachThreadInput. ID чужого процесса получаем ф-цией
GetWindowThreadProcessId, в качестве hwnd подставляя результат
GetForegroundWindow. ID своего процесса получаем с помощью
GetCurrentThreadId.
3. Теперь, собственно, узнаём хэндл окна с фокусом. Ф-ция
GetFocus.
4. Всё. Теперь можно посылать этому окну мессаги
WM_CHAR,
WM_KEYDOWN и
WM_KEYUP с помощью ф-ции
SendMessage.
Там, в принципе, есть свои нюансы, но разобраться можно. В Api-guide есть объявления всех ф-ций, кроме AttachThreadInput:
- Код: Выделить всё
Private Declare Function AttachThreadInput Lib "user32" (ByVal idAttach As Long, ByVal idAttachTo As Long, fAttach As Boolean) As Boolean
В качестве первого парметра передаёшь ID чужого процесса, второго - ID своего процесса, третьего - true, если хочешь подключиться, false - если отключиться.
Удачи!