我想在沒有實際點擊鼠標的情況下模擬Cocoa應用程序上的鼠標點擊,並且*不必知道在當前鼠標位置的情況下哪個視圖應該響應點擊。在NSWindow中模擬鼠標點擊
我想Cocoa框架來處理搞清楚哪些觀點應該作出迴應,所以我不認爲一個的NSView對象上的方法調用就是我要找的。也就是說,我想我需要一個方法調用,最終調用這個方法。
我現在有通過點擊鼠標在特定的全局位置,使用CGEventCreateMouseEvent和CGEventPost這個工作。但是,這種技術實際上點擊了鼠標。所以這是有效的,但我並不完全滿意這種行爲。例如,如果我在調用CGEventPost時按住鍵盤上的某個鍵,則該鍵將被包裝到事件中。另外,如果我將另一個進程的窗口移動到我想要模擬點擊的窗口上,那麼CGEventPost方法將在該窗口中單擊鼠標。也就是說,它在全球範圍內行動,跨越流程。我想要一種可以在單個窗口上工作的技術。 NSWindow對象上可能有?
我在Cocoa文檔中讀到「鼠標事件由NSWindow對象分派給發生事件的NSView對象」。
好的。所以我想知道調用的方法。在窗口中調用這個方法,然後讓框架指定哪個NSView調用給定當前鼠標位置。
任何幫助將不勝感激。我剛剛開始學習Cocoa框架,所以我很抱歉如果有任何術語/動詞不完全正確。
[' - [NSApplication sendEvent:]'](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSApplication_Class/Reference/Reference.html)實質上是輸入事件的入口點;從那裏(通常)傳遞到窗口。也就是說,你試圖在「模擬」和「實際」點擊鼠標之間的區別並不清楚。您試圖避免的「CGEvent」過程有哪些功能? (例如,物理鼠標設備中沒有移動按鈕的伺服器,這就是我所稱的「實際」點擊。) –
已編輯。 Thx爲您的評論。 –
@JoshCaswell這看起來很不錯,但我無法實現。我會發布代碼,但是它使用Objective C橋編寫在Clozure中,因此解析可能會有點麻煩。我找不到任何使用sendEvent模擬鼠標點擊的例子。你有機會嗎? –