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