AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke WNetOpenEnum "Falscher Parameter"
Thema durchsuchen
Ansicht
Themen-Optionen

WNetOpenEnum "Falscher Parameter"

Ein Thema von Luckie · begonnen am 9. Mär 2006 · letzter Beitrag vom 10. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

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

WNetOpenEnum "Falscher Parameter"

  Alt 9. Mär 2006, 14:23
Ich verscuhe so zu Prüfen, ob auf die Freigane zugegriffen werden kann:
Delphi-Quellcode:
procedure TConnection.CheckConnetion;
var
  NetResource : TNetResource;
  err : DWORD;
  Dummy : THandle;
begin
  ZeroMemory(@NetResource, sizeof(TNetResource));
  NetResource.dwType := RESOURCETYPE_DISK;
  NetResource.lpRemoteName := PChar(FUNCPath);
  err := WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_DISK, RESOURCEUSAGE_CONNECTABLE, @NetResource, Dummy);
  if err <> NO_ERROR then
  begin
    FConnected := False;
    if Assigned(OnError) then
      FOnError(self, err, SysErrorMessage(err));
  end;
end;
Nur leider bekomme ich immer den Fehler "Falscher parameter", egal ob ich verbunden bin oder nicht.

Ich habe schon im Forum gesucht, aber eigentlich unterscheidet sich mein Code nicht von dem hier in der DP.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: WNetOpenEnum "Falscher Parameter"

  Alt 9. Mär 2006, 22:10
Ich müsste das noch mal pushen, auch wenn noch keine 24 Stunden rum sind, aber ich bräuchte das morgen an der Arbeit.

Im PSDK steht:
Zitat:
ERROR_INVALID_PARAMETER Either the dwScope or the dwType parameter is invalid, or there is an invalid combination of parameters.
Was wäre dann eine ungültige Kombination von Parametern?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: WNetOpenEnum "Falscher Parameter"

  Alt 9. Mär 2006, 23:36
hab den Fehler gefunden. Im MSDN steht folgendes:
Zitat:
lpNetResource
[in] Pointer to a NETRESOURCE structure that specifies the container to enumerate.If the dwScope parameter is not RESOURCE_GLOBALNET, this parameter must be NULL.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: WNetOpenEnum "Falscher Parameter"

  Alt 9. Mär 2006, 23:42
Ja aber wie teile ich ihm dann mit, welchen Netzwerkpfad er nehmen soll? Der steht doch in der Struktur drinne?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: WNetOpenEnum "Falscher Parameter"

  Alt 9. Mär 2006, 23:54
du schreibst in deinem ersten post:
Zitat:
Ich verscuhe so zu Prüfen, ob auf die Freigane zugegriffen werden kann
Dafür ist die Funktion jedoch gar nicht da. Mit "RESOURCE_CONNECTED" würdest du nur die Auflisten welche zu dem Zeitpunkt verbunden sind. Und mit den anderen Funktionen würdest du eben die Dinge auflisten per Enum die es gibt, aber ein Test ob dahin verbunden werden kann ist nicht inbegriffen.
Solange es um den Typ Disk geht würde ich dir empfehlen einfach mit FindFirst zu versuchen darauf zu zugreifen. Damit die Anwendung nicht steht das ganze einfach in einem Thread ausführen und wenn dieser nicht nach einer festgelegten Zeit mit der Anweisung fertig ist weißt du das er ewig versucht die Ressource zu finden und diese somit wohl nicht vorhanden ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: WNetOpenEnum "Falscher Parameter"

  Alt 9. Mär 2006, 23:56
Hm, ob das aber die Lösung ist?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: WNetOpenEnum "Falscher Parameter"

  Alt 10. Mär 2006, 00:00
die Ultimative Lösung ist das wohl nicht aber letzendlich kommt das ja aufs gleiche heraus.
Du dachtest vermutlich ja das die Funktion WNetOpenEnum versucht zu den Resorucen zu verbinden was aber nicht der Fall ist. Also kommt es ja fast aufs gleiche heraus wenn du es selbst versuchst.
Du kannst das ganze natürlich auch ohne Thread machen aber dann kanns halt sein das deine Anwendung eine kleine Ewigkeit nix macht (so wie der explorer wenn man auf ein Netzlaufwerk zugreifen will wo er den host noch nicht gefunden hat).
Wenn du eine bessere Lösung findest wäre ich dankbar wenn du diese postest da ich derzeit auch mit dieser "unschönen" Art auf die Existens einer Datei auf einem Netzlaufwerk teste.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: WNetOpenEnum "Falscher Parameter"

  Alt 10. Mär 2006, 00:14
hab mal bischen probiert und die Funktion "MultinetGetConnectionPerformance" kann man für diesen zweck missbrauchen.

So hab ich das umgesetzt:
Delphi-Quellcode:
function IsNetworkResAvailable(ARes: String): Boolean;
var LRes: TNetResource;
    LInfo: TNetConnectInfoStruct;
begin
  ZeroMemory(@LRes, SizeOf(LRes));
  LRes.lpLocalName := nil;
  LRes.lpRemoteName := PChar(ARes);
  LInfo.cbStructure := SizeOf(LInfo);
  result := MultinetGetConnectionPerformance(@LRes, @LInfo) = NOERROR;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: WNetOpenEnum "Falscher Parameter"

  Alt 10. Mär 2006, 00:17
So, ich glaube, ich habe da was. Demo im Anhang. Wenn die Freigabe nicht existiert kommt eine Fehlermeldung im Memo. Existiert sie und man ist verbunden, dann kommt eine entsprechende Meldung, trennt man es dann kommt auch die Meldung, dass das Netzlaufwerk nicht gefunden wurde. Aber wenn man verbindet und dann im Explorer die Freigabe aufhebt, meint er immer noch, dass man auf das Netzlaufwerk zugreifen könne. Kann es sein, dass das irgendwo gecacht wird?

Ach so:
Button1 = verbinden
Button2 = trennen
Button3 = prüfen
Button4 = murks Code aus dem Internet.
Angehängte Dateien
Dateityp: zip networkclass_164.zip (203,1 KB, 113x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: WNetOpenEnum "Falscher Parameter"

  Alt 10. Mär 2006, 00:20
Ich hab auch die Befürchtung das da der Cache zur Anwendung kommt. Kannst ja aber mal mein zuletzt getestetes Beispiel testen ob das funktioniert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:08 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