У меня есть некоторый код определяется следующим образом:Qt shell32.dll ShellExecuteA странное поведение. Как я могу отобразить файл?
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(viewfile) { 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(viewfile) { 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.
Может кто-нибудь подскажет мне, что здесь происходит, и что я могу сделать, чтобы исправить это?
Спасибо.
Edit:
Для потомков, помещение здесь не так. Qt обеспечивает точную функциональность, которая мне нужна, без кода на платформе. См. Принятый ответ.
Это, безусловно, способ сделать это. Благодарю. Я еще не знаю Qt очень экспансивно. –
Спасибо за ваше редактирование. Это может помочь кому-то в будущем. –
Нет проблем, Qt предлагает ** много функциональности. Это займет много времени, чтобы найти все полезные маленькие классы, которые я там;). –