J'avais récupéré cette unité de Thierry G. chez Developpez.net il y a quelque temps, cela devrait t'aller : unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
_SHARE_INFO_2 = record shi2_netname: LPWSTR; shi2_type: DWORD; shi2_remark: LPWSTR; shi2_permissions: DWORD; shi2_max_uses: DWORD; shi2_current_uses: DWORD; shi2_path: LPWSTR; shi2_passwd: LPWSTR; end; PSHARE_INFO_2= ^_SHARE_INFO_2;
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end;
var Form1: TForm1; Share: PSHARE_INFO_2; ParamErr: lpdword; Rep : longint;
const STYPE_DISKTREE = 0; STYPE_PRINTQ = 1; STYPE_DEVICE = 2; STYPE_IPC = 3; STYPE_DFS = 100; STYPE_SPECIAL = $80000000;
ACCESS_NONE = 0; ACCESS_READ = 1; ACCESS_WRITE = 2; ACCESS_CREATE = 4; ACCESS_EXEC = 8; ACCESS_DELETE = 16; ACCESS_ATRIB = 32; ACCESS_PERM = 64; ACCESS_ALL = (ACCESS_READ+ACCESS_WRITE+ACCESS_CREATE+ACCESS_EXEC+ACCESS_DELETE+ACCESS_ATRIB+ACCESS_PERM);
implementation
function NetShareAdd(servername: LPWSTR; level: DWORD; buf: pSHARE_INFO_2; parm_err: LPDWORD): LongWord; stdcall; external 'netapi32.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin new(share); Share^.shi2_netname := 'TESTSHARE'; //nom de partage du dossier Share^.shi2_type := STYPE_DISKTREE; // disk drive Share^.shi2_remark := 'TESTSHARE to test NetShareAdd'; // zone commentaire Share^.shi2_permissions := ACCESS_ALL; //definition des droits Share^.shi2_max_uses := 4; // nb max de users simultane Share^.shi2_current_uses := 0; Share^.shi2_path := 'C:\alert'; //ici le chemin du dossier a partager Share^.shi2_passwd := Nil; // nil si pas password
rep := NetShareAdd(nil, 2, SHARE, ParamErr); if rep = 0 then messagedlg('OK Dossier partagé',mtInformation,[mbOK], 0) else messagedlg(inttostr(rep) + ' - ' +SysErrorMessage(rep),mtWarning, [mbOK], 0); dispose(share); end;
end.
RMD
www.Logiciels-RMD.com
|