![]() |
desktopViewMode
Hallo liebe Liebenden,
aufgrund von Platzproblemen auf meinem Desktop habe ich nach einer Möglichkeit gesucht, meinen Desktop Viewmode zu ändern. Klappt soweit ganz gut. Allerdings kann ich auch nur 'viewen', keine Symbole anklicken oder gar Dateien / Ordner öffnen. Der Code ist von einem C++ Programm abgeleitet.
Delphi-Quellcode:
Falls man den Schnipsel testen möchte, reicht ein Neuladen des Prozesses explorer.exe, damit alles wieder so funktioniert, wie es sollte.
procedure setDesktopViewMode(viewMode:Integer);
var handle:hwnd; begin handle := findwindowex(findwindowex(findwindow('Progman',nil),0,'SHELLDLL_DefView',nil),0,'SysListView32',nil); SetWindowLong(handle, GWL_STYLE, LVS_LIST); ShowWindowAsync(handle, SW_SHOW); case viewmode of 0: SetWindowLong(handle, GWL_STYLE, LVS_ICON); 1: SetWindowLong(handle, GWL_STYLE, LVS_SMALLICON); 2: SetWindowLong(handle, GWL_STYLE, LVS_LIST); 3: SetWindowLong(handle, GWL_STYLE, LVS_REPORT); end; SendMessage(handle, WM_STYLECHANGED, GWL_STYLE, 10); SendMessage(handle, LVM_ARRANGE, LVA_DEFAULT, 0); ShowWindow(handle, SW_SHOWNORMAL); end; Vielleicht kann mir ja jemand helfen, das Problem zu lösen =) Gruß, Frank. |
Re: desktopViewMode
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Ich habe mal geschaut, wie es Wintidy macht und bin zu diesen Code gekommen. Ein vollständiges Beispiel befindet sich im Anhang.
Delphi-Quellcode:
procedure SetDesktopStyle(AViewMode: TViewStyle);
const STYLES: array[TViewStyle] of DWORD = (LVS_ICON, LVS_SMALLICON, LVS_LIST, LVS_REPORT); var S: StyleStruct; lvHan: HWND; begin if IsActiveDesktop then Exit; lvHan := GetlvHan; if lvHan <> 0 then begin S.StyleOld := GetWindowLong(lvHan, GWL_STYLE); S.StyleNew := S.StyleOld and not LVS_TYPEMASK; S.StyleNew := S.StyleNew or STYLES[AViewMode]; SetWindowLong(lvHan, GWL_STYLE, S.StyleNew); SendMessage(lvHan, WM_STYLECHANGED, GWL_STYLE, Integer(@S)); ShowWindow(lvHan, SW_SHOWNORMAL); end; end; |
Re: desktopViewMode
Super, tausend Dank!
|
Re: desktopViewMode
Nachtrag:
LVS_LIST scheint nicht zu funktionieren. Man kann auch eine Scrollbar anzeigen, wenn es viele Icons auf dem Desktop hat.
Delphi-Quellcode:
Im Report Modus sieht es so aus (ohne Scrollbar):
ShowScrollbar(GetDesktopWindow, SB_VERT, True)
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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