摘要: 今天碰到这种情况:需要重新注册某个COM组件,但是在注册前希望可以检测当时组件是否可用,1 CLSID const clsid = {XXX};2 LPUNKNOWN pUnknow = NULL;3 const LRESULT lr = ::CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IUnknown,(LPVOID*)&pUnknow);4 if(lr!=REGDB_E_CLASSNOTREG && NULL!=pUnknow){5 bRes = TRUE;6 }7 if(pUnknow){8 pUnknow->Rel 阅读全文
posted @ 2014-03-27 19:28 ssp1024 阅读(859) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2014-03-21 22:10 ssp1024 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 在windows编程中避免不了使用共享内存,因为他是进程间通信、文件读取最简单的方式,有书上还说其他进程间通讯机制如管、油槽、WM_COPYDATA底层也是用的共享内存机制。关于使用方法还是请参考MSDN。 最近听说使用共享内存不安全,可能会被其他进程野指针无意中访问到。以前在windows教程中也看到过相关的说法:共享内存是使用的高2G地址空间,用户态使用的是低2G空间,所有进程是独享用户态内存... 阅读全文
posted @ 2014-03-21 22:09 ssp1024 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 转自:http://hi.baidu.com/icexile/item/9bb8fd4f949cc0afdf2a9ffe 1 //应该在工程头文件中包含任何WTL头文件前定义以下两行: 2 #define _WTL_NO_CSTRING 3 #define _WTL_NO_WTYPES 4 5 //典型声明顺序 6 #include 7 #include 8 #include 9 #include 10 extern CAppModule _Module;11 #include 12 #include 13 #include 14 #include 15 #include 16 #in... 阅读全文
posted @ 2014-03-21 09:40 ssp1024 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 背景:在写一个应用,需要和系统窗口进行通讯,所以通讯数据要兼容32位和64位系统。故事:以为挺简单的一件事情,直接搜索“VC判断 64位系统”,搜到很多结果,但答案很一致,好像上学时候交的作业: 1 typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); 2 3 LPFN_ISWOW64PROCESS fnIsWow64Process; 4 5 BOOL IsWow64() 6 { 7 BOOL bIsWow64 = FALSE; 8 9 //IsWow64Process is not available o... 阅读全文
posted @ 2014-03-20 21:05 ssp1024 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 一、动态链接在应用开发过程中及以后的维护升级过程中,发布新组件不用重新编译链接整个应用。二、封装性1)编程语言无关性可以保证组件在任何时期不会因为语言进化而过时。避免客户和组件对接口的语言相关依赖。2)二进制形式发布这个是 编程语言无关性 的保证3)版本兼容可以快速改变某个组件功能,满足新需求的同时保证向后兼容。4)网络位置透明组件与其客户可以在同一进程、不同进程、不同主机上运行,客户的表现是一致的。 阅读全文
posted @ 2014-03-14 08:51 ssp1024 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 想在自己进程中获取其他进程里的树形控件(SysTreeView32)的内容。比如使用TVM_GETITEM消息获取某一节点数据。思路很简单,由于是将消息发给另一个进程来处理,传递的指针的值应该是相对于目标进程地址空间中的,所以需要把在目标进程中申请空间。VirtualAllocEx(m_hProcess, NULL, sizeof(T), MEM_COMMIT, PAGE_READWRITE);然后将返回的地址作为消息的附加参数发送给目标进程,待消息返回后,我们再读取出消息处理的结果。当我在使用TVM_GETITEM消息时却发现SendMessage返回值是0,目标进程处理消息失败了,最大的可 阅读全文
posted @ 2014-03-11 22:00 ssp1024 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 现在又这样一个需求:要将某一目录下所有文件(非目录)都列出来。批处理如下:dir .\ /A-D /B /ON 阅读全文
posted @ 2014-03-04 21:41 ssp1024 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 参考:http://www.fmddlmyy.cn/text7.html 用户态和内核态是不同的CPU特权级别,X86用户态为RING3,内核态在RING0。 win32系统可以使用的最大内存空间为4GB,用户态代码可以使用的是0x00000000——0x7FFFFFFF。 从用户态进入核心态最常用方法是将功能码写入EAX中,然后INT 2E,类似DOS中断调用BIOS的功能;这种机制在NT架构中叫做system service。 核心态主要有ntoskrnl.dll 、win32k.sys 两个模块提供system service。ntoskrnl.exe是windows的大脑,其上层是ex 阅读全文
posted @ 2014-03-04 20:14 ssp1024 阅读(2462) 评论(0) 推荐(0) 编辑
摘要: 项目中对话框收集完信息要通过网络发送出去,发送之前需要对用户信息做一些格式化处理。索性直接开个线程,在新线程中处理所有的事情(包括取得信息+格式化信息+网络发送信息)。过程中却发现新线程中GetDlgItem总是不能取得正确控件对象解决方法:保证GetDlgItem和对话框创建在统一线程即可。具体原因应该是MFC使用了TLS(线程局部存储)。具体有时间再详细看看吧。 阅读全文
posted @ 2014-02-21 19:30 ssp1024 阅读(311) 评论(0) 推荐(0) 编辑