如何用Delphi实现WINDOWS XP中“本地连接”的启用和禁用 ?

(******************************************************************************
*   CopyRight (c) By 姚佩云 2004
*   All Right Reserved
*   Email : i_rock_1001@163.com www.jynx.com.cn
*   Date    :
*       New Develop   : 2004-4-8
*   Description :
*       这是一个禁用、启用网卡的例子,实际上通过shell可以控制整个界面,参考的网上资料
*       需要先引用 Microsoft Shell Controls And Automation(Shell32.dll)对应delphi声明 Shell32_TLB.pas
*   Export  :
*       GetNetLinkList
*       ExcNetLinkMenu
*   首发大富翁(www.delphibbs.com)blog,转载请保留
******************************************************************************)

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Shell32_TLB, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

 
var
  Form1: TForm1;

implementation

{$R *.dfm}


{++

Routine Description:

    取本机所有网络链接列表

Arguments:

    OUT list - 取得的网络链接列表

Return Value:

    BOOLEAN - 执行是否成功

--}

function GetNetLinkList(var list:TStrings):BOOLEAN;
var
    Shell:TShell;
    ControlPanel:Folder;
    Item:FolderItem;
    i:integer;
begin

    Result:= FALSE;
    if list = nil then
        exit;

    Shell:=TShell.Create(Application);
    if Shell = nil then
        exit;

    ControlPanel:=Shell.NameSpace(ssfCONTROLS);
    for i:=0 to ControlPanel.items.Count -1 do
    begin
        Item:=ControlPanel.items.Item(i);
        if (Item.Name = '网络和拨号连接') then  //如果是英文的windows则Name也需是英文的
        begin
            ControlPanel:=Folder(Item.GetFolder);
            break;
        end;
    end;

    for i:=0 to ControlPanel.items.count-1 do
    begin
        Item:= ControlPanel.items.Item(i);
        List.Add(Item.Name);
    end;
    FreeAndNil(shell);

    Result:= TRUE;
end;


{++

Routine Description:

    执行 本地网络链接 的菜单命令(包括禁用、启用)

Arguments:

    IN AdapterName - 网络链接名称
    IN MenuName - 菜单名称

Return Value:

    BOOLEAN - 执行是否成功

--}

function ExcNetLinkMenu(const AdapterName,MenuName:String):BOOLEAN;
var
    Shell:TShell;
    ControlPanel:Folder;
    Item:FolderItem;
    i,j:integer;
    Verb:FolderItemVerb;
begin

    Result:= FALSE;

    Shell:=TShell.Create(Application);
    if Shell = nil then
        exit;

    ControlPanel:=Shell.NameSpace(ssfCONTROLS);
    for i:=0 to ControlPanel.items.Count -1 do
    begin
        Item:=ControlPanel.items.Item(i);
        if (Item.Name = '网络和拨号连接') then  //如果是英文的windows则Name也需是英文的
        begin
            ControlPanel:=Folder(Item.GetFolder);
            break;
        end;
    end;

    for i:=0 to ControlPanel.items.count-1 do
    begin
        Item:=ControlPanel.items.Item(i);
        if (Item.Name = AdapterName) then  //如果是英文的windows则Name也需是英文的
        begin
            for j:=0 to Item.Verbs.Count -1 do
            begin
                Verb:=Item.Verbs.Item(j);
                if (Verb.Name = MenuName) then
                begin
                    Verb.DoIt ;
                    Result:=TRUE;
                    break;
                end;
            end;
            break;
        end;
    end;

    FreeAndNil(shell);

end;


procedure TForm1.Button1Click(Sender: TObject);
var
    list:TStrings;
begin
    List:=TStringList.Create ;
    GetNetLinkList(List);
    ComboBox1.Items:=List;
    FreeAndNil(List);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    ExcNetLinkMenu('本地连接 2','启用(&A)');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
    ExcNetLinkMenu('本地连接 2','禁用(&B)');
end;

end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值