Skalid
Messages postés2Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention17 septembre 2006
-
10 sept. 2006 à 17:23
Skalid
Messages postés2Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention17 septembre 2006
-
17 sept. 2006 à 13:15
Bonjour a tous,
J'ai un bout de code permettant d'expoiter la fonction SHSetFolderPath permet de changer à chaud le chemin des répértoire system.
Il fonctionne tres bien pour changer:
CSIDL_TEMPLATES
CSIDL_FAVORITES
CSIDL_APPDATA
CSIDL_PERSONAL
CSIDL_DESKTOPDIRECTORY
CSIDL_STARTMENU
CSIDL_PROGRAMS
mais impossible de le faire fonctionner avec:
CSIDL_DESKTOP
CSIDL_DRIVES
J'en ai besoin pour changer le chemin du bureau (CSIDL_DESKTOP) sans redamarrer explorer.
Le voici ci-dessous ; Pouvez-vous m'aider ?
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
FLibHandle: THandle;
path:WideString;
SHSetFolderPath: FUNCTION (csidl:integer;
hToken:THANDLE;
dwFlags: DWORD;
pszPath: LPCTSTR):HRESULT;stdcall;
begin
FLibHandle := LoadLibrary('Shell32.dll');
SHSetFolderPath := GetProcAddress(FLibHandle, pchar(Ord(232)));
path:='C:\Mon Répertoire';
if assigned(SHSetFolderPath)
then try
if not SUCCEEDED(SHSetFolderPath(CSIDL_FAVORITES, 0, 0, pchar(path)))then beep;
finally
end;
if FLibHandleB <> 0 then FreeLibrary(FLibHandle);
end;