Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1818 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Fichier caché

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fichier caché

n°1153982
maximdus01
Posté le 19-07-2005 à 17:37:13  profilanswer
 

Bonjour !
Y a t'il un moyen à partir d'une application delphi de changer une option dans l'explorateur de windows ! ce que je veus moi c'est  désactiver ou activer l'affichage des fichiers cachés
   
Merci d'avance.
 
 
http://membres.lycos.fr/alassade/hebergement/Dossier%20cach%e9.jpg

mood
Publicité
Posté le 19-07-2005 à 17:37:13  profilanswer
 

n°1154621
bvtk
Posté le 20-07-2005 à 12:34:45  profilanswer
 

HAAAAA, je crois qu'une clé dans la BDR s'en occupe, mais je ne souviens plus de laquelle.
J'suis au travail et pas possible de regarde ma BDR.
Regarde avec un sniffer de BDR, fait la modif afin de répérer la clé et le tour est joué.


---------------
Téléchargez mes prorgrammes Freeware.
n°1157521
maximdus01
Posté le 22-07-2005 à 18:29:19  profilanswer
 

J'ai trouvé la clé c'est HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
 
mais j'arrive pas a la modifier en "dword" delphi ne la fait modifier qu'en "String" du coup ça marche pas

n°1157536
maximdus01
Posté le 22-07-2005 à 18:49:54  profilanswer
 

Probleme resolu : voici mon programme  
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Button3Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
  Registre: TRegistry;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Registre.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',True);
Registre.WriteInteger('Hidden',1);
Registre.CloseKey;
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Registre := TRegistry.Create;
Registre.RootKey := HKEY_CURRENT_USER;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Registre.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',True);
Registre.WriteInteger('Hidden',2);
Registre.CloseKey;
end;
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Registre.Free;
end;
end.

n°1157638
bvtk
Posté le 22-07-2005 à 20:42:40  profilanswer
 

Puisque c'est un Boolean pourquoi utiliser WriteInteger ?
Y'a aussi: WriteBool(constName:String;Value:Boolean);
 
Sans cela, je te propose une petite amélioration afin faire un monytoring de BDR depuis un TThread:
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;
 
const
  WM_REGCHANGE  = WM_USER + 1973;
 
function RegNotifyChangeKeyValue(hKey: HKEY; bWatchSubtree: DWORD; dwNotifyFilter: DWORD; hEvent: THandle; fAsynchronus: DWORD): Longint; stdcall;
external 'advapi32.dll' name 'RegNotifyChangeKeyValue';
 
type
  TChangeData = record
    Key : string;
    RootKey : HKey;
  end;
 
  TRegMonitorThread = class(TThread)
  private
    FReg: TRegistry;
    FEvent: Integer;
    fChangeData : TChangeData;
 
    fKey: string;
    fRootKey: HKey;
    fWatchSub: boolean;
    fFilter: integer;
    fWnd: THandle;
 
    procedure InitThread;
 
    procedure SetFilter(const Value: integer);
    function GetFilter: integer;
    function GetChangeData: TChangeData;
  public
    constructor Create;
    destructor Destroy; override;
    property Key: string        read fKey       write fKey;
    property RootKey: HKey      read fRootKey   write fRootKey;
    property WatchSub: boolean  read fWatchSub  write fWatchSub;
    property Filter: integer    read GetFilter  write SetFilter;
    property Wnd: THandle       read fWnd       write fWnd;
 
    property ChangeData : TChangeData read GetChangeData;
  protected
    procedure Execute; override;
  end;
 
 
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Déclarations privées }
    RegMonitorThread : TRegMonitorThread;
    procedure WMREGCHANGE(var Msg : TMessage); message WM_REGCHANGE;
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
{ TRegMonitorThread }
constructor TRegMonitorThread.Create;
begin
  inherited Create(True);
 
  FReg := TRegistry.Create;
end;
 
destructor TRegMonitorThread.Destroy;
begin
  FReg.Free;
  inherited;
end;
 
procedure TRegMonitorThread.InitThread;
begin
  FReg.RootKey := HKEY_CURRENT_USER;
  if not FReg.OpenKeyReadOnly(Key) then
  begin
    raise Exception.Create('La clé doit exister !' + Key);
  end;
  FEvent := CreateEvent(nil, True, False, 'RegMonitorChange');
  RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
end;
 
procedure TRegMonitorThread.Execute;
begin
  InitThread;
 
  while not Terminated do
  begin
    if WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0 then
    begin
      fChangeData.RootKey := RootKey;
      fChangeData.Key := Key;
      SendMessage(Wnd, WM_REGCHANGE, RootKey, LongInt(PChar(Key)));
      ResetEvent(FEvent);
 
      RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
    end;
  end;
end;
 
 
 
procedure TRegMonitorThread.SetFilter(const Value: integer);
begin
  if fFilter <> Value then
  begin
    fFilter := Value;
  end;
end;
 
function TRegMonitorThread.GetFilter: integer;
begin
  if fFilter = 0 then begin
    fFilter:=
      REG_NOTIFY_CHANGE_NAME or
      REG_NOTIFY_CHANGE_ATTRIBUTES or
      REG_NOTIFY_CHANGE_LAST_SET or
      REG_NOTIFY_CHANGE_SECURITY;
  end;
  Result := fFilter;
end;
 
function TRegMonitorThread.GetChangeData: TChangeData;
begin
  Result := fChangeData;
end;
 
 
 
procedure TForm1.WMREGCHANGE(var Msg: TMessage);
begin
 with Memo1.Lines do
 begin
  Add('-----------------------------------');
  Add('Cahngement de la BDR ' + DateTimeToStr(Now));
  Add(IntToStr(RegMonitorThread.ChangeData.RootKey) +
      ' - ' + RegMonitorThread.ChangeData.Key);
 end;
end;
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  RegMonitorThread := TRegMonitorThread.Create;
  with RegMonitorThread do
  begin
    FreeOnTerminate:=True;
    Wnd := Form1.Handle;
    Key := 'Software\BVTK'; /// ATTENTION CETTE DOIT ETRE EXISTANTE
    RootKey := HKEY_LOCAL_MACHINE;
    WatchSub := True;
    Resume;
  end;
 
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  RegMonitorThread.Terminate;
 
end;
 
end.


---------------
Téléchargez mes prorgrammes Freeware.
n°1158006
maximdus01
Posté le 23-07-2005 à 18:47:10  profilanswer
 

Mamannnnnnnnnnn, je suis encore pas de ce niveau là. piuuuu la vacheeeeee. Merci beaucoup kand memeee


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Fichier caché

 

Sujets relatifs
Supprimer le fichier session, est ce possible..Ecrire de gros fichier texte en C++ pur
MAJ d'un fichier texte problem lecture d un fichier texte !!
[D4] Ds quel fichier du cd de D4 cette aide précise ?fichier dep2 dans package cache
Mise en cache de fichier CSS sous MSIE[resolu][ASP] Problème de cache IE, parade pr forcer le dl d'un fichier sur le
[hs] qqun sait il comment rendre un type de fichier "caché"[php] Pb de cache ie5 qd upload fichier
Plus de sujets relatifs à : Fichier caché


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR