2009-05-13 32 views
8

私はWin32からOSXに移植しているC++アプリケーションを持っています。私は、ユーザーがそれらを開いたかのように任意のファイルを起動できるようにしたいと思います。これは、ShellExecuteを使用するウィンドウでは簡単です。 Macで同じことを達成するにはどうすればいいですか?OSXに相当するShellExecute?

ありがとうございます!

答えて

14

system();は、C++アプリケーションで呼び出すことができます。 OSXでは、openコマンドを使用して、クリックされたかのように起動できます。オープンのドキュメントから

openコマンドは、ファイル(またはディレクトリまたはURL)を開いて、あなたが持っていた場合と同じように、ファイルのアイコンをダブルクリックします。アプリケーション名が指定されていない場合は、指定されたファイルを開くためにLaunchServicesで指定されたデフォルトアプリケーションが使用されます。すべて一緒に

、それは次のようになります。あなたはココで作業している場合

string command = "open " + filePath; 
system(command.c_str()); 
+0

私はWindowsの同等物は '' start "+ filePath;' ' – MSalters

9

もう一つの提案を:

[[NSWorkspace sharedWorkspace] openFile:@"pathToFile"]; 

NSWorkspaceで他の同様の方法が同様にあります。アプリケーションまたはURLをオープンする例:

[[NSWorkspace sharedWorkspace] launchApplication:@"pathToApplication"]; 
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"URL"]]; 

[NSWorkspace sharedWorkspace]て作業するあなたの標準C system()コールよりも少し制御を与えることができます。

編集:Objective-C++を使用すると、C++コードとObjective-Cコードを混ぜて、ココアメソッドを呼び出すことができます。

0

単純にsystem()を使用できます。関数。たとえば、画面の隅にドックを置きたいとします。

あなたは、単に置くことができます:

system(defaults write com.apple.dock pinning -string end); 
sleep(1f); 
system(killall Dock); 

それは簡単なことです。 私は助けてくれました:)

+1

だと思いますが、system()引数を引用符で囲む必要があります。 – cypheon