winform自动添加同级目录下可执行文件的快捷方式到右键菜单中_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > winform自动添加同级目录下可执行文件的快捷方式到右键菜单中

winform自动添加同级目录下可执行文件的快捷方式到右键菜单中

 2015/1/30 17:20:12  假如  程序员俱乐部  我要评论(0)
  • 摘要:1///<summary>2///追加同目录下可执行文件到右键菜单中3///在form的Load事件中调用:newclsContextMenuStrip(this.FindForm());4///</summary>5publicclassclsContextMenuStrip6{7//窗体8System.Windows.Forms.Formform;9//右键菜单10System.Windows.Forms.ContextMenuStripmenu
  • 标签:for 目录 文件 方式 执行 菜单 winform
 1    /// <summary>
 2     /// 追加同目录下可执行文件到右键菜单中
 3     /// 在form的Load事件中调用:new clsContextMenuStrip(this.FindForm());
 4     /// </summary>
 5     public class clsContextMenuStrip
 6     {
 7         //窗体
 8         System.Windows.Forms.Form form;
 9         //右键菜单
10         System.Windows.Forms.ContextMenuStrip menu;
11         //当前可执行文件目录
12         string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
13         /// <summary>
14         /// 追加同目录下可执行文件到右键菜单中
15         /// 调用方法:new clsContextMenuStrip(this.FindForm());
16         /// </summary>
17         public clsContextMenuStrip(Form f)
18         {
19             form = f;
20             menu = f.Controls.Owner.ContextMenuStrip;
21             if (menu == null)
22             {
23                 menu = new ContextMenuStrip();
24                 form.Controls.Owner.ContextMenuStrip = menu;
25             }
26             Init();
27         }
28         /// <summary>
29         /// 获取当前程序目录下的所有exe,追加到右键菜单中
30         /// </summary>
31         private void Init()
32         {
33             var currExePath = Process.GetCurrentProcess().MainModule.FileName;
34             var files = Directory.GetFileSystemEntries(path, "*.exe", SearchOption.AllDirectories);
35             foreach (var filePath in files)
36             {
37                 //排除本身
38                 if (currExePath.Equals(filePath, StringComparison.CurrentCultureIgnoreCase))
39                     continue;
40                 string name = Path.GetFileNameWithoutExtension(filePath);
41                 //获取exe的图标
42                 Image image = Image.FromHbitmap(Icon.ExtractAssociatedIcon(filePath).ToBitmap().GetHbitmap());
43                 ToolStripMenuItem item = new ToolStripMenuItem();
44                 item.Text = name;
45                 item.Image = image;
46                 item.ToolTipText = filePath;
47                 item.Click += new EventHandler(item_Click);
48                 menu.Items.Add(item);
49             }
50         }
51         //点击时打开程序
52         void item_Click(object sender, EventArgs e)
53         {
54             ToolStripMenuItem item = sender as ToolStripMenuItem;
55             Process.Start(item.ToolTipText);
56         }
57     }

当写的小程序多了,每次找起来也麻烦,就想到写这样一个功能,然后在需要的程序中都加入这样的代码,这样打开任意一个程序时也可以方便的调用其他程序。

当目录下的可执行文件过多时,程序初始化时间会很长,这个可以根据自己需要修改一下

发表评论
用户名: 匿名