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

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     }

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

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

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