桌面右键菜单,添加程序的方法

最近做了一个程序,想要在桌面右键中添加菜单项,可以直接在上面点击就能进入打开或程序界面。


方法1:注册表中直接添加

在HKEY_CLASSES_ROOT\Directory\Background\shell下新建项,命名为自己想在右键菜单中显示的名字,如”谷歌吧”、“百度吧”。



然后在其下继续添加新建项,命名为command,同时默认值改为自己程序的路径,当然如果需要参数可以加在后面。



效果如下:


但是这种方法只能在自己电脑中手动添加。



方法2:注册表编程

通过Windows提供注册表函数来实现。

添加位置:HKEY_CLASSES_ROOT\Directory\Background\shell

<a href="http://www.cnblogs.com/qintangtao/archive/2012/12/21/2827540.html">注册表编程</a>




以上两种方法都可以在右键擦弹添加新项,但是无法做更多的判断,因此需要Shell扩展编程实现。

方法3:Windows Shell扩展编程

怎么编写菜单扩展就不多讲了,可以参考 自己动手写一个简单的Windows Shell扩展程序

至于如何判断自己的程序是否已经打,可先使用SPY++来找到自己程序的类和标题名,然后在桌面上通过FindWindowsEx依次遍历

BOOL IsOpenProgram()
{
	HWND hDeskWnd = NULL;//桌面上SysListView32的窗口句柄
	HWND hWnd = ::FindWindow(_T("WorkerW"), NULL);//先当作WIN7系统来查找
	while(hWnd){
		HWND hShellView = ::FindWindowEx(hWnd, NULL, _T("SHELLDLL_DefView"), NULL);
		if(hShellView){
			hDeskWnd = ::FindWindowEx(hShellView, NULL, _T("SysListView32"), NULL);
			break;
		}
		hWnd = ::GetWindow(hWnd,GW_HWNDNEXT);
	}
	if(!hDeskWnd){//如果没找到,再按XP方式查找
		hWnd = ::FindWindow(_T("Progman"), _T("Program Manager"));
		if(hWnd){
			hWnd = ::FindWindowEx(hWnd,NULL, _T("SHELLDLL_DefView"), NULL);
			hDeskWnd = ::FindWindowEx(hWnd, NULL, _T("SysListView32"), NULL);
		}
	}

	HWND hDesktopMenu = NULL;//自己窗口的句柄
	if (hDeskWnd){
		hDesktopMenu = ::FindWindowEx(hDeskWnd, NULL, _T("UIMainFrame"), _T("DeskMenu"));
	}
	
	if (hDesktopMenu){
		return TRUE;
	}
	else{
		return FALSE;
	}
}

程序编译成功,并注册后,在HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers下出现新加项。




关于扩展程序的测试:

注册扩展程序:regsvr32.exe xxx.dll 

注销扩展程序:regsvr32.exe /u xxx.dll

(注册或注销成功失败都会弹出一个对话框来提示,如果不希望弹出对话框,则可添加参数/s,如:regsvr32.exe /s xxx.dll )

(这里可能失败,需要检查权限问题,可以在开始菜单输入cmd,然后在查到的cmd.exe上右键,以管理员权限运行,在跳转到dll所在目录执行注册或注销)

(同时需要注意,32的系统使用32位的扩展程序,64位的系统使用64位的扩展程序)



另:

如果测试的时候想要重新编译,如果注册了前一次编译出来的dll,可能会提示打不开xxx.dll,这是因为explorer.exe即资源管理器已经在运行这个扩展了。

这个时候需要先注销这个扩展。然后,快捷键Ctrl+Alt+del,进入任务管理器,结束进程explorer.exe,并且在左上方文件中新建任务运行EXPLORER,如下图:


完了之后,再重新编译。









  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows右键菜单管理是指对Windows操作系统右键菜单进行管理和定制的一项功能。右键菜单是当用户在桌面或者文件资源管理器点击鼠标右键时弹出的菜单项,它提供了各种操作选项,便于用户快速执行相关操作。 首先,Windows右键菜单管理可以用于添加自定义的菜单项。用户可以通过一些第三方软件或者系统自带的注册表编辑工具,定制右键菜单菜单项,以方便执行常用的操作和访问特定的功能。例如,可以添加一个“发送到”菜单项,实现快速发送文件到指定位置的功能。 其次,右键菜单管理还可以用于删除或禁用系统自带的菜单项。有时候,系统默认的一些菜单项可能并不常用,用户可以通过管理工具将其删除,以简化右键菜单的显示。另外,当某个菜单项被误操作或者用不到时,也可以禁用它,以避免对系统造成意外损害。 另外,通过右键菜单管理还可以对特定文件类型进行关联。用户可以将特定的文件类型与某个程序进行关联,使得在右键菜单出现该文件类型相关的操作选项。例如,可以将.txt文件关联到文本编辑器,.mp3文件关联到音乐播放器等等。 总之,Windows右键菜单管理可以帮助用户自定义和优化右键菜单,提高操作效率和使用便捷性。但需要注意的是,修改右键菜单前需谨慎操作,避免对系统造成不必要的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值