winform自动添加同级目录下可执行文件的快捷方式到右键菜单中
/// <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自动添加同级目录下可执行文件的快捷方式到右键菜单中的更多相关文章
- 在生成的Debug中test.exe的同级目录下创建一个文件,如TestLog.log
在上次编写一个日志类库时,想在.exe的同级目录下创建.log文件,对于这个路径的获得很简单,调用GetModuleFileName()函数即可.但是要去掉.exe而换成.log时,由于对字符串处理不 ...
- 将Sublime Text3添加到右键菜单中
卸载了Sublime Text2,安装了最新版本的Sublime Text3,不过一直不在右键菜单中,每次使用都需要从打开方式中选,所以决定添加,有如下2种方法. 添加到右键菜单 方法一(推荐) 在S ...
- 禁止PotPlayer自动添加同一目录内连续文件
问题描述 默认情况下PotPlayer会自动向播放列表添加相似文件 统一目录下大量连续文件会被同时加载 解决办法 参数选项-基本-基本设置-相似文件策略 设置为仅打开选定的文件
- Python实现插件机制——自动import一个目录下的所有.py文件
假设有这样一个目录结构: /src main.py /plugins __init__.py a.py ...
- 在Maven项目中添加代码目录下的配置文件
问题 Maven 是约定大于配置的一种工具, 通常约定在 src/main/resources 目录下放配置文件, 当我们想要在 src/main/java 代码目录下放置配置文件用来测试, Mave ...
- nuxt.js如何实现同级目录下建多个动态路由,并将链接设置.html后缀
nuxt.js中如果在同级目录中建两个_xxxx.vue的动态路由文件,那么页面跳转始终是跳的一个页面,如何解决这个问题呢?下面举个栗子: 第一步:新建两个页面文件 第二步:在nuxt.config. ...
- python_自动查找指定目录下的文件或目录的方法
代码如下 import os def find_file(search_path, file_type="file", filename=None, file_startswith ...
- 将程序sublime添加到右键菜单中
新建wangzhaobo.bat复制一下代码, 粘贴保存,然后打开. @echo Off :START CLS echo *====================================== ...
- java读取存在src目录下和存在同级目录下的配置文件
如果我有个文件存在src下一级的地方和存在src同级的目录应该怎么用相对路径去获取如图: 一.如果存在src同级的地方应该是InputStream in = new BufferedInputStre ...
随机推荐
- C#开发COM组件供其他开发环境或工具调用介绍(转)
由于工作原因涉及到这一块的开发,由于之前并未接触过,所以本篇文章也是在参考了各种资料后,自己实现并通过通过测试之后所整理的备忘录以及一些个人观点. 希望对刚接触这类型开发的朋友有所帮助,若有不足之处还 ...
- ecmall数据字典
ecm_acategory //文章分类表 字段 类型 Null 默认 注释 cate_id int(10) 否 自增ID号,分类ID号 cate_name varchar(100) 否 分类的名称 ...
- HDU 5834 [树形dp]
/* 题意:n个点组成的树,点和边都有权值,当第一次访问某个点的时候获得利益为点的权值 每次经过一条边,丢失利益为边的权值.问从第i个点出发,获得的利益最大是多少. 输入: 测试样例组数T n n个数 ...
- [HDU 5113] Black And White (dfs+剪枝)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113 题目大意:给你N*M的棋盘,K种颜色,每种颜色有c[i]个(sigma(c[i]) = N*M) ...
- xcode C++一些简单设置
下面是一个要用到mysql库的C++程序设置: 添加用户头文件: 双击项目-Build Settings-Search Paths: Library Search Paths: /usr/local/ ...
- eclipse打jar包步骤
eclipse->文件->export->java->JAR file 选择项目,Options增加Add directory entries finish hadoop ja ...
- 深入研究java.lang.ThreadLocal类
一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许 ...
- MFC学习 消息钩子使用
HANDLE h_KeyBoard; //当前进程的钩子, 另外WH_KEYBOARD_LL, 与WH_MOUSE_LL参数时, 是获取的底层的消息, 相当于获取的全局的 g_hKeyBoard = ...
- sqlserver 批量删除存储过程和批量修改存储过程的语句
sqlserver 批量删除存储过程和批量修改存储过程的语句- sqlserver 批量删除存储过程和批量修改存储过程的语句,需要的朋友可以参考下. - 修改: 复制代码 代码如下: declare ...
- git和svn的区别001
Git和SVN之间的五个基本区别 中文原文地址:http://blog.jobbole.com/31444/ 友情链接git和svn链接2:http://blog.csdn.net/sunboy_20 ...