在Delphi中选Project Import Type Library命令,在对话框中选Import Microsoft Shell Controls And Automation类型库,点Install后,在Delphi的ActiveX控件板上就多了TShellFolderItem,TShellLinkObject,TShellFolderView,TShell,TSearchCommand等几个组件const discVerb = '禁用(&B)'; connVerb = '启用(&A)';function TForm1.DisableEthernet(const EthName,State: String): Boolean; var cpFolder: Folder; nwFolder: Folder; nVerbs: FolderItemVerbs; i,j,k: integer; aItem: TListItem; 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 = State then begin nVerbs.Item(k).DoIt; aItem := Form1.lvLog.Items.Add; aItem.Caption := FormatDateTime('yyyy-mm-dd hh:mm:ss',now); aItem.SubItems.Add(EthName); aItem.SubItems.Add(State); 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('本地连接',discVerb); end;procedure TForm1.Button2Click(Sender: TObject); begin DisableEthernet('本地连接',connVerb); end;
discVerb = '禁用(&B)';
connVerb = '启用(&A)';function TForm1.DisableEthernet(const EthName,State: String): Boolean;
var
cpFolder: Folder;
nwFolder: Folder;
nVerbs: FolderItemVerbs;
i,j,k: integer;
aItem: TListItem;
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 = State then
begin
nVerbs.Item(k).DoIt;
aItem := Form1.lvLog.Items.Add;
aItem.Caption := FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
aItem.SubItems.Add(EthName);
aItem.SubItems.Add(State);
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('本地连接',discVerb);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
DisableEthernet('本地连接',connVerb);
end;