Эмуляция клавиатурного ввода для Dos окна
От: Штурман  
Дата: 13.01.06 06:20
Оценка:
В поиск не посылать — перечитал все посты по схожим темам

Суть проблемы: имеется досовская прога, ей надо послать комбинацию клавиш, среди которых есть клавиши управления курсором. В них то все и дело — они игнорируются, хотя остальные клавиши обрабатываются корректно.
О подходе к реализации:
имеется следующий скриптик
var gShell=new ActiveXObject("WScript.Shell");
gShell.run("prog.exe",1,false);  // вызов управляемой проги
gShell.run("playkey.exe keystroke.txt",0,true); // вызов управляющей проги

playkey:

int main(int argc, char* argv[])
{
    BYTE vk,sc;
    FILE *fin=fopen(argv[1],"r");
    SleepEx(5000,false);
    fread(&vk,sizeof(vk),1,fin);
    fread(&sc,sizeof(sc),1,fin);
    while (!feof(fin))
    {
       keybd_event(vk,sc,0,0);
       keybd_event(vk,sc,KEYEVENTF_KEYUP,0);
       SleepEx(500,false);
       fread(&vk,sizeof(vk),1,fin);
       fread(&sc,sizeof(sc),1,fin);
    }
   if (fin!=NULL)
     fclose(fin);
   return 0;
}

Пробовал из скрипта посылать туже комбинацию:
var gShell=new ActiveXObject("WScript.Shell");
gShell.run("klmgr.exe",1,false);
WScript.Sleep(5000);
gShell.SendKeys("{DOWN}{DOWN}{ENTER}c");

Эффект тот же. Кто-нибудь может посоветовать как добиться обработки сэмулированных нажатий для Дос-прилодений?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.