2013-02-23 120 views
4

我在調用ShellExecute時收到返回值 - 一個整數。我在哪裏可以得到相關的錯誤消息?我知道他們是一般的,但我在MS文檔中看到過消息。Shellexecute返回值錯誤消息

+0

將它們從[documentation](http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx)? – BeniBela 2013-02-23 15:28:05

+0

... as [MS本身](http://support.microsoft.com/kb/170918/en)... – TLama 2013-02-23 15:34:55

回答

7

ShellExecute的錯誤處理是一件災難。 Raymond Chen在這裏討論:Why does ShellExecute return SE_ERR_ACCESSDENIED for nearly everything?因此,即使您可以將一小部分可能的ShellExecute錯誤轉換爲文本,您也會發現總是得到Access denied。這不是很有幫助。

底線是,如果你想要真正的錯誤報告,那麼你需要使用ShellExecuteEx。如果失敗,請致電GetLastError以獲取Win32錯誤。要將其變爲帶有描述性文字的例外,請致電RaiseLastOSError。如果您只想要描述性文字與錯誤相關聯,請致電SysErrorMessage