В одной из моих программ я использую rundll32.exe url.dll,FileProtocolHandler c:\path\to\a.file
, чтобы открыть файлы. Я хотел бы обрабатывать ошибки в случае, если этот файл не может быть открыт, но я не могу понять, как узнать, была ли ошибка или нет. Вот мой код:Есть ли способ получить errorlevel из FileProtocolHandler или url.dll?
QProcess::startDetached(QString("rundll32.exe url.dll,FileProtocolHandler " + p_target_path));
startDetached()
теперь всегда возвращает истину, потому что это всегда успешным в открытии процесса, содержащего rundll32.exe. Итак, как я могу узнать, может ли мой файл быть найден/открыт или нет?
Я пробовал errorlevel-вещи в * .bat файле для тестирования.
rundll32.exe url.dll,FileProtocolHandler c:\not_existing.exe >nul || echo Could not open file.
Но нет ничего эха. Я также попытался прочитать% ERRORLEVEL%, но даже если файл не существует, уровень ошибок остается 0.
Кто-нибудь знает способ узнать, как с этим справиться?
Thx для вашей помощи это выглядит так, как если бы это могло быть решение ... Но как я могу использовать ShellExecute и значение hInst вместе с startDetached()? И как передать var в третий параметр в ShellExecute? TEXT (p_target_path) не будет работать, потому что макрос добавит L в начале ... – Exa
Я немного отлаживал и тестировал код, который вы опубликовали. При предоставлении c: \ windows \ system32 \ cmd.exe в ShellExecute, hInst - «0x0000002a» ... Но cmd не открывается ... – Exa
Я тестировал другие программы, и они отлично работали, но hInst по-прежнему 0x0000002a. .. – Exa