10

Win32 から OSX に移植する C++ アプリがあります。ユーザーがファイルを開いたかのように、任意のファイルを起動できるようにしたいと考えています。これは、ShellExecute を使用する Windows では簡単です。Mac で同じことを行うにはどうすればよいですか?

ありがとう!

4

3 に答える 3

15

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

オープンのドキュメントから:

open コマンドは、ファイルのアイコンをダブルクリックしたかのように、ファイル (またはディレクトリまたは URL) を開きます。アプリケーション名が指定されていない場合、LaunchServices によって決定された既定のアプリケーションを使用して、指定されたファイルが開かれます。

まとめると、次のようになります。

string command = "open " + filePath;
system(command.c_str());
于 2009-05-13T18:18:04.957 に答える
9

ココアを使用している場合の別の提案:

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

他にも同様の方法がありNSWorkspaceます。たとえば、アプリケーションまたは URL を開くには:

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

処理を行うことで、標準の C呼び出し[NSWorkspace sharedWorkspace]よりも少し制御を強化できます。system()

編集: Objective-C++を使用して C++ コードと Objective-C コードを混合し、それによって cocoa メソッドを呼び出すことができることに注意してください。

于 2009-05-13T18:32:30.300 に答える
0

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

簡単に言えます:

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

それはとても簡単です。私が助けてくれることを願っています:)

于 2014-06-18T18:27:49.593 に答える