Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Programm an fremden PC beenden

  Alt 7. Jul 2004, 12:52
Moin Micha,

mal ein kleines Beispiel für NetFileEnum, für dass Du noch ein Memo und einen Button brauchst.

Delphi-Quellcode:
const
  MAX_PREFERRED_LENGTH = DWORD(-1);
  NERR_Success = 0;

type
  PFILE_INFO_3 = ^FILE_INFO_3;
  FILE_INFO_3 =
    packed record
      fi3_id : DWord;
      fi3_permissions : DWord;
      fi3_num_locks : DWord;
      fi3_pathname : PWChar;
      fi3_username : PWChar;
    end;

  NET_API_STATUS = DWORD;

  function NetFileEnum(
    const servername : PWChar;
    const basepath : PWChar;
    const username : PWChar;
    const level : DWord;
    const bufptr : Pointer;
    const prefmaxlen : DWord;
    const entriesread : PDWord;
    const totalentries : PDWord;
    const resume_handle : PDWord
    ) : NET_API_STATUS; stdcall; external 'netapi32.dll';

  function NetApiBufferFree(
    const Buffer : Pointer
    ) : NET_API_STATUS; stdcall; external 'netapi32.dll';

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var
  pfi3 : PFILE_INFO_3;
  pfi3Work : PFILE_INFO_3;
  dwRead : DWORD;
  dwTotal : DWORD;
  i : integer;
  dwResult : DWORD;

begin
  dwResult := NetFileEnum('\\<SERVERNAME>',nil,nil,3,@pfi3,MAX_PREFERRED_LENGTH,@dwRead,@dwTotal,nil);
  if dwResult = NERR_SUCCESS then begin
    try
      Memo1.Lines.Clear;
      pfi3Work := pfi3;
      for i := 1 to dwRead do begin
        Memo1.Lines.Add(pfi3Work.fi3_Username + ' - '+pfi3Work.fi3_pathname);
        inc(pfi3Work);
      end;
    finally
      NetApiBufferFree(pfi3);
    end;
  end else begin
    ShowMessage(SysErrorMessage(dwResult));
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat