Einzelnen Beitrag anzeigen

Benutzerbild von memphis
memphis

Registriert seit: 4. Apr 2003
Ort: Innsbruck
89 Beiträge
 
Turbo Delphi für Win32
 
#1

Probleme mit DesktopHandle

  Alt 3. Jun 2007, 13:02
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
Lukas
Wenn du nicht mehr weiter weißt, zeichne dir 'nen Einheitskreis.
  Mit Zitat antworten Zitat