次のように定義されたコードがあります。
typedef long (*ShellExecFunct)(long, const char*, const char*, long, long, long); void some_funct() { QLibrary shell32(QString("shell32.dll")); ShellExecFunct viewfile = (ShellExecFunct) shell32.resolve("ShellExecuteA"); if(ビューファイル) { int res = viewfile(NULL, "open", "c:\\eula.1028.txt", NULL, NULL, 5); } }
このコードは、私が望むようにファイルを起動しますが、すぐに爆発します。新しいウィンドウは開いたままです。
私は次のような別のバージョンを持っています:
typedef long (*ShellExecFunct)(long, const char*, const char*, long, long, long); void some_funct() { QLibrary shell32(QString("shell32.dll")); ShellExecFunct viewfile = (ShellExecFunct) shell32.resolve("ShellExecuteA"); if(ビューファイル) { int res = viewfile(NULL, "open", "c:\\eula.1028.txt", NULL, NULL, 5); QMessageBox b; b.setText(QString::number(res,10)); } }
このコードは爆発しません。b.exec() を呼び出す必要さえないことに注意してください。ただし、b.exec() を呼び出すと、値 42 が表示されます。
ここで何がうまくいかないのか、それを修正するために何ができるのか、誰かが私に手がかりを与えることができますか?
ありがとう。
編集:
後世にとって、ここでの前提は間違っています。Qt は、プラットフォーム固有のコードがなくても、私が必要とする正確な機能を提供します。受け入れられた回答をご覧ください。