/// <summary>
/// 追加同目录下可执行文件到右键菜单中
/// 在form的Load事件中调用:new clsContextMenuStrip(this.FindForm());
/// </summary>
public class clsContextMenuStrip
{
//窗体
System.Windows.Forms.Form form;
//右键菜单
System.Windows.Forms.ContextMenuStrip menu;
//当前可执行文件目录
string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
/// <summary>
/// 追加同目录下可执行文件到右键菜单中
/// 调用方法:new clsContextMenuStrip(this.FindForm());
/// </summary>
public clsContextMenuStrip(Form f)
{
form = f;
menu = f.Controls.Owner.ContextMenuStrip;
if (menu == null)
{
menu = new ContextMenuStrip();
form.Controls.Owner.ContextMenuStrip = menu;
}
Init();
}
/// <summary>
/// 获取当前程序目录下的所有exe,追加到右键菜单中
/// </summary>
private void Init()
{
var currExePath = Process.GetCurrentProcess().MainModule.FileName;
var files = Directory.GetFileSystemEntries(path, "*.exe", SearchOption.AllDirectories);
foreach (var filePath in files)
{
//排除本身
if (currExePath.Equals(filePath, StringComparison.CurrentCultureIgnoreCase))
continue;
string name = Path.GetFileNameWithoutExtension(filePath);
//获取exe的图标
Image image = Image.FromHbitmap(Icon.ExtractAssociatedIcon(filePath).ToBitmap().GetHbitmap());
ToolStripMenuItem item = new ToolStripMenuItem();
item.Text = name;
item.Image = image;
item.ToolTipText = filePath;
item.Click += new EventHandler(item_Click);
menu.Items.Add(item);
}
}
//点击时打开程序
void item_Click(object sender, EventArgs e)
{
ToolStripMenuItem item = sender as ToolStripMenuItem;
Process.Start(item.ToolTipText);
}
}

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

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

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

  1. 在生成的Debug中test.exe的同级目录下创建一个文件,如TestLog.log

    在上次编写一个日志类库时,想在.exe的同级目录下创建.log文件,对于这个路径的获得很简单,调用GetModuleFileName()函数即可.但是要去掉.exe而换成.log时,由于对字符串处理不 ...

  2. 将Sublime Text3添加到右键菜单中

    卸载了Sublime Text2,安装了最新版本的Sublime Text3,不过一直不在右键菜单中,每次使用都需要从打开方式中选,所以决定添加,有如下2种方法. 添加到右键菜单 方法一(推荐) 在S ...

  3. 禁止PotPlayer自动添加同一目录内连续文件

    问题描述 默认情况下PotPlayer会自动向播放列表添加相似文件 统一目录下大量连续文件会被同时加载 解决办法 参数选项-基本-基本设置-相似文件策略 设置为仅打开选定的文件

  4. Python实现插件机制——自动import一个目录下的所有.py文件

    假设有这样一个目录结构: /src          main.py          /plugins                __init__.py                a.py  ...

  5. 在Maven项目中添加代码目录下的配置文件

    问题 Maven 是约定大于配置的一种工具, 通常约定在 src/main/resources 目录下放配置文件, 当我们想要在 src/main/java 代码目录下放置配置文件用来测试, Mave ...

  6. nuxt.js如何实现同级目录下建多个动态路由,并将链接设置.html后缀

    nuxt.js中如果在同级目录中建两个_xxxx.vue的动态路由文件,那么页面跳转始终是跳的一个页面,如何解决这个问题呢?下面举个栗子: 第一步:新建两个页面文件 第二步:在nuxt.config. ...

  7. python_自动查找指定目录下的文件或目录的方法

    代码如下 import os def find_file(search_path, file_type="file", filename=None, file_startswith ...

  8. 将程序sublime添加到右键菜单中

    新建wangzhaobo.bat复制一下代码, 粘贴保存,然后打开. @echo Off :START CLS echo *====================================== ...

  9. java读取存在src目录下和存在同级目录下的配置文件

    如果我有个文件存在src下一级的地方和存在src同级的目录应该怎么用相对路径去获取如图: 一.如果存在src同级的地方应该是InputStream in = new BufferedInputStre ...

随机推荐

  1. zabbix入门到精通之Zabbix对linux主机的监控

    我们大概了解了怎么对台主机进行监控,主要步骤设计到添加主机,并且为主机添加监控项,这里主要为item,然后在item的基础上对item进行绘图并且通过screen的方式把不同的监控图像汇总到一张scr ...

  2. inno setup 在卸载时如果想保留文件 使用uninsneveruninstall

    一般来说,inno只卸载你安装的文件,自动生成如Thumb.db(缩略图)等文件,卸载程序是不会删除这些的,此时你希望整个安装目录删除则可用你说的方法删除.若想保留某些文件,则必须在[File]段中拷 ...

  3. 屏幕分辨率与FPS

    屏幕分辨率 刷新率分为垂直刷新率和水平刷新率,一般提到的刷新率通常指垂直刷新率. 垂直刷新率表示屏幕的图象每秒钟重绘多少次,也就是每秒钟屏幕刷新的次数,以Hz(赫兹)为单位. 刷新率越高越好,图象就越 ...

  4. java类包第十一章

    1.同一个包中的类互相访问,不需要制定包名. 2.java中包名的规则是全部使用小写字母 3.final 方法不能被覆盖, public class OuterClass {    innerClas ...

  5. Hadoop有关的网站

    软件下载: http://archive.apache.org hbase对Hadoop的支持矩阵: https://hbase.apache.org/book.html#configuration

  6. 内省—beanutils工具包

    Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. BeanU ...

  7. python修改excel文件

    一.导入模块如图

  8. 加链接太麻烦?使用 linkit 模块提升用户编辑体验

    在制作网站内容时,适当地添加链接会非常用利于网站内容的SEO.加入链接的文章可以让访客了解到更多相关内容,从而提升文章的质量.被链接到的内容也能因此获得更多的访问和关注.只不过,在内容编辑时添加链接却 ...

  9. 蓄水池采样算法(Reservoir Sampling)

    蓄水池采样算法 问题描述分析 采样问题经常会被遇到,比如: 从 100000 份调查报告中抽取 1000 份进行统计. 从一本很厚的电话簿中抽取 1000 人进行姓氏统计. 从 Google 搜索 & ...

  10. RHEL7网卡设置

    1.改网卡名 先vim /etc/sysconfig/grub:GRUB_TIMEOUT=5GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMIN ...