在我的一個程序中,我使用rundll32.exe url.dll,FileProtocolHandler c:\path\to\a.file
來打開文件。我想處理錯誤,如果這個文件無法打開,但我不知道如何找出是否有錯誤。 這是我的代碼:有沒有辦法從FileProtocolHandler或url.dll中獲取錯誤級別?
QProcess::startDetached(QString("rundll32.exe url.dll,FileProtocolHandler " + p_target_path));
startDetached()
現在總是返回true,因爲它總是在打開包含RUNDLL32.EXE進程succesfull。那麼如何知道我的文件是否可以被找到/打開?
我試過錯誤級別的東西在一個* .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 2010-08-02 05:48:33
我調試了一下並測試了您發佈的代碼。當爲ShellExecute提供c:\ windows \ system32 \ cmd.exe時,hInst是「0x0000002a」...但是cmd未被打開... – Exa 2010-08-02 06:05:01
我測試了其他程序並且它們確實工作正常,但hInst仍然是0x0000002a。 .. – Exa 2010-08-02 06:10:38