Announcement

Collapse
No announcement yet.

Probleme mit WNetAddConnection unter NT4.0

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit WNetAddConnection unter NT4.0

    Hallo,<br>
    ich habe folgendes Prblem:<br>
    Ich will auf einen Computer im LAN daten kopieren. Dazu verwende ich die WNetAddConnection um ein freigegebenes Verzeichnis als lokales Laufwerk zu verbinden. <br>
    Hier wird dann ganz normal gearbeitet, und zum Schluss das Netzlaufwerk getrennt.<br>
    Wenn ich die Prozedure ein zweites mal durchlaufe klappt das nur noch unter Windows95/98 <b>NICHT</b> aber unter NT4.0 (SP 5).
    Unter NT klappt das erst wieder wenn ich "Start Beenden-> Anwendungen schliessen...." ausführe.<br>
    Was kann getan werden. <br>
    Falls WNetAddConnection2 oder WNetAddConnection3 das Problem lösen wurde, währe ich für ein paar Zeilen Sourcecode (Aufruf der Funktion) dankbar.<br>
    Danke Dirk. <br>
    <p>
    Beispiel:<br>
    Result :=WNetAddConnection(PChar(ServerName),'PASSWORT',P Char(LokalDrive));<br>
    If result=0 Then connect:=true<br>
    Else connect:=false;<br>
    If Connect=true Then<br>
    Begin<br>
    assignfile(ServerF,FileName);<br>
    {$I-}<br>
    reset(ServerF);<br>
    {$I+}<br>
    fehler:=IOResult;<br>
    If Fehler=0 Then<br>
    Begin<br>
    Seek(ServerF,FileSize(ServerF));<br>
    write(ServerF,DatenSatz);<br>
    End;<br>
    CloseFile(ServerF);<br>
    // Netzlaufwerk schliessen<br>
    closef:=true;<br>
    result:=WNetCancelConnection(PChar(LokalDrive),clo sef);<br>
    End // If connect=true ...<br>
    Else<br>
    Begin<br>
    ShowMessage('Server zur Zeit nicht verfügbar');<br>
    End;<br>

  • #2
    Hallo,

    im Platform-SDK werden die beiden API-Funktionen WNetAddConnection und WNetCancelConnection extra als Kompatibilitätsfunktionen zu Win16 bezeichnet, die in Win32-Anwendungen nicht mehr verwendet werden sollten. Mit den beiden neueren Funktionen kann ich beliebig oft die Mappung während der Programmlaufzeit aufrufen (unter NT 4):
    <pre>
    procedure TForm1.ButtonMapClick(Sender: TObject);
    var
    szLocalName : array[0..2] of Char;
    szRemoteName : array[0..99] of Char;
    dwError : DWord;
    aNR : TNetResource;
    begin
    StrPCopy(szLocalName, 'X:');
    if StrLen(szLocalName) <> 2 then
    raise Exception.Create('Laufwerksangabe muß 2 Zeichen sein!');
    StrPCopy(szRemoteName, StaticUNC.Caption);
    if StrLen(szRemoteName) < 3 then
    raise Exception.Create('UNC-Pfad ist nicht festgelegt!');
    FillChar(aNR, SizeOf(aNR), #0);
    with aNR do
    begin
    dwType := RESOURCETYPE_DISK;
    // neuer Buchstabe für das gemappte logische Laufwerk
    lpLocalName := szLocalName;
    lpRemoteName := szRemoteName;
    lpProvider := '';
    end;
    dwError := WNetAddConnection2(aNR, nil, nil, 0);
    if dwError <> 0 then
    begin
    dwError := GetLastError;
    ShowMessage('Fehler: '+ IntToStr(dwError));
    end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    dwError : DWord;
    begin
    WNetCancelConnection2(PChar('X:'), CONNECT_UPDATE_PROFILE, TRUE);
    end;
    </pre&gt

    Comment


    • #3
      Hallo,<br>
      Besten Dank für die Hinweise.<br>
      Es klappt schon besser.<br>
      Gruss Dirk

      Comment

      Working...
      X