Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Probleme mit DesktopHandle (https://www.delphipraxis.net/93248-probleme-mit-desktophandle.html)

memphis 3. Jun 2007 12:02


Probleme mit DesktopHandle
 
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

Olli 9. Sep 2007 00:40

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 20:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz