AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Netzwerkordnerzugriff

Ein Thema von Moombas · begonnen am 28. Jun 2018 · letzter Beitrag vom 15. Okt 2019
Antwort Antwort
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Netzwerkordnerzugriff

  Alt 29. Jun 2018, 12:09
also nun habe ich es fast, er fragt mich aber nach username/passwort, was ich ja eigentlich im WNetAddConnection2 übergebe. Und wenn ich beim shellexecute dies mit /u bzw /p einbaue, bin ich wieder soweit wie vorher.

@Holger wo hast du diese mit eingebaut oder hast du deinen code mal für mich?

Geändert von Moombas (29. Jun 2018 um 12:25 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
981 Beiträge
 
Delphi 6 Professional
 
#2

AW: Netzwerkordnerzugriff

  Alt 29. Jun 2018, 12:33
Hmm..

Kann Dir nur Auszüge geben:

Delphi-Quellcode:
function IsLocalPath(const Path:string):boolean;
var
  i : cardinal;
begin
  i := GetDriveType(pchar(copy(path,1,2)));
  result := (i = DRIVE_FIXED) or
    (i = DRIVE_CDROM) or
    (i = DRIVE_RAMDISK) or
    (i = DRIVE_REMOVABLE);
end;


function Logout(Path:String):Cardinal;
begin
  result := NO_ERROR;
  if length(path) > 0 then begin
    if path[1] = '\then begin
      path := ExcludeTrailingPathDelimiter(ExpandUNCFileName(Trim(path)));
      // Windows-Share LogOff
      result := WNetCancelConnection2(pchar(Path),CONNECT_UPDATE_PROFILE,true);

      // NetWare-Server LogOff nur mit dem Server-Namen!
      path := '\\' + ExtractServerName(path);
      WNetCancelConnection2(pchar(copy(Path,3,length(path)-2)),CONNECT_UPDATE_PROFILE,true);
    end else begin
      result := WNetCancelConnection2(pchar(Path),CONNECT_UPDATE_PROFILE,true);
    end;
  end;
end;


function Logon(Drive, Path, User, Password:String; TemporaryOnly : boolean):Cardinal;
var
  NetRes : TNetResource;
  tempres : Cardinal;
  dwFlags : Cardinal;
begin
  if islocalpath(path) then
    tempres := NO_ERROR //No need to logon
  else begin
    path := ExcludeTrailingPathDelimiter(ExpandUNCFileName(Trim(path)));

    // Windows-Share login
    NetRes.dwScope := RESOURCE_GLOBALNET;
    NetRes.dwDisplayType := RESOURCEDISPLAYTYPE_SHARE;//RESOURCEDISPLAYTYPE_GENERIC;
    NetRes.dwUsage := RESOURCEUSAGE_CONNECTABLE;
    NetRes.lpComment := '';

    // Nur diese Angaben sind notwendig..
    NetRes.dwType := RESOURCETYPE_DISK; // RESOURCETYPE_ANY;
    NetRes.lpLocalName := pchar(Drive);
    NetRes.lpRemoteName := pchar(path);
    NetRes.lpProvider := '';


    if TemporaryOnly then
      dwFlags := CONNECT_TEMPORARY // 0
    else
      dwFlags := CONNECT_UPDATE_PROFILE;

    // CONNECT_UPDATE_RECENT ?

    if User = 'then
      tempres := WNetAddConnection2(NetRes, nil, nil, dwFlags)
    else
      tempres := WNetAddConnection2(NetRes, pchar(Password), pchar(User), dwFlags);
  end;
  result := tempres;
end;

Verbindung herstellen / LW Mappen:

Delphi-Quellcode:
procedure TForm1.ButtonAddNetUseClick(Sender: TObject);
var
  err : DWORD;
begin
  err := Logon(EditLocalDrive.Text, EditShare.Text,EditUser.Text,EditPassword.Text,true);
  if err <> 0 then
    ShowMessage(IntToStr(err) + ' - ' + SysErrorMessage(err));
end;
Öffen des UNC-PFades im Explorer:

  ShellExecute(self.Handle, nil, PChar(AUNCPath),nil,nil,SW_SHOW);

(Erstellt mit D6, eventuell Anpassungen an UniCode notwendig)
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Netzwerkordnerzugriff

  Alt 29. Jun 2018, 13:52
Hat immens geholfen (auch das mit der errorabfrage kannte ich bisher so nicht).

Allerdings taucht bei mir aktuell immer der Error 42 auf (trotz Verbindung & ohne text). Laut Windows gibt es diesen Fehler als Systemfehler auch nicht

Edit: Hat sich erledigt. Fehler gefunden.


Vielen Dank HolgerX

Geändert von Moombas (29. Jun 2018 um 14:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Netzwerkordnerzugriff

  Alt 29. Jun 2018, 15:17
Verrätst du uns auch woran es lag?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Netzwerkordnerzugriff

  Alt 2. Jul 2018, 08:27
Ich hatte den Code mit dem error

Delphi-Quellcode:
 if err <> 0 then
    ShowMessage(IntToStr(err) + ' - ' + SysErrorMessage(err));
auch auf die shellexecute angewendet, was dann zu der besagten Fehlermeldung führte. Diesen habe ich wieder entfernt und somit läuft es nun ohne Fehlermeldung.

So richtig konnte ich zur 42 zwar nichts finden, aber einige meinten 42 = success also alles gut. Da es aber keine eindeutige Aussage gab, habe ich ihn halt ganz entfernt anstatt die 42 auszuschließen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.915 Beiträge
 
Delphi 12 Athens
 
#6

AW: Netzwerkordnerzugriff

  Alt 2. Jul 2018, 09:02
IIRC sind Rückgabewerte über 32 kein Fehler. In der Doku sehe ich die Information allerdings nicht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Netzwerkordnerzugriff

  Alt 3. Jul 2018, 09:26
IIRC sind Rückgabewerte über 32 kein Fehler. In der Doku sehe ich die Information allerdings nicht.
Ich helfe dir dann mal

Allerdings habe ich direkt im MSDN nachgeschaut und nicht in der Delphi Doku.

Zitat von MSDN:
Return Value
Type: HINSTANCE

If the function succeeds, it returns a value greater than 32. If the function fails, it returns an error value that indicates the cause of the failure. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. It can be cast only to an int and compared to either 32 or the following error codes below.

Quelle: https://docs.microsoft.com/en-us/win...-shellexecutea

Hervorhebung durch mich.
chrome_2018-07-03_10-25-21.png
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz