AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi WNetGetConnection erkenne ob LW getrennt wurde?

WNetGetConnection erkenne ob LW getrennt wurde?

Ein Thema von alfold · begonnen am 2. Dez 2015 · letzter Beitrag vom 4. Dez 2015
Antwort Antwort
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#1

WNetGetConnection erkenne ob LW getrennt wurde?

  Alt 2. Dez 2015, 15:26
PC1 stellt das Laufwerk zur Verfügung.
PC2 verbindet sich mit diesem und dort soll geprüft werden ob das Netzlaufwerk noch da ist.
Ich teste dies gerade und stelle fest.
Beim ersten Aufruf alles Ok. Zeigt den UncNamen an usw.
Wenn die Netzwerkverbindung nicht mehr da ist und ich rufe die Funktion noch mal auf gibt es keine Fehlermeldung!
Gehe ich richtig in der Annahme das dies nicht geprüft wird ob das Netzwerk da ist?
MSDN hat zwar Fehlercode ausgewiesen aber erhalten tue ich nur zwei , NOT_CONNECTED oder NO_ERROR.

WinXP

Ich suche eine Funktion die zur Laufzeit Prüft (evtl jede sec) ob das Netzlaufwerk noch da ist was Pc1 zu Verfügung stellt.


Gruß alfold

Geändert von alfold ( 2. Dez 2015 um 17:36 Uhr)
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: WNetGetConnection erkenne ob LW getrennt wurde?

  Alt 3. Dez 2015, 09:40
Zitat:
Gehe ich richtig in der Annahme das dies nicht geprüft wird ob das Netzwerk da ist?
Weitere Tests:

ERROR_CONNECTION_UNAVAIL erscheint wenn das LW noch nie verbunden wurde.
und das wars.

Bei Trennung oder nicht vorhandener Netzwerkkarte kommt keine weiter Fehlermeldung.
Hinweis: (ich kann kein Engl.) falls jetzt jemand kommt und sagt in MSDN steht doch alles richtig drin.

Ok:
nehme ich die einfachste Möglichkeit mit DirectoryExists im Timer. Dauert unter Umständen etwas länger bis die Meldung kommt, aber funct wenigstens. Zu mindesten bei dem für was ich es brauche.
Gruß alfold

Geändert von alfold ( 3. Dez 2015 um 09:54 Uhr)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: WNetGetConnection erkenne ob LW getrennt wurde?

  Alt 3. Dez 2015, 10:05
Moin alfold,

zu dem Verhalten habe ich mal eine Vermutung:

Seit Windows 2000 werden Netzwerklaufwerke nach einer bestimmten Zeit automatisch getrennt (wenn ich mich recht entsinne, nach 15 Min.), wenn kein Zugriff erfolgt.
Sobald ein Zugriff erfolgt, wird die Verbindung wieder hergestellt.
Unter Windows 2000 konnte man das getrennte Laufwerk daran erkennen, dass es im Explorer rot durchgext war, in folgenden Versionen konnte man das nicht mehr erkennen.
Vermutlich greift WNetGetConnection jetzt nicht wirklich auf das Laufwerk zu um nicht die Verbindung aufzubauen.

Du könntest es ja mit einem regelmässigen Aufruf von FindFirst auf Laufwerksbuchstabe:\. versuchen und das Ergebnis auswerten.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: WNetGetConnection erkenne ob LW getrennt wurde?

  Alt 3. Dez 2015, 10:40
Moin
zu dem Verhalten habe ich mal eine Vermutung:

Vermutlich greift WNetGetConnection jetzt nicht wirklich auf das Laufwerk zu um nicht die Verbindung aufzubauen.
Soweit so gut. Was soll aber 'ERROR_NO_NETWORK / ERROR_NO_NET_OR_BAD_PATH' sein, wenn Local noch nicht mal das geprüft wird.
Du könntest es ja mit einem regelmässigen Aufruf von FindFirst auf Laufwerksbuchstabe:\. versuchen und das Ergebnis auswerten.
Erreich ich mit DirectoryExists ja auch . Dauert leider etwas länger 2-5sec. Je nachdem auf welcher Seite die Verbindung gekappt wurde.

Gruß alfold

Geändert von alfold ( 3. Dez 2015 um 10:45 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: WNetGetConnection erkenne ob LW getrennt wurde?

  Alt 3. Dez 2015, 17:34
Hat schon jemand IsNetDrive getestet?
Ist zwar schon älter, aber solange es in SHELL.DLL vorhanden ist, kann man es auch nutzen.
This function returns one of the following values.
Return value - Description

0 - The specified drive is not a network drive.
1 - The specified drive is a network drive that is properly connected.
2 - The specified drive is a network drive that is disconnected or in an error state.

Const External_Library = 'shell32';
function IsNetDrive(iDrive:Longint):Longint;StdCall;
external External_library name 'IsNetDrive';

https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: WNetGetConnection erkenne ob LW getrennt wurde?

  Alt 4. Dez 2015, 08:46
Moin
@hathor

Auch hier das gleiche es wird nur 0 oder 1 angezeigt!
0= Lw ist nicht gemappt bzw nicht vorhanden oder kein Netzlaufwerk. Selber raten was nun ist
1= es ist ein NetzLaufwerk

und das wars. Ob Netzwerk vorhanden oder nicht!

Gruß alfold
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz