2011-05-05 7 views
-2
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()에 대한C++ send keyboard_event with Guard with Guard

솔루션 가드의 경우 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은 사용자가 ENTER 리턴으로 인터럽트 할 수있는 특별한 ftp 클라이언트를 호출합니다.

나 같은 사람은 이런 종류의 요구 사항이 필요합니다. 그것은 나를 위해 완벽하게 작동했습니다. 타이머를 만료 한 후 45 초를 설정했으면 ENTER 키가 자동으로 실행되어 FTP 전송을 중지합니다. 타이머가 만료되기 전에 사용자가 ENTER 키를 먼저 누르면 FTP 전송이 중지됩니다.

+0

'keyBEventType'과'keybd_event()'의 정의는 무엇입니까? 나는 당신의 코드 어디에도 보이지 않는다. – genpfault

+0

@genpfault'keybd_event'는 표준 Win32 함수 –

+1

입니다. 여러분이 묻는 것은 명확하지 않습니다. –

답변

4

키 입력을 수행하지 않고 두 가지 주요 작업을 수행하고있었습니다. 이것을 시도하십시오 :

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

// ENTER key up 
keybd_event(VK_RETURN, 0x9C, KEYEVENTF_KEYUP, 0); 
+0

답변 해 주셔서 감사합니다, Cris. 나는 전에 그것을 시도했지만 다른 func의 논리는 엉망이다. 감사. 그것은 지금 일했습니다. 'int StopSicFTPRingBuffer (int TimeInSeconds) { \t int i = 0; \t while (i SendKeyBoardEvent ("입력"); \t \t \t 중단; \t \t} \t} \t return 0; }'i == 10 또는 getch() == 13 중 하나가 true이면 Enter 키를 보낼 것입니다. 그러나 항상 키를 기다리는 getch()를 붙입니다. – AndrewS

+0

getch()를 실행하는 방법이 있습니까? = 13), 카운터는 계속 계산합니까? 어떤 조언. 감사합니다. – AndrewS

+0

나는 당신이 무엇을 요구하고 있는지 전혀 모른다. –