Delphi-PRAXiS

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?

Luckie 11. Aug 2004 08:49

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Hier: http://www.delphi-jedi.org/APILIBRARY:417206 im Win32API.zip findest du die nötigen Header-Übersetzungen.

Markus 11. Aug 2004 09:05

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Ich hänge jetzt an folgendem: ich muss der SetIfEntry-Funktion nur einen Wert des Typs MIB_IFROW übergeben. Wie kann ich den für die entsprechende Netzwerkverbindung herausfinden?

Markus 12. Aug 2004 17:57

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Ich komme hier nicht weiter. Kann mir evtl. jemand helfen? Wäre echt super...

Master-xy 13. Aug 2004 12:18

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Hab das gleiche Problem, helft dem Jungen doch mal :!:

mschaefer 13. Aug 2004 13:40

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Moin,
hab da keine Ahnung von und bin hier eigentlich nur gestrandet (Pause) aber
"supermuckl" hat mal eine InternetCafe-Software geschrieben und da müßte
er sich eigentlich auskennen mit sowas..

Link

Viel Erfolg // Martin

Markus 20. Aug 2004 20:22

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Bin leider immer noch nicht weitergekommen. Weiß denn wirklich niemand wie das gehen könnte?

Master-xy 23. Aug 2004 12:18

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Ich bastlem momentan dran ich sag dir bescheid wenn ich nen weg gefunden habe. :?: :!: :?:

Michael

DaFox 23. Aug 2004 12:27

Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
 
Hi.

Das Windows DDK (ehemals NT DDK) hat ein Beispiel dazu.
Schau Dir den Source im Ordner src/general/setup/Enable an und besorge Dir die SetupAPI.pas von Robert.

Gruß,
Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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 by Thomas Breitkreuz