5

私は初心者の Cocoa 開発者で、初めてのアプリケーションを開発しています。Cocoa であろうと Carbon であろうと、任意のアプリケーションの任意のウィンドウから一意の識別子を読み取りたいと考えています。Cocoa アプリケーションは、ウィンドウ ID を AppleScript で使用できるようにします (ただし、適切な Objective C ルートを介してこれを行うためのより良い方法があると確信しています) が、私は Adob​​e アプリのドキュメントからウィンドウ ID にアクセスしようとしています。これはかなりトリッキーなようです。参照ライブラリで見つけることができるのはHIWindowGetCGWindowID だけです。

「この関数は、ウィンドウの作成時にウィンドウ サーバーによって割り当てられたウィンドウ ID を返します。ウィンドウ ID は通常、他の Carbon 関数では役に立ちませんが、関数など、ウィンドウ ID を必要とする他の Mac OS X 関数で使用できます。 OpenGLで。」

これを使用して、プログラムから ID を取得できますか? それとも、ひとつのアプリ内で使える機能ですか?

誰かが私を正しい方向に向けることができれば、私は永遠に感謝します.

4

1 に答える 1

13

この関数は、アプリのウィンドウの 1 つに対してHIWindowGetCGWindowID()のみ を返すことができます。これは、別のプログラムからの はあなたのウィンドウでは有効ではないためです。CGWindowIDWindowRef

CGWindow.hの関数CGWindowListCopyWindowInfo()は、辞書の配列を返します。これは、他のアプリケーションのものを含め、設定した条件に一致する各ウィンドウに 1 つずつです。特定のウィンドウの上のウィンドウ、特定のウィンドウの下のウィンドウ、および「画面上の」ウィンドウでのみフィルタリングできますが、返されるディクショナリには、ウィンドウとアプリを照合するために使用できる所有アプリのプロセス ID が含まれています。返された各ディクショナリで、キーはウィンドウ ID を としてポイントします。s の配列のみを返す関数もあります。基本的に、CGWindow.hヘッダーとSon of Grabサンプル コード以外に、これらの関数に関するドキュメントはありません。また、10.5のみです。 kCGWindowNumberCFNumberCGWindowListCreate()CGWindowID

于 2008-11-23T03:59:17.793 に答える