﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-iwindows-随笔分类-Visual C++</title><link>http://www.cppblog.com/iwindows/category/12967.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 25 Jan 2013 16:21:42 GMT</lastBuildDate><pubDate>Fri, 25 Jan 2013 16:21:42 GMT</pubDate><ttl>60</ttl><item><title>VS2005 编译 金山卫士</title><link>http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Tue, 08 Jan 2013 07:08:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/196922.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/196922.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/196922.html</trackback:ping><description><![CDATA[<strong style="color: #000080; font-family: 宋体; font-size: 13px; line-height: 19px; background-color: #ffffff; "><br />
一 编译工具及环境<br /></strong><p><strong style="color: #000080; font-family: Arial; font-size: 13px; line-height: 19px; background-color: #ffffff; "><br /></strong></p><p><span style="font-family: Arial; ">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-family: Arial; ">操作系统：Windows 7 Ultimate</span><br /></p><p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; ">开发环境：Visual Studio 2005 Professional</span><br /></p><p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; ">源码下载：</span><a href="http://code.ijinshan.com/" style="font-family: 'Comic Sans MS'; font-size: 10pt; "><span style="font-family: Arial; ">http://code.ijinshan.com</span><span style="font-family: Arial; font-size: 10pt; "></span></a></p><p><br /></p><p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; font-size: 10pt; ">SDK：<br /></span><br /><span style="font-family: Arial; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Microsoft Windows SDK v6.0A<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan001.jpg" border="0" alt="" width="231" height="129" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Arial; font-size: 10pt; ">电脑里装了Windows 7的平台SDK但使用有些问题，编辑的时候在讲解。</span><span style="font-family: Arial; font-size: 10pt; "><br /><br /></span></p><span style="font-family: Arial; font-size: 10pt; "><br /></span></p><p>&nbsp;</p><p>
<strong style="font-family: 宋体; font-size: 13px; line-height: 19px; background-color: #ffffff; color: #000080; ">二 开发环境搭建<br /></strong><br />
</p>
<p><span style="font-family: Arial; font-size: 10pt; ">&nbsp; &nbsp;</span><span style="font-family: Arial; font-size: 10pt; ">其实这步可以略过&#8230;&#8230;因为我装了Winodws 7 Platform SDK 配置了一下环境而已。如果要配置v6.0A的话编译时候可以解决不少问题哦~</span><span style="font-family: Arial; font-size: 10pt; "><br />
</span></p>
&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan002.jpg" border="0" alt="" width="524" height="442" /><br />
&nbsp; &nbsp;<br />
<strong style="color: #000080; font-family: 宋体; font-size: 13px; line-height: 19px; background-color: #ffffff; "><br />
</strong>&nbsp;<br />
<span style="background-color: #ffffff; "><font color="#000080" face="宋体" size="2" style="font-weight: bold; "><span style="line-height: 19px;">三 编译金山卫士</span></font><br />
<ol>
     <li><span style="font-family: Arial; ">浏览一下相关的Readme.txt&nbsp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;=&nbsp;开源作品根索引&nbsp;=<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">code.ijinshan.com/hg/</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span>+--&nbsp;pcmamager&nbsp;&nbsp;&nbsp;110317&nbsp;release:开源卫士整体&nbsp;可编译学习版本!<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110311&nbsp;release:开源卫士整体<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;+--&nbsp;kclear&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;110113&nbsp;release:卫士垃圾清理<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;+--&nbsp;ksm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101226&nbsp;release:卫士主界面<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;+--&nbsp;karpfw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101218&nbsp;release:卫士ARP防火墙<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;+--&nbsp;sysopt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101209&nbsp;&nbsp;release:系统优化&nbsp;之&nbsp;开机加速器<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;+--&nbsp;bksafevul&nbsp;&nbsp;&nbsp;101201&nbsp;&nbsp;release:漏洞扫描器<br /><span style="color: #008080; ">10</span>&nbsp;+--&nbsp;ppro&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101201&nbsp;&nbsp;release:隐私保护器</div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;外部库包:<br /><span style="color: #008080; ">2</span>&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">code.ijinshan.com/download/LIB4pcmanager.tbz</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #008000; "></span>下载后,将其中子目录覆盖&nbsp;pcmanager&nbsp;目录;<br /><span style="color: #008080; ">4</span>&nbsp;即:LIB4pcmanager<br /><span style="color: #008080; ">5</span>&nbsp;&#9500;&#9472;&#9472;&nbsp;lib<br /><span style="color: #008080; ">6</span>&nbsp;&#9492;&#9472;&#9472;&nbsp;src<br /><span style="color: #008080; ">7</span>&nbsp;将&nbsp;lib&nbsp;和&nbsp;src&nbsp;目录,覆盖&nbsp;pcmanager&nbsp;目录中的对应同名目录</div><br />了解一下，按照Readme照着做就OK了~！<br /><br /></span></li><li><span style="font-family: Arial; ">工程编译 <span style="font-size: 12.727272033691406px; ">pcmanager 内工程</span><br /><br />最先需要编译的工程&nbsp;</span><span style="font-family: Arial; color: red; ">commonlib.sln<br /></span><span style="font-family: Arial; ">需要<span style="color: #333333; font-size: 14px; line-height: 26px; ">把工程中，C++的包含文件的E:\winsdk\v6.0\Include 改为 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include &nbsp;、<span style="font-size: 14px; ">&nbsp;Lib的包含路径改为 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib</span><br /></span>编译工程，结果出现：<br />&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan003.JPG" border="0" alt="" width="672" height="103" /><br />原因是因为uuid.lib的版本跟VS 2005的版本不匹配，使用的uuid.lib比较新&#8230;&#8230;<br />将你使用的Microsoft SDKs放在最后就行了，重新编译通过。<br />&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan004.JPG" border="0" alt="" width="760" height="495" /><br /><br />编译主工程&nbsp;</span><span style="font-family: Arial; color: red; ">ksafe.sln</span><span style="font-family: Arial; "><br />注意修改Microsoft Windows SDK v6.0A相关的include、lib位置，以后工程都需要修改，这里不在强调了。<br />这个工程应该没有打问题，可以直接编译过去的。<br /><br />编译垃圾清理&nbsp;</span><span style="font-family: Arial; color: red; ">kclear.sln</span><span style="font-family: Arial; "><br />编译工程，错误提示：<br />&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan005.JPG" border="0" alt="" width="685" height="81" /><br />查看工程设置，因为依赖于</span>kuipack.exe。<br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan006.JPG" border="0" alt="" width="596" height="242" /><br />所有需要把 \<span style="color: #333333; font-family: Arial; font-size: 14px; line-height: 26px; ">oss</span>\kclear\tools\kuipack.exe 复制到 \oss\pcmanager\tools\kuipack.exe 中，即可编译通过。<br /><br />编译其他工程：<span style="color: red; ">avcenter.sln、</span><span style="color: red; ">bkver.sln、</span><span style="color: red; ">kmsspeed.sln、</span><span style="color: red; ">kprocesslib.sln、</span><span style="color: red; ">ksafeperfopt.sln、</span><span style="color: red; ">ksafesvc.sln、</span><span style="color: red; ">softmgr.sln、</span><span style="color: red; ">sysopt.sln、</span><span style="color: red; ">vulfix.sln&nbsp;<span style="color: #000000; ">顺利通过。</span></span><br />空工程或问题工程：<span style="color: #0000ff; ">lang.sln、PluginEngine.sln、safemon.sln、ksafeinstaller.sln、onekeyinstall.sln、ksafe.sdk\ksafe.sdk.sln、</span><span style="color: #0000ff; ">ksafe.zhangrui\ksafe.zhangrui.sln</span> 空工程。<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KSafeMain.sln（这个工程缺少子工程，但觉得无伤大雅，个人未编译。）<br /><br /><br /></li><li><font face="Arial">工程编译 <span style="font-size: 12.727272033691406px;">oss 中</span>&nbsp;pcmanager 以外工程<br /><br />当然先把几个工程配置一下<span style="color: #333333; line-height: 26px; ">C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include &nbsp;和</span><span style="color: #333333; font-size: 14px; line-height: 26px; ">&nbsp;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib。</span><br />然后编译&nbsp;bksafevul、karpfw、kclear、ksm、sysopt 中的工程文件。其中&nbsp;ppro 没找到相关工程文件，不过有.vcproj文件（有些懒，这工程就放弃了~~~，感兴趣的可以工程打开编译一下。）<br />这几个编译几乎没有什么大问题。有的都是磕磕绊绊的小毛病，细心改一下就OK了。<br /><br />karpfw工程 ：自己设置一下依赖路径。..\..\import\kxe_improve_lib\win32\base_lib<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan007.JPG" border="0" alt="" width="653" height="53" /><br /><br /><div>ksm工程：md5.c 设置一下不依赖头文件编译。</div>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan008.JPG" border="0" alt="" width="797" height="101" /><br /><br /><br /><br /><br />最后看一下成果，收工：<img src="http://www.cppblog.com/images/cppblog_com/iwindows/jinshan009.JPG" border="0" alt="" width="803" height="572" /></font></li></ol></span><span style="background-color: #ffffff; "><ol>
</ol>
</span><img src ="http://www.cppblog.com/iwindows/aggbug/196922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2013-01-08 15:08 <a href="http://www.cppblog.com/iwindows/archive/2013/01/08/196922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个宏命令，就可以程序崩溃时生成dump文件</title><link>http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Tue, 30 Oct 2012 02:10:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/194065.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/194065.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/194065.html</trackback:ping><description><![CDATA[<p>在主程序初始化时加入</p>
<p>DeclareDumpFile();<br /><br /><span style="color: rgb(0,0,0)">创建头文件DumpFile.h, 将下列代码放进文件中<br /></span><br /></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#pragma&nbsp;once<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">windows.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">Dbghelp.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">vector</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#pragma&nbsp;comment(lib,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Dbghelp.lib</span><span style="color: #000000">"</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;NSDumpFile<br /><img id="Codehighlighter1_180_2355_Open_Image" onclick="this.style.display='none'; Codehighlighter1_180_2355_Open_Text.style.display='none'; Codehighlighter1_180_2355_Closed_Image.style.display='inline'; Codehighlighter1_180_2355_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_180_2355_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_180_2355_Closed_Text.style.display='none'; Codehighlighter1_180_2355_Open_Image.style.display='inline'; Codehighlighter1_180_2355_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_180_2355_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_180_2355_Open_Text"><span style="color: #000000">{&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CreateDumpFile(LPCSTR&nbsp;lpstrDumpFilePathName,&nbsp;EXCEPTION_POINTERS&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pException)&nbsp;&nbsp;<br /><img id="Codehighlighter1_269_792_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_792_Open_Text.style.display='none'; Codehighlighter1_269_792_Closed_Image.style.display='inline'; Codehighlighter1_269_792_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_269_792_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_269_792_Closed_Text.style.display='none'; Codehighlighter1_269_792_Open_Image.style.display='inline'; Codehighlighter1_269_792_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_269_792_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_269_792_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;创建Dump文件&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;hDumpFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;CreateFile(lpstrDumpFilePathName,&nbsp;GENERIC_WRITE,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;NULL,&nbsp;CREATE_ALWAYS,&nbsp;FILE_ATTRIBUTE_NORMAL,&nbsp;NULL);&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Dump信息&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MINIDUMP_EXCEPTION_INFORMATION&nbsp;dumpInfo;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dumpInfo.ExceptionPointers&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pException;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dumpInfo.ThreadId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetCurrentThreadId();&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dumpInfo.ClientPointers&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;TRUE;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;写入Dump文件内容&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MiniDumpWriteDump(GetCurrentProcess(),&nbsp;GetCurrentProcessId(),&nbsp;hDumpFile,&nbsp;MiniDumpNormal,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">dumpInfo,&nbsp;NULL,&nbsp;NULL);&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hDumpFile);&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;LPTOP_LEVEL_EXCEPTION_FILTER&nbsp;WINAPI&nbsp;MyDummySetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER&nbsp;lpTopLevelExceptionFilter)<br /><img id="Codehighlighter1_927_945_Open_Image" onclick="this.style.display='none'; Codehighlighter1_927_945_Open_Text.style.display='none'; Codehighlighter1_927_945_Closed_Image.style.display='inline'; Codehighlighter1_927_945_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_927_945_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_927_945_Closed_Text.style.display='none'; Codehighlighter1_927_945_Open_Image.style.display='inline'; Codehighlighter1_927_945_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_927_945_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_927_945_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;NULL;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;PreventSetUnhandledExceptionFilter()<br /><img id="Codehighlighter1_993_1765_Open_Image" onclick="this.style.display='none'; Codehighlighter1_993_1765_Open_Text.style.display='none'; Codehighlighter1_993_1765_Closed_Image.style.display='inline'; Codehighlighter1_993_1765_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_993_1765_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_993_1765_Closed_Text.style.display='none'; Codehighlighter1_993_1765_Open_Image.style.display='inline'; Codehighlighter1_993_1765_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_993_1765_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_993_1765_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HMODULE&nbsp;hKernel32&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoadLibrary(_T(</span><span style="color: #000000">"</span><span style="color: #000000">kernel32.dll</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(hKernel32&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;NULL)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pOrgEntry&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetProcAddress(hKernel32,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">SetUnhandledExceptionFilter</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(pOrgEntry&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;NULL)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;FALSE;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;newJump[&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">&nbsp;];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwOrgEntryAddr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DWORD)&nbsp;pOrgEntry;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwOrgEntryAddr&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;add&nbsp;5&nbsp;for&nbsp;5&nbsp;op-codes&nbsp;for&nbsp;jmp&nbsp;far</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pNewFunc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">MyDummySetUnhandledExceptionFilter;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwNewEntryAddr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DWORD)&nbsp;pNewFunc;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwRelativeAddr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dwNewEntryAddr&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;&nbsp;dwOrgEntryAddr;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newJump[&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0xE9</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;JMP&nbsp;absolute</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(</span><span style="color: #000000">&amp;</span><span style="color: #000000">newJump[&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;],&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">dwRelativeAddr,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(pNewFunc));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SIZE_T&nbsp;bytesWritten;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;bRet&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;WriteProcessMemory(GetCurrentProcess(),&nbsp;&nbsp;&nbsp;&nbsp;pOrgEntry,&nbsp;newJump,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(pNewFunc)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">bytesWritten);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;bRet;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;LONG&nbsp;WINAPI&nbsp;UnhandledExceptionFilterEx(</span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;_EXCEPTION_POINTERS&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pException)<br /><img id="Codehighlighter1_1850_2222_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1850_2222_Open_Text.style.display='none'; Codehighlighter1_1850_2222_Closed_Image.style.display='inline'; Codehighlighter1_1850_2222_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1850_2222_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1850_2222_Closed_Text.style.display='none'; Codehighlighter1_1850_2222_Open_Image.style.display='inline'; Codehighlighter1_1850_2222_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1850_2222_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1850_2222_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_1882_1886_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1882_1886_Open_Text.style.display='none'; Codehighlighter1_1882_1886_Closed_Image.style.display='inline'; Codehighlighter1_1882_1886_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1882_1886_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1882_1886_Closed_Text.style.display='none'; Codehighlighter1_1882_1886_Open_Image.style.display='inline'; Codehighlighter1_1882_1886_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCHAR&nbsp;szMbsFile[MAX_PATH]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1882_1886_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1882_1886_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;}</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::GetModuleFileName(NULL,&nbsp;szMbsFile,&nbsp;MAX_PATH);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCHAR</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pFind&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_tcsrchr(szMbsFile,&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">\\</span><span style="color: #000000">'</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(pFind)<br /><img id="Codehighlighter1_1999_2112_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1999_2112_Open_Text.style.display='none'; Codehighlighter1_1999_2112_Closed_Image.style.display='inline'; Codehighlighter1_1999_2112_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_1999_2112_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_1999_2112_Closed_Text.style.display='none'; Codehighlighter1_1999_2112_Open_Image.style.display='inline'; Codehighlighter1_1999_2112_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_1999_2112_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1999_2112_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">(pFind</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tcscat(szMbsFile,&nbsp;_T(</span><span style="color: #000000">"</span><span style="color: #000000">CrashDumpFile.dmp</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreateDumpFile(szMbsFile,&nbsp;pException);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO:&nbsp;MiniDumpWriteDump</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FatalAppExit(</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;&nbsp;_T(</span><span style="color: #000000">"</span><span style="color: #000000">Fatal&nbsp;Error</span><span style="color: #000000">"</span><span style="color: #000000">));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;EXCEPTION_CONTINUE_SEARCH;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;RunCrashHandler()<br /><img id="Codehighlighter1_2251_2353_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2251_2353_Open_Text.style.display='none'; Codehighlighter1_2251_2353_Closed_Image.style.display='inline'; Codehighlighter1_2251_2353_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_2251_2353_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_2251_2353_Closed_Text.style.display='none'; Codehighlighter1_2251_2353_Open_Image.style.display='inline'; Codehighlighter1_2251_2353_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_2251_2353_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_2251_2353_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetUnhandledExceptionFilter(UnhandledExceptionFilterEx);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreventSetUnhandledExceptionFilter();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;DeclareDumpFile()&nbsp;NSDumpFile::RunCrashHandler();</span></div>
<p>&nbsp;</p><br /><img src ="http://www.cppblog.com/iwindows/aggbug/194065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2012-10-30 10:10 <a href="http://www.cppblog.com/iwindows/archive/2012/10/30/194065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual C++里Win7、Win8 触摸书写板的调用</title><link>http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Wed, 10 Oct 2012 07:03:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/193114.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/193114.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/193114.html</trackback:ping><description><![CDATA[<div><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><span style="font-size: 10pt">检测是不是Win7系统
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;IsWindows7()<br /><img id="Codehighlighter1_18_518_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_518_Open_Text.style.display='none'; Codehighlighter1_18_518_Closed_Image.style.display='inline'; Codehighlighter1_18_518_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_18_518_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_18_518_Closed_Text.style.display='none'; Codehighlighter1_18_518_Open_Image.style.display='inline'; Codehighlighter1_18_518_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_18_518_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_18_518_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;OSVERSIONINFOEX&nbsp;osvi;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;bOsVersionInfoEx=false;</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwType</span><span style="color: #000000">=</span><span style="color: #000000">0UL</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;bWin7</span><span style="color: #000000">=</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(</span><span style="color: #000000">&amp;</span><span style="color: #000000">osvi,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(SYSTEM_INFO));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(</span><span style="color: #000000">&amp;</span><span style="color: #000000">osvi,&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(OSVERSIONINFOEX));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;osvi.dwOSVersionInfoSize&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(OSVERSIONINFOEX);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;bOsVersionInfoEx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetVersionEx&nbsp;((LPOSVERSIONINFOA)&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">osvi);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">(bOsVersionInfoEx)&nbsp;)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(osvi.dwMajorVersion</span><span style="color: #000000">==</span><span style="color: #000000">6</span><span style="color: #000000">)<br /><img id="Codehighlighter1_390_501_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_501_Open_Text.style.display='none'; Codehighlighter1_390_501_Closed_Image.style.display='inline'; Codehighlighter1_390_501_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_390_501_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_390_501_Closed_Text.style.display='none'; Codehighlighter1_390_501_Open_Image.style.display='inline'; Codehighlighter1_390_501_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_390_501_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_390_501_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(osvi.dwMinorVersion</span><span style="color: #000000">==</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img id="Codehighlighter1_423_498_Open_Image" onclick="this.style.display='none'; Codehighlighter1_423_498_Open_Text.style.display='none'; Codehighlighter1_423_498_Closed_Image.style.display='inline'; Codehighlighter1_423_498_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_423_498_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_423_498_Closed_Text.style.display='none'; Codehighlighter1_423_498_Open_Image.style.display='inline'; Codehighlighter1_423_498_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_423_498_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_423_498_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(osvi.wProductType</span><span style="color: #000000">==</span><span style="color: #000000">VER_NT_WORKSTATION)<br /><img id="Codehighlighter1_473_494_Open_Image" onclick="this.style.display='none'; Codehighlighter1_473_494_Open_Text.style.display='none'; Codehighlighter1_473_494_Closed_Image.style.display='inline'; Codehighlighter1_473_494_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_473_494_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_473_494_Closed_Text.style.display='none'; Codehighlighter1_473_494_Open_Image.style.display='inline'; Codehighlighter1_473_494_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_473_494_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_473_494_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bWin7</span><span style="color: #000000">=</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;bWin7;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div></span></span><br /><br /><span style="font-size: 10pt">Win8系统马上要上市了，开发需要</span><span style="font-size: 10pt">想实现iPad或A<font size="2"><span style="font-size: 10pt">ndroid系统里触摸书写板的动态弹出和动态消失效果。</span></font><br /></span><span style="font-size: 10pt">单位工作系统是Win7，测试平板是Win8的，</span><span style="font-size: 10pt">的在这里只做了一下Win7手写板的截图。</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/iwindows/TabTip.jpg" width="697" height="304" /><br /><br /><span style="font-size: 10pt">关于书写板的弹出：</span><br /><span style="font-size: 10pt">Win7、Win8弹出书写板并没有什么差别。都是外部调用TabTip.exe而已。</span><br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff; font-size: 10pt">void</span><span style="color: #000000; font-size: 10pt">&nbsp;ExecuteTabTip()<br /><img id="Codehighlighter1_21_399_Open_Image" onclick="this.style.display='none'; Codehighlighter1_21_399_Open_Text.style.display='none'; Codehighlighter1_21_399_Closed_Image.style.display='inline'; Codehighlighter1_21_399_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_21_399_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_21_399_Closed_Text.style.display='none'; Codehighlighter1_21_399_Open_Image.style.display='inline'; Codehighlighter1_21_399_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_21_399_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_21_399_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;TCHAR&nbsp;tcProgramFile[MAX_PATH];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;SHGetSpecialFolderPath(NULL,tcProgramFile,CSIDL_PROGRAM_FILES,</span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-size: 10pt">*</span><span style="color: #000000; font-size: 10pt">token;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">char</span><span style="color: #000000; font-size: 10pt">&nbsp;seps[]&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">\\</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;token&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;strtok(&nbsp;tcProgramFile,&nbsp;seps&nbsp;);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;std::</span><span style="color: #0000ff; font-size: 10pt">string</span><span style="color: #000000; font-size: 10pt">&nbsp;strPath&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;token;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;strPath&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;strPath&nbsp;</span><span style="color: #000000; font-size: 10pt">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">\\Program&nbsp;Files\\Common&nbsp;Files\\Microsoft&nbsp;Shared\\ink\\TabTip.exe</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;ShellExecute(NULL,&nbsp;</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">open</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">,&nbsp;strPath.c_str(),&nbsp;NULL,&nbsp;NULL,&nbsp;SW_SHOWNA);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">}</span></span></div><br /><br /><br /><span style="font-size: 10pt">关于书写板的消失：</span><br /><span style="font-size: 10pt">Win7中的方法。 </span>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff; font-size: 10pt">void</span><span style="color: #000000; font-size: 10pt">&nbsp;TerminateTabTip4Win7()<br /><img id="Codehighlighter1_28_285_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_285_Open_Text.style.display='none'; Codehighlighter1_28_285_Closed_Image.style.display='inline'; Codehighlighter1_28_285_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_28_285_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_28_285_Closed_Text.style.display='none'; Codehighlighter1_28_285_Open_Image.style.display='inline'; Codehighlighter1_28_285_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_28_285_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_28_285_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;WM_DESKBAND_CLICKED&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;::RegisterWindowMessage(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">TabletInputPanelDeskBandClicked</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">));<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;HWND&nbsp;wKB&nbsp;</span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt">&nbsp;::FindWindow(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTip_Main_Window</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">),&nbsp;NULL);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">if</span><span style="color: #000000; font-size: 10pt">(wKB&nbsp;</span><span style="color: #000000; font-size: 10pt">!=</span><span style="color: #000000; font-size: 10pt">&nbsp;NULL&nbsp;</span><span style="color: #000000; font-size: 10pt">&amp;&amp;</span><span style="color: #000000; font-size: 10pt">&nbsp;::IsWindowVisible(wKB))<br /><img id="Codehighlighter1_231_283_Open_Image" onclick="this.style.display='none'; Codehighlighter1_231_283_Open_Text.style.display='none'; Codehighlighter1_231_283_Closed_Image.style.display='inline'; Codehighlighter1_231_283_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_231_283_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_231_283_Closed_Text.style.display='none'; Codehighlighter1_231_283_Open_Image.style.display='inline'; Codehighlighter1_231_283_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_231_283_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_231_283_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::PostMessage(wKB,&nbsp;WM_</span><span style="color: #000000; font-size: 10pt">DESKBAND_</span><span style="color: #000000; font-size: 10pt">CLICKED,&nbsp;</span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">,&nbsp;</span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">);<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">}</span></span></div><br /><span style="font-size: 10pt">Win8中的方法。</span><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff; font-size: 10pt">void</span><span style="color: #000000; font-size: 10pt"> TerminateTabTip4Win8()<br /><img id="Codehighlighter1_28_207_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_207_Open_Text.style.display='none'; Codehighlighter1_28_207_Closed_Image.style.display='inline'; Codehighlighter1_28_207_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_28_207_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_28_207_Closed_Text.style.display='none'; Codehighlighter1_28_207_Open_Image.style.display='inline'; Codehighlighter1_28_207_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_28_207_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_28_207_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;HWND wKB </span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt"> ::FindWindow(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTip_Main_Window</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">), NULL);<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; font-size: 10pt">if</span><span style="color: #000000; font-size: 10pt">(wKB </span><span style="color: #000000; font-size: 10pt">!=</span><span style="color: #000000; font-size: 10pt"> NULL </span><span style="color: #000000; font-size: 10pt">&amp;&amp;</span><span style="color: #000000; font-size: 10pt"> ::IsWindowVisible(wKB))<br /><img id="Codehighlighter1_143_205_Open_Image" onclick="this.style.display='none'; Codehighlighter1_143_205_Open_Text.style.display='none'; Codehighlighter1_143_205_Closed_Image.style.display='inline'; Codehighlighter1_143_205_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_143_205_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_143_205_Closed_Text.style.display='none'; Codehighlighter1_143_205_Open_Image.style.display='inline'; Codehighlighter1_143_205_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_143_205_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_143_205_Open_Text"><span style="color: #000000; font-size: 10pt">{<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000; font-size: 10pt"><span style="color: #000000; font-size: 10pt">&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::PostMessage(wKB, WM_SYSCOMMAND, SC_CLOSE, </span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">);<br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" /></span><span style="color: #000000; font-size: 10pt">}</span></span></div><br /><span style="font-size: 10pt">Win8下书写板停靠代码 </span>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="2">HWND wKB <span style="color: #000000; font-size: 10pt">=</span></font><span style="color: #000000; font-size: 10pt"> ::FindWindow(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTip_Main_Window</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">), NULL);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000; font-size: 10pt">DWORD WM_DOCK_BUTTON_PRESSED </span><span style="color: #000000; font-size: 10pt">=</span><span style="color: #000000; font-size: 10pt"> ::RegisterWindowMessage(_TEXT(</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">IPTipDockButtonPressed</span><span style="color: #000000; font-size: 10pt">"</span><span style="color: #000000; font-size: 10pt">));&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-size: 10pt">PostMessage(<font size="2">wKB</font>, WM_DOCK_BUTTON_PRESSED, </span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">, </span><span style="color: #000000; font-size: 10pt">0</span><span style="color: #000000; font-size: 10pt">); </span></div><br /><br /><br /></div><img src ="http://www.cppblog.com/iwindows/aggbug/193114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2012-10-10 15:03 <a href="http://www.cppblog.com/iwindows/archive/2012/10/10/193114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Win 7 中 Visual C++ 2008 的 fatal error C1853: 错误</title><link>http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html</link><dc:creator>vic.MINg</dc:creator><author>vic.MINg</author><pubDate>Sat, 30 Jan 2010 08:06:00 GMT</pubDate><guid>http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html</guid><wfw:comment>http://www.cppblog.com/iwindows/comments/106830.html</wfw:comment><comments>http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/iwindows/comments/commentRss/106830.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/iwindows/services/trackbacks/106830.html</trackback:ping><description><![CDATA[<br><span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Windows 7真帅呀！不过刚按完 Visual Studio 2008 SP1和&nbsp;SQL Server 2008。就被第一个问题磕到了！<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在 Visual C++ 2008 中编译程序，出错了！编译器提示：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fatal error C1853: &#8220;Debug\***.pch&#8221;意外的预编译的头，只需重新运行编译器可能会解决此问题。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fatal error C1853: &#8220;Debug\***.pch&#8221;预编译头文件来自编译器的早期版本，或者预编译头为 C++ 而在 C 中使用它(或相反)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;问题不大~清空项目，重新编译就OK啦！这个可难不倒我。结果重新n回也不灵&#8230;&#8230; 真迷糊呀！<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最终在微软帮助中找到了答案：<a href="http://support.microsoft.com/kb/976656/zh-cn">当使用 Visual c + + 2008年编译器时出现错误消息："致命错误 C1859"</a><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #ff0000">症状<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您在运行 Microsoft Visual c + + 2008年编译器来编译文件，或生成项目时您会收到以下错误消息：<br><br>
<fieldset style="WIDTH: 690px; HEIGHT: 24px" align=center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;致命错误 C1859： <var>header file name</var> 意外的预编译的头，只需重新运行编译器可能会解决此问题。</fieldset>
<p dir=ltr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此外，此问题仍然出现甚至当您运行编译器再次。 当您启用 Windows 7 或 Windows Server 2008 正在运行的计算机上的 创建/使用预编译头 编译器选项时，会发生此问题。</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #ff0000">原因<br></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当启用了 创建/使用预编译头 编译器选项时，编译器要求预编译的头文件和相对的模块不移动各编译间。但是，地址空间布局随机 （也称为 ASLR) 功能随机重新定位在进程中的模块。因此，各编译间移动的模块时，将发生该错误。<br><br><span style="COLOR: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解决方案<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: #000000">简单点说呀！就是安装补丁&nbsp;&nbsp;&nbsp;<a href="http://download.csdn.net/source/2034396">VS90SP1-KB976656-x86.exe</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里我提供了个下载地址，因为微软下载<font color=#ff0000>必须接受附带的许可条款才能使用此软件。</font></span></span></span> <br><br><br>
<img src ="http://www.cppblog.com/iwindows/aggbug/106830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/iwindows/" target="_blank">vic.MINg</a> 2010-01-30 16:06 <a href="http://www.cppblog.com/iwindows/archive/2010/01/30/106830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>