Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Interne Netzwerkverbindung deaktivieren / aktivieren? (https://www.delphipraxis.net/10843-interne-netzwerkverbindung-deaktivieren-aktivieren.html)

adrian4321 26. Okt 2003 15:10


Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Hallo,

ich suche verzweifelt nach einer Möglichkeit, unter Win2000 mit meinem eigenen Programm EINE LAN-Verbindung zu trennen oder wiederherzustellen; und zwar die richtige ;-).
Der Rechner hätte zwei Netzwerkkarten und so kann bei Bedarf z.B. in einem Netzwerk mit Router die Verbindung zum Internetgekappt werden.

Ich hoffe, man kann verstehen, was ich meine.... Ich habe die Hilfedateien durchgekämmt und auch sonst nichts gefunden :roll:

Echt super wäre auch eine entsprechende Lösung für Kylix.

Vielen Dank schonmal!!
Adrian

Christian Seehase 26. Okt 2003 15:28

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Moin Adrian,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Eine unmittelbare Lösung habe ich nicht, aber zur Identifikation der Netzwerkkarten kannst Du hier mal nach Hier im Forum suchenGetAdaptersInfo suchen (ggf. auch nach Hier im Forum suchenGetPerAdapterInfo).
Weiterführende Informationen zu diesen, und damit zusammenhängenden Informationen, kannst Du wohl gut aus dem PSDK, oder im MSDN (msdn.microsoft.com) finden.

adrian4321 26. Okt 2003 16:03

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Moin zurück!

Ich habe mal bei MSDN reingeschaut und in der Suche nur den Befehl "WNetCancelConnection2" gefunden. Steht zwar nur was von Windows CE drin, ist aber auch in der SDK-Hilfe beschrieben.

Ich habe ihn so ausprobiert:
Delphi-Quellcode:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    result : dWord;
    begin
    result:= WNetCancelConnection2('Local Ethernet', 0, True); // "Local Ethernet" heißt die zu trennende Netzwerkverbindung (Verbindung! Kein Netzlaufwerk oder Printer!)
    caption:= IntToStr(result);
    end;
Als Ergebnis bleiben eine intakte Netzwerkverbindung und die Caption "2250" (?). Irgendetwas fehlt wohl.... :gruebel:

Danke soweit!

Christian Seehase 26. Okt 2003 17:15

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Moin Adrian,

hättest Du Dir den Rückgabewert mal so ausgeben lassen:

Delphi-Quellcode:
ShowMessage(SysErrorMessage(2250));
hättest Du den Klartext bekommen:
Diese Netzwerkverbindung ist nicht vorhanden.

WNetCancelConnection2 ist im Wesentlichen dafür gedacht Laufwerksverbindungen (u.ä.) zu trennen, also verbundene Resourcen.

Wo ich es mir noch einmal durchlese:
Du willst keine Verbindung trennen, sondern deaktivieren, und wieder aktivieren können.

Vielleicht hilft Dir da die "IP Helper Function Reference" weiter.
Ich denke da speziell an die Funktion SetIfEntry, um eine Karte zu aktivieren/deaktivieren, allerdings habe ich damit auch noch nicht gearbeitet, und weiss nicht, ob's damit tatsächlich geht.
Mit Hilfe anderer Funktionen der IPHLPAPI.DLL solltest Du auch das entsprechende Interface herausbekommen können.

adrian4321 26. Okt 2003 18:18

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Herzlichen Dank! Ich habe mal mit Hilfe Deiner Tipps in MSDN recherchiert - und folgendes herausgefunden:

Mit SetIfEntry müsste es gehen, den dwIndex bekommt man mit MIB_IFROW heraus. Nur folgendes Problem: Sobald ich in Delphi die Klammer nach SetIfEntry aufmache, geschieht nichts :wall: . Die IPHLPAPI.DLL aus \system32 lässt sich nicht einbinden, aber ehrlich gesagt habe ich keinen Plan, wie ich da weitermachen muss. In MSDN ist auch von folgendem die Rede unter 'Requirements':

Header: Declared in Iphlpapi.h.
Library: Use Iphlpapi.lib.

bzw.

Header: Declared in Iprtrmib.h bei MIB_IFROW.

Wie muss ich weitermachen?

Christian Seehase 26. Okt 2003 18:50

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Moin Adrian,

Zitat:

Zitat von adrian4321
Sobald ich in Delphi die Klammer nach SetIfEntry aufmache, geschieht nichts

Diese Funktionen wurden nicht vordeklariert, dass müsstest Du selber machen, oder Dir Units besorgen, in denen das bereits geschehen ist. Gilt natürlich auch für die Strukturen (Datentypen) die hier erforderlich sind.

SetIfEntry könnte man z.B. so deklarieren:

Delphi-Quellcode:
function SetIfEntry(const pIfRow : PMIB_IFROW) : DWORD; stdcall; external 'IPHLPAPI.DLL';
oder so:

Delphi-Quellcode:
function SetIfEntry(var pIfRow : PMIB_IFROW) : DWORD; stdcall; external 'IPHLPAPI.DLL';
Die erste Variante wäre dann die Version, wie ich es machen würde, wenn ich die Funktion statisch importiere, die zweite wäre die borlandtypische, wie Du sie vermutlich auch bei den Header Übersetzungen der JEDIS finden würdest (wirst?).

Ich bevorzuge die C-typische Variante, da man hier "näher am Original" ist, und auch C-Beispiele leichter übersetzen kann.
Aber das ist Geschmackssache, finde ich.

In diesem Thread
Subnetzmaske/ Server finden
hab' ich auch mal Übersetzungen von Datenstrukturen der IPHLPAPI gepostet.
Nur mal so als Muster.

adrian4321 26. Okt 2003 19:23

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Servus (sagt man bei uns eher als Moin),

PMIB_IFROW mault er bei mir als undef. Bezeichner an.

Ich weiß ich stelle mich wahrscheinlich ziemlich dumm an aber so tief war ich im System noch nicht drin habe bisher mehr Datenbankanwendungen und mathematisches Zeugs hergestellt :)

Tschüss, Adrian

Christian Seehase 26. Okt 2003 19:38

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Moin Adrian,

Zitat:

Zitat von adrian4321
PMIB_IFROW mault er bei mir als undef. Bezeichner an.

Zitat:

Zitat von Christian Seehase
Diese Funktionen wurden nicht vordeklariert, dass müsstest Du selber machen, oder Dir Units besorgen, in denen das bereits geschehen ist. Gilt natürlich auch für die Strukturen (Datentypen) die hier erforderlich sind.

und PMIP_IFROW ist der Pointer auf eine Struktur, die nicht vordeklariert ist, und somit auch der Pointer nicht.

Wie weiter unten im meinem letzten Posting erwähnt kannst Du Dir da Muster ansehen, ausserdem gib's vermutlich auch fertige Übersetzungen

adrian4321 26. Okt 2003 21:03

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Ich denke, jetzt kann ich mich selbst durchschlagen. Ist der Lerneffekt irgendwie größer!

Also ganz herzlichen Dank!!

Adrian

Markus 11. Aug 2004 08:46

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Hallo,

jetzt muss ich diesen Beitrag nochmal aufgraben, aber weiß inzwischen jemand, wie man das macht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz