2017-08-06 227 views
2

我知道AutoHotKey,但我想爲自己製作自己的程序。使其每10秒按一次F5。我搜索了互聯網和堆棧溢出,但沒有找到解決方案如何模擬按鍵

有沒有辦法做到這一點在C或不?我正在使用和定位Windows 8.1

+0

只使用標準C?那就不要。使用操作系統功能?好的。但既然你不告訴我們你的目標是什麼操作系統,那真的不可能回答。請花些時間[閱讀如何提出問題](http://stackoverflow.com/help/how-to-ask),然後編輯您的問題以添加更多詳細信息和標籤。 –

+0

現在編輯問題。謝謝。我正在使用Windows 8.1並針對相同的系統。 –

+0

['keybd_event'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v = vs.85).aspx)或['SendInput'](https:// msdn .microsoft.com/en-us/library/ms646310(VS.85).aspx) – Ryan

回答

0

您想要使用SendInput函數。以下代碼每隔10秒向Windows發送一次密鑰輸入事件對。

#include <windows.h> 

static const int delay_ms = 10000; 

void sendF5(
    UINT uTimerID, 
    UINT uMsg, 
    DWORD_PTR dwUser, 
    DWORD_PTR dw1, 
    DWORD_PTR dw2) { 

    INPUT input[2] = {0}; 
    input[0].type = input[1].type = 
     INPUT_KEYBOARD; 
    input[0].ki.wVk = 
     input[1].ki.wVk = VK_F5; 
    input[1].ki.dwFlags = 
     KEYEVENTF_KEYUP; 
    input[0].ki.dwExtraInfo = 
     input[1].ki.dwExtraInfo = 
     GetMessageExtraInfo(); 

    SendInput(2, input, sizeof(INPUT)); 
} 

int WinMain(
    HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    PWSTR pCmdLine, 
    int nCmdShow) { 

    timeSetEvent(delay_ms, 1000, 
     sendF5, 0, TIME_PERIODIC); 
    return 0; 
}