c# winform如何做出桌面右键菜单?
像winRAR之类的软件,右键文件出现菜单,右键文件夹也出现右键菜单,然后用C#做的程序执行相应的操作。其实我要做的功能也很少,就是右键弹出菜单,选择执行菜单项,然后获取...
像winRAR之类的软件,右键文件出现菜单,右键文件夹也出现右键菜单,然后用C#做的程序执行相应的操作。
其实我要做的功能也很少,就是右键弹出菜单,选择执行菜单项,然后获取该文件或该文件夹的路径就够了。
小弟我还很菜,在此请教各位大大帮忙找个思路出来。先谢谢了。
本问题已解决,看哪位说得接近详细就送分了。像jackyc23就说到点子上了,得分的机率好大哦。再过13天再来结贴。 展开
其实我要做的功能也很少,就是右键弹出菜单,选择执行菜单项,然后获取该文件或该文件夹的路径就够了。
小弟我还很菜,在此请教各位大大帮忙找个思路出来。先谢谢了。
本问题已解决,看哪位说得接近详细就送分了。像jackyc23就说到点子上了,得分的机率好大哦。再过13天再来结贴。 展开
3个回答
展开全部
这个是通过注册表实现的,跟C#程序本身没啥关系
比如下面两段就能实现在文件的右键菜单中加入“用记事本打开”的效果
[HKEY_CLASSES_ROOT\*\shell\OpenInNotepad]
@="用记事本打开"
[HKEY_CLASSES_ROOT\*\shell\OpenInNotepad\command]
@="\"notepad.exe\" %1"
在制作安装程序时,可以写脚本,实现对注册表的操作
Setup Factory,installshield 都是不错的打包软件
手动编辑好注册表也能看到效果
可以写代码将自己的程序注册到系统右键菜单,主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
string menuName = string.IsNullOrEmpty(this.textBox1.Text.Trim()) ? "真有意思网" : this.textBox1.Text.Trim();
//注册到所有文件
if (chkFile.Checked)
{
RegistryKey shell = Registry.ClassesRoot.OpenSubKey(@"*shell", true);
RegistryKey custom = shell.CreateSubKey(menuName);
RegistryKey cmd = custom.CreateSubKey("command");
cmd.SetValue("", Application.ExecutablePath + " %1");
//Application.ExecutablePath 是本程序自身的路径
//%1 是传入打开的文件路径
cmd.Close();
custom.Close();
shell.Close();
}
//注册到所有目录
if (chkFile.Checked)
{
RegistryKey shell = Registry.ClassesRoot.OpenSubKey(@"directoryshell", true);
RegistryKey custom = shell.CreateSubKey(menuName);
RegistryKey cmd = custom.CreateSubKey("command");
cmd.SetValue("", Application.ExecutablePath + " %1"); //%1 是传入打开的文件路径
cmd.Close();
custom.Close();
shell.Close();
}
MessageBox.Show("注册成功!rn请通过文件或目录的右键菜单来测试结果!");
}
别忘了引用命名空间Microsoft.Win32
using Microsoft.Win32;
详细代码请参考
http://hi.baidu.com/deltacat2006上这篇文章
C#、VB.NET将自己的程序注册到系统的右键菜单(所有文件和目录)
比如下面两段就能实现在文件的右键菜单中加入“用记事本打开”的效果
[HKEY_CLASSES_ROOT\*\shell\OpenInNotepad]
@="用记事本打开"
[HKEY_CLASSES_ROOT\*\shell\OpenInNotepad\command]
@="\"notepad.exe\" %1"
在制作安装程序时,可以写脚本,实现对注册表的操作
Setup Factory,installshield 都是不错的打包软件
手动编辑好注册表也能看到效果
可以写代码将自己的程序注册到系统右键菜单,主要代码如下:
private void button1_Click(object sender, EventArgs e)
{
string menuName = string.IsNullOrEmpty(this.textBox1.Text.Trim()) ? "真有意思网" : this.textBox1.Text.Trim();
//注册到所有文件
if (chkFile.Checked)
{
RegistryKey shell = Registry.ClassesRoot.OpenSubKey(@"*shell", true);
RegistryKey custom = shell.CreateSubKey(menuName);
RegistryKey cmd = custom.CreateSubKey("command");
cmd.SetValue("", Application.ExecutablePath + " %1");
//Application.ExecutablePath 是本程序自身的路径
//%1 是传入打开的文件路径
cmd.Close();
custom.Close();
shell.Close();
}
//注册到所有目录
if (chkFile.Checked)
{
RegistryKey shell = Registry.ClassesRoot.OpenSubKey(@"directoryshell", true);
RegistryKey custom = shell.CreateSubKey(menuName);
RegistryKey cmd = custom.CreateSubKey("command");
cmd.SetValue("", Application.ExecutablePath + " %1"); //%1 是传入打开的文件路径
cmd.Close();
custom.Close();
shell.Close();
}
MessageBox.Show("注册成功!rn请通过文件或目录的右键菜单来测试结果!");
}
别忘了引用命名空间Microsoft.Win32
using Microsoft.Win32;
详细代码请参考
http://hi.baidu.com/deltacat2006上这篇文章
C#、VB.NET将自己的程序注册到系统的右键菜单(所有文件和目录)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
采纳答案留QQ
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询