5

当我调用 ShellExecute 时,我得到了返回值 - 一个整数。我在哪里可以获得相关的错误消息?我知道它们很笼统,但我在 MS 文档中看到了消息。

4

1 回答 1

8

错误处理ShellExecute是一场灾难。Raymond Chen 在这里讨论它:为什么 ShellExecute 几乎对所有东西都返回 SE_ERR_ACCESSDENIED?因此,即使您可以将少数可能的ShellExecute错误转换为文本,您也会发现您总是得到Access denied. 这不是很有帮助。

底线是,如果您想要真正的错误报告,那么您需要使用ShellExecuteEx. 如果失败,则调用GetLastError以获取 Win32 错误。要将其转换为带有描述性文本的异常,请调用RaiseLastOSError. 如果您只想要与错误关联的描述性文本,请调用SysErrorMessage.

于 2013-02-23T15:32:49.867 回答