﻿<?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++博客-无名-随笔分类-windows系统</title><link>http://www.cppblog.com/Tim/category/16368.html</link><description>&lt;center&gt;&lt;font  id="wd" style="color:red;font-weight:bold;"&gt;让内心永远燃烧着伟大的光明的精神之火！&lt;/font&gt;&lt;/center&gt;
&lt;center&gt;&lt;font  style="color:green"&gt;灵活的思考，严谨的实现&lt;/font&gt;&lt;/center&gt;
&lt;center&gt;&lt;font  style="color:red"&gt;豪迈的气魄、顽强的意志和周密的理性。&lt;/font&gt;&lt;/center&gt;</description><language>zh-cn</language><lastBuildDate>Wed, 15 Nov 2017 00:10:31 GMT</lastBuildDate><pubDate>Wed, 15 Nov 2017 00:10:31 GMT</pubDate><ttl>60</ttl><item><title>Win10下遍历文件夹_findnext()异常</title><link>http://www.cppblog.com/Tim/archive/2017/11/14/215345.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Tue, 14 Nov 2017 06:11:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2017/11/14/215345.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/215345.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2017/11/14/215345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/215345.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/215345.html</trackback:ping><description><![CDATA[今天写程序时，发现一个遍历文件夹的功能都总是无法通过，一运行就各种异常：
1、条件为/*.*时，就算判定了 if (!(fileinfo.attrib & _A_SUBDIR))，.目录竟然能进入这个条件；
2、只要一执行到_tfindnext程序就奔溃。
只差没砸电脑了，后来终于在网上找到原来是路径句柄返回类型的问题。
引用 http://blog.csdn.net/kelvin_yan/article/details/53997840 的原话：
原因： 
_findnext()第一个参数&#8221;路径句柄&#8221;，返回的类型为intptr_t（long long），如果定义为long，在win7中是没有问题，但是在win10中就要改为long long或者intptr_t。
果然问题解决。<img src ="http://www.cppblog.com/Tim/aggbug/215345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Tim/" target="_blank">Tim</a> 2017-11-14 14:11 <a href="http://www.cppblog.com/Tim/archive/2017/11/14/215345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>com环境是只对线程生效的</title><link>http://www.cppblog.com/Tim/archive/2017/07/14/215104.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Fri, 14 Jul 2017 08:44:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2017/07/14/215104.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/215104.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2017/07/14/215104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/215104.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/215104.html</trackback:ping><description><![CDATA[com环境是只针对线程内有效的。所以，如果在线程内要调用com相关的接口，必须在线程入口的地方单独调用CoInitialize，结束的地方再调用CoUninitialize。<img src ="http://www.cppblog.com/Tim/aggbug/215104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Tim/" target="_blank">Tim</a> 2017-07-14 16:44 <a href="http://www.cppblog.com/Tim/archive/2017/07/14/215104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>32位编译的程序无法使用大于2G的内存</title><link>http://www.cppblog.com/Tim/archive/2017/01/26/214639.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Thu, 26 Jan 2017 09:18:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2017/01/26/214639.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/214639.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2017/01/26/214639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/214639.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/214639.html</trackback:ping><description><![CDATA[<div>VS用32位编译的程序，无法使用大于2G的内存。当动态申请（new/malloc）或者栈空间使用需要大于2G时，程序就会产生异常。该异常能被try-catch捕获，但是不一定是bad_alloc类型，只能被catch(...)捕获，所以往往难以定位真实的原因。<br />解决方法是在链接选项中加入 /LARGEADDRESSAWARE 。这样就能使用4G的空间。</div><img src ="http://www.cppblog.com/Tim/aggbug/214639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Tim/" target="_blank">Tim</a> 2017-01-26 17:18 <a href="http://www.cppblog.com/Tim/archive/2017/01/26/214639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>system、WinExec、ShellExecute、CreateProcess</title><link>http://www.cppblog.com/Tim/archive/2014/05/12/206913.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Mon, 12 May 2014 03:35:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2014/05/12/206913.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/206913.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2014/05/12/206913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/206913.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/206913.html</trackback:ping><description><![CDATA[<p><br />转自<a href="http://www.cnblogs.com/project/archive/2009/10/22/1588015.html">http://www.cnblogs.com/project/archive/2009/10/22/1588015.html</a><br /></p>
<div style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">关于三个SDK函数: WinExec， ShellExecute，CreateProcess 的其他注意事项：<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />【1】定义头文件<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />必须定义以下头文件：<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />#include &lt;windows.h&gt;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />【2】定义路径<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />C++中所表示的路径要用 " \\ "而不是平常所用的" \ "，所以以上三个函数表示路径都为:disk:\\Directory\\...\\File name<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />WinExec("D:\\Program Files\\Test\\Test.exe",SW_SHOWMAXIMIZED);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL);</div>
<p style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><strong style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">一、system</strong><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">int system( const char *command );</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; 你可以传入一命令，启动某个程序。如"ping www.vccode.com", "YourExe"等等。不过这里有几点要值得注意：<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (1)、他不会立即返回，直到你启动的程序执行完成。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (2)、如果你启动是windows程序，它仍然会启动一个控制台，这就给人感觉太差劲了，但如果本身是控制台的，而且又需要等待它的完成，那这将是比较好的选择。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (3)、它的返回值代表是否执行成功以及程序的退出码。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (4)、不能运行*.txt文件或"www.baidu.com"</p>
<p style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><strong style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">二、WinExec</strong><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp; UINT WinExec(</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPCSTR&nbsp; lpCmdLine,&nbsp;&nbsp; //命令行</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UINT&nbsp; uCmdShow &nbsp; &nbsp;&nbsp; //窗口样式</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp; );</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; 这个API与API:system同样的使用简单，同用是使用命令行型式。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; 不过它与API:system相比，有几个优点：<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (1)、它将启动了一个新进程，并且立即返回，因此你的程序无需等待。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (2)、它的多了一个参数：uCmdShow，通过它你可以一定程度上控件窗体的显示，比如让它后台运行而不显示出来。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (3)、它无论启动控制台程序还是windows程序都只做你想要做的事。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; 不足之处：<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (1)、它完全与本进程脱离，无法做些必要的控制。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (2)、无法得知启动的程序是否退出。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (3)、得不到启动的程序的退出码。<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; (4)、不能运行*.txt文件或"www.baidu.com"<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></p>
<p style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;</p>
<p style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px"><strong style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">三、ShellExecute</strong><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp; HINSTANCE ShellExecute(</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HWND hwnd,</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /><span style="padding-bottom: 0px; line-height: 1.8; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(255,102,0); padding-top: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPCTSTR</span>&nbsp; lpOperation,<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></p>
<p><span style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(255,102,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPCTSTR lpFile,</span><br style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px" /><span style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(255,102,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPCTSTR lpParameters,</span><br style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px" /><span style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(255,102,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPCTSTR lpDirectory,</span><br style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px" /><span style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(255,102,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INT nShowCmd</span><br style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(51,51,51); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px" /><span style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(255,102,0); word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp; );</span><br style="padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255);