Entwickler-Ecke

Windows API - "Versteckte Dateien anzeigen" Ein-/Aus- schalten??


Andi1982 - Do 21.08.03 19:02
Titel: "Versteckte Dateien anzeigen" Ein-/Aus- schalten??
Hallo,
wie kann ich mit meinem Delphi-Programm (Delphi 6) die Windowseinstellung (WinXP) "Versteckte Dateien anzeigen" ändern??

Das geht doch bestimmt irgendwie oder???

Gruß Andi


Delete - Do 21.08.03 19:59

Wenn ich so etwas wissen möchte, dann benutze ich die jeweilige Funktion, merke mir aber vorher den Ausgangszustand, so dass ich hinterher etwas zum Vergleichen habe. Ich helfe dir auch auf die Sprünge: in dem Fall wird die notwendige Information in der Registry gespeichert (unter HKCU). Und da sich auch nur ein Wert ändert, dürfte eine Suche und ein Vergleich nicht allzu lange dauern.


MSCH - Do 21.08.03 20:16

nette Hilfe !

der Schlüssel ist unter WinXP:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]

"ShowSuperHidden"=dword:00000001 bzw. 0

grez
msch


Andi1982 - Do 21.08.03 20:20

Oh vielen Dank!!! Das mit der Reg. hab ich mir fast gedacht, bin aber da nicht so fit drin.

Vielen Dank euch beiden!


Delete - Do 21.08.03 21:41

MSCH hat folgendes geschrieben:
der Schlüssel ist unter WinXP:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]

"ShowSuperHidden"=dword:00000001 bzw. 0

Siehste, schon daneben. "Versteckte Dateien und Ordner" ist nämlich der Schlüssel "Hidden". Das, was du da geschrieben hast, ist die Einstellung "Geschützte und Systemdateien ausblenden". - btw: Auch ein guter Link zum Thema: wo kann ich was in der Registry machen: [url]http://www.regedit.com[/url]


bf109g.01 - Do 17.02.11 14:53

Hi, ich bin an dem selben problem dran:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Button1Click(Sender: TObject);
var Reg : TRegistry;
    Keys : TStringList;
    I: Integer;
begin
  L.clear; // Listbox
  Reg := TRegistry.Create;
  Keys := TStringList.Create;
  Reg.Rootkey := HKEY_CURRENT_USER;
  if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', False) then
  begin
     Reg.GetValueNames(Keys);
  end;
  Reg.Free;

  // Darstellung der Schlüsselliste
  for I := 0 to Keys.Count - 1 do
  L.Items.add(Keys[i]);
end;

So. Jetzt habe ich eine nutzlose Listbox, welche die Parameter für den Explorer enthält (will ich im Endprogramm gar nicht haben, das soll nur über die Konsole laufen...).
Weiter komme ich jetzt an der Stelle nicht mehr.
Wie kann ich jetzt die Eigenschaft von 'Hidden' (=Keys[0]) so ändern, dass die versteckten Dateien nun ein-/ausgeblendet werden.


Delphi-Quelltext
1:
2:
3:
Reg.WriteString('Hidden''0'); // Geht nicht :(

Keys[0]:='dword:00000001'// wird vom Compiler nicht akzeptiert... :(

Was nun?


Gerd Kayser - Sa 19.02.11 16:54

So gehts (Windows 7):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg : TRegistry;
  Key : string;
  Wnd : HWnd;
begin
  Key := '\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced';
  Reg := TRegistry.Create;
  try
    Reg.Rootkey := HKey_Current_User;
    Reg.OpenKey(Key, false);
    Reg.WriteInteger('Hidden'1);
    Reg.WriteInteger('SuperHidden'1);
    Reg.WriteInteger('ShowSuperHidden'1);
    Label1.Caption := 'Versteckte Dateien werden angezeigt.';
  finally
    Reg.Free;
  end;
  // Alle Instanzen des WindowsExplorers aktualisieren.
  // 41504 --> Löst die Aktualisierung aus (entspricht Drücken von F5).
  Wnd :=  FindWindow('CabinetWClass'nil);
  while Wnd <> 0 do
    begin
      SendMessage(Wnd, wm_Command, 415040);
      Wnd := FindWindowEx(0, Wnd, 'CabinetWClass'nil);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Reg : TRegistry;
  Key : string;
  Wnd : HWnd;
begin
  Key := '\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced';
  Reg := TRegistry.Create;
  try
    Reg.Rootkey := HKey_Current_User;
    Reg.OpenKey(Key, false);
    Reg.WriteInteger('Hidden'2);
    Reg.WriteInteger('SuperHidden'0);
    Reg.WriteInteger('ShowSuperHidden'0);
    Label1.Caption := 'Versteckte Dateien werden NICHT angezeigt.';
  finally
    Reg.Free;
  end;
  // Alle Instanzen des WindowsExplorers aktualisieren.
  // 41504 --> Löst die Aktualisierung aus (entspricht Drücken von F5).
  Wnd :=  FindWindow('CabinetWClass'nil);
  while Wnd <> 0 do
    begin
      SendMessage(Wnd, wm_Command, 415040);
      Wnd := FindWindowEx(0, Wnd, 'CabinetWClass'nil);
    end;
end;