2017-11-07 10 views
2

私はmacOS上で実行中のアプリケーションのリストを取得しようとしています。実行中のアプリケーションのウィンドウの完全なリストを取得できますか?

まず私は、私は窓を取得するために、アクセシビリティAPIを使用してい[NSWorkspace sharedWorkspace].runningApplications経由で実行中のすべてのアプリケーションのリストを取得しています:

AXUIElementCopyAttributeValues((__bridge AXUIElementRef) app, 
           (__bridge CFStringRef) kAXWindowsAttribute, 
           index, 
           count, 
           &values); 

それは、これが移動するための方法であるように見えますが、フル持っているアプリを - 画面のウィンドウkAXWindowsAttributeは空です。フルスクリーンでないウィンドウの場合はうまく動作します。

+1

'runningApplications' *にはフルスクリーンで動作するアプリが含まれているように見えます(限られたテスト内)。質問を編集してコードを表示し、何が間違っているかを詳しく説明してください。うまくいけば誰かがあなたを助けることができます。 – CRD

+0

あなたの問題は、フルスクリーンのウィンドウ*とはまったく関係ありません。*別のスペース*のウィンドウとは関係ありません。別のスペースでアプリを開き、コードを実行してみてください。コードが同じスペースで実行されていないと、ウィンドウが表示されません。私はこれが、スペースを切り替えるための(公開された)プログラマティックなインターフェースはないはずだというアップルの強い見方と結びついていると思うが、それを理解しなければならないだろう。 HTH – CRD

答えて

1

コアグラフィックサービスAPIは、CGWindowListCopyWindowInfo()関数を介してすべてのウィンドウのリストを提供できます。

+0

同じAPIを使用してウィンドウを操作(フルスクリーン/最小化)できますか? – Sebastian

+0

Nope。しかし、ウィンドウIDを取得すると、アクセシビリティAPIを使用することができます。 –

関連する問題