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 }
当写的小程序多了,每次找起来也麻烦,就想到写这样一个功能,然后在需要的程序中都加入这样的代码,这样打开任意一个程序时也可以方便的调用其他程序。
当目录下的可执行文件过多时,程序初始化时间会很长,这个可以根据自己需要修改一下
转载于:https://www.cnblogs.com/jiaru/p/4262555.html
相关资源:数据结构—成绩单生成器