Zitat von
marabu:
Warum spottest du? Ich brauche keinen Debugger um einen Fehler im Quelltext zu sehen!
Warum spottest du? Wir haben dich um eine Korrektur gebeten. Mehrfach!
Zitat von
marabu:
Ich habe bereits gesagt, was du falsch machst. Fange den Rückgabewert ab und prüfe auf -1. Nur dann interessiert mich LastError.
Das hilft aber auch nichts, wenn die MessageBox() ganz simpel nicht angezeigt wird. Und so amateurhaft bin ich nun auch wieder nicht, daß ich nicht vorher SetLastError(ERROR_SUCCESS) setzen würde. Der Rückgabewert ist also irrelevant, weil der Fehler während des Aufrufs passiert sein muß.
Aber vielleicht kann ich ja dein "Interesse" mit einer Ausgabe, die da lautet "1400", dieses Programmes wecken:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
CommCtrl,
Windows;
function SHMessageBoxCheckW(hWnd: THandle; Text: PWideChar; Title: PWideChar;
dwType: DWORD; Default: Integer; RegVal: PChar): Integer; stdcall; external 'shlwapi.dll' index 191;
function GetShellWindow():HWND; stdcall; external 'user32.dll';
begin
InitCommonControls();
SetLastError(ERROR_SUCCESS);
if(-1 = SHMessageBoxCheckW(GetShellWindow(), 'Dies ist nur ein Testtext.',
'Und dies ist der Titel', MB_OK or MB_ICONINFORMATION, IDNO,
'2C622957-D0A5-41CA-8571-898247531A2C')) then
begin
Writeln(GetLastError());
end
else
Writeln('Successful call');
Readln;
end.
Ja, ich habe soeben den XP SP1 Rechner nochmal für unseren gefiederten Freund angeworfen und die Ausgabe bleibt stur bei 1400.
Dennoch hilft uns die Tatsache, daß -1 zurückgegeben wird, nicht den Fehler einzugrenzen.