Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Stav síť. připojení (Delphi)

Zdravím
Kdysi ve Win XP byli v tray ty nádherné ikony, které ukazovali stav připojení,jak lan tak i wifi síťovky.
V dalších verzích Winu to už mrkvosovt posral a slátal je dohromady.
Da se něco takového udělat v delphi.
Nemusí to byt v tray.
Na ploše 2 x malý form,v každé by se pomocí ikon ukazoval stav těch síťovek.
Da se nějak zjistit stav těch síťovek?
Vypnuta – zapnuta – načita IP

Předmět Autor Datum
Hm,žádná chytrá hlava :.( Nevím jak ostatní systémy ale ve W8 tohle nefunguje. procedure TForm1.Ti…
Martin.Ma 07.12.2013 17:40
Martin.Ma
uses WinInet; {...} function IsConnectedToInternet: Boolean; var dwConnectionTypes: DWORD; begin dwC…
pme 07.12.2013 18:34
pme
Dik. To už jsem také rozchodil. procedure TForm1.Timer1Timer(Sender: TObject); var State: DWord; R… poslední
Martin.Ma 07.12.2013 19:35
Martin.Ma

Hm,žádná chytrá hlava :.(

Nevím jak ostatní systémy ale ve W8 tohle nefunguje.

procedure TForm1.Timer1Timer(Sender: TObject);
var
Flag : word;
begin
Label1.Caption := IntToStr(Flag and INTERNET_CONNECTION_LAN)
End;

Furt 0 :.(

uses
  WinInet;

{...}

function IsConnectedToInternet: Boolean;
var
  dwConnectionTypes: DWORD;
begin
  dwConnectionTypes :=
    INTERNET_CONNECTION_MODEM +
    INTERNET_CONNECTION_LAN +
    INTERNET_CONNECTION_PROXY;
  Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;

Dik.
To už jsem také rozchodil.

procedure TForm1.Timer1Timer(Sender: TObject);
var
State: DWord;
Result: Boolean;
const
Type1 = INTERNET_CONNECTION_MODEM;
Type2 = INTERNET_CONNECTION_LAN;
Type3 = INTERNET_CONNECTION_PROXY;
Type4 = INTERNET_CONNECTION_MODEM_BUSY;
begin
Result:=InternetGetConnectedState(@State, 0);
if Result then
begin
if (State and Type1) = Type1 then Label1.Caption:= 'Modem ';
if (State and Type2) = Type2 then Label1.Caption:= 'LAN ';
if (State and Type3) = Type3 then Label1.Caption:= 'Proxy ';
if (State and Type4) = Type4 then Label1.Caption:= 'Modem busy ';
end

Dá se udělat něco takového na co se ptám na začátku?

Takto si třeba do ComboBoxu vypíšu sit.adaprery.
Umím pak vyčíst MAC, IP,masku,branu,dns atd

function TForm1.zjistiadapter: integer;
var Retvar : integer;
oBindObj : IDispatch;
//oNetAdapters,oNetAdapter,
//oIpAddress,oGateWay,
oWMIService,oSubnetMask : OleVariant;
i,iValue : longword;
oEnum : IEnumvariant;
oCtx : IBindCtx;
oMk : IMoniker;
sFileObj : widestring;
begin
Retvar := 0;
sFileObj := 'winmgmts:\\.\root\cimv2';
oIpAddress := VarArrayCreate([1,1],varOleStr);
OleCheck(CreateBindCtx(0,oCtx));
OleCheck(MkParseDisplayNameEx(oCtx,PWideChar(sFile Obj),i,oMk));
OleCheck(oMk.BindToObject(oCtx,nil,IUnknown,oBindO bj));
oWMIService := oBindObj;
oNetAdapters := oWMIService.ExecQuery('Select * from ' +
'Win32_NetworkAdapterConfiguration ' +
'where IPEnabled=TRUE');
oEnum := IUnknown(oNetAdapters._NewEnum) as IEnumVariant;
while oEnum.Next(1,oNetAdapter,iValue) = 0 do
begin
if ComboBox1.Text = '' then ComboBox1.Text := oNetAdapter.Caption;

ComboBox1.Items.Add (oNetAdapter.Caption);
end;
end;

Dá se udělat něco takového na co se ptám na začátku.

Hlavně mně zajikna jak zjistím že adaprer zrovna nečita IP.
Ono se dá načíst IP adresa s těch adaptéru a nezáleží zda je do sit.zasunut kabl nebo je zakázaná.
Takže stačí vytáhnout IP s lan a wifi a pingat si na ně.
Tak se da poznat přes kterou jedu.

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