<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[God，please give me a little more time ....]]></title><description><![CDATA[路漫漫其修远兮,吾将上下而求索 ...]]></description><link>https://blog.csdn.net/VisualEleven</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; VisualEleven]]></copyright><item><title><![CDATA[监控Windows系统音量变化通知]]></title><link>https://blog.csdn.net/VisualEleven/article/details/94548955</link><guid>https://blog.csdn.net/VisualEleven/article/details/94548955</guid><author>VisualEleven</author><pubDate>Wed, 03 Jul 2019 09:44:46 +0800</pubDate><description><![CDATA[// Header File

#pragma once

#include &lt;mmdeviceapi.h&gt;
#include &lt;endpointvolume.h&gt;
#include &lt;corecrt_math.h&gt;

typedef void (CALLBACK* PFN_NOTIFYCALLBACK)(DWORD dwVolume, LPVOID lpCo...]]></description><category></category></item><item><title><![CDATA[删除最近几天的LOG记录文件]]></title><link>https://blog.csdn.net/VisualEleven/article/details/94547428</link><guid>https://blog.csdn.net/VisualEleven/article/details/94547428</guid><author>VisualEleven</author><pubDate>Wed, 03 Jul 2019 09:27:21 +0800</pubDate><description><![CDATA[// Delete Expire Log Files
BOOL DeleteExpireFiles(LPCTSTR lpszFileExt, SYSTEMTIME* pSystemTime, int nReservedDays)
{
	BOOL bRet = FALSE;

	do
	{
		ASSERT(NULL != lpszFileExt);
		ASSERT(NULL != pSyste...]]></description><category></category></item><item><title><![CDATA[获取EXE文件版本信息（版本格式：xx.xx.xx.xx）]]></title><link>https://blog.csdn.net/VisualEleven/article/details/80619433</link><guid>https://blog.csdn.net/VisualEleven/article/details/80619433</guid><author>VisualEleven</author><pubDate>Fri, 08 Jun 2018 10:28:04 +0800</pubDate><description><![CDATA[BOOL GetVersion(LPTSTR lpszVersion, size_t nLength, LPCTSTR lpszExecute)
{
	BOOL bRet = FALSE;

	TCHAR* pVersion = NULL;

	do
	{
		if ((NULL == lpszVersion) || (nLength &amp;lt;= 0) || (NULL == lpszExecut...]]></description><category></category></item><item><title><![CDATA[监控屏幕背光Brightness变化的通知]]></title><link>https://blog.csdn.net/VisualEleven/article/details/80597338</link><guid>https://blog.csdn.net/VisualEleven/article/details/80597338</guid><author>VisualEleven</author><pubDate>Wed, 06 Jun 2018 16:55:53 +0800</pubDate><description><![CDATA[MS网站上给出了用Power Shell的方式用来设置/获取Brightness的值。为了方便使用，将相关接口进行了封装：#pragma once

#include &amp;lt;initguid.h&amp;gt;
#include &amp;lt;cguid.h&amp;gt;
#include &amp;lt;atlcomcli.h&amp;gt;
#include &amp;lt;atlcoll.h&amp;gt;
#include &amp;lt;com...]]></description><category></category></item><item><title><![CDATA[登录系统以后，在Windows服务进程中启动需管理员权限（带盾牌图标）的应用程序]]></title><link>https://blog.csdn.net/VisualEleven/article/details/80247383</link><guid>https://blog.csdn.net/VisualEleven/article/details/80247383</guid><author>VisualEleven</author><pubDate>Tue, 08 May 2018 23:10:17 +0800</pubDate><description><![CDATA[// 创建交互式服务安装完成以后，启动UI的程序
BOOL LaunchApplication(LPCTSTR lpszExecute, LPCTSTR lpszCmdLine)
{
	BOOL bRet = FALSE;
	HANDLE hUserTokenDup = NULL;
	LPVOID pEnv = NULL;
	do
	{
		DWORD dwSessionId = 0;
		if ...]]></description><category></category></item><item><title><![CDATA[应用程序版本号比对]]></title><link>https://blog.csdn.net/VisualEleven/article/details/80188286</link><guid>https://blog.csdn.net/VisualEleven/article/details/80188286</guid><author>VisualEleven</author><pubDate>Thu, 03 May 2018 22:24:12 +0800</pubDate><description><![CDATA[BOOL CompareVersion(LPCTSTR lpszVer1, LPCTSTR lpszVer2, int&amp;amp; nResult)
{
	BOOL bRet = FALSE;

	do
	{
		if ((NULL == lpszVer1) || (NULL == lpszVer2)) { break; }

		// Version: a.b.c.d
		#define DEFA...]]></description><category></category></item><item><title><![CDATA[Win32 Dialog对话框处理WM_KEYDOWN事件]]></title><link>https://blog.csdn.net/VisualEleven/article/details/41844795</link><guid>https://blog.csdn.net/VisualEleven/article/details/41844795</guid><author>VisualEleven</author><pubDate>Wed, 10 Dec 2014 13:22:22 +0800</pubDate><description><![CDATA[MFC中重写虚函数PreTranslateMessage里是可以过滤WM_KEYDOWN消息的。但是如果是Win32 SDK中利用DialogBox/DialogBoxParam创建模态对话框一般行为是不处理WM_KEYDOWN消息的。如果该对话框中没有任何的子控件的话，在对话框的窗口回调函数DlgProc()中是可以过滤到WM_KEYDOWN消息的，不过并不是所有的键的消息都可以捕获到，例如像T]]></description><category></category></item><item><title><![CDATA[《反入侵的艺术——黑客入侵背后的真实故事》 书评]]></title><link>https://blog.csdn.net/VisualEleven/article/details/39473753</link><guid>https://blog.csdn.net/VisualEleven/article/details/39473753</guid><author>VisualEleven</author><pubDate>Mon, 22 Sep 2014 10:57:43 +0800</pubDate><description><![CDATA[第一次知道凯文•米特尼克（Kevin D. Mitnick）这个名字，是在大学的图书馆里，这个被誉为世界头号黑客，他的黑客生涯充满了丰富精彩而又富有传奇。现今他是全球广受欢迎的信息安全专家，他将所采访的多个黑客的入侵公司、政府和组织的故事记录下来，并进行专业分析，与读者分享。


《反入侵的艺术——黑客入侵背后的真实故事》一书就是由此而来的。书籍本身并没有涉及到太多太高深的专业黑客技术知识的]]></description><category></category></item><item><title><![CDATA[动态调整对话框属性（去掉标题栏，去掉边框，修改类似成Border：NONE样式）]]></title><link>https://blog.csdn.net/VisualEleven/article/details/19543391</link><guid>https://blog.csdn.net/VisualEleven/article/details/19543391</guid><author>VisualEleven</author><pubDate>Thu, 20 Feb 2014 10:42:01 +0800</pubDate><description><![CDATA[// 动态修改对话框属性，去掉对话框标题栏，设置Border为NONE属性。if(dlg.GetSafeHwnd())
{
	dlg.ModifyStyle(WS_CAPTION, 0); // 去掉标题栏
	dlg.ModifyStyleEx(WS_EX_DLGMODALFRAME, 0); // 去掉边框
	dlg.SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOSI]]></description><category></category></item><item><title><![CDATA[输出进程相关联的环境变量信息]]></title><link>https://blog.csdn.net/VisualEleven/article/details/8122081</link><guid>https://blog.csdn.net/VisualEleven/article/details/8122081</guid><author>VisualEleven</author><pubDate>Sun, 28 Oct 2012 21:28:03 +0800</pubDate><description><![CDATA[void DumpEnvironmentStrings()
{
#define MAX_ENVIRONMENT_NAME_LENGTH		(128)
#define MAX_ENVIRONMENT_VALUE_LENGTH	(1024)
	LPTSTR lpszEnvString = GetEnvironmentStrings();
	if(NULL == lpszEnvString)
	{]]></description><category></category></item><item><title><![CDATA[字符串编码之间的转换（GB2312<->UTF8<->Unicode）及URLEncoding]]></title><link>https://blog.csdn.net/VisualEleven/article/details/8121932</link><guid>https://blog.csdn.net/VisualEleven/article/details/8121932</guid><author>VisualEleven</author><pubDate>Sun, 28 Oct 2012 20:49:39 +0800</pubDate><description><![CDATA[LPWSTR GB2312ToUnicode(LPCSTR lpszInBuf)
{
	if(NULL == lpszInBuf)
	{
		return NULL;
	}
	WCHAR* pBuf = NULL;
	int nLen = MultiByteToWideChar(CP_ACP, 0, lpszInBuf, -1, pBuf, 0);
	pBuf = new WCHAR[nLen];]]></description><category></category></item><item><title><![CDATA[_CrtDumpMemoryLeaks报告程序中的内存泄露问题（简单示例代码）]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7965415</link><guid>https://blog.csdn.net/VisualEleven/article/details/7965415</guid><author>VisualEleven</author><pubDate>Tue, 11 Sep 2012 07:40:46 +0800</pubDate><description><![CDATA[#include "stdafx.h"
#include 
#include  

#ifdef _DEBUG //这个要加上，否则不会输出定义到那个文件中（及不包含存在内存泄露的该cpp文件的相关信息）
	#define new  new(_NORMAL_BLOCK, __FILE__, __LINE__)
#endif

int _tmain(int argc, _TCHAR* argv[])]]></description><category></category></item><item><title><![CDATA[创建专有命名空间单实例程序]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7906616</link><guid>https://blog.csdn.net/VisualEleven/article/details/7906616</guid><author>VisualEleven</author><pubDate>Sat, 25 Aug 2012 12:50:57 +0800</pubDate><description><![CDATA[// Singleton.h
#pragma once

class CSingleton
{
public:
	CSingleton(LPCTSTR lpszBoundary = _T("MyAppBoundary"), LPCTSTR lpszNamespace = _T("MyAppNamespace"));
	virtual ~CSingleton(void);

public:
	BOO]]></description><category></category></item><item><title><![CDATA[一个简单的以User权限启动外部应用程序]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7640475</link><guid>https://blog.csdn.net/VisualEleven/article/details/7640475</guid><author>VisualEleven</author><pubDate>Thu, 07 Jun 2012 07:46:39 +0800</pubDate><description><![CDATA[BOOL ExecuteAsUser(LPCWSTR lpszUserName, LPCWSTR lpszPassword, LPCWSTR lpszApplication, LPCWSTR lpszCmdLine)
{
	if(NULL == lpszUserName)
	{
		return FALSE;
	}
	if(NULL == lpszApplication)
	{
		return]]></description><category></category></item><item><title><![CDATA[一个简单的将GUI程序的log信息输出到关联的Console窗口中]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7628564</link><guid>https://blog.csdn.net/VisualEleven/article/details/7628564</guid><author>VisualEleven</author><pubDate>Sun, 03 Jun 2012 19:46:12 +0800</pubDate><description><![CDATA[// .h 文件
#pragma once
class CConsoleDump
{
public:
	explicit CConsoleDump(LPCTSTR lpszWindowTitle = NULL);
	virtual ~CConsoleDump(void);

public:
	BOOL DUMP(LPCTSTR lpszFmt, ...);
	BOOL Show]]></description><category></category></item><item><title><![CDATA[ReadDirectoryChangesW 监控文件夹 (一个简单的监控示例程序)]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7562014</link><guid>https://blog.csdn.net/VisualEleven/article/details/7562014</guid><author>VisualEleven</author><pubDate>Sun, 13 May 2012 12:31:38 +0800</pubDate><description><![CDATA[// .h文件
#pragma once

typedef void (*PFN_NotifyAction)(DWORD dwAction, LPWSTR szFile, DWORD dwLength);

class CDirectoryWatch
{
public:
	CDirectoryWatch(void);
	virtual ~CDirectoryWatch(void);

public]]></description><category></category></item><item><title><![CDATA[FormatMessage格式化错误信息]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7551909</link><guid>https://blog.csdn.net/VisualEleven/article/details/7551909</guid><author>VisualEleven</author><pubDate>Wed, 09 May 2012 22:22:31 +0800</pubDate><description><![CDATA[// ErrorMsg.h
#pragma once

class CErrorMsg
{
public:
	CErrorMsg(void);
	virtual ~CErrorMsg(void);

public:
	DWORD GetLastError(DWORD dwErrorId, LPTSTR lpszError, DWORD dwLength);

private:
	LPCTSTR m]]></description><category></category></item><item><title><![CDATA[Win32 SDK创建RichEdit Control控件]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7476213</link><guid>https://blog.csdn.net/VisualEleven/article/details/7476213</guid><author>VisualEleven</author><pubDate>Thu, 19 Apr 2012 09:47:41 +0800</pubDate><description><![CDATA[HMODULE hRichEditDll = NULL;

WM_CREATE:
{
 hRichEditDll = LoadLibrary(_T("RICHED20.dll"));
 HWND hRichEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
  _T("RichEdit20W"), 
  NULL,
  WS_CHILD | WS_VISIBLE | W]]></description><category></category></item><item><title><![CDATA[取消用鼠标拖动或者用键盘在编辑框中选择的文本内容]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7317840</link><guid>https://blog.csdn.net/VisualEleven/article/details/7317840</guid><author>VisualEleven</author><pubDate>Sun, 04 Mar 2012 14:30:38 +0800</pubDate><description><![CDATA[// 0x0118这个消息是MS未文档化的消息WM_SYSTIMER (caret blink) 

BOOL CXXDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	CEdit* pEdit = (CEdit*)GetDlgItem]]></description><category></category></item><item><title><![CDATA[VS2008SP1/VS2010 展开所有菜单下的子菜单项(默认是部分菜单折叠显示)]]></title><link>https://blog.csdn.net/VisualEleven/article/details/7297320</link><guid>https://blog.csdn.net/VisualEleven/article/details/7297320</guid><author>VisualEleven</author><pubDate>Mon, 27 Feb 2012 10:33:16 +0800</pubDate><description><![CDATA[VS2008SP1/VS2010新建的SDI/MDI窗口默认有些菜单是折叠的，如下图所示：

如果要想展开该菜单项的话，可以修改CMainFrame类的OnCreate函数中的代码，里面有这样一段：
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWndEx::OnCreate(lpCreat]]></description><category></category></item></channel></rss>