﻿<?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++博客-(define (cuigang) (coding))-随笔分类-Windows</title><link>http://www.cppblog.com/cuigang/category/5810.html</link><description>(define (coding) (coding))
</description><language>zh-cn</language><lastBuildDate>Mon, 19 May 2008 19:57:12 GMT</lastBuildDate><pubDate>Mon, 19 May 2008 19:57:12 GMT</pubDate><ttl>60</ttl><item><title>WSH+JSP</title><link>http://www.cppblog.com/cuigang/archive/2007/12/17/38817.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Mon, 17 Dec 2007 13:52:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2007/12/17/38817.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/38817.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2007/12/17/38817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/38817.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/38817.html</trackback:ping><description><![CDATA[向大家隆重推荐一个比批处理更强大的windows脚本。不知道你是不是经常写一些小工具，用批处理实现不了。只好用C来做，结果打开IDE，写段程序，
调试编译。当然这些都没问题，关键是因为是临时写的，没有考虑需求变化（呵呵），之后有时想要改改，那么就是打开工程，修改调试，编译运行。如果有人要享
用，往往你把可执行文件发给他还不够，还要把源码发给他，因为他要改。小小一个文件处理，写个exe。杀鸡焉用牛刀。今天我隆重推荐WSH+JSP，
Java的语法，支持COM组件的windows脚本宿主，完全替代简陋的批处理，并且做出的东西，全是开源的。<br>&nbsp;<br>这里响应靳波前日日志中的txt2bin工具，写了一段简单的例子，你把它保存为一个文本文件txt2bin.js，双击就可以运行：<br>&nbsp;<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">//////////////////////////////////////////////////////</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">txt2bin</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">//////////////////////////////////////////////////////</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建文件系统对象</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;FileSys&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;WScript.CreateObject(</span><span style="color: #000000;">"</span><span style="color: #000000;">Scripting.FileSystemObject</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;打开文本文件</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;TxtFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;FileSys.OpenTextFile(</span><span style="color: #000000;">"</span><span style="color: #000000;">test.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建bin文件</span><span style="color: #008000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;BinFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;FileSys.CreateTextFile(</span><span style="color: #000000;">"</span><span style="color: #000000;">test.bin</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;读一行</span><span style="color: #008000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;buf&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;TxtFile.ReadLine();<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;声明一个字符串</span><span style="color: #008000;"><br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #008000;"></span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;str&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;String();<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">var</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">buf.length</span><span style="color: #008000;">/*</span><span style="color: #008000;">字符串长度</span><span style="color: #008000;">*/</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;ch&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;buf.charAt(i);&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">得到一个字符，并把它转成数值</span><span style="color: #008000;"><br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;str</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;String.fromCharCode(ch);&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;追加到数组</span><span style="color: #008000;"><br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">}<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;写入bin文件</span><span style="color: #008000;"><br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">BinFile.Write(str);<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;关闭文件</span><span style="color: #008000;"><br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">TxtFile.Close();<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">BinFile.Close();<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">//</span><span style="color: #008000;">//////////////////////////////////////////////////////</span></div>
<br>&nbsp;<br>当然关于脚本语言还有诸如python、ruby、lua等，但要在windows下独立运行，破费周折，目标机是否有需要的dll还不一定，而这个程序只需要IE3.0以上版本，office。想必遍地都是吧。<br>&nbsp; <img src ="http://www.cppblog.com/cuigang/aggbug/38817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2007-12-17 21:52 <a href="http://www.cppblog.com/cuigang/archive/2007/12/17/38817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>20070301备忘——每日自动编译</title><link>http://www.cppblog.com/cuigang/archive/2007/12/17/38789.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Mon, 17 Dec 2007 13:20:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2007/12/17/38789.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/38789.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2007/12/17/38789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/38789.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/38789.html</trackback:ping><description><![CDATA[1、研究了一下每日编译的实现，主要是vss和vs.net的命令行方式工作，一个简单的批处理如下：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">@echo&nbsp;off<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">setlocal<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">echo&nbsp;***************************************************<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">echo&nbsp;**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Daily&nbsp;compile<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">echo&nbsp;**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cuigang<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">echo&nbsp;***************************************************<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">echo.<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">echo&nbsp;set&nbsp;var<img src="http://www.cppblog.com/Images/dot.gif"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">path</span><span style="color: #000000;">=</span><span style="color: #000000;">%path%</span><span style="color: #008000;">;</span><span style="color: #008000;">%MsDevDir%/../vss/win32;%VS71COMNTOOLS%/../IDE;</span><span style="color: #008000;"><br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">set&nbsp;SSUSER</span><span style="color: #000000;">=</span><span style="color: #000000;">cuigang<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">set&nbsp;SSPWD</span><span style="color: #000000;">=</span><span style="color: #000000;">cuigang<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">set&nbsp;SSDIR</span><span style="color: #000000;">=</span><span style="color: #000000;">\\vss2\VSS_Monitoring\Monitor_Software\6800SE_0609\<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">set&nbsp;CURDATE</span><span style="color: #000000;">=</span><span style="color: #000000;">%DATE%<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">set&nbsp;WORK_DIR</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">b.work</span><span style="color: #000000;">"</span><span style="color: #000000;"><br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">rem&nbsp;*****************************************************<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">echo&nbsp;work&nbsp;dir<img src="http://www.cppblog.com/Images/dot.gif"><br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">if&nbsp;exist&nbsp;%WORK_DIR%&nbsp;rd&nbsp;%WORK_DIR%&nbsp;/s&nbsp;/q<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">md&nbsp;%WORK_DIR%<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">cd&nbsp;%WORK_DIR%<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">rem&nbsp;*****************************************************<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">echo&nbsp;get&nbsp;lastest&nbsp;version<img src="http://www.cppblog.com/Images/dot.gif"><br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">rem&nbsp;ss&nbsp;Label&nbsp;&nbsp;$/</span><span style="color: #000000;">03</span><span style="color: #000000;">.code/b.work&nbsp;-C&nbsp;-L</span><span style="color: #000000;">"</span><span style="color: #000000;">%CURDATE%</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;-i-y<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">ss&nbsp;GET&nbsp;&nbsp;&nbsp;$/</span><span style="color: #000000;">03</span><span style="color: #000000;">.code/b.work&nbsp;-r&nbsp;-w&nbsp;&nbsp;-i-<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">rem&nbsp;*****************************************************<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">echo&nbsp;compiling&nbsp;by&nbsp;VS.net<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">echo&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">%CURDATE%.txt</span><span style="color: #000000;">"</span><span style="color: #000000;"><br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">devenv&nbsp;pc_prj/</span><span style="color: #000000;">6800</span><span style="color: #000000;">.vcproj&nbsp;/rebuild&nbsp;debug&nbsp;/out&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">../%CURDATE%.txt</span><span style="color: #000000;">"</span><span style="color: #000000;"><br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">rem&nbsp;*****************************************************<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">if&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">%1</span><span style="color: #000000;">"</span><span style="color: #000000;">==</span><span style="color: #000000;">"</span><span style="color: #000000;">shutdown</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;shutdown&nbsp;-s&nbsp;-f&nbsp;-c&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Daily&nbsp;compile&nbsp;completed.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;-t&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;"><br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">endlocal<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">pause</span></div>
<br><br> <img src ="http://www.cppblog.com/cuigang/aggbug/38789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2007-12-17 21:20 <a href="http://www.cppblog.com/cuigang/archive/2007/12/17/38789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>20060815备忘——调用堆栈的获得</title><link>http://www.cppblog.com/cuigang/archive/2007/12/17/38786.html</link><dc:creator>cuigang</dc:creator><author>cuigang</author><pubDate>Mon, 17 Dec 2007 13:14:00 GMT</pubDate><guid>http://www.cppblog.com/cuigang/archive/2007/12/17/38786.html</guid><wfw:comment>http://www.cppblog.com/cuigang/comments/38786.html</wfw:comment><comments>http://www.cppblog.com/cuigang/archive/2007/12/17/38786.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cuigang/comments/commentRss/38786.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cuigang/services/trackbacks/38786.html</trackback:ping><description><![CDATA[调用堆栈的获得：<br>&nbsp;&nbsp;&nbsp;&nbsp; 54：进入函数时，会调用 link a6 指令，将A6压栈，再将栈顶指针存入A6，退出函数做相反操作。<br>&nbsp;&nbsp;&nbsp;&nbsp; VC（debug）：进入函数时，会调用 push ebp ；mov ebp, esp，同54原理。退出函数做相反操作。<br>&nbsp;&nbsp;&nbsp;&nbsp; 以 VC 为例，说明调用堆栈的获得。<br>&nbsp;&nbsp;&nbsp;&nbsp; ebp-+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+--------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; . . . . . .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+--------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+---&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |---+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+--------------------+&nbsp;&nbsp;&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+--------------------+&nbsp;&nbsp; |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; . . . . . .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+--------------------+&nbsp;&nbsp;&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+---&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |---+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;+--------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;+--------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;. . . . . .&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 获得 pc 指针的操作：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;GetCallStack()<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;reg_bp;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pc;<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__asm{<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[reg_bp],ebp<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">pbp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(unsigned&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)reg_bp;<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Call&nbsp;stack:\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;">{<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pbp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(unsigned&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">)(</span><span style="color: #000000;">*</span><span style="color: #000000;">pbp);<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">(pbp</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">\t&nbsp;0x%08x\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,pc);<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(pc);<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若想得到函数名需要反查调试信息表。<br> <img src ="http://www.cppblog.com/cuigang/aggbug/38786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cuigang/" target="_blank">cuigang</a> 2007-12-17 21:14 <a href="http://www.cppblog.com/cuigang/archive/2007/12/17/38786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>