private void applyWallpaperWin7(string path) { Shell32.Shell shell = new Shell32.ShellClass(); Shell32.Folder folder = shell.NameSpace(Path.GetDirectoryName(path)) as Shell32.Folder; Shell32.FolderItem folderItem = folder.ParseName(System.IO.Path.GetFileName(path)); Shell32.FolderItemVerbs vs = folderItem.Verbs(); bool wallpaperSet = false; for (int i = 0; i < vs.Count; i++) { Shell32.FolderItemVerb ib = vs.Item(i); if (ib.Name.Contains("&b") || ib.Name.Contains("&B")) { if (ib.Name.ToLower().Contains("background") || ib.Name.ToLower().Contains("背景")) { wallpaperSet = true; ib.DoIt(); } } } if (wallpaperSet == false) { applyWallpaperXP(path); } else { downloadAndApplyWallpaperSucceeded(); } }
///<summary> /// 得到控制面板中宽带连接对象 ///</summary> public void SetNetworkAdapter(string adslName) { string discVerb = "断开(&O)"; string connVerb = "连接(&O)"; string network = "网络连接"; string networkConnection = adslName; Shell32.Shell sh = new Shell32.Shell(); Shell32.Folder folder = sh.NameSpace(3);//Shell32.ShellSpecialFolderConstants.ssfCONTROLS try { //进入控制面板的所有选项 foreach (Shell32.FolderItem myItem in folder.Items()) { Console.WriteLine(myItem.Name); //进入网络和拔号连接 if (myItem.Name == network) { Shell32.Folder fd = (Shell32.Folder)myItem.GetFolder; foreach (Shell32.FolderItem fi in fd.Items()) { //找到本地连接 if (fi.Name.IndexOf(networkConnection) > -1) { //找本地连接的所有右键功能菜单 foreach (Shell32.FolderItemVerb fib in fi.Verbs())//fi.Verbs不能再线程中访问,所以在一开始就要获取连接对象 { if (fib.Name == discVerb) { disconnect = fib; return; } else if (fib.Name == connVerb) { connection = fib; return; } } } } } } } catch { } }
public MenuItemShellVerb(Shell32.FolderItemVerb verb) { _verb = verb; // Text = verb.Name; }