1

私の Cocoa アプリでは、表示されているウィンドウを検出し、その所有者の PID を取得しています。次に、PID を使用してNSRunningApplicationオブジェクトを作成runningApplicationWithProcessIdentifier:し、追加情報 (ローカライズされた名前、パス、属性など) を取得します。

NSRunningApplication(私の場合) Window Server に属する PID 88 を使用して作成しようとするまで、すべて正常に動作します。そのオブジェクトを作成しないだけで、Apple のマニュアルに従って返さnilれます。つまり、その PID を持つプロセスはありません。

それはどのように可能ですか?存在しない場合、その PID を取得できず、ps表示されません。

何かアドバイス?

4

2 に答える 2

2

ドキュメントから(強調を追加):

概要
NSRunningApplicationは、アプリケーションの単一インスタンスの情報を操作および提供するためのクラスです。ユーザー アプリケーションのみが追跡されます。これは、システム上のすべてのプロセスに関する情報を提供するわけではありません。

于 2011-12-06T16:34:15.650 に答える
1

ウィンドウ サーバーはユーザー プロセスではありません。管理者権限で機能しない場合は、まったく機能しません。

于 2011-12-06T16:09:25.963 に答える