関連する外部プログラムでファイルを開くにはどうすればいいですか?Qt:外部プログラムでファイルを開く方法 "open with ..."ダイアログ
プラットフォームに依存しないコードですか?または、すべてのプラットフォームで「open with ...」ダイアログを呼び出すには、
#ifdef
#else
#endif
構造を実装する必要がありますか?事前に
おかげ
EDIT:更新は、再探索の数時間後、私はWindowsのための良い解決策を見つけました。
我々は、それがファイルの関連付けエラーで失敗した場合、我々はのShell32.dllダイアログ
QString file_path = "C:\VeryGoodPath.txt";
int iResult = (int)ShellExecuteA(0, 0, file_path.toStdString().c_str(), 0, 0 , SW_SHOW);
if(iResult>32)
{
// Succesful run
}
else
{
if(SE_ERR_ASSOCINCOMPLETE==iResult)
{
QString ShellCmd = "C:\\Windows\\system32\\shell32.dll,OpenAs_RunDLL \""+file_path +"\"";
ShellExecuteA(0,"open", "C:\\Windows\\system32\\rundll32.exe",ShellCmd.toStdString().c_str(),NULL, SW_NORMAL);
}
else
{
// Errors
}
}
EDIT2「としてオープン」でファイルを開いて、ShellExecuteを(...)を使用してファイルを開こう:問題は、だったこと私は1つの簡単な方法を使用することです
QDesktopServices::openUrl(...)
この機能
QUrl::fromLocalFile("<path_to_your_file>")
Windows上で "Open With"ダイアログを呼び出す正しい方法は、openas "動詞を指定する' ShellExecute/Ex() 'にターゲットファイル名を渡すことです。 shell32の 'OpenAs_RunDLL'を直接呼び出さないでください。 http://stackoverflow.com/questions/6364879/を参照してください。 –