高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1181
Process Carbon Events Not Delivered in 10.2


Q: テクニカルノート 2050 に説明されている手法を使って、実行中のプロセスのリストを追跡する Carbon アプリケーションを記述しています。しかし Mac OS X 10.2 では、kEventAppLaunchedkEventAppFrontSwitchedkEventAppTerminated のイベントを受け取れないようです。原因は何でしょうか。

A: これは Mac OS X 10.2 の不具合 (r. 2998556) で、別の変更 (ユーザがログインしていないときに、Carbon とリンクしているけれども上位レベルのツールボックスは使用しないプログラムが実行できるように、Process Manager を遅延初期化するようにしました) の影響によるものです。一番簡単な解決策はProcess Manager の初期化を、Carbon イベントハンドラのインストール前に強制的に行うことです。InstallApplicationEventHandler を呼び出す前に、Process Manager を呼び出すことで、これを行うことができます。リスト 1 に、これを実現するための推奨される方法を示します。



リスト 1 Process Manager の初期化

// Process Manager が自身を初期化するように強制することで、
// Mac OS X 10.2 の不具合 (r. 2998556) を解決します。

{
    ProcessSerialNumber junkPSN;

    (void) GetCurrentProcess ( &junkPSN );
}

// ここで InstallApplicationEventHandler を呼び出す


この不具合は、Mac OS X の将来のリリースで修正される予定ですが、この解決策は単純であり、負担もかからないので、すぐに削除したり条件分岐したりする必要はありません。


[2002 年 7 月 31 日]