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

王朝delphi·作者佚名  2006-01-09
宽屏版  字体: |||超大  

(******************************************************************************

* 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.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有