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 ...
随机推荐
- WebService中实现上传下载文件
不多说,直接看代码: /*上传文件的WebService*/ using System; using System.Collections; using System.Collections.Gene ...
- [ActionScript] AS3利用SWFObject与JS通信
首先介绍SWFObject的用法: swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flash ...
- CRM plugin 激活 停用 事件
需要注册 SetState 和 SetStateDynamecEntity
- 如何判断VS.NET设计时?
方法一: if (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv") //...Then ...
- ios 对齐属性
四个容易混淆的属性:1. textAligment : 文字的水平方向的对齐方式1> 取值NSTextAlignmentLeft = 0, // 左对齐NSTextAlignme ...
- OS X 升级 Yosemite 后,Intellij IDEA 与 VirtualBox 启动失败
报错: Dyld Error Message: Symbol not found: _CGContextSetAllowsAcceleration Referenced from: /Library/ ...
- ibatis cannot find <sql> pattern
"Could not find SQL statement to include with refid xxx"A: 认真把每个用到xxx的地方都看一遍
- VB 读取csv文件数据
Public adoConn As New ADODB.Connection Private Sub csv() adoConn.ConnectionString = "Driver={Mi ...
- 【转】最实用的IT类网站及工具大集合
转自:http://www.cnblogs.com/annie00/p/5753507.html 1.聚合数据 大家在开发过程中,可能会用到各种各样的数据,想找一些接口来提供一些数据.比如天气预报查询 ...
- mysql中explain看性能
select distinct col_name from table where a=X and b=Y and date(time)='xx-xx-xx';执行时间 27.9772 秒 expla ...