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 :)
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
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