次のように定義されたコードがあります。
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 は、プラットフォーム固有のコードがなくても、私が必要とする正確な機能を提供します。受け入れられた回答をご覧ください。