Привожу тебе рабочий код на Delphi, переведешь получишь результат. На форме - батон и листбокс...
Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls;
type TForm1 = class(TForm) btnGetShares: TButton; lbxShares: TListBox; procedure btnGetSharesClick(Sender: TObject); private { Private declarations } public { Public declarations } end; type TShareInfo50 = packed record shi50_netname : array [0..12] of Char; shi50_type : Byte; shi50_flags : Word; shi50_remark : PChar; shi50_path : PChar; shi50_rw_password : array [0..8] of Char; shi50_ro_password : array [0..8] of Char; end; type TShareInfo2 = packed record shi2_netname : PWChar; shi2_type : DWORD; shi2_remark : PWChar; shi2_permissions : DWORD; shi2_max_uses : DWORD; shi2_current_uses : DWORD; shi2_path : PWChar; shi2_passwd : PWChar; end; PShareInfo2 = ^TShareInfo2; TShareInfo2Array = array [0..512] of TShareInfo2; PShareInfo2Array = ^TShareInfo2Array;
var Form1: TForm1; NetShareEnumNT :function (ServerName :PWChar; Level :DWORD; Bufptr :Pointer; Prefmaxlen :DWORD; EntriesRead, TotalEntries, resume_handle:LPDWORD): DWORD; stdcall; implementation
{$R *.dfm}
procedure TForm1.btnGetSharesClick(Sender: TObject); var i:Integer; FLibHandle : THandle; ShareNT : PShareInfo2Array; entriesread,totalentries:DWORD; begin lbxShares.Items.Clear; FLibHandle := LoadLibrary('NETAPI32.DLL'); //Загружаем библиотеку if FLibHandle = 0 then Exit; //Связываем функцию @NetShareEnumNT := GetProcAddress(FLibHandle,'NetShareEnum'); if not Assigned(NetShareEnumNT) then //Проверка begin FreeLibrary(FLibHandle); Exit; end; ShareNT := nil; //Очищаем указатель на массив структур //Вызов функции if NetShareEnumNT(nil,2,@ShareNT,DWORD(-1), @entriesread,@totalentries,nil) <> 0 then begin //Если вызов неудачен выгружаем библиотеку FreeLibrary(FLibHandle); Exit; end; if entriesread > 0 then //Обработка результатов for i:= 0 to entriesread - 1 do lbxShares.Items.Add(String(ShareNT^[i].shi2_netname));
FreeLibrary(FLibHandle); //Не забываем выгрузить библиотеку end;
end.
|
|