2011-03-02 73 views
3

之間的區別,我需要發送擊鍵焦點應用,和我第一次搜查,我CGEventCreateKeyboardEvent瞭解CGPostKeyboardEvent和CGEventCreateKeyboardEvent

CGEventRef eventA = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)0, true); 
CFRelease(eventA); 

這編譯,但什麼也沒做,但在這個過程試圖找出它我發現這...

CGPostKeyboardEvent((CGCharCode)'a', (CGKeyCode)0, true); 

...它的工作。爲什麼?從我迄今爲止讀到的關於此的信息,他們應該完成相同的事情,但CGPostKeyboardEvent已棄用。 (請原諒我,如果我忽略了我應該明顯包括的細節 - 我正在努力尋找我平常的深度,試圖幫助同事進行課外項目,並且只是在學習中學習一些東西)

回答

3

你的問題是,你沒有發佈事件,一旦你創建它。因此,下面的代碼將按左箭頭,然後釋放它:

CGEventRef a = CGEventCreateKeyboardEvent(NULL, 123, true); 
CGEventRef b = CGEventCreateKeyboardEvent(NULL, 123, false); 
CGEventPost(kCGHIDEventTap, a); 
CGEventPost(kCGHIDEventTap, b); 
+0

啊哈!這個項目早已結束,但很高興聽到正確的答案。我不知道我是否有機會驗證這一點,但我強烈懷疑你是正確的,因此我將其標記爲已接受;謝謝。 – RwwL 2011-05-14 03:08:10

+0

很高興爲您提供幫助。我在看類似的問題,谷歌搜索出現了你的問題。我得到它的工作,所以我想我應該在這裏發佈。 – 2011-05-14 05:40:03