Как послать нажатия клавиш DOS-скому приложению
От: Moro  
Дата: 20.09.02 11:49
Оценка:
Привет всем!

Есть DOS-ское приложение запущеное под WinNT. Надо в определенное время послать ему, допустим, нажатие клавиши F1 и после этого ENTER. Я пробовал использовать keybd_event. Для виндового консольного приложения (например Far) все работает отлично, а для DOS-ского (например DosNavigator) — ни в дугу. Как обойти эту пролему?
Re: Как послать нажатия клавиш DOS-скому приложению
От: sasha Грузия  
Дата: 20.09.02 13:47
Оценка:
Здравствуйте Moro, Вы писали:

M>Привет всем!


M>Есть DOS-ское приложение запущеное под WinNT. Надо в определенное время послать ему, допустим, нажатие клавиши F1 и после этого ENTER. Я пробовал использовать keybd_event. Для виндового консольного приложения (например Far) все работает отлично, а для DOS-ского (например DosNavigator) — ни в дугу. Как обойти эту пролему?


Например вот так:
int ret = PostThreadMessage(thread_id, WM_KEYDOWN, VK_F1, ...


А получить thread_id можно вот так:
STARTUPINFO si;
::ZeroMemory (&si, sizeof (STARTUPINFO));
si.cb = sizeof (STARTUPINFO);
PROCESS_INFORMATION pi;
 
CreateProcess (NULL, "my_dos_program.exe", NULL, NULL, FALSE,
        NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);

thread_id = pi.dwThreadId;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.