1
我在OSX上的C++中使用ApplicationServices和CGEventPost,並試圖查看是否可以按住某個鍵但它不工作。如何在OSX上使用C++在C++中使用CGEventPost?
這裏是我使用的方法:
void postKeyboardEvent(int keyCode, bool keyUp = false)
{
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
CGEventRef keyEvent = CGEventCreateKeyboardEvent(source, (CGKeyCode) keyCode, !keyUp);
CGEventPost(kCGAnnotatedSessionEventTap, keyEvent);
CFRelease(keyEvent);
CFRelease(source);
}
這是我正在測試它:
postKeyboardEvent(kVK_Command);
postKeyboardEvent(kVK_Tab);
postKeyboardEvent(kVK_Tab, true);
postKeyboardEvent(kVK_Command, true);
按照我的理解這應該切換我到另一個窗口,而是它只是「放開「Command鍵並鍵入Tab字符。
重要:我不想使用類似以下內容:
CGEventSetFlags(keyEvent, kCGEventFlagMaskCommand);
我有一個需要發送鍵下和鍵起的命令「串行鏈」 而無需知道哪些鍵碼是修飾鍵或多少標記事件。
有沒有辦法做到這一點?
你有沒有試過你的代碼。它不起作用 – user2159978
這是舊的,蘋果公司可能已經改變了一些事情,我在一段時間內沒有用過它,所以我不知道它是否可以在最新的OSX上運行。 –