Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Čteni IP s adapteru (Delphi)

Dobry den.
Potřebují v mem programu vypsat IP adresu,masku,branu a DNS připojeneho adapteru.
Pohrála jsem si tady s tímto zdrojakem a obrátila ho.

http://delphi.cjcsoft.net/viewthread.php?tid=43310

Pokud je IP necvakaná ručně tak mi to funguje.
Pokud je adapter nastaven pro získání IP s DHCP tak to IP nenačte.
Mužů mít v mem zdrojaku něco špatně nebo to fakt neumí vyčíst IP získanou s DHCP.

Popřipadě poradite nějaky jiny zpusob jak tu IP ziskat.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak jsem přečetla to co psal Snoop a jsem si jista že to určitě nedám. Teda jsem se rozhodla pro tu…
Marcelka.S 01.06.2012 18:20
Marcelka.S
K tomu nepotrebujes zadnou komponentu Spust si: uses ShellApi; procedure xxxxx var s: AnsiString; s…
Jan Fiala 02.06.2012 09:12
Jan Fiala
31 s := ChangeFileExt(Application.ExeName, '.LOG'); 32 ShellExecute(0, 'C:\Windows\System32\IPConfig… nový
Marcelka.S 07.06.2012 07:48
Marcelka.S
Nenajde se tu nějaky profik, ktery vysvětli ubohe blondyně, jak přidat tu komponentu do XE2
Marcelka.S 06.06.2012 18:30
Marcelka.S
"Úbohá blondýno"...:-) Netráp sa ťažkými API funkciami alebo zachytávaním výstupu príkazového riadku… nový
pme 06.06.2012 21:59
pme
A tohle mela jako odpoved uz nahore, i vcetne tech knihoven :-( Jen to nebylo takto takto zabalene s… nový
Jan Fiala 07.06.2012 06:43
Jan Fiala
Děkují moc chrabrý zachránče :)) Vyzkoušeno a funguje. Stejnak by mně však zajímalo jak přidat tu k… nový
Marcelka.S 07.06.2012 06:12
Marcelka.S
Dobry den. Pan Jan Fiala tu dal zdrojaček. Marně se to snažim rozchodit v XE2. Rad bych to použil ne… nový
Borisek 30.06.2012 08:19
Borisek
A kde ti to konkretne hlasi problem? nový
Jan Fiala 30.06.2012 10:20
Jan Fiala
To same co psala nahoře Marcelka. [DCC Warning] Unit1.pas(32): W1044 Suspicious typecast of string… nový
Borisek 30.06.2012 10:49
Borisek
PAnsiChar() nahrad za PWideChar() nový
Jan Fiala 30.06.2012 12:02
Jan Fiala
Ještě posledni [DCC Error] Unit1.pas(32): E2010 Incompatible types: 'PWideChar' and 'Integer' nový
Borisek 30.06.2012 14:44
Borisek
Zkontroluj si parametry funkce podle napovedy s tim, co tam posilas. Zkus to takto: ShellExecute(0,… nový
Jan Fiala 30.06.2012 15:42
Jan Fiala
Dobrý den. Nějak nemohu pohnout s tým co tu dal pan Jan Fiala. var s: String; sl: TStringList; beg… poslední
Martin.Ma 12.12.2013 18:08
Martin.Ma

Tak jsem přečetla to co psal Snoop a jsem si jista že to určitě nedám.
Teda jsem se rozhodla pro tu 2 variantu
Zavolat IPConfig a vyčíst z něj informace.
To bych mohla zvladnout.
Neproradí někdo jak přidat do delphi komponentu doscommand.
Máme ve škole ve třidách vice verzi Delphi ale nejraději bych to rozchodila na XE2.
Prý v 2 ročníku pojedeme jen na nich , a ja budu o krok dopředu.
Už se těším :-/.

K tomu nepotrebujes zadnou komponentu
Spust si:

uses
 ShellApi;

procedure xxxxx
var
  s: AnsiString;
  sl: TStringList;
begin  
  s := ChangeFileExt(Application.ExeName, '.LOG');
  ShellExecute(0, 'C:\Windows\System32\IPConfig.exe', PAnsiChar('>'+s), nil, SW_Hide);
  Sleep(200);
  sl := TStringList.Create;
  sl.LoadFromFile(s);
  { tady si to zpracuj, pripadne to primo zobraz treba v Memo: Memo.Lines.LoadFromFile(s) }
  ...
  sl.Free;
end;

Samozrejme ciste je zjistit systemovy adresar pomoci napr. SHGetSpecialFolderLocation(), ale pro skolni priklad by to melo stacit

31  s := ChangeFileExt(Application.ExeName, '.LOG');
32  ShellExecute(0, 'C:\Windows\System32\IPConfig.exe', PAnsiChar('>'+s), nil, SW_Hide);
33  Sleep(200);
34  sl := TStringList.Create;
35  sl.LoadFromFile(s);
[DCC Warning] Unit1.pas(31): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
[DCC Error] Unit1.pas(32): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'
[DCC Error] Unit1.pas(32): E2010 Incompatible types: 'PWideChar' and 'Integer'
[DCC Warning] Unit1.pas(35): W1057 Implicit string cast from 'AnsiString' to 'string'

Tu 31 jsem pochopila s: String a ne AnsiString takže 31 a 35 vyřešen,zbyvji 2 chyby na řadku 32
Jinak bych chtěla i vám poděkovat za pomoc a trapení se mnou.
Jsem vděčna každemu kdo pomuže a poradí.

"Úbohá blondýno"...:-) Netráp sa ťažkými API funkciami alebo zachytávaním výstupu príkazového riadku a pozri sa sem: www.magsys.co.uk

Stačí stiahnuť: magiphlp25.zip rozbaliť a nakopírovať do adresára, kde máš projekt iba 2 unity:
IPHelper.pas, IPHLPAPI.pas.

Vytvor si projekt, na form si pridaj napr. TMemo, TButton, použi funkciu: IpHlpAdaptersInfo(var AdpTot: integer;var AdpRows: TAdaptorRows): integer; z knižnice IPHelper.

príklad:

uses IPHelper;

procedure TForm2.Button1Click(Sender: TObject);
var
  A: TAdaptorRows;
  I: Integer;
begin
  IpHlpAdaptersInfo(I,A);
  Memo1.Lines.Add(A[0].Description);
  Memo1.Lines.Add(A[0].MacAddress);
  Memo1.Lines.Add(A[0].IPAddressList[0]);
  Memo1.Lines.Add(A[0].IPMaskList[0]);
  Memo1.Lines.Add(A[0].GatewayList[0]);
  Memo1.Lines.Add(A[0].DHCPServer[0]);
  Memo1.Lines.Add(A[0].DNSServerList[0]);
end;

Testované "narýchlo" v XE2 a funguje...

Děkují moc chrabrý zachránče :))
Vyzkoušeno a funguje.

Stejnak by mně však zajímalo jak přidat tu komponentu do XE2.
Pokud se nenaučím v Delphi přidávat komponenty, tak se moc daleko nedostanu a čekat na toho vola ve škole se mi nechce.
Kdyby jste měl někdy v budoucnu chvilku času a kouk na to.
Budu pravidelně tento topik sledovat.
Ještě jednou moooc dik.

Dobry den.
Pan Jan Fiala tu dal zdrojaček.
Marně se to snažim rozchodit v XE2.
Rad bych to použil ne pro IPConfig ale tracert.
Pujde to nějak.

uses
 ShellApi;

procedure xxxxx
var
  s: AnsiString;
  sl: TStringList;
begin  
  s := ChangeFileExt(Application.ExeName, '.LOG');
  ShellExecute(0, 'C:\Windows\System32\IPConfig.exe', PAnsiChar('>'+s), nil, SW_Hide);
  Sleep(200);
  sl := TStringList.Create;
  sl.LoadFromFile(s);
  { tady si to zpracuj, pripadne to primo zobraz treba v Memo: Memo.Lines.LoadFromFile(s) }
  ...
  sl.Free;
end;

To same co psala nahoře Marcelka.

[DCC Warning] Unit1.pas(32): W1044 Suspicious typecast of string to PAnsiChar
[DCC Error] Unit1.pas(32): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'
[DCC Error] Unit1.pas(32): E2010 Incompatible types: 'PWideChar' and 'Integer'

řadek 32 je

ShellExecute(0, 'C:\Windows\System32\IPConfig.exe', PAnsiChar('>'+s), nil, SW_Hide);

Dobrý den.
Nějak nemohu pohnout s tým co tu dal pan Jan Fiala.

var
s: String;
sl: TStringList;
begin
s := ChangeFileExt(Application.ExeName, '.LOG');
ShellExecute(0, 'Open', 'C:\Windows\System32\IPConfig.exe', PWideChar('>'+s), nil, SW_normal);
Sleep(200);
sl := TStringList.Create;
sl.LoadFromFile(s);

Ve stringu s mi to vrací cestu k souboru .LOG
Pokud jsem to pochopil tak si to uloží do toho souboru LOG výpis s IPConfig a pak načte do s.

Je to to same, když použijí toto?
ShellExecute( handle, 'open', 'cmd.exe', '/q /c ipconfig -all > C:\logs1.txt', nil ,SW_SHOWNORMAL );

Zpět do poradny Odpovědět na původní otázku Nahoru