Hallo,
Mit folgender Funktion komme ich an das
Handle der ListView auf dem Desktop:
Delphi-Quellcode:
function getIconListView: HWND;
var hwndProgman: HWND;
hwndDefView: HWND;
hwndListView: HWND;
begin
hwndListView := HWND(nil);
hwndProgman := FindWindow('Progman', nil);
if hwndProgman <> HWND(nil) then
begin
hwndDefView := FindWindowEx(hwndProgman, HWND(nil), 'SHELLDLL_DefView', nil);
if hwndDefView <> HWND(nil) then
begin
hwndListView := FindWindowEx(hwndDefView, HWND(nil), 'SysListView32', nil);
if hwndListView = HWND(nil) then
showmessage('fehler bei SysListView32.');
end
else
showmessage('fehler bei SHELLDLL_DefView.');
end
else
showmessage('fehler bei Progman.');
Result := hwndListView;
end;
Wenn ich jetzt aber auf "Desktop anzeigen" in der Schnellstartleiste klicke und die Funktion im Hintergrund ausgeführt wird, so erhalte ich für das SHELLDLL_DefView kein gültiges
Handle.
(Konkreter Testfall: Funktion verzögert mit einem Timer ausführen und in der Zwischenzeit auf "Desktop anzeigen" klicken und warten.)
Danke u. Grüße
memphis