AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

desktopViewMode

Ein Thema von rawsoul · begonnen am 24. Feb 2008 · letzter Beitrag vom 24. Feb 2008
Antwort Antwort
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#1

desktopViewMode

  Alt 24. Feb 2008, 14:15
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:
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;
Falls man den Schnipsel testen möchte, reicht ein Neuladen des Prozesses explorer.exe, damit alles wieder so funktioniert, wie es sollte.

Vielleicht kann mir ja jemand helfen, das Problem zu lösen =)

Gruß, Frank.
Frank Dumont
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: desktopViewMode

  Alt 24. Feb 2008, 16:03
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;
Angehängte Dateien
Dateityp: zip project1_180.zip (217,8 KB, 21x aufgerufen)
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#3

Re: desktopViewMode

  Alt 24. Feb 2008, 16:29
Super, tausend Dank!
Frank Dumont
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: desktopViewMode

  Alt 24. Feb 2008, 16:43
Nachtrag:

LVS_LIST scheint nicht zu funktionieren.

Man kann auch eine Scrollbar anzeigen, wenn es viele Icons auf dem Desktop hat.

ShowScrollbar(GetDesktopWindow, SB_VERT, True) Im Report Modus sieht es so aus (ohne Scrollbar):

http://img256.imageshack.us/img256/1530/desktopqn8.jpg
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 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