Linuxは簡単そうです: xdg-open <file/directory/URL>
.
どうやら、Macも同様です:open
の代わりに使用する必要がありxdg-open
ます。Mac にアクセスできないため、テストできませんでした。
Windowsの場合、4 つの異なる提案が見つかりましたが、試したものは失敗しました。
特定のファイル タイプに関連付けられたアプリケーションを起動する、Java 以外のクロス プラットフォームの方法はありますか? 提案する
start
Javaから、シェルで開かれたファイルのデフォルトプログラムにフォーカスを与える方法は? 提案する
cmd /c start ...
特定のファイルのユーザー システム優先エディターを開く方法は?
Javaでデフォルトのファイルオープナーを見つける方法は? 提案
RUNDLL32.exe
Cで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
. これにより、ある程度の費用を払って、私が望むものを正確に達成するのに十分な柔軟性が得られます...