Linuxは簡単そうです: xdg-open <file/directory/URL>.
どうやら、Macも同様です:openの代わりに使用する必要がありxdg-openます。Mac にアクセスできないため、テストできませんでした。
Windowsの場合、4 つの異なる提案が見つかりましたが、試したものは失敗しました。
特定のファイル タイプに関連付けられたアプリケーションを起動する、Java 以外のクロス プラットフォームの方法はありますか? 提案する
startJavaから、シェルで開かれたファイルのデフォルトプログラムにフォーカスを与える方法は? 提案する
cmd /c start ...特定のファイルのユーザー システム優先エディターを開く方法は?
Javaでデフォルトのファイルオープナーを見つける方法は? 提案
RUNDLL32.exeCでShellExecute()を使用して.txtを開く正しい方法は何ですか
C++コード内のWindowsのネイティブプログラムで
ファイルを開く ShellExecuteを使用してC++を使用してWindowsでhtmlファイルを開く方法は? 提案
ShellExecute
system()andQProcess::startDetached()を引数として最初の 3 つを試しました"http://www.stackoverflow.com"が、すべて失敗しました。startただし、コマンドラインからは問題なく動作します。まだ試しShellExecuteていません。
に相当する Windows は何xdg-openですか? それは私には思えますがstart、なぜ私の試みはstart失敗したのですか?
ShellExecute私の唯一のオプションですか?
EDITQDesktopServices::openUrl()ファイルやディレクトリでは機能しなかったため、Webページのみだと思いました。
いくつかのデバッグの後、Windows のパスを に置き換える\\と/、ファイルに対しては機能しますが、ディレクトリはまだ開かれていないことがわかりました。私が間違っていることは何ですか?
QDir dir("C:/Documents and Settings/ali");
qDebug() << "Exists? " << dir.exists();
qDebug() << dir.absolutePath();
QDesktopServices::openUrl(QUrl(dir.absolutePath()));
qDebug() << "External app called";
アプリケーション出力:
Exists? true
"C:/Documents and Settings/ali"
External app called
しかし、何も起こらず、ディレクトリは開かれません。Linux では、ディレクトリは期待どおりデフォルトのファイル マネージャで開かれます。
解決策: Qt のバグとWindows の癖 (不正なアプリケーション ウィンドウ) により、最終的にShellExecute. これにより、ある程度の費用を払って、私が望むものを正確に達成するのに十分な柔軟性が得られます...