vs2005下Windows Shell扩展编程完全指南例子一中的问题解决
2010-07-28 14:07
603 查看
最近开始用vs2005学习Windows Shell扩展
编程,主要参考codeproject的几个经典例子
,这几个经典例子
以前都是在vc6的环境下跑的,后来作者更新到vc7,网上还有好多教程是老版本的基于vc6环境的教程。vs2005属于vc8和vc7还是略有区别不过区别不大,现在把这两天学习的内容列下来,仅供参考。
1.
按照方法生成项目,系统会自动生成两个项目SimpleExt和SimpleExtPS,SimpleExtPS项目可以整个删掉,对结果没有什么影响。
2.
按照方法拷贝代码过来时,记得将教程中的GUID修改为自己的GUID,就是中括号中包含好多字符的那个。这个GUID可以在idl文件的“library SimpleExtLib”项下面找到。
3.
编译后出现错误提示:
error C2787: “IContextMenu”: 没有与该对象关联的 GUID
error C2440: “初始化”: 无法从“DWORD_PTR”转换为“const IID *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
error C2440: “初始化”: 无法从“ATL::_ATL_CREATORARGFUNC (__stdcall *)”转换为“DWORD_PTR”
1> 没有使该转换得以执行的上下文
这个简单的用网上说的将包含文件PlatformSDK/include目录放在include目录前不适合vs2005,不能解决问题,倒是另一种方法可以解决,就是在SimpleShlExt.h文件中增加一行代码:
struct __declspec(uuid(“000214E4-0000-0000-C000-000000000046″)) IContextMenu;
若使用IQueryInfo的话要加入:
struct __declspec(uuid(“00021500-0000-0000-C000-000000000046″)) IQueryInfo;
4.
编译后出现错误提示:
1>正在注册输出…
1>Project : error PRJ0050: 未能注册输出。请确保您有修改注册表的相应权限。
1>生成日志保存在file://e:/project/shell/SimpleExt/SimpleExt/Debug/BuildLog.htm
这个问题需要在属性->配置属性->连接器->常规->注册输出项将“是”改为“否”即可。
5.
在项目的属性->自定义生成步骤->常规中设置命令行为:
regsvr32 /s /c “$(TargetPath)”
echo regsvr32 exec. time > “$(OutDir)/regsvr32.trg”
可自动注册dll,极为方便。
以上几个步骤基本可以保证实现预定功能。
原创文章,转载请注明:
转载自袖子的博客
本文链接地址:
vs2005下Windows Shell扩展编程完全指南例子一中的问题解决
编程,主要参考codeproject的几个经典例子
,这几个经典例子
以前都是在vc6的环境下跑的,后来作者更新到vc7,网上还有好多教程是老版本的基于vc6环境的教程。vs2005属于vc8和vc7还是略有区别不过区别不大,现在把这两天学习的内容列下来,仅供参考。
1.
按照方法生成项目,系统会自动生成两个项目SimpleExt和SimpleExtPS,SimpleExtPS项目可以整个删掉,对结果没有什么影响。
2.
按照方法拷贝代码过来时,记得将教程中的GUID修改为自己的GUID,就是中括号中包含好多字符的那个。这个GUID可以在idl文件的“library SimpleExtLib”项下面找到。
3.
编译后出现错误提示:
error C2787: “IContextMenu”: 没有与该对象关联的 GUID
error C2440: “初始化”: 无法从“DWORD_PTR”转换为“const IID *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
error C2440: “初始化”: 无法从“ATL::_ATL_CREATORARGFUNC (__stdcall *)”转换为“DWORD_PTR”
1> 没有使该转换得以执行的上下文
这个简单的用网上说的将包含文件PlatformSDK/include目录放在include目录前不适合vs2005,不能解决问题,倒是另一种方法可以解决,就是在SimpleShlExt.h文件中增加一行代码:
struct __declspec(uuid(“000214E4-0000-0000-C000-000000000046″)) IContextMenu;
若使用IQueryInfo的话要加入:
struct __declspec(uuid(“00021500-0000-0000-C000-000000000046″)) IQueryInfo;
4.
编译后出现错误提示:
1>正在注册输出…
1>Project : error PRJ0050: 未能注册输出。请确保您有修改注册表的相应权限。
1>生成日志保存在file://e:/project/shell/SimpleExt/SimpleExt/Debug/BuildLog.htm
这个问题需要在属性->配置属性->连接器->常规->注册输出项将“是”改为“否”即可。
5.
在项目的属性->自定义生成步骤->常规中设置命令行为:
regsvr32 /s /c “$(TargetPath)”
echo regsvr32 exec. time > “$(OutDir)/regsvr32.trg”
可自动注册dll,极为方便。
以上几个步骤基本可以保证实现预定功能。
原创文章,转载请注明:
转载自袖子的博客
本文链接地址:
vs2005下Windows Shell扩展编程完全指南例子一中的问题解决
相关文章推荐
- 搭建windows+Nginx+PHP配置指南 以及 之后的问题解决
- Windows下用PostThreadMessage解决网络编程中线程间通讯的问题
- VC Windows shell扩展编程(为系统右键菜单添加二级菜单傻瓜教程)
- 1、VS2005(c/c++)外壳扩展编程之windows右键菜单(1)
- Ubuntu中使用SSHSecure Shell测试Windows与Linux系统间操作及传输问题解决大全
- 2、VS2005(c/c++)外壳扩展编程之windows右键菜单(2)
- 解决windows下Composer因php_openssl扩展缺失而安装失败的问题
- 解决VS2005,VS2008,VS2010无法正常加载项目问题,或者不能完全加载项目问题。。。
- 3、VS2005(c/c++)外壳扩展编程之windows右键菜单(3)
- VC 向windows系统菜单中添加菜单项---Windows shell扩展编程
- Ubuntu13.04配置完全指南(五)解决乱码问题
- 解决windows的控制台和shell比较KUSO的问题(ConEmu&&Pycmd)
- 解决Windows下Git Shell编辑器问题
- Windows下使用net-snmp-5.4.1扩展代理所遇问题及解决
- Windows 下 Apache URL重写例子 解决静态资源后携带 ;jsessionid 信息而无法被Apache解析的问题
- 解决在windows环境中编写shell脚本,在Linux运行出错的问题
- windows 编程ReadProcessMemory 使用中遇到的问题解决
- Windows Movie Maker XP不能保存视频问题完全解决!
- 本文根据《Windows Shell扩展编程完全指南
- 解决windows下Composer因php_openssl扩展缺失而安装失败的问题