Delphi禁用,启用网卡


(******************************************************************************
* CopyRight (c) By 姚佩云 2004
* All Right Reserved
* Email : i_rock_1001@163.com http://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
* 首发大富翁(http://www.delphibbs.com)blog/,转载请保留
******************************************************************************)

 

ContractedBlock.gif ExpandedBlockStart.gif Code
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.

 

转载于:https://www.cnblogs.com/bsoom/archive/2009/11/12/1602036.html

Delphi中,想要获取Android设备上的网卡信息,可以通过使用Java的相关类和方法来实现。 首先,需要使用Java的反射机制来获取相关的类。可以通过使用`JNIClasses`单元来调用Java的类和方法。例如,通过`TJNetworkInterface`类可以获取到设备的网卡信息。 接下来,可以使用`getNetworkInterfaces`方法来获取所有的网卡接口。例如: ```delphi var NetworkInterfaces: JEnumeration; NetworkInterface: JNetworkInterface; begin NetworkInterfaces := TJNetworkInterface.JavaClass.getNetworkInterfaces; while NetworkInterfaces.hasMoreElements do begin NetworkInterface := TJNetworkInterface.Wrap(NetworkInterfaces.nextElement); // 对NetworkInterface进行操作,以获取网卡相关信息 ... end; end; ``` 通过遍历`NetworkInterfaces`获取到的网卡接口对象,可以获取到各个网卡的相关信息。例如,可以使用`getName`方法获取网卡的名称,使用`getDisplayName`方法获取网卡的显示名称,使用`getHardwareAddress`方法获取网卡的硬件地址等。 ```delphi var Name: JString; DisplayName: JString; HardwareAddress: TJavaArray<Byte>; begin Name := NetworkInterface.getName; DisplayName := NetworkInterface.getDisplayName; HardwareAddress := NetworkInterface.getHardwareAddress; // 对获取到的信息进行操作,如输出到控制台或显示在应用界面中 ... end; ``` 通过上述方法,可以在Delphi中获取到Android设备上的网卡信息,并进行相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值