﻿<?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++博客-无我</title><link>http://www.cppblog.com/Tim/</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>Thu, 23 Apr 2026 01:27:14 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 01:27:14 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>UDP广播包在有虚拟网卡时不能正常工作</title><link>http://www.cppblog.com/Tim/archive/2017/07/14/215103.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Fri, 14 Jul 2017 08:37:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2017/07/14/215103.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/215103.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2017/07/14/215103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/215103.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/215103.html</trackback:ping><description><![CDATA[用UDP给局域网发送广播包，如果发送方机器上有虚拟网卡，局域网其他机器无法收到这些广播包。<br />只需要禁用虚拟网卡，就能正常通信。<img src ="http://www.cppblog.com/Tim/aggbug/215103.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:37 <a href="http://www.cppblog.com/Tim/archive/2017/07/14/215103.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>GetConsoleWindow </title><link>http://www.cppblog.com/Tim/archive/2015/01/09/209447.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Fri, 09 Jan 2015 02:36:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2015/01/09/209447.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/209447.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2015/01/09/209447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/209447.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/209447.html</trackback:ping><description><![CDATA[<p>在控制台程序中，要得到当前程序的句柄，最好的方法是调用GetConsoleWindow 。<br />然而，在代码中却无法直接调用GetConsoleWindow,因为GetConsoleWindow 是 Kernel32.dll 中部分未公布的API。<br />在用eXeScope导出 Kernel32.dll 中控制台相关的API之后，可以发现有一个名为GetConsoleWindow的API。查找参考了部分资料后，提供如下代码，能够动态载入这个API并获 得窗口句柄。</p>
<p>首先需要全局声明：</p>
<p>typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)();<br />PROCGETCONSOLEWINDOW GetConsoleWindow;</p>
<p>然后再Main()函数开头中输入以下内容：</p>
<p>HMODULE hKernel32 = GetModuleHandle("kernel32");<br />GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");</p>
<p>完成了动态载入API函数GetConsoleWindow的任务。需要使用时可如下：</p>
<p>HWND cmd = GetConsoleWindow();</p><img src ="http://www.cppblog.com/Tim/aggbug/209447.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> 2015-01-09 10:36 <a href="http://www.cppblog.com/Tim/archive/2015/01/09/209447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>fputs不自动添加换行符</title><link>http://www.cppblog.com/Tim/archive/2014/12/02/209002.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Tue, 02 Dec 2014 03:41:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2014/12/02/209002.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/209002.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2014/12/02/209002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/209002.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/209002.html</trackback:ping><description><![CDATA[fgets读取文件时一次读取一行，循环调用时<span style="color: red">不需要处理 换行符；</span><br />但是fputs写文件时一次写入一行，但是<span style="color: red">不会自动添加 换行符。</span><br />然而，puts会<span style="color: red">自动</span>添加换行符。 <br /><br /><span style="color: red"><strong>请注意puts和fputs的这种不一致性！</strong></span><img src ="http://www.cppblog.com/Tim/aggbug/209002.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> 2014-12-02 11:41 <a href="http://www.cppblog.com/Tim/archive/2014/12/02/209002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读书</title><link>http://www.cppblog.com/Tim/archive/2014/05/19/207010.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Mon, 19 May 2014 01:31:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2014/05/19/207010.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/207010.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2014/05/19/207010.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/207010.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/207010.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;每年要读48本书，找个地方记录一下：<br />2014.4<br />1、《libevent参考手册》<br />2、《曾国藩 血祭》<br />3、《曾国藩 野焚》<br />4、《大规模分布式存储系统-原理解析与架构实战》&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;本书只读到第五章，其他的有点读不下去。下次有想法再读。其中&#8220;分布式数据库&#8221;一章值得作为突破口研究。<br /><br />2014.5<br />1、《曾国藩 黑雨》<img src ="http://www.cppblog.com/Tim/aggbug/207010.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> 2014-05-19 09:31 <a href="http://www.cppblog.com/Tim/archive/2014/05/19/207010.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); 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="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; float: none; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp; 它也有WinExec同样的缺点。</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="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; float: none; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp; 它虽然传回一个HINSTANCE，但他并不是真正的句柄，我们仅能拿它来做一些错误值检查。</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" /><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="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; float: none; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp; 但它的功能比前两者更强大，它执行系统的Shell命令。</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="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; float: none; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp; 1、2中如果传入&#8220;XX.txt&#8221;，它们将不能成功执行，ShellExecute却能很好地执行，它将启动一个默认的文字处理程序来打开它。</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="text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; display: inline !important; font: 14px/25px verdana, Arial, Helvetica, sans-serif; white-space: normal; float: none; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp; 1、2中如果传入&#8220;www.vccode.com&#8221;，将不能成功执行，而ShellExecute却能很好地执行，它将启动一个默认浏览器来打开这个网站。</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" /><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" /></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">四、CreateProcess</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; BOOL CreateProcess(</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 lpApplicationName,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // name of executable module</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; LPTSTR lpCommandLine, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // command line string</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; LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD</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; LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD</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; BOOL bInheritHandles,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // handle inheritance option</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; DWORD dwCreationFlags,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // creation flags</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; LPVOID lpEnvironment, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; // new environment block</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 lpCurrentDirectory,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // current directory name</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; LPSTARTUPINFO lpStartupInfo, &nbsp; // startup information</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; LPPROCESS_INFORMATION lpProcessInformation // process information</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; 往往看到这个函数就让人生畏，它参数多，而且参数类型也如此陌生。是的，正是因为如此它才功能强大！<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" /><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; STARTUPINFO StartInfo;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; PROCESS_INFORMATION pinfo;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; //对程序的启动信息不作任何设定，全部清0<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; memset(&amp;StartInfo,0,sizeof(STARTUPINFO));<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; StartInfo.cb = sizeof(STARTUPINFO);//设定结构的大小<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; BOOL ret=CreateProcess(<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL, //启动程序路径名<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "notepad.exe", &nbsp; &nbsp;&nbsp;&nbsp;&nbsp; //参数（当exeName为NULL时，可将命令放入参数前）<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //使用默认进程安全属性<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //使用默认线程安全属性<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //句柄不继承<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NORMAL_PRIORITY_CLASS, //使用正常优先级<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL, //使用父进程的环境变量<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL, //指定工作目录<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;StartInfo, //子进程主窗口如何显示<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;pinfo); //用于存放新进程的返回信息<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" />　　这样在创建成功这后我们就可以从pinfo中找到它的：进程句柄，线程句柄，进程ID，线程ID<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" /><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" /><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />　　想很好地掌握CreateProcess，可参见人民邮电出版社出版的&lt;&lt; Windows系统编程 &gt;&gt;，它的&#8220;进程&#8221;部份作了很详尽的说明。 &nbsp;<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" />例程：<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" />void main()<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; HWND handle;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("Function &lt;WinExec&gt;:\nIt can run a cmd command,but can`t open *.txt and \"www.*.*\"\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("Please press Enter go on\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; getchar();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; WinExec("mspaint.exe",SW_SHOWNOACTIVATE);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; /*winexec不能打开网站或txt文件*/<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("Function &lt;ShellExecute&gt;:\nIt can run a cmd command to open file or web\n\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; getchar();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("Open a txt file\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; ShellExecute(NULL,"open","C:\\test.txt",NULL,NULL,SW_MINIMIZE);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; getchar();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("Open a web\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; ShellExecute(NULL,NULL,"www.baidu.com",NULL,NULL,SW_SHOWNA);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; getchar();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("Run a cmd command:ping www.sina.com\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; ShellExecute(NULL, NULL, "ping", "sina.com", NULL, SW_SHOWNORMAL);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; getchar();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("打开目录\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; ShellExecute(NULL, "open", "c:", NULL, NULL, SW_SHOWNORMAL);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; getchar();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("浏览目录\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; ShellExecute(NULL, "explore", "c:", NULL, NULL, SW_SHOWNORMAL);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; getchar();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("文件属性\n");<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; ShellExecute(handle,"properties","C:\\test.txt",NULL,NULL,SW_MINIMIZE);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; printf("%s",handle);<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />&nbsp;&nbsp;&nbsp; /*shellExecute的第二个参数为你想执行的操作(edit,explore,find,open,print,properties),也可为NULL*/<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" />/*<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_HIDE&nbsp;&nbsp;&nbsp; Hides the window and passes activation to another window.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_MINIMIZE&nbsp;&nbsp; Minimizes the specified window and activates the top-level window in the system's list.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_RESTORE&nbsp;&nbsp; Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (same as SW_SHOWNORMAL).<span class="Apple-converted-space">&nbsp;</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_SHOW&nbsp;&nbsp;&nbsp; Activates a window and displays it in its current size and position.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_SHOWMAXIMIZED Activates a window and displays it as a maximized window.<span class="Apple-converted-space">&nbsp;</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_SHOWMINIMIZED Activates a window and displays it as an icon.<span class="Apple-converted-space">&nbsp;</span><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_SHOWMINNOACTIVE Displays a window as an icon. The window that is currently active remains active.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_SHOWNA&nbsp;&nbsp; Displays a window in its current state. The window that is currently active remains active.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_SHOWNOACTIVATE Displays a window in its most recent size and position. The window that is currently active remains active.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />SW_SHOWNORMAL&nbsp;&nbsp; Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (same as SW_RESTORE).<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" />*/</p><img src ="http://www.cppblog.com/Tim/aggbug/206913.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> 2014-05-12 11:35 <a href="http://www.cppblog.com/Tim/archive/2014/05/12/206913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中午还是需要休息</title><link>http://www.cppblog.com/Tim/archive/2014/05/10/206887.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Sat, 10 May 2014 09:33:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2014/05/10/206887.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/206887.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2014/05/10/206887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/206887.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/206887.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt"><span style="font-family: 宋体">&nbsp;&nbsp;今天虽然是周末，不过要加班。中午没有休息，看&#8220;飞碟说&#8221;视频，这些视频都比较搞笑轻松，原以为没什么事，不过事实是：下午很没精神，头感觉特别累。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;看来，如果爱惜身体，希望下午能精力充沛的工作，那么中午是一定要休息的！<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另外，还是对&#8220;飞碟说&#8221;团队点个赞！</span></p>
<p style="text-indent: 21pt">&nbsp;</p><img src ="http://www.cppblog.com/Tim/aggbug/206887.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> 2014-05-10 17:33 <a href="http://www.cppblog.com/Tim/archive/2014/05/10/206887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MFC的listctrl控件中水平添加按钮并刷新</title><link>http://www.cppblog.com/Tim/archive/2014/05/10/206884.html</link><dc:creator>Tim</dc:creator><author>Tim</author><pubDate>Sat, 10 May 2014 09:01:00 GMT</pubDate><guid>http://www.cppblog.com/Tim/archive/2014/05/10/206884.html</guid><wfw:comment>http://www.cppblog.com/Tim/comments/206884.html</wfw:comment><comments>http://www.cppblog.com/Tim/archive/2014/05/10/206884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Tim/comments/commentRss/206884.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Tim/services/trackbacks/206884.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在MFC的listctrl控件中动态添加按钮，并解决显示刷新问题&nbsp;&nbsp;<a href='http://www.cppblog.com/Tim/archive/2014/05/10/206884.html'>阅读全文</a><img src ="http://www.cppblog.com/Tim/aggbug/206884.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> 2014-05-10 17:01 <a href="http://www.cppblog.com/Tim/archive/2014/05/10/206884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>