在Windows2000以上的OS里都有一个“本地连接”,右键单击“本地连接”出现一菜单,里面有“禁用”项目,单击后“本地连接”就不可用(图标变灰),再右键单击“本地连接”刚才“禁用”的地方变“启用”,单击后“本地连接”又正常了。
请问在Delphi里如何用代码实现以上功能?我给1000分!(因系统限制只能标出100分)

解决方案 »

  1.   

    const
       discVerb = '禁用(&B)';
       connVerb = '启用(&A)';function DisableEthernet(const EthName: String): Boolean;
    var
      cpFolder: Folder;
      nwFolder: Folder;
      nVerbs: FolderItemVerbs; 
      i,j,k: integer;
    begin
      result := false;
      cpFolder := 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 = discVerb then
                    begin
                      nVerbs.Item(k).DoIt;  
                      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;
    function EnableEthernet(const EthName: String): Boolean;
    var
      cpFolder: Folder;
      nwFolder: Folder;
      nVerbs: FolderItemVerbs; 
      i,j,k: integer;
    begin
      result := false;
      cpFolder := 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 = connVerb then
                    begin
                      nVerbs.Item(k).DoIt;  
                      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;