<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Gary's Blog --- A C++ programmer]]></title><description><![CDATA[Welcome to Gary's blog! Thank you!]]></description><link>https://blog.csdn.net/sky04</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; sky04]]></copyright><item><title><![CDATA[Python正则表达式操作指南]]></title><link>https://blog.csdn.net/sky04/article/details/46537215</link><guid>https://blog.csdn.net/sky04/article/details/46537215</guid><author>sky04</author><pubDate>Wed, 17 Jun 2015 19:19:02 +0800</pubDate><description><![CDATA[传送门 Python正则表达式操作指南]]></description><category></category></item><item><title><![CDATA[Python 字符串操作]]></title><link>https://blog.csdn.net/sky04/article/details/46537127</link><guid>https://blog.csdn.net/sky04/article/details/46537127</guid><author>sky04</author><pubDate>Wed, 17 Jun 2015 19:05:09 +0800</pubDate><description><![CDATA[Python 字符串操作（string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等）   
 
 
去空格及特殊符号  
s.strip() .lstrip() .rstrip(',')   
 
复制字符串  
#strcpy(sStr1,sStr)   
sStr= 'strcpy'   
sStr = sStr  
sStr= 'strcpy'   
print sSt]]></description><category></category></item><item><title><![CDATA[Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结]]></title><link>https://blog.csdn.net/sky04/article/details/46536089</link><guid>https://blog.csdn.net/sky04/article/details/46536089</guid><author>sky04</author><pubDate>Wed, 17 Jun 2015 17:25:46 +0800</pubDate><description><![CDATA[创建列表
sample_list = ['a',1,('a','b')]

Python 列表操作
sample_list = ['a','b',0,1,3]

得到列表中的某一个值
value_start = sample_list[0]
end_value = sample_list[-1]

删除列表的第一个值
del sample_list[0]

在列表中插入一个值
sample_lis]]></description><category></category></item><item><title><![CDATA[VC++中播放声音wav]]></title><link>https://blog.csdn.net/sky04/article/details/7696003</link><guid>https://blog.csdn.net/sky04/article/details/7696003</guid><author>sky04</author><pubDate>Wed, 27 Jun 2012 14:05:50 +0800</pubDate><description><![CDATA[因为只需在Windows上执行，先想到用MCI接口。试了一下，用mciSendCommand可以实现基本的播放wav文件的功能。但循环播放wav就麻烦了，必须向窗口传送MM_MCINOTIFY消息。
google了一下，才发现原来有更简单的方法——用sndPlaySound。一条语句sndPlaySound(filename, SND_ASYNC | SND_LOOP)就可以循环播放声音文件，完]]></description><category></category></item><item><title><![CDATA[VC 对话框背景透明]]></title><link>https://blog.csdn.net/sky04/article/details/7659548</link><guid>https://blog.csdn.net/sky04/article/details/7659548</guid><author>sky04</author><pubDate>Wed, 13 Jun 2012 14:53:45 +0800</pubDate><description><![CDATA[BOOL CCommonDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    // TODO:  Add extra initialization here
    //VS2003以上版本
    SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL]]></description><category></category></item><item><title><![CDATA[对话框窗口加上阴影效果]]></title><link>https://blog.csdn.net/sky04/article/details/7633265</link><guid>https://blog.csdn.net/sky04/article/details/7633265</guid><author>sky04</author><pubDate>Tue, 05 Jun 2012 10:01:37 +0800</pubDate><description><![CDATA[参考实例  
Bring your frame window a shadow
http://www.codeproject.com/KB/dialog/FrameShadow.aspx?display=Print]]></description><category></category></item><item><title><![CDATA[vs2008中编译动态库时生成lib的设置]]></title><link>https://blog.csdn.net/sky04/article/details/7624242</link><guid>https://blog.csdn.net/sky04/article/details/7624242</guid><author>sky04</author><pubDate>Fri, 01 Jun 2012 17:51:20 +0800</pubDate><description><![CDATA[vs2008中编译动态库时，有时候不会生成对应的lib文件首先在工程中像vc6一样生成def文件，然后只需要在工程设置中加载这个文件就行了：


Project -> Properties -> Configuration Properties -> Linker -> Input：
在右侧的Module Definition File中，选择你生成好的def文件，
然后编译，就会生成l]]></description><category></category></item><item><title><![CDATA[vs2008中编译动态库时生成lib的设置]]></title><link>https://blog.csdn.net/sky04/article/details/7624208</link><guid>https://blog.csdn.net/sky04/article/details/7624208</guid><author>sky04</author><pubDate>Fri, 01 Jun 2012 17:49:34 +0800</pubDate><description><![CDATA[vs2008中编译动态库时，有时候不会生成对应的lib文件首先在工程中像vc6一样生成def文件，然后只需要在工程设置中加载这个文件就行了：


Project -> Properties -> Configuration Properties -> Linker -> Input：
在右侧的Module Definition File中，选择你生成好的def文件，
然后编译，就会生成l]]></description><category></category></item><item><title><![CDATA[CDHtmlDialog的基本使用]]></title><link>https://blog.csdn.net/sky04/article/details/7587406</link><guid>https://blog.csdn.net/sky04/article/details/7587406</guid><author>sky04</author><pubDate>Mon, 21 May 2012 15:08:51 +0800</pubDate><description><![CDATA[因为我的部门只有我一个人（无奈之极，只有我一个做C++的，其他的都在做C#），所以我去跟技术顾问讨论我们客户端到底该怎么呈现。他说按照以往（上一套系统）的经验，升级很频繁，建议还是使用内嵌 HTML的方式来显示界面，这样以后只要升级HTML就可以了。我听了之后，牙掉了一半，我拖了半个月的对话框就这么给否了，心里着实不是滋味。
然后就开始寻找MFC显示HTML页面的方法，找了一些自定义的HTML类]]></description><category></category></item><item><title><![CDATA[recv函数返回值说明]]></title><link>https://blog.csdn.net/sky04/article/details/7380334</link><guid>https://blog.csdn.net/sky04/article/details/7380334</guid><author>sky04</author><pubDate>Wed, 21 Mar 2012 17:50:08 +0800</pubDate><description><![CDATA[http://blog.csdn.net/chenziwen/article/details/5798507




recv函数


int recv( SOCKET s, char FAR *buf, int len, int flags);
不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符；
第二个参数指明]]></description><category></category></item><item><title><![CDATA[套接字选项]]></title><link>https://blog.csdn.net/sky04/article/details/7344380</link><guid>https://blog.csdn.net/sky04/article/details/7344380</guid><author>sky04</author><pubDate>Mon, 12 Mar 2012 12:49:30 +0800</pubDate><description><![CDATA[有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了.  


8.1 getsockopt和setsockopt  

int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) 
int setsockopt(int sockfd,int level]]></description><category></category></item><item><title><![CDATA[Win7 CreateRemoteThread 另类使用方法]]></title><link>https://blog.csdn.net/sky04/article/details/7337917</link><guid>https://blog.csdn.net/sky04/article/details/7337917</guid><author>sky04</author><pubDate>Fri, 09 Mar 2012 18:27:52 +0800</pubDate><description><![CDATA[http://blog.csdn.net/wangningyu/archive/2011/05/31/6456607.aspx>



同样的代码，在XP下面随便你怎么整，WIN7的话是相当纠结的，具体哪些错误就不解释了~~
 
gg点了二十多页，在韩国某大牛的博客上总算找到一点思路（虽然看不懂韩文，但代码还算勉强看得懂吧）
 
原来是要用动态调用ntdll.dll >> 
Nt]]></description><category></category></item><item><title><![CDATA[N种内核注入DLL的思路及实现]]></title><link>https://blog.csdn.net/sky04/article/details/7337912</link><guid>https://blog.csdn.net/sky04/article/details/7337912</guid><author>sky04</author><pubDate>Fri, 09 Mar 2012 18:21:00 +0800</pubDate><description><![CDATA[《N种内核注入DLL的思路及实现》
Author :   sudami   [sudami@163.com]
Time   :   01-11-2008
Links   :  http://hi.baidu.com/sudami

     内核注入，技术古老但很实用。现在部分RK趋向无进程,玩的是SYS+DLL，有的无文件，全部存在于内存中。可能有部分人会说：“都进内核了.什么不能干？]]></description><category></category></item><item><title><![CDATA[你工作快乐么？你的工作好么？——2011年终倾情奉献]]></title><link>https://blog.csdn.net/sky04/article/details/7196589</link><guid>https://blog.csdn.net/sky04/article/details/7196589</guid><author>sky04</author><pubDate>Thu, 12 Jan 2012 16:13:47 +0800</pubDate><description><![CDATA[原帖：http://bbs.chinaunix.net/thread-3655382-1-1.html

2011年马上就要画上一个句号了，各位蓝色的朋友们，你工作快乐么？你的工作好么？ 
      有没有觉得干了一段时间以后工作很不开心？有没有觉得自己入错了行？有没有觉得自己没有得到应有的待遇？有没有觉得工作像一团乱麻每天上班都是一种痛苦？有没有很想换个工作？有没有觉得其实现在的公司并没]]></description><category></category></item><item><title><![CDATA[IDirectSoundBuffer::SetVolume的参数与音量分贝的函数关系]]></title><link>https://blog.csdn.net/sky04/article/details/7070418</link><guid>https://blog.csdn.net/sky04/article/details/7070418</guid><author>sky04</author><pubDate>Wed, 14 Dec 2011 14:52:52 +0800</pubDate><description><![CDATA[假如将播放器的控制音量切割成0-100的话，由于IDirectSoundBuffer::SetVolume(LONG lVolume)中参数的输入值是[-10000,0]

MySetVolume( DWORD inputVolume)
{
    double decibels;
    DWORD dsVol;

    if (inputVolume==0)
        dsVol]]></description><category></category></item><item><title><![CDATA[设置非阻塞的recvfrom]]></title><link>https://blog.csdn.net/sky04/article/details/7067538</link><guid>https://blog.csdn.net/sky04/article/details/7067538</guid><author>sky04</author><pubDate>Tue, 13 Dec 2011 16:48:23 +0800</pubDate><description><![CDATA[int iMode= 1; //1,非阻塞；0,阻塞
  ioctlsocket(socketc,FIONBIO,(u_long FAR*) &iMode);//非阻塞设置
  n=recvfrom(socket,rbuf,sizeof(szbuf),0,(SOCKADDR*)&addr,&len);

int ioctlsocket (
  SOCKETs,        
  lo]]></description><category></category></item><item><title><![CDATA[两个经典的windbg调试案例，值得学习。]]></title><link>https://blog.csdn.net/sky04/article/details/7064466</link><guid>https://blog.csdn.net/sky04/article/details/7064466</guid><author>sky04</author><pubDate>Mon, 12 Dec 2011 17:57:08 +0800</pubDate><description><![CDATA[1. 调试Bug的神兵利器：通过WinDbg条件断点收集Log 
原文地址：http://blogs.msdn.com/yizhang/archive/2009/03/30/bug-windbg-log.aspx
调试Bug的神兵利器：通过WinDbg条件断点收集Log 
前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug。这个Bug是C# Team那边发现的，他们的Testcas]]></description><category></category></item><item><title><![CDATA[C++ DLL远程注入与卸载函数]]></title><link>https://blog.csdn.net/sky04/article/details/7027225</link><guid>https://blog.csdn.net/sky04/article/details/7027225</guid><author>sky04</author><pubDate>Wed, 30 Nov 2011 14:52:28 +0800</pubDate><description><![CDATA[代码是别处的
第一个函数是成功的，第二个函数运行发现会将目标程序挂死，也许是目标程序有保护机制



支持Unicode编码。


    //-----------------------------------------------------------------------------------------------------------  
    // 函数:]]></description><category></category></item><item><title><![CDATA[DLL的远程注入及卸载技术详解]]></title><link>https://blog.csdn.net/sky04/article/details/7026839</link><guid>https://blog.csdn.net/sky04/article/details/7026839</guid><author>sky04</author><pubDate>Wed, 30 Nov 2011 13:27:37 +0800</pubDate><description><![CDATA[DLL的远程注入技术是目前Win32病毒广泛使用的一种技术。使用这种技术的病毒体通常位于一个DLL中，在系统启动的时候，一个EXE程序会将这个DLL加载至某些系统进程（如Explorer.exe）中运行。这样一来，普通的进程管理器就很难发现这种病毒了，而且即使发现了也很难清除，因为只要病毒寄生的进程不终止运行，那么这个DLL就不会在内存中卸载，用户也就无法在资源管理器中删除这个DLL文件，真可谓一]]></description><category></category></item><item><title><![CDATA[C++模板类 容器之map 及 对象副本 深/浅拷贝 等问题]]></title><link>https://blog.csdn.net/sky04/article/details/7020513</link><guid>https://blog.csdn.net/sky04/article/details/7020513</guid><author>sky04</author><pubDate>Mon, 28 Nov 2011 17:56:53 +0800</pubDate><description><![CDATA[一般地当我们只想知道一个值是否存在时,set 最有用处;希望存储也可能修改一个相关的值时,map 最为有用.
map提供一个键值对容器，在map(也叫关联数组)中我们提供一个键/值对,键用来索引,而值用作被存储和检索的数据.
在使用map和set时两个最主要的动作是向里面放入元素以及查询元素是否存在.

首先要包含头文件
#include 

定义并生成map
为定义map对象我们]]></description><category></category></item></channel></rss>