Einzelnen Beitrag anzeigen

Tod787

Registriert seit: 19. Mai 2008
99 Beiträge
 
#101

Re: Feststellen, ob Netzwerkkabel gezogen wurde?

  Alt 28. Mai 2008, 13:40
Also ich hab jetzt mal provisorisch ein kleines Testprogramm geschrieben und muss erstmal sagen es funktioniert schonmal soweit. Allerdings wird zur Zeit nur ein Adapter ausgegeben. Irgendwas stimmt mit der For-Schleife noch nicht.

Was ich im Taskmanger bemerkt habe ist, dass der Arbeitsspeicher mit jedem Zyklus voller wird. Weiß zwar noch nicht genau was aber ich denke mal dass ich nach jedem Aufruf noch etwas reseten bzw. nullen sollte.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, WinSock, ActiveX, ComObj, ExtCtrls;

type
  TForm1 = class(TForm)

    Timer1: TTimer;
    Panel1: TPanel;

    procedure Timer1Timer(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
 wmi : variant;
 wmiService : variant;
 nicstatus : variant;
 card : Olevariant;
 cnt : integer;
 Enum: IEnumVariant;
 P : IUnknown;
 F : Cardinal;
 connected : integer;
 status : string;
begin
  WMI:=CreateOleObject('WbemScripting.SWbemLocator');
  wmiService := wmi.ConnectServer('.', 'root\wmi');
  nicstatus := wmiService.InstancesOf('MSNdis_MediaConnectStatus');
  p := nicstatus._NewEnum;
  p.QueryInterface(IEnumVariant, Enum);

  for cnt := 0 to nicstatus.Count - 1 do
   begin
     Enum.Next(1, card, F);
     connected := card.NdisMediaConnectStatus;
     if (connected = 0) then
       Status := 'verbunden'
        else
         Status := 'nicht verbunden';
      Panel1.Caption := card.InstanceName + ' : ' + status;
     //ShowMessage(card.InstanceName + ' : ' + Status);
   end;
end;

end.
  Mit Zitat antworten Zitat