![]() |
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 |
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 ![]() ![]() Weiterführende Informationen zu diesen, und damit zusammenhängenden Informationen, kannst Du wohl gut aus dem PSDK, oder im MSDN (msdn.microsoft.com) finden. |
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:
Als Ergebnis bleiben eine intakte Netzwerkverbindung und die Caption "2250" (?). Irgendetwas fehlt wohl.... :gruebel:
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; Danke soweit! |
Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
Moin Adrian,
hättest Du Dir den Rückgabewert mal so ausgeben lassen:
Delphi-Quellcode:
hättest Du den Klartext bekommen:
ShowMessage(SysErrorMessage(2250));
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. |
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? |
Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
Moin Adrian,
Zitat:
SetIfEntry könnte man z.B. so deklarieren:
Delphi-Quellcode:
oder so:
function SetIfEntry(const pIfRow : PMIB_IFROW) : DWORD; stdcall; external 'IPHLPAPI.DLL';
Delphi-Quellcode:
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?).
function SetIfEntry(var pIfRow : PMIB_IFROW) : DWORD; stdcall; external 'IPHLPAPI.DLL';
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 ![]() hab' ich auch mal Übersetzungen von Datenstrukturen der IPHLPAPI gepostet. Nur mal so als Muster. |
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 |
Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
Moin Adrian,
Zitat:
Zitat:
Wie weiter unten im meinem letzten Posting erwähnt kannst Du Dir da Muster ansehen, ausserdem gib's vermutlich auch fertige Übersetzungen |
Re: Interne Netzwerkverbindung deaktivieren / aktivieren?
Ich denke, jetzt kann ich mich selbst durchschlagen. Ist der Lerneffekt irgendwie größer!
Also ganz herzlichen Dank!! Adrian |
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. |
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