{++ 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 =nilthen exit;
Shell:=TShell.Create(Application); if Shell =nilthen exit;
ControlPanel:=Shell.NameSpace(ssfCONTROLS); for i:=0to ControlPanel.items.Count -1do begin Item:=ControlPanel.items.Item(i); if (Item.Name ='网络和拨号连接') then//如果是英文的windows则Name也需是英文的 begin ControlPanel:=Folder(Item.GetFolder); break; end; end;
for i:=0to ControlPanel.items.count-1do begin Item:= ControlPanel.items.Item(i); List.Add(Item.Name); end; FreeAndNil(shell); Result:= TRUE; end;
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 =nilthen exit;
ControlPanel:=Shell.NameSpace(ssfCONTROLS); for i:=0to ControlPanel.items.Count -1do begin Item:=ControlPanel.items.Item(i); if (Item.Name ='网络和拨号连接') then//如果是英文的windows则Name也需是英文的 begin ControlPanel:=Folder(Item.GetFolder); break; end; end;
for i:=0to ControlPanel.items.count-1do begin Item:=ControlPanel.items.Item(i); if (Item.Name = AdapterName) then//如果是英文的windows则Name也需是英文的 begin for j:=0to Item.Verbs.Count -1do 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;