Retrieve error from calling a Win APITag(s): WinAPI/Registry
If a Win API call fails for any reason, a return code is returned. Habitually, an error message is available. You can get it by calling the FormatMessage() function.
[local external function declaration]
FUNCTION long GetLastError() LIBRARY "kernel32" ALIAS FOR "GetLastError"
FUNCTION long FormatMessage &
(Long dwFlags ,ref Any lpSource , Long dwMessageId , &
Long dwLanguageId , ref String lpBuffer , &
Long nSize , Long Arguments) LIBRARY "kernel32" &
ALIAS FOR "FormatMessageA"
[local external function declaration]
FUNCTION long ShellExecuteA( long hwnd, string lpOperation, &
string lpFile, string lpParameters, string lpDirectory, &
integer nShowCmd ) LIBRARY "SHELL32"
string ls_Null
long ll_rc
string ls_err_str
long ll_last_error
Any temp
CONSTANT long FORMAT_MESSAGE_FROM_SYSTEM = 4096
SetNull(ls_Null)
// try to execute a non-existent filename.
ll_rc = ShellExecuteA( Handle( This ), "open", &
"MyPage.xyz", ls_Null, ls_Null, 1)
IF ll_rc > 1 THEN
temp = 0
ll_last_error = GetLastError()
ls_err_str = Fill(Char(0),255)
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, temp, ll_last_error,&
0, ref ls_err_str, 255, 0)
MessageBox("error", ls_err_str)
END IF
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com