这样可以用来做个内外网的自动数据交换,又保证两网的物理隔离。
谁有可以用的代码啊?(最好有点简单的注释)。
谢谢。高分征集,100不够再给。

解决方案 »

  1.   

    const
       discVerb = '停用(&B)';
       connVerb = '啟用(&A)';function DisableEthernet(const EthName: String): Boolean;
    var
     // shell1: variant;
    //cpFolder: variant;
      cpFolder: Folder;
      nwFolder: Folder;
      nVerbs: FolderItemVerbs;
      i,j,k: integer;
    begin
      result := false; // shell1 := CreateObject('shell.application');  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 = 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 := 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 = 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;procedure TForm1.Button1Click(Sender: TObject);
    begin
      DisableEthernet('區域連線');
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
       EnableEthernet('區域連線');
    end;http://beta.experts-exchange.com/Programming/Q_20648190.html
    //注意里面的中文,我是在繁体测试的
      

  2.   

    要USES哪个才可以使用FOLDER类啊?
      

  3.   

    To  aiirii(ari-爱的眼睛):
    能给个完整程序吗?你回答的文本里没有处理的程序啊?
    cpFolder := form1.shell1.NameSpace(3);
    nVerbs.Item(k).DoIt; 
    是第三方控件吗?
      

  4.   

    搞定。原来要IMPORT SHELL CONTROL。谢谢。