首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【高手】c++ Windows 注册表编程-之-自定义右键菜单(外壳拓展)解决方法

2012-05-05 
【高手】c++ Windows 注册表编程--之--自定义右键菜单(外壳拓展)问题如下:1)手动添加系统右键菜单,写入HKEY_

【高手】c++ Windows 注册表编程--之--自定义右键菜单(外壳拓展)
问题如下:
1)手动添加系统右键菜单,写入HKEY_CLASSES_ROOT/*/shell/command。 command里面假设是"c:\\windows\\notepad.exe %1"
------------------->能正确响应
2)用RegCreateKeyEx和RegSetValueEx完成上面的工作(写入值完全一样),写入成功
-------------------》显示有右键,但是没有响应,报没有程序关联警告
具体:
  HKEY hresult; 
DWORD dwPos; 

LPCTSTR dataset1= _T("*\\shell\\txt..."); 

  //第一层,命令项
long value = RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset1,0,NULL,REG_OPTION_NON_VOLATILE,
  KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos); 
//value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)str1,(_tcslen(str1) + 1) * sizeof(TCHAR)); 

//创建“command”子键 
LPCTSTR dataset2= _T("*\\shell\\txt...\\command ");

value = RegCreateKeyEx(HKEY_CLASSES_ROOT,dataset2,0,NULL,REG_OPTION_NON_VOLATILE,  
  KEY_CREATE_SUB_KEY|KEY_ALL_ACCESS,NULL,&hresult,&dwPos); 

//将该子键的“默认”数据项的数据设置为用户应用程序的路径 
LPCTSTR str2=_T("c:\\windows\\notepad.exe %1");

value=RegSetValueEx(hresult,NULL,0,REG_SZ,(const BYTE*)str2,(_tcslen(str2) + 1) * sizeof(TCHAR)); 

::RegCloseKey(hresult);

[解决办法]
_T("*\\shellex\\ContextMenuHandlers")

热点排行