AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi 2 Netzlaufwerkverbindungen in einem Service
Thema durchsuchen
Ansicht
Themen-Optionen

2 Netzlaufwerkverbindungen in einem Service

Ein Thema von Panschi · begonnen am 27. Dez 2012 · letzter Beitrag vom 27. Dez 2012
 
Benutzerbild von Panschi
Panschi

Registriert seit: 30. Aug 2011
Ort: Sauerland
51 Beiträge
 
Delphi XE2 Enterprise
 
#1

2 Netzlaufwerkverbindungen in einem Service

  Alt 27. Dez 2012, 07:27
Guten morgen Forum,

Gleich nach den Feiertagen klagt mich folgendes Problem: Ich habe einen Service programmiert, welcher ,um es einfach ausgedrückt, bestimmte Aufgaben zu bestimmten Zeitpunkten ausführt. Damit der Service auch in anderen Projekten relativ simpel benutzt werden kann, läd sich der Service die Prozeduren dynamisch aus DLL´s, deren Pfade in einer XML-Datei hinterlegt sind.
Der Service wird bereits beim Kunden eingesetzt und arbeitet zufriedenstellend! Nun habe ich einen neuen Job, also eine neue DLL programmiert, die zur Arbeit ein Netzlaufwerk erstellen muss. Das realisiere ich folgendermaßen:
Delphi-Quellcode:
library MyDLL;

var
  //Variablen
  Password: String;

{         Funktion zum Ausführen        }
function Run: PChar; stdcall; export;
var
  Error: Integer;
  Msg: String;
begin
  Error := 0;
  Msg := '';

  try
    if CheckConnection(Msg) then
    begin
      //Mach etwas
    end else
      Error := 1;
  except
    on e: exception do
      Msg := e.Message;
  end;

  Result := PChar('['+IntToStr(Error)+']['+Msg+']');
end;

{     Überprüft die Netzlaufwerkverbindung      }
function CheckConnection(var AMsg: String): Boolean;
begin
  Result := false;
  try
    If FileExists(Filepath+'\'+Filename) then
      Result := true
    else
    begin
      WNetCancelConnection2(PChar(DriveChar), 0, True);
      If NetzlaufwerkVerbinden(DriveChar,Filepath,Username,Password,false) = 0 then
      begin
        If FileExists(Filepath+'\'+Filename) then
          Result := true
        else
          AMsg := AMsg + Filename + ' kann nicht gefunden werden; ';
      end else
      begin
        AMsg := AMsg + 'Verbindung zu Netzlaufwerk fehlgeschlagen; ';
        Result := False;
      end;
    end;
  except
    Result := false;
  end;
end;

{       Erstellt eine Verbindung zu einem Netzlaufwerk      }
function NetzlaufwerkVerbinden(ALaufwerk: string; APfad: string;
    AUsername: string; APassword: string; ARestoreAtLogon: Boolean): DWORD;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
begin
  with NetResource do
  begin
    dwType := RESOURCETYPE_DISK;
    lpLocalName := PChar(ALaufwerk);
    lpRemoteName := PChar(APfad);
    lpProvider := nil;
  end;
  if (ARestoreAtLogon) then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;
  Result := WNetAddConnection2(NetResource, PChar(APassword),
                PChar(AUsername), dwFlags);
end;
Das funktioniert soweit auch gut. Möchte ich jedoch diesen Job auf zwei unterschiedliche Netzwerkstandorte anwenden scheint ein Job sich beim Verbinden des Netzwerklaufwerkes abzuschießen. Leider ist das dank des Services und der DLL nicht so leicht zu debuggen!
Habt ihr eine Idee?
Warum mögen Frauen OOP-Programmierer? Weil sie Klasse haben
  Mit Zitat antworten Zitat
 


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 02:16 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