c ++ отправить ENTER keyboard_event с таймером в качестве охранника - PullRequest
0 голосов
/ 05 мая 2011
std::cout<<"SendKeyBoardEvent "<<keyBEventType<<endl;
// Simulate a key press
  Sleep(200); //in

if (!strcmp(keyBEventType,"ENTER"))
{
    // ENTER key down
      keybd_event(VK_RETURN,0x9C,0,0);
    // ENTER key up
     keybd_event(VK_RETURN,0x9C, 0,0);
}

Когда я запускаю этот код из своего инструмента, я должен использовать две клавиши со стрелками вниз и и вводить или любые другие две комбинации клавиш, кроме ALT-ENTER. Я использовал KEY_UP и CONTROL. кто-нибудь видит мою проблему здесь? Я ценю вашу помощь.

РЕШЕНИЕ для getch () с таймером в качестве защитного случая FTP передан (SpecialClient) навсегда

Сначала истекает таймер, либо вводится ключ пользователя

void waitBoostSleep(int seconds) 
{ 
  boost::this_thread::sleep(boost::posix_time::seconds(seconds)); 
} 

int waitTime(int sec)
{
  waitBoostSleep(sec);
  a->SendKeyBoardEvent("ENTER");
  std::cout<<"TimerExpired after "<<sec<<endl;
  return 0;
}

int StopSicFTPRingBuffer (int TimeInSeconds)
{
boost::thread t66(&waitTime,TimeInSeconds);
if  (getch() == 13)
{
    a->SendKeyBoardEvent("ENTER");
    return 1;
}
t66.join();

return 0;
}

Из основной программы

boost::thread t77(&StopSicFTPRingBuffer,45);
system(SicFTPR.str().c_str());                      
t77.join();

Sytem будет вызывать специальный ftp-клиент, где он может быть прерван пользователем с помощью ENTER.

В случае, если кто-то, как я, нуждается в такого рода требованиях. Это отлично сработало для меня. Я установил 45 секунд, если таймер истек, то клавиша ENTER автоматически выполнит остановку передачи по FTP. Если пользователь нажал клавишу ВВОДА до истечения таймера, передача по FTP будет остановлена.

1 Ответ

4 голосов
/ 05 мая 2011

Вы не делали keyup, вы делали два нажатия клавиш. Попробуйте это:

// ENTER key down
keybd_event(VK_RETURN, 0x9C, 0, 0);

// ENTER key up
keybd_event(VK_RETURN, 0x9C, KEYEVENTF_KEYUP, 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...