Autor Beitrag
webmaker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: So 20.04.03 13:56 
Hi wie kann ich per API ein Netzwerklaufwerk verbinden und wieder entfernen. Als Parameter soll der Pfad und so angegeben werden. Danke schon mal!!!

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.04.03 14:16 
Kuck dir mal die NetShare... Funktionen hier www.msdn.microsoft.com an.
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: So 20.04.03 15:39 
hi danke!!
Habe mir das gerade im MSDN angekuckt. Doch komme ich damit irgendwie nicht zurecht.
Ich beschriebe mene Problem mal genauer: Also ich ein Netzwerklaufwerk verbinden, dass nach einem Neustart wieder weg ist. Es soll auf eienn Linux Samba Server zugreifen. Man soll den LAufwerksbuchstaben, Passwort + Benutzername eingeben könen und natürlich den Pfad.
Mit NetShareAdd schint das ja nicht so ganz zu klappen. Kannst du oder wer anders mir das mal genauer erklären?
Achso man soll das Laufwerk dann halt im Explorer oder so sehen können und drauf zu greifen können
Danke schon mal

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.04.03 16:49 
Hi webmaker.

Doch, du bist normalerweise richtig. NetShareAdd müsste die Funktion sein, die hinter dem Dialog "Netzlaufwerk verbinden" steckt. Poste doch mal bitte, was du bisher versucht hast.

Dann lässt sich ein evtl. Fehler schneller finden als mit
Zitat:
Doch komme ich damit irgendwie nicht zurecht.

:)
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: So 20.04.03 17:09 
ich habe noch nicht richtig was geschafft.
HAbe eigentlich noch nicht mal die Defintion richtig verstanden:
Zitat:

NET_API_STATUS NetShareAdd(
LPWSTR servername,
DWORD level,
LPBYTE buf,
LPDWORD parm_err
);

Also sowie ich das richtig verstanden habe, soll der Buffer dann der Laufwerksbuchstabe sein oder wie?
Servername ist klar. Bei den Levels kann man wahrschienlich nicht so was falsch machen.
Doch nun mene Frage: Wo kann ich Benutzername, Passwort und sowas hinterlegen?
Achso welche Unit muss ich erinbinden? Die im MSDN stehen, scheint es nicht zu geben. Heißen wohl anders?

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.04.03 17:34 
@webmaker: Sorry, mein Fehler! Du willst eine Verbindung aufbauen, aber keine Freigabe erstellen. In dem Fall müssten die WNetAddConnection?-Funktionen richtig sein. Mit NetShareAdd erstellst du Freigaben. Ich schau mal, ob ich ein Beispiel finde, aber versprechen kann ich erst mal nix.


Sorry, nochmals.
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: So 20.04.03 17:50 
das ganze soll dann zb im Explorer ein Laufwerk werden. Das soll dann auf meinen Linux-Server und dort in ein bestimmten Ordner. Das ganzeläuft mit Samba. Also ich wenn ich manuell ein Laufwerk verbinde, dann verlangt er unter XP auch ein USernamen und einen PW.
Danke schonmal für eure Bemühungen!!!!!

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.04.03 17:58 
Ungetestet, müsste aber klappen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  ner : TNetResource;
  res : dword;
begin
  ner.dwType       := RESOURCETYPE_DISK;
  ner.lpLocalName  := 'Z:';
  ner.lpRemoteName := '\\Rechner\Freigabename';
  ner.lpProvider   := nil;

  res              := WNetAddConnection2(ner,
    'SuperGeheimesPwd',
    'OttoNormalUser',
    0);

  if(res = NO_ERROR) then ShowMessage('Super, klappt ja!')
    else ShowMessage(Format('Fehler %d',[res]));
end;

Um mir Arbeit zu sparen, habe ich die Unit "JwaWinNetWk" von den JEDIs benutzt. Musst mal schauen ob du die brauchst. Sie ist Teil der Win32-API-Translation. Kann man auf der JEDI-Page bekommen.

Und am besten noch mal im PSDK/MSDN wg. der Parameter gucken.

btw: Wenn du den Dialog aufrufen willst, dann schau dir mal WNetConnectionDialog und WNetDisconnectDialog an. :wink:


Gruß.
webmaker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 205



BeitragVerfasst: So 20.04.03 18:11 
Super!!! Danke klappt.
Ich brauchte aber die Unit nicht.
Nur noch eine Frage und zwar was hat es mit Übersetzung genau auf sich? Gibt es da eine genauere Dokumentation?

_________________
.::Wissen ist Macht, nichts wissen macht nichts::.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 20.04.03 19:34 
Übersetzung bezieht sich in dem Fall auf die Übersetzung der Header von C nach Delphi.