![]() |
Probleme mit DesktopHandle
Hallo,
Mit folgender Funktion komme ich an das Handle der ListView auf dem Desktop:
Delphi-Quellcode:
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.
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; (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 |
Re: Probleme mit DesktopHandle
Versuche doch mal GetDesktopWindow() mit EnumChildWindows() und der Suche nach der Fensterklasse des Listviews.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz