﻿<?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++博客-Pencil.C++</title><link>http://www.cppblog.com/pencil/</link><description>更新速度可能会晚于http://blog.csdn.net/bilaopao</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:39:14 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:39:14 GMT</pubDate><ttl>60</ttl><item><title>个人KPI日志</title><link>http://www.cppblog.com/pencil/archive/2012/02/16/165742.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Thu, 16 Feb 2012 07:01:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2012/02/16/165742.html</guid><description><![CDATA[2月 完成对mfe rootkit专杀工具的完整逆向。<br />3月 完成对snort的分析，写出分析成果。<img src ="http://www.cppblog.com/pencil/aggbug/165742.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2012-02-16 15:01 <a href="http://www.cppblog.com/pencil/archive/2012/02/16/165742.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发一个键盘监听工具的代码</title><link>http://www.cppblog.com/pencil/archive/2010/01/28/106577.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Thu, 28 Jan 2010 00:43:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2010/01/28/106577.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/106577.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2010/01/28/106577.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/106577.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/106577.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 最近在研究反监听密码框的开发。&nbsp; 做这个东西是为了测试密码框的效果。 用的是WH_KEYBOARD_LL钩子。 我暂时还没找到防止底层键盘全局钩子的方法。QQ的密码可以用这种方法监听到，但是不是明文。不知道它是怎么做到的。<br>&nbsp;&nbsp;&nbsp; 我也给这个工具做了个隐藏键 F4&nbsp; 。<br>&nbsp;&nbsp;&nbsp; 开发工具是VS2008&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/images/cppblog_com/pencil/keyloger.jpg" border=0><br><br>钩子回调函数中的代码：<br><br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">LRESULT&nbsp;CALLBACK&nbsp;LowLevelKeyboardProc(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nCode,<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WPARAM&nbsp;wParam,<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LPARAM&nbsp;lParam<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_113_933_Open_Image onclick="this.style.display='none'; Codehighlighter1_113_933_Open_Text.style.display='none'; Codehighlighter1_113_933_Closed_Image.style.display='inline'; Codehighlighter1_113_933_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_113_933_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_113_933_Closed_Text.style.display='none'; Codehighlighter1_113_933_Open_Image.style.display='inline'; Codehighlighter1_113_933_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_113_933_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_113_933_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;PKBDLLHOOKSTRUCT&nbsp;kbhs</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(PKBDLLHOOKSTRUCT)lParam;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(nCode</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img id=Codehighlighter1_179_239_Open_Image onclick="this.style.display='none'; Codehighlighter1_179_239_Open_Text.style.display='none'; Codehighlighter1_179_239_Closed_Image.style.display='inline'; Codehighlighter1_179_239_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_179_239_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_179_239_Closed_Text.style.display='none'; Codehighlighter1_179_239_Open_Image.style.display='inline'; Codehighlighter1_179_239_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_179_239_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_179_239_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;CallNextHookEx(hhKeyboard,nCode,wParam,lParam);<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(HC_ACTION</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">nCode)<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_265_875_Open_Image onclick="this.style.display='none'; Codehighlighter1_265_875_Open_Text.style.display='none'; Codehighlighter1_265_875_Closed_Image.style.display='inline'; Codehighlighter1_265_875_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_265_875_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_265_875_Closed_Text.style.display='none'; Codehighlighter1_265_875_Open_Image.style.display='inline'; Codehighlighter1_265_875_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_265_875_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_265_875_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(WM_KEYDOWN</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">wParam&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;WM_SYSKEYDOWN</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">lParam)<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id=Codehighlighter1_320_872_Open_Image onclick="this.style.display='none'; Codehighlighter1_320_872_Open_Text.style.display='none'; Codehighlighter1_320_872_Closed_Image.style.display='inline'; Codehighlighter1_320_872_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_320_872_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_320_872_Closed_Text.style.display='none'; Codehighlighter1_320_872_Open_Image.style.display='inline'; Codehighlighter1_320_872_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_320_872_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_320_872_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(VK_F4</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">kbhs</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">vkCode)<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id=Codehighlighter1_353_808_Open_Image onclick="this.style.display='none'; Codehighlighter1_353_808_Open_Text.style.display='none'; Codehighlighter1_353_808_Closed_Image.style.display='inline'; Codehighlighter1_353_808_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_353_808_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_353_808_Closed_Text.style.display='none'; Codehighlighter1_353_808_Open_Image.style.display='inline'; Codehighlighter1_353_808_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_353_808_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_353_808_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">先判断窗口是show&nbsp;or&nbsp;hide</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_hWnd2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">FindWindow(NULL,L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">KeyboardLoger&nbsp;Prees&nbsp;[F4]&nbsp;to&nbsp;hide&nbsp;or&nbsp;show&nbsp;me.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(IsWindowVisible(m_hWnd2))<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img id=Codehighlighter1_496_551_Open_Image onclick="this.style.display='none'; Codehighlighter1_496_551_Open_Text.style.display='none'; Codehighlighter1_496_551_Closed_Image.style.display='inline'; Codehighlighter1_496_551_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_496_551_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_496_551_Closed_Text.style.display='none'; Codehighlighter1_496_551_Open_Image.style.display='inline'; Codehighlighter1_496_551_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_496_551_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_496_551_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(m_hWnd2,SW_HIDE);<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img id=Codehighlighter1_566_803_Open_Image onclick="this.style.display='none'; Codehighlighter1_566_803_Open_Text.style.display='none'; Codehighlighter1_566_803_Closed_Image.style.display='inline'; Codehighlighter1_566_803_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_566_803_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_566_803_Closed_Text.style.display='none'; Codehighlighter1_566_803_Open_Image.style.display='inline'; Codehighlighter1_566_803_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_566_803_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_566_803_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">if</span><span style="COLOR: #000000">&nbsp;(NULL</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">m_hWnd2)<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img id=Codehighlighter1_597_651_Open_Image onclick="this.style.display='none'; Codehighlighter1_597_651_Open_Text.style.display='none'; Codehighlighter1_597_651_Closed_Image.style.display='inline'; Codehighlighter1_597_651_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_597_651_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_597_651_Closed_Text.style.display='none'; Codehighlighter1_597_651_Open_Image.style.display='inline'; Codehighlighter1_597_651_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_597_651_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_597_651_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">查找失败！</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&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">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(m_hWnd2,SW_RESTORE);<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">UpdateWindow(m_hWnd);</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">33</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BringWindowToTop(m_hWnd);<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetForegroundWindow(m_hWnd);<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;c[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];&nbsp;<br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">kbhs</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">vkCode;&nbsp;<br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SaveLog(c);&nbsp;<br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;CallNextHookEx(hhKeyboard,nCode,wParam,lParam);<br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p><br><br>字符保存的代码：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;SaveLog(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;c)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_22_551_Open_Image onclick="this.style.display='none'; Codehighlighter1_22_551_Open_Text.style.display='none'; Codehighlighter1_22_551_Closed_Image.style.display='inline'; Codehighlighter1_22_551_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_22_551_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_551_Closed_Text.style.display='none'; Codehighlighter1_22_551_Open_Image.style.display='inline'; Codehighlighter1_22_551_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_22_551_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_22_551_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">AfxMessageBox(L"进入存储程序");</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CTime&nbsp;tm</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">CTime::GetCurrentTime();&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;name;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;szPath[MAX_PATH];<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;::GetModuleFileName(GetModuleHandle(L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">LogerDll</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">),(LPTSTR)szPath,MAX_PATH);<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;path</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(LPTSTR)szPath;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;path.Replace(L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\\LogerDll.dll</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,L</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;name.Format(L</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\\Key_%d_%d.log</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,tm.GetMonth(),tm.GetDay());&nbsp;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;path</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">name;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;CFile&nbsp;file;&nbsp;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">file.Open(path,CFile::modeReadWrite))&nbsp;<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img id=Codehighlighter1_423_488_Open_Image onclick="this.style.display='none'; Codehighlighter1_423_488_Open_Text.style.display='none'; Codehighlighter1_423_488_Closed_Image.style.display='inline'; Codehighlighter1_423_488_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_423_488_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_423_488_Closed_Text.style.display='none'; Codehighlighter1_423_488_Open_Image.style.display='inline'; Codehighlighter1_423_488_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_423_488_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_423_488_Open_Text><span style="COLOR: #000000">{&nbsp;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.Open(path,CFile::modeCreate</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">CFile::modeReadWrite);&nbsp;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;file.SeekToEnd();&nbsp;<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;file.Write(c,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;file.Close();&nbsp;<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p><br><br><br>下载地址：<a href="http://www.cppblog.com/Files/pencil/KeyboardLoger.rar">http://www.cppblog.com/Files/pencil/KeyboardLoger.rar</a><br>&nbsp;&nbsp;&nbsp; </p>
<img src ="http://www.cppblog.com/pencil/aggbug/106577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2010-01-28 08:43 <a href="http://www.cppblog.com/pencil/archive/2010/01/28/106577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>香港自助游相关资料收集</title><link>http://www.cppblog.com/pencil/archive/2010/01/15/105737.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Fri, 15 Jan 2010 05:06:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2010/01/15/105737.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/105737.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2010/01/15/105737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/105737.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/105737.html</trackback:ping><description><![CDATA[办理港澳通行证。200块。<br><br>机票一般1000/人。 来回2人4千块。<br><br>住宿&nbsp; 淘宝家庭旅馆 50-100一晚。<br><br><br>
<img src ="http://www.cppblog.com/pencil/aggbug/105737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2010-01-15 13:06 <a href="http://www.cppblog.com/pencil/archive/2010/01/15/105737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>魔兽改键助手1.2（附VC源代码）</title><link>http://www.cppblog.com/pencil/archive/2009/12/14/103174.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Mon, 14 Dec 2009 04:35:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2009/12/14/103174.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/103174.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2009/12/14/103174.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/103174.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/103174.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 更新内容：<br><br>(1)使用全局WH_KEYBOARD_LL  无需使用dll文件。<br><br>(2)智能判断聊天模式，如果正在聊天，则取消改键。<br><br>(3)改键功能只针对war3，不影响其他程序。<br><br>(4)支持托盘。<br><br>(5)支持1.24版&nbsp;&nbsp;<a href='http://www.cppblog.com/pencil/archive/2009/12/14/103174.html'>阅读全文</a><img src ="http://www.cppblog.com/pencil/aggbug/103174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2009-12-14 12:35 <a href="http://www.cppblog.com/pencil/archive/2009/12/14/103174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>scardsvr 智能卡修复工具原理及代码</title><link>http://www.cppblog.com/pencil/archive/2009/12/07/102746.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Mon, 07 Dec 2009 12:40:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2009/12/07/102746.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/102746.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2009/12/07/102746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/102746.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/102746.html</trackback:ping><description><![CDATA[<p>程序有英语 简体中文 两种语言，根据操作系统环境来选择language.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码下载：<a href="http://bilaopao.download.csdn.net/">http://bilaopao.download.csdn.net/</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开发工具：VS 2008<br><img border=0 alt="" src="http://www.pencilhome.cn/attachments/month_0912/j200912716328.jpg" width=367 height=225><br>&nbsp;修复过程分【普通修复】和【强力修复】。<br>&nbsp;&nbsp; XP和VISTA/WIN7下的修复操作还是有很多区别的。但基于的原理是一样的。 并且因为Vista/Win7下的Smart Card 服务的scardsvr.exe可执行文件被更改为scardsvr.dll,也就没有了scardsvr的相关安装命令。我用dependency查看了下scardsvr.dll，只能看到一个入口函数。能力有限，google了一些资料也没有结果。就没分析下去了。</p>
<p>&nbsp;&nbsp; 【普通修复】的修复过程（以XP下的修复过程讲述，vista/win7下操作请看代码）：<br>（1）检查"智能卡服务"是否为自启动。并设置其为自启动。<br>（2）检测服务当前状态是否为SERVICE_RUNNING，并设置其状态为运行中。<br>（3）检测前两步是否成功，如果成功则向用户弹出messagebox询问moveable device功能是否正常。<br>（4）如果功能仍abnormal,则初步判断是服务登陆账户为非"NT AUTHORITY\LocalService" ，则用CreateProcess来运行 sc.exe config SCardSvr obj= \"NT AUTHORITY\LocalService" password= ""&nbsp;&nbsp;&nbsp; ，改变其用户为localservice(smart card service只有在此登陆账户下才正常运行)。</p>
<p>（5）如果在普通修复过程中遇到服务查询不到等error时，程序自动启动强力修复来安装smart card service.</p>
<p>注意：普通修复中的第3，4步中有点问题，在这个地方其实最好是直接检查服务的登陆账户。然后做出相应的动作，但是我这个地方没有想到实现的办法。望前辈提示。另外就是sc的命令格式有严格的限制，编码的时候要注意等号后面首先是空格。我当时被这个空格困扰到了。</p>
<p>&nbsp;&nbsp;&nbsp; 【强力修复】的修复过程（XP下的修复，vista/win7 下没有强力修复）<br>其实强力修复的过程就是网上流传的那个修复过程，我只不过在这个修复过程中增加了验证和配置修改。<br>修复过程：<br>（1）ScardSvr.exe reinstall<br>（2）regsvr32.exe SCardssp.dll<br>（3）sc.exe config SCardSvr obj= \"NT AUTHORITY\LocalService" password= ""<br>（4）通过以上三步之后，剩下的配置修改就跟普通修复过程一样了。而以上三步通过CreateProcess和WaitForSingleObject来配合控制。</p>
<p>应该差不多了。代码是半个月前写的，一些地方可能有疏漏。<br>在代码实现中还有很多地方需要注意，我也都在代码中做出了注释。可自行查看。</p>
<p>如需交流，可<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#112;&#101;&#110;&#99;&#105;&#108;&#64;&#121;&#101;&#97;&#104;&#46;&#110;&#101;&#116;">mailto:pencil@yeah.net</a>&nbsp; MSN:pencil@yeah.net</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/pencil/aggbug/102746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2009-12-07 20:40 <a href="http://www.cppblog.com/pencil/archive/2009/12/07/102746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为exe添加XP风格</title><link>http://www.cppblog.com/pencil/archive/2009/11/19/101364.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Thu, 19 Nov 2009 02:16:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2009/11/19/101364.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/101364.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2009/11/19/101364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/101364.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/101364.html</trackback:ping><description><![CDATA[今天看改键助手的界面太难看，就想换成xp默认风格，方法如下。<br><br>manifest文件内容，将这个manifest文件命名为Exe名＋.manifest， 如test.exe.manifest<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;standalone="yes"</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">assembly&nbsp;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="urn:schemas-microsoft-com:asm.v1"</span><span style="COLOR: #ff0000">&nbsp;manifestVersion</span><span style="COLOR: #0000ff">="1.0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">assemblyIdentity<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #800000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="XP&nbsp;style&nbsp;manifest"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>processorArchitecture</span><span style="COLOR: #0000ff">="x86"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>version</span><span style="COLOR: #0000ff">="1.0.0.0"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>type</span><span style="COLOR: #0000ff">="win32"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">dependentAssembly</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">assemblyIdentity<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #800000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="win32"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name</span><span style="COLOR: #0000ff">="Microsoft.Windows.Common-Controls"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version</span><span style="COLOR: #0000ff">="6.0.0.0"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processorArchitecture</span><span style="COLOR: #0000ff">="x86"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;publicKeyToken</span><span style="COLOR: #0000ff">="6595b64144ccf1df"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;language</span><span style="COLOR: #0000ff">="*"</span><span style="COLOR: #ff0000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #ff0000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">dependentAssembly</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">dependency</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">assembly</span><span style="COLOR: #0000ff">&gt;</span></div>
<br>然后用mt.exe绑定 (mt.exe是VS自带的一个工具。可以搜索下。)<br><br>Mt.exe &#8211;mainfest test.exe.manifest &#8211;outputresource:test.exe;1 <br><br>1是这个manifest资源的ID.可以有多个manifest资源，但是vista默认使用1。其他的要自己编码来玩。 <br>
<img src ="http://www.cppblog.com/pencil/aggbug/101364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2009-11-19 10:16 <a href="http://www.cppblog.com/pencil/archive/2009/11/19/101364.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发一个前一段时间写的小工具VC+Access(附源代码)</title><link>http://www.cppblog.com/pencil/archive/2009/11/06/100291.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Fri, 06 Nov 2009 05:17:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2009/11/06/100291.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/100291.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2009/11/06/100291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/100291.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/100291.html</trackback:ping><description><![CDATA[<p>大概的功能就是日期提醒，把通讯录和日期提醒相结合。</p>
<p>提醒方面做的很差，技术有限。</p>
<p>皮肤用的是Skin++</p>
<p>第一次发，但之前修改过几次，目前版本0.7</p>
<p>做这个东西完全是因为我个人需要。</p>
<p>是一个多用户的工具。</p>
<p>有自动升级功能。</p>
<p>应用范围很窄。</p>
<p>下载地址：<a href="http://www.cppblog.com/Files/pencil/GoodFriendV0.7.rar"><font color=#005eac>http://www.cppblog.com/Files/pencil/GoodFriendV0.7.rar</font></a></p>
<p>源代码下载：<a href="http://www.cppblog.com/Files/pencil/GoodFriend0.7.src.rar"><font color=#005eac>http://www.cppblog.com/Files/pencil/GoodFriend0.7.src.rar</font></a></p>
<img src ="http://www.cppblog.com/pencil/aggbug/100291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2009-11-06 13:17 <a href="http://www.cppblog.com/pencil/archive/2009/11/06/100291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++队列实现和队列简介(不是循环队列）[转载]</title><link>http://www.cppblog.com/pencil/archive/2009/09/27/97392.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Sun, 27 Sep 2009 12:17:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2009/09/27/97392.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/97392.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2009/09/27/97392.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/97392.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/97392.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/pencil/archive/2009/09/27/97392.html'>阅读全文</a><img src ="http://www.cppblog.com/pencil/aggbug/97392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2009-09-27 20:17 <a href="http://www.cppblog.com/pencil/archive/2009/09/27/97392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++实现栈的操作</title><link>http://www.cppblog.com/pencil/archive/2009/09/27/97391.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Sun, 27 Sep 2009 12:14:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2009/09/27/97391.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/97391.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2009/09/27/97391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/97391.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/97391.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/pencil/archive/2009/09/27/97391.html'>阅读全文</a><img src ="http://www.cppblog.com/pencil/aggbug/97391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2009-09-27 20:14 <a href="http://www.cppblog.com/pencil/archive/2009/09/27/97391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发一份魔兽改键工具的代码，vc6.0环境，带聊天模式识别功能</title><link>http://www.cppblog.com/pencil/archive/2009/09/27/97328.html</link><dc:creator>Pencil.C++</dc:creator><author>Pencil.C++</author><pubDate>Sat, 26 Sep 2009 17:17:00 GMT</pubDate><guid>http://www.cppblog.com/pencil/archive/2009/09/27/97328.html</guid><wfw:comment>http://www.cppblog.com/pencil/comments/97328.html</wfw:comment><comments>http://www.cppblog.com/pencil/archive/2009/09/27/97328.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/pencil/comments/commentRss/97328.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/pencil/services/trackbacks/97328.html</trackback:ping><description><![CDATA[界面和功能我之前几个帖子发过，就不重复了，感兴趣的拿去，有一些问题没有解决，交流下。<br><br>http://www.cppblog.com/Files/pencil/zhen3Helper.src.rar<br><br><img src ="http://www.cppblog.com/pencil/aggbug/97328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/pencil/" target="_blank">Pencil.C++</a> 2009-09-27 01:17 <a href="http://www.cppblog.com/pencil/archive/2009/09/27/97328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>