Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Люди, помогите новечку плиз


Автор: m_averick 24.3.2007, 23:24
Люди, такач проблема: надо составить список всез разшареных папок на компе. Но какое свойство папки читать и чем - ума не приложу!! Помогите кто чем может, пожалуцчта!!!!!

Автор: codelord 25.3.2007, 09:29
NetShareEnum();

Автор: ama_kid 25.3.2007, 09:44
Привожу тебе рабочий код на 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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)