2016-04-02 8 views
4

私のアプリでApplication Switcherをシミュレートしたいと思っています。私はおそらくCGEventがそうすることができると思います。ココア:CGEventのコマンド+タブをシミュレート

CGEventに関するいくつかの基本的な情報を習得した後、キープレスCommand + Tabをシミュレートすることができます。しかし、アプリケーションスイッチャーのウィンドウはちょうど点滅し、直ちに別のアプリケーションに切り替えます。

私はhold Commandキーを押し、Tabキーを押してアプリを選択する必要があることを認識しています。だから、ここに私のコード:

// Hold the Command key 
let source = CGEventSourceCreate(.HIDSystemState) 
let event = CGEventCreateKeyboardEvent(source, 55 as CGKeyCode, true) 
CGEventSetIntegerValueField(event, .KeyboardEventAutorepeat, 1) 
CGEventPost(.CGHIDEventTap, event) 

// Press Tab key once 
let source = CGEventSourceCreate(.HIDSystemState) 
let keyDown = CGEventCreateKeyboardEvent(source, 48 as CGKeyCode, true) 
CGEventSetFlags(keyDown, .MaskCommand) 
CGEventPost(.CGHIDEventTap, keyDown) 
let keyUp = CGEventCreateKeyboardEvent(source, 48 as CGKeyCode, false) 
CGEventPost(.CGHIDEventTap, keyUp) 

しかし、それは動作しません!何か案は?ありがとう!

+0

Command-Tabを手動で入力すると、Application Switcherウィンドウがただちに点滅し、直ちに別のアプリに切り替わります。 – Willeke

+0

なぜKeyboardEventAutorepeatを設定しますか? – Willeke

+0

ユーザーをシミュレートする必要があります。コマンドを下に、タブを下に、タブを上に、コマンドを上に移動します。 – Willeke

答えて

6

keyupイベントにコマンドフラグがありません。 CGEventSetFlags(keyUp, .MaskCommand)CGEventPost(.CGHIDEventTap, keyUp)の前に追加します。