Delphi FAQ Sieć LAN

Jak wykonywać operacje na dyskach sieciowych

lofix

Oto pare garści informacji na temat podłączania i odłączania dysków sieciowych, oraz zmieniania nazwy dysków,partycji..

Do sekcji USES trzeba dodać ShellAPi

Najpierw Dyski sieciowe...

Wywołanie okna podłączania dysków sieciowych:

WNetConnectionDialog(Application.Handle, RESOURCETYPE_DISK);//dysk
WNetconnectionDialog(Application.Handle, RESOURCETYPE_PRINT);//drukarka
 
//Jak wyżej tyle że odłączanie:
 
WNetDisconnectDialog(Application.Handle, RESOURCETYPE_DISK);//dysk
WNetDisconnectDialog(Application.Handle, RESOURCETYPE_PRINT);//drukarka

Można zrobić też to spod poziomu kodu...(Mi niestety wywala bład)

var
Res:TNetResource;
lpRioteName:string;
 begin 
  with  Res  do 
  begin 
  dwType:=RESOURCETYPE_ANY;
  lpLocalName:=Pchar(kombos.text); (*X: --> podłącz jako dysk X
  lpRioteName:=Pchar(edit1.text); (*  KomputerKatalog
  lpProvider:=Nil;
  end; 
  if  WNetAddConnection2(Res,'Hasło','Użytkownik',CONNECT_UPDATE_PROFILE)<>NO_ERROR  then 
  ShowMessage('Błąd podczas podłączania dysku sieciowego');

Kolejną ciekawą rzeczą jest ingerencja w etykiete dysku..
Kod jest bardzo krótki,prosty i skuteczny..

Aby ustawić nową etykietę dysku:

SetVolumeLabel('c:', 'Mój dysk');

Ja po 15 sekundach miałem 3 partycje: TYTUS, ROMEK i A`TOMEK :)))

Aby skasować i przywrócić domyślną,systemową

SetVolumeLabel('c:', '');

UWAGA!!!! jeżeli masz jakiegoś antyvirusa to na czas zmieniania etykiety musisz go wyłaczyć, ponieważ reaguje on na to jak na infekcję...i może troche przestraszyć bluescreenem :)

LAN

1 komentarz

Zamiast WNetAddConnection2 można użyć WNetAddConnection (podobnie tylko bez dwójki w nazwie).

np.

if WNetAddConnection(ZASOB_SIECIOWY,HASELKO,LITERA_DYSKU)<no_error then<br="then&lt;br" /> ShowMessage(' Błąd podczas podłączania dysku sieciowego');

Faktycznie przy WNetAddConnection2 miałem błąd 86 - złe hasło, natomiast przy WNetAddConnection wszystko jest OK.

Dla porządku jeszcze dodam że odłączenie dysku sieciowego uzyskujemy przez wywołanie funkcji WNetCancelConnection

WNetCancelConnection(ODLACZANY_DYSK,KOMUNIKAT)
gdzie KOMUNIKAT może mieć wartość true lub false. Jeśli ma true to odłącza dysk bez względu na sytuację. Jeśli false to w przypadku gdy na odłączanym zasobie znajdują się otwarte pliki to najpierw wyświetla komunikat w stylu czy na pewno...

Pozdrowienia