« 音楽CDの整理法 | メイン | SAF1☆ARTA FESTA in 鈴鹿サーキット »

2007年1月 6日

プログラムからシステム環境設定を開く

カテゴリー: プログラミング

ちょっと前に、自作のプログラムからシステム環境設定を開く処理を実装しました。役に立ちそうなのでメモがわりに書いておきたいと思います。なお、これはCarbon用です。Cocoaは分かりません(^^;)

まず、単純に「システム環境設定.app」を開く方法。普通にアプリケーションとしてラウンチするだけです。エラー処理などは省いてあります。

OSStatus    result;
CFURLRef    url;
    
url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault,
        CFSTR( "/Applications/System Preferences.app" ),
        kCFURLPOSIXPathStyle, false );
result = LSOpenCFURLRef( url, NULL );
	

こんな感じです。試した限り、Mac OS X 10.0以降、全てのOSバージョンで動作しました。


次に、直接システム環境設定の中身のパネルを開く方法。これも同じやり方で、パネルを直接ラウンチしています。正しい方法なのかどうか分かりませんが、試した限りでは問題なさそうです。以下は“ディスプレイ”パネルを開く例です。

OSStatus    result;
CFURLRef    url;
long        version;
    
result = Gestalt( gestaltSystemVersion, &version );
if( version < 0x1010 )
{
    url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, 
        CFSTR( "/System/Library/Preferences/Displays.preference" ), 
        kCFURLPOSIXPathStyle, false );
}
else
{
    url = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, 
        CFSTR( "/System/Library/PreferencePanes/Displays.prefPane" ), 
        kCFURLPOSIXPathStyle, false );
}
result = LSOpenCFURLRef( url, NULL );
	

こっちはOSバージョンによって少し処理が変わります。10.1以降は同じですが、10.0.xだけはパネルの置き場所や名前が違うので、対応するなら切り分ける必要があります。パネルの名前は10.0環境を持っていないと調べられないかもしれませんね。リクエストがあれば列挙しますが、もう必要ないかな(^^;)

また、システム標準のパネル以外は他の場所に保存されている可能性もありますね。それについては割愛します。

それにしても、Mac OS 9までに比べて、こういうの作るのは楽になりましたね。



コメント

よろしければコメントしてください。

※メールアドレス以外の項目はこのページ上に公開されます。個人情報などの入力にはご注意ください。




保存しますか?


「投稿」ボタンを押してから書き込み完了までに多少時間がかかる場合があります。ご了承ください。