Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ip ändern (https://www.delphipraxis.net/22921-ip-aendern.html)

the_seed 26. Mai 2004 11:59


ip ändern
 
hi die sufu ergab nix brauchbares über das thema...
weiss jemand wie ich die lokale ip über delphi ändern kann?

elliot2extreme 26. Mai 2004 12:19

Re: ip ändern
 
Hi,

Dinge wie die IP-Adresse lassen sich per WMI (Windows Management Instrumentation) ändern. Weiterführende Infomation gibt es in der MSDN (WMI). Damit die Programmierhilfe von Delphi auch für die WMI-Interfaces zur Verfügung steht, wird zuerst die Typbibliothek Microsoft WMI Scripting V 1.x Library importiert. Delphi legt dabei auch auf Wunsch optional auch die VCL-Wrapperkomponenten für WMI an.

Hier ist mal das Beispiel aus der MSDN (VB-Beispiel) umgeschrieben in Delphi, weiß aber nicht ob es schon funktioniert habe es noch nicht getestet.

Delphi-Quellcode:
uses ActiveX;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  aService       : ISWbemServices;
  aColNetAdapters : ISWbemObjectSet;
  aObjNetAdapter : ISWbemObject;
  vNVS           : OleVariant;
  aNVSDummy      : IDispatch;
  pEnum          : IEnumVARIANT;
  vOut           : OleVariant;
  dwRetrieved    : LongWord;
  hRes           : HResult;
  vIPAddress     : OleVariant;
  vSubnetMask    : OleVariant;
  vObj           : OleVariant;
begin
  vIPAddress := '192.168.111.99';
  vSubnetMask := '255.255.255.0';
  aService := SWbemLocator1.ConnectServer('','','','','','',0,vNVS);
  aColNetAdapters := aService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE',
                            'WQL', 0, aNVSDummy);
  pEnum := aColNetAdapters.Get__NewEnum as IEnumVARIANT;
  while (TRUE) do
  begin
    hRes := pEnum.Next(1, vObj, dwRetrieved);
    if hRes <> S_OK then
      Break;
    ShowMessage('Instanz gefunden!');
    vObj.EnableStatic(vIPAddress, vSubnetMask);
  end;
end;
Gruß

Markus

the_seed 26. Mai 2004 15:40

Re: ip ändern
 
es kommen fehlermeldungen wie bei
" aService : ISWbemServices;" undef. bezeichner...
---------
gibt es da keine kompo?
od. kann man nicht nen lokalen proxy erstellen und über den connecten?
das geht doch mit indy od.?

Luckie 26. Mai 2004 16:39

Re: ip ändern
 
Zitat:

Zitat von the_seed
es kommen fehlermeldungen wie bei
" aService : ISWbemServices;" undef. bezeichner...
---------
gibt es da keine kompo?
od. kann man nicht nen lokalen proxy erstellen und über den connecten?
das geht doch mit indy od.?

Du hast schon gelesen, was er vor seinem Quellcode geschrieben hat? :roll:

elliot2extreme 27. Mai 2004 07:16

Re: ip ändern
 
Hallo,

also für die ganzen WMI Sachen gibt es auch Komponenten diese müssen jedoch bezahlt werden und ich denke das willst du nicht.

Aber es gibt noch eine andere Möglichkeit die IP-Adresse zu ändern. Soweit ich weiß kann man die IP-Adresse mit dem Consolenbefehl NETSH ändern. Kannst du dir ja mal anschauen.

Grüße

Markus

elliot2extreme 27. Mai 2004 07:42

Re: ip ändern
 
Zitat:

Zitat von the_seed
es kommen fehlermeldungen wie bei
" aService : ISWbemServices;" undef. bezeichner...

Habe es gerade mal ausprobiert.

Zur vorgehensweise:

Zuerst musst du die Typbibliothek importieren, danach ActiveX in die Uses mit aufnehmen und nun noch die Komponente SWbemLocator aus der Palette ActiveX auf das Formular ziehen.

Danach lässt sich der Quelltext ohne Probleme kompilieren. Nur beim ausführen gibt es dann ein Problem. Die ShowMessage Anweisung funktioniert noch wenn er jedoch die IP-Adresse setzen will kommt der Fehler Typ passt nicht. Bisher weiß ich aber auch noch nicht warum ich habe es auch schon mit einem Savearray versucht doch dann kommt der gleiche Fehler hat jemand vielleicht eine Ahnung an was das liegen könnte.

Gruß

Markus

the_seed 27. Mai 2004 09:48

Re: ip ändern
 
habe es jetzt so gelöst dass ich ne batch erstelle und da
"netsh interface ip set address name="LAN-Verbindung" source=static addr=192.168.120.254 mask=255.255.255.0" reinschreibe und diese starte.
hauptsache es erfüllt seinen zweck ;)


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