如何通过程序实现网卡的启用和禁止功能?

解决方案 »

  1.   

    在Delphi中选Project Import Type Library命令,在对话框中选Import Microsoft Shell Controls And Automation类型库,点Install后,在Delphi的ActiveX控件板上就多了TShellFolderItem,TShellLinkObject,TShellFolderView,TShell,TSearchCommand等几个组件const
       discVerb = '禁用(&B)';
       connVerb = '启用(&A)';function TForm1.DisableEthernet(const EthName,State: String): Boolean;
    var
      cpFolder: Folder;
      nwFolder: Folder;
      nVerbs: FolderItemVerbs;
      i,j,k: integer;
      aItem: TListItem;
    begin
      result := false;
      cpFolder := Form1.shell1.NameSpace(3);
      if cpFolder <> nil then
      begin
        for i := 0 to cpFolder.items.Count-1 do
        begin
          if cpFolder.Items.Item(i).Name = '网络和拨号连接' then
          begin
            nwFolder := cpFolder.items.item(i).GetFolder as Folder;
            if nwFolder <> nil then
            begin
              for j :=0 to nwFolder.items.Count-1 do
              begin
                if nwFolder.Items.Item(j).Name = EthName then
                begin
                  nVerbs := nwFolder.Items.Item(j).Verbs;
                  for k := 0 to  nVerbs.Count-1 do
                  begin
                    if nVerbs.Item(k).Name = State then
                    begin
                      nVerbs.Item(k).DoIt;
                      aItem := Form1.lvLog.Items.Add;
                      aItem.Caption := FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
                      aItem.SubItems.Add(EthName);
                      aItem.SubItems.Add(State);
                      Result := True;
                    end;
                  end;
                end;
              end;
            end;
          end;
        end;
        if nwFolder = nil then
           showmessage('Network and Dial-up Connections not found');
      end
      else
        showmessage('control panel not found');end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DisableEthernet('本地连接',discVerb);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      DisableEthernet('本地连接',connVerb);
    end;