OSTRACISM CO.

C#とObjective-CとJavaと...

シェル実行

 見つかった画像ファイルの一覧をダブルクリックすることで画像表示をしたいが、GraphicGripGropは画像表示機能を持つつもりも予定もない。あれば使う、なければ作る。
 WindowsはXPでは画像の表示は中途半端にシェル(Explorer)に統合されてしまった。JPEGファイルをダブルクリックしたときに別のアプリを起動したいと思ってもできなくなった。これを改悪と言わずして何といおう。
 Mac OS Xにはプレビュー.appというアプリケーションがあり、たいていの画像ファイルを表示できる。
 GraphiGripGropは画像表示に上記機構を利用したい。

C#

private void menuOpenGraphicFile_Click(object sender, System.EventArgs e) {
	...
	Process.Start(info.m_filePath);
}
 .NETのSystem.Diagnostics.ProcessクラスのStartメソッドに対象となるファイルのパスを渡すと、適切なツール(Windows XPではWindows画像とFAXビューア、XP以前ではそれぞれの拡張子に関連付けられたアプリケーション)を使って画像を表示する。

Objective-C

- (IBAction)menuOpenGraphicFileAction:(id)sender {
	...
	[[NSWorkspace sharedWorkspace] openFile:[info filePath]];
}
 CocoaのNSWorkspaceクラスのopenFileメソッドに対象となるファイルのパスを渡すと、適切なツール(特に設定を変えていなければプレビュー.app)を使って画像を表示する。

Java

 Javaはこういった場合に適切なツールに任せるといった動作はできない。
private void menuOpenGraphicFileActionPerformed(java.awt.event.ActionEvent evt) {
	...
	try {
		Runtime.getRuntime().exec(new String[] { m_setting.grephicViewer, info.m_filePath });
	}
	catch(Exception e) {
	}
}
 Runtimeクラスのexecメソッドを使って、設定ファイルのgrephicViewerエントリに記載されているパスの実行ファイルを起動し、その引数に対象となるファイルのパスを渡すよう実装した。とりあえずgrephicViewerの値を決めるGUIは用意していない。

2005.07.31
「インデックス」へ戻る

OSTRACISM CO.
OSTRA / Takeshi Yoneki