windows
文章平均质量分 91
xiliang_pan
只要去做,没有做不好的事情!
展开
-
Windows系统证书在注册表中的位置
(1)IE->证书内容 HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates个人:MY其他人:ADDRESSBOOK中级证书颁发机构:CA受信任的根证书颁发机构:ROOT受信任的发布者:TrustedPublisher未受信任的发布者:Disallowed(2)当前用户的证书 HKEY_CURRENT_USER\原创 2011-12-05 17:52:11 · 10362 阅读 · 1 评论 -
VC++的Unicode编程(宏UNICODE与_UNICODE)
一、什么是Unicode 先从ASCII说起,ASCII是用来表示英文字符的一种编码规范。每个ASCII字符占用1个字节,因此,ASCII编码可以表示的最大字符数是255(00H—FFH)。其实,英文字符并没有那么多,一般只用前128个(00H—7FH,最高位为0),其中包括了控制字符、数字、大小写字母和其它一些符号。而最高位为1的另128个字符(80H—FFH)被称为“扩展ASCII”,一转载 2011-12-18 12:21:12 · 12342 阅读 · 0 评论 -
VC右键菜单消息响应处理
LRESULT CXXXDlg::TrayNotify(WPARAM wp,LPARAM lp){ UINT uID = (UINT) wp; UINT uMouseMsg = (UINT) lp; if(uMouseMsg == WM_RBUTTONUP) { CPoint curPoint; GetCursorPos(&curPoint); CMe原创 2011-12-19 10:09:15 · 2470 阅读 · 0 评论 -
C++编程要养成的习惯
(1)支持UNICODE和ASNI,使用宏 _T("")、 L""、TEXT("") 、_TEXT(""),尽量使用同时支持UNICODE和ASNI的函数,如_tcs****;原创 2011-12-18 15:47:45 · 611 阅读 · 0 评论 -
WM_CLOSE WM_DESTROY WM_QUIT 区别
在发送 WM_QUIT消息时,要使用PostMessage发送,否则,窗口已经关闭,但任务管理器中进程还存在。可以通过 pDlg->PostMessage(WM_QUIT);或DWORD dwThreadId = GetWindowThreadProcessId(pDlg->GetSafeHwnd(),NULL);PostThreadMessage(dwThreadId,WM_QUIT转载 2012-01-05 15:51:16 · 15228 阅读 · 0 评论 -
Windows 服务程序
一个程序可能包含若干个服务。每一个服务都必须列于专门的分派表中(一个 SERVICE_TABLE_ENTRY 结构数组)。这个表中的每一项都要在 SERVICE_TABLE_ENTRY 结构之中。它有两个域: lpServiceName: 指向表示服务名称字符串的指针;当定义了多个服务时,那么这个域必须指定; lpServiceProc: 指向服务主函数的指针(服务入口点);转载 2012-02-16 10:13:41 · 418 阅读 · 0 评论 -
关于结构体中最后一个成员为char[1]或char[0]的技巧
这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势: 1.不需要初始化,数组名直接就是所在的偏移 2.不占任何空间,指针需要占用int长度空间,空数组不占任何空间。 “这个数组不占用任何内存”,意味着这样的结构节省空间;“该数组的内存地址就和他后面的元素的地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当做指针使用。 这样转载 2012-03-01 10:36:06 · 2024 阅读 · 0 评论 -
C++遍历所有IE浏览器,得到里面的所有元素
转自:http://hi.baidu.com/wuyan3158/blog/item/255eb57ec5c3c2350cd7dafa.html# import // Internet Explorer 5# import #include #include _variant_t v; HRESULT转载 2012-03-06 14:15:57 · 8447 阅读 · 0 评论 -
[windows][thread] 同步.内核.Mutex.Semaphores等
概述 : 非内核对象临界区非常适合于序列化对一个进程中的数据的访问,因为它们的速度很快。但我们或许想要使一些应用程序与计算机中发生的其它特殊事件或者其它进程中执行的操作取得同步。这时临界区无能为力。就需要使用内核对象来同步。 可以使用下列内核对象可用来同步线程: 1. 进程,Processes转载 2012-04-05 10:14:10 · 709 阅读 · 0 评论 -
内存对齐分配策略(含位域模式)
转自:http://www.cnblogs.com/alex-tech/archive/2011/03/24/1993856.html 1:内存对齐定义: 现在使用的计算机中内存空间都是按照字节划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但是实际上计算机系统对于基本数据类型在内存中的存放位置都有限制,要求这些数据存储首地址是某个数K的倍数,这样各种基本数据类转载 2012-04-05 13:09:07 · 352 阅读 · 0 评论 -
内存泄露定位(转载)
今天调试程序,发现有内存泄漏但是没有提示具体是哪一行,搞得我很头疼。结果在网上搜索了一些资料,经自己实践后整理如下: 第一种:通过"OutPut窗口"定位引发内存泄漏的代码(下面转,我写的没原文好,也懒得写)。 我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{转载 2012-04-09 09:29:57 · 570 阅读 · 0 评论 -
VC 工程编译链接时查看链接的库的顺序
选择VC菜单Project-> Settings-> Link标签页,然后在Project Options栏中最后输入/verbose:lib,这样就可以在编译链接程序过程中在输出窗口看到链接的顺序了。 搜索顺序: (1) 工程属性link标签中设置的顺序; (2) 添加到工程中的lib文件; (3)#pragma comment(li原创 2012-04-09 09:32:51 · 1501 阅读 · 0 评论 -
DLL中DoModal时崩溃
DLL中弹出对话框:AFX_MAMAGE_STATE(AfxGetStaticModuleState());// 弹出对话框前需要调用这条语句CTestDlg dlg; int rlt = dlg.DoModal(); 可以参考以下:(1)extern "C" __declspec(dllexport) void ShowDlg() {转载 2012-04-10 17:07:48 · 5126 阅读 · 0 评论 -
VC6.0工程属性配置(编译完成后对目标进行处理)
注意:如果文件路径中包含空格,则需要加引号;原创 2012-04-14 10:51:20 · 904 阅读 · 0 评论 -
MFC改变对话框中静态文本的字体大小
VC的对话框字体设置对所有控件都有效,你不能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。例子: 1、改静态文体的ID,如:IDC_STATIC1 2、添加一个Edit控件,建立一个关联的控件m_editControl。 3、在OnInitDialog中添加如下代码: CFont * f转载 2012-05-07 15:50:16 · 5521 阅读 · 0 评论 -
VC编辑框(EDIT)实现的自动换行、自动滚屏 、自动清空
在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll、Vertical scroll。经过多次测试,总结出VC编辑框(EDIT)的自动换行与自动滚屏的方法。方法一: (当EDIT映射到一CString时)m_String = m_String + sNewString + "\r\n" //自动换行(其中m_String是ED转载 2012-05-14 11:08:11 · 20415 阅读 · 0 评论 -
在VC6.0下设置Unicode编译环境 & VC6中调试状态下显示Unicode字符串
VC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。 使用VC++6.0进行Unicode编程主要做以下几项工作:1、为工程添加UNICODE和_UNICODE预处理选项。 具体步骤:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,转载 2012-05-14 11:05:42 · 4392 阅读 · 0 评论 -
在VC工程中添加多语言支持 (资源DLL)
From:http://www.cnblogs.com/myitm/archive/2011/08/26/2154136.html 随着贸易国际化,在软件开发过程中,常会碰到需在现有中文版软件加入多语言支持的情况。由于不同语言版本间的差别通常仅是软件操作界面的不同,为实现多语言支持,使用纯资源DLL是一个不错的解决之道。所谓纯资源DLL是指只包含资源的DLL,譬如:快捷键、对话框、字符转载 2012-08-02 11:36:39 · 3426 阅读 · 0 评论 -
win7无法打开查看.hlp帮助文件解决办法
Category:电脑|技术 View:289 Author:ifu25 在计算机上运行 Windows Vista、 Windows 7、 Windows Server 2008 中或 Windows Server 2008 R2,您可能无法打开帮助文件 (.hlp) 需要 Windows 帮助 (WinHlp32.exe) 计划的。Microsoft 已停止包括 32 位帮助文件查看器转载 2012-08-29 15:00:39 · 13640 阅读 · 1 评论 -
VC++6.0在控制台程序中隐藏控制台窗口[转]
大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似DOS窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口因为此种方法是通转载 2012-09-26 16:08:53 · 2206 阅读 · 0 评论 -
对话框程序, 在 OnInitDialog的最后 showWindow(SW_HIDE),不管用的原因
我研究过,原因及隐藏方法 .MFC对话框应用程序启动时在OnInitDialog()之后会显示对话框的原因如下MLF_SHOWONIDLE标志int CDialog::DoModal()// enter modal loopDWORD dwFlags = MLF_SHOWONIDLE;if (GetStyle() & DS_NOIDLEMSG)dwFlags |= ML转载 2012-09-26 16:56:16 · 4465 阅读 · 2 评论 -
Windows、RSA密钥结构的转换
密钥结构的转换一个程序同时用到CryptoAPI和openssl,如何将CryptoAPI中的密钥的句柄HCRYPTKEY转换成openssl的RSA结构? 如果HCRYPTKEY表示RSA公钥,则可以利用CryptExportKey导出公钥,根据MSDN介绍的Public Key BLOBs格式把modulus和pubexp转换为RSA里对应的域就行了。如果HCRYPTKEY表示转载 2012-09-29 10:27:21 · 5274 阅读 · 1 评论 -
64位系统下文件重定向和注册表重定向
x64下文件重定向默认是开启的,文件的重定向,需要了解三个API: Wow64EnableWow64FsRedirection Wow64DisableWow64FsRedirection Wow64RevertWow64FsRedirection 不过MSDN说了Wow64EnableWow64FsRedirection不好转载 2012-09-29 10:34:35 · 12364 阅读 · 0 评论 -
内存泄露检查工具BoundsChecker的使用
http://linxy18.blog.163.com/blog/static/9346285820097312117396/NuMega BoundsChecker 6.5 (VisualC++) 下载:http://download.csdn.net/source/1569023《单元测试工具Numega》 转自:http://www.cnitblo转载 2012-09-11 14:50:42 · 1306 阅读 · 0 评论 -
使用TinyXml库值得注意的几个地方
From:http://blog.csdn.net/hoyt00/article/details/6769883 这两天仔细看了下TinyXml的源代码, 完美地搞清楚了一些网友和我自己的很多疑问. 鉴于TinyXml的实用性, 而且现在不少人在使用, 就决定在此做点有意义的事情 ---- 列出使用TinyXml库值得注意的几个地方. 关于TinyXml库的介绍网上有很多资料,转载 2012-10-10 12:59:45 · 9242 阅读 · 2 评论 -
MFC EDIT控件自动显示垂直滚动条
首先设置EDIT控件的属性,如下:注意:Horizontal scroll 和 Auto HScroll 不要选择。在OnInitDialog()函数中处理:// 获取EDIT可以显示的行数 TEXTMETRIC tm;CRect rect;GetDlgItem(IDC_EDIT_INFO)->GetClientRect(&rect);CDC* pdc = Ge转载 2012-10-18 20:31:29 · 9624 阅读 · 0 评论 -
Windbg实用手册
Windbg工作中用的不多,所以命令老是记不住,每次使用都要重新查命令,挺烦。趁这次培训的机会好好测试和总结了一下,下次再用就方便多了。在这里一起共享一下,如果有错误,请指正。基本知识和常用命令(1) Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx安装完转载 2012-10-19 20:07:53 · 3457 阅读 · 0 评论 -
gflags调试访问越界
昨天、今天调dump,对windbg相当的不熟悉,但也慢慢的知道了一些常用的命令,几周前听说到有gflags这样个工具,今天正好测试下。 gflags.exe是中的一个小工具。 安装下载链接:http://msdn.microsoft.com/en-us/windows/hardware/gg463016 安装好之后,把gflags所在文件夹(这里边还转载 2012-10-19 16:35:00 · 1045 阅读 · 0 评论 -
windbg检测句柄泄露(可定位到具体代码)
1、用c++写一个句柄泄露的样例程序:#include "stdafx.h"#include voidfun1(void);voidfun2(void);voidfun3(void);voidfun4(void);intmain(intargc, char* argv[]){while(1){fun1();fun2();Sleep转载 2012-10-19 19:42:54 · 1893 阅读 · 0 评论 -
MFC OCX控件实现安全初始化和脚本安全的方法
如果不实现该IObjectSafety接口,IE调用时会有如下提示信息:解决方法有两种,如下:方法1:通过IObjectSafety接口实现具体步骤:(1)在TestOCXCtrl.h中#include // for IObjectSafety; in ActiveX SDK (2)在TestOCXCtrl.h中 DECLAR原创 2012-12-06 13:58:24 · 4160 阅读 · 0 评论 -
.rc error rc2135 file not found .tlb - 解决方法
Under the Resources tree (which is under Configuration Properties),click "General" and make sure that for Additional Include Directories,you've specified "$(IntDir)" for additional include directo转载 2012-12-11 11:13:02 · 15814 阅读 · 0 评论 -
64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考
From:http://blog.sina.com.cn/s/blog_69ae4db50100mgav.html最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题。由于有一些32位dll没有源代码,无法转载 2012-12-28 11:15:14 · 4563 阅读 · 0 评论 -
Win7 VC6.0 打开多个工程设置
在Win7操作系统下,如果是以Administrator登陆,则VC6.0打开工程文件的时候,不能同时打开多个工程文件,后打开的工程会将前一个工程close掉,这样,VC6.0只能出现一个进程。在xp下,我们可以设置文件打开的默认方式中去掉DDE选项,这样可以使得VC6可以同时打开多个工程,但在win7下,却没有办法找到这个设置窗口。经过实践,可以用以下办法解决:打开cmd:1)输入ass转载 2012-12-17 16:43:24 · 4547 阅读 · 4 评论 -
Win7 x64系统UE增加右键菜单
[HKEY_CLASSES_ROOT\*\shell\UltraEdit\Command]默认="\"C:\\Program Files (x86)\\IDM Computer Solutions\\UltraEdit\\Uedit32.exe\" %1"转载 2012-12-17 17:29:16 · 2636 阅读 · 0 评论 -
CreateThread()和_beginthread()的不同
我们知道在Windows下创建一个线程的方法有两种,一种就是调用Windows API CreateThread()来创建线程;另外一种就是调用MSVC CRT的函数_beginthread()或_beginthreadex()来创建线程。相应的退出线程也有两个函数Windows API的ExitThread()和CRT的_endthread()。这两套函数都是用来创建和退出线程的,它们有什么区别转载 2013-01-31 16:35:28 · 445 阅读 · 0 评论 -
线程局部存储TLS
Thread local storage (TLS)统一进程的多个线程可以通过由TlsAlloc方法返回的索引值在线程自身的空间内存储和取回一个值。在以下这个例子里,索引值在进程开始时创建,当各个线程启动时,会各自申请一块动态内存并且将内存指针通过TlsSetValue方法存储到各自的TLS空间中(由先前的索引值标定)。CommonFunc方法使用TlsGetValue方法通过索引取得数据指针。在转载 2013-01-31 15:08:31 · 963 阅读 · 0 评论 -
CRT的多线程困扰
线程的访问权限线程的访问能力非常自由,它可以访问进程内存里的所有数据,甚至包括其他线程的堆栈(如果它知道其他线程的堆栈地址,然而这是很少见的情况),但实际运用中线程也拥有自己的私有存储空间,包括:栈(尽管并非完全无法被其他线程访问,但一般情况下仍然可以认为是私有的数据)。线程局部存储(Thread Local Storage, TLS)。线程局部存储是某些操作系统为线程单独提供的私有空转载 2013-01-31 17:29:49 · 1368 阅读 · 0 评论 -
64位进程调用32位dll的解决方法
最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题。由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题,这个问题让我很是挠头了几天。 相关资转载 2013-01-21 13:34:49 · 3706 阅读 · 0 评论 -
VC调用OCX的方法
MFC ActiveX 控件:创建自动化服务器以及出现灾难性故障原因MFC ActiveX 控件:创建自动化服务器可以开发 MFC ActiveX 控件作为自动化服务器,用来以编程方式将控件嵌入其他应用程序,并从应用程序调用控件中的方法。这样的控件仍可以在 ActiveX 控件容器中被承载。创建控件作为自动化服务器Create 控件。添加方法。重写 IsInvokeAllo转载 2013-01-21 13:32:17 · 16384 阅读 · 0 评论 -
C运行时库、C++ Standard Library
注意MSVCPRT.lib 和 MSVCPRTD.lib 是静态库,不要有任何动态链接库 (Dll) 直接与它们。这些库分别是还取决于 MSVCRT.lib 和 MSVCRTD.lib。如果您拥有的任何应用程序使用 MSVCPRT.lib 或 MSVCPRTD.lib,并使用"忽略默认库"(/NOD或 NODEFAULTLIB) 选项,一定要链接 MSVCPRT.lib (或 MSVCPRTD转载 2013-02-28 13:11:23 · 4271 阅读 · 0 评论