<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hckMe的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hckMe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hckMe]]></copyright><item><title><![CDATA[Happy Registry: A quick wrapper for the Win32 database（译文）]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/49963479</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/49963479</guid><author>hckMe</author><pubDate>Sat, 21 Nov 2015 12:20:37 +0800</pubDate><description><![CDATA[Happy Registry: A quick wrapper for the Win32 database
（Happy Registry：快速Win32注册表封装类）



作者：Michael Chourdakis
翻译：Sam  Tan

原文地址：http://www.codeproject.com/Articles/1040618/Happy-Registry-A-qu]]></description><category></category></item><item><title><![CDATA[数字格式化输出]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/47314795</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/47314795</guid><author>hckMe</author><pubDate>Thu, 06 Aug 2015 12:22:58 +0800</pubDate><description><![CDATA[软件开发中有时候需要将数字格式化输出，例如文件大小或者金额大小


使用win32 api函数：GetNumberFormat和GetLocaleInfo
CString FormatNumber(ULONGLONG ull)
{
	TCHAR szBuf[MAX_PATH] = { 0 };
	_ui64tot_s(ull, szBuf, _countof(szBuf), 10);

	]]></description><category></category></item><item><title><![CDATA[vc递归删除文件夹]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/47314745</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/47314745</guid><author>hckMe</author><pubDate>Thu, 06 Aug 2015 12:11:57 +0800</pubDate><description><![CDATA[HRESULT FolderListCtrl::RemoveDirectoryTree(LPCTSTR Directory)
{
	WIN32_FIND_DATA fd = {0};
	CString curDir = Directory;
	curDir += TEXT("\\*");
	HRESULT hr = E_NOINTERFACE;
	HANDLE hFind = FindFirstF]]></description><category></category></item><item><title><![CDATA[控制台输出调试类]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/44300669</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/44300669</guid><author>hckMe</author><pubDate>Mon, 16 Mar 2015 09:14:32 +0800</pubDate><description><![CDATA[此类可以实现在Windows窗口程序中创建一个控制台窗口来打印出调试信息。


这样可以方便查看变量的值或函数的状态。

#pragma once

//////////////////////////////////////////////////////////////////////////
//
class OutputFuncScope
{
public:
	explicit ]]></description><category></category></item><item><title><![CDATA[实用注册表管理类]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/44198057</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/44198057</guid><author>hckMe</author><pubDate>Wed, 11 Mar 2015 14:07:14 +0800</pubDate><description><![CDATA[#pragma once

class Registry
{
public:
	Registry(HKEY root, const std::wstring& path);
	~Registry();
	bool Create();
	bool CreateKey(const std::wstring& subKey);
	std::wstring QueryValue(const std::ws]]></description><category></category></item><item><title><![CDATA[VC获取Unix时间戳]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/44056419</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/44056419</guid><author>hckMe</author><pubDate>Wed, 04 Mar 2015 10:06:17 +0800</pubDate><description><![CDATA[// 获取Unix时间戳
std::wstring GetUnixTimeStamp(void)
{
	FILETIME ft = { 0 };
	SYSTEMTIME st = { 0 };
	ULARGE_INTEGER ull = { 0 };
	::GetSystemTime(&st);
	::SystemTimeToFileTime(&st, &ft);
	ull.LowPart = f]]></description><category></category></item><item><title><![CDATA[Flash加速功能实现]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/44036355</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/44036355</guid><author>hckMe</author><pubDate>Tue, 03 Mar 2015 11:52:32 +0800</pubDate><description><![CDATA[实现Flash加速原理是Hook住与时间相关的几个API函数，将API返回的实际时间值进行改写，来实现加速。
模板依赖于mhook库（https://github.com/SirAnthony/mhook）
#pragma once

class SpeedMgr
{
public:
	static SpeedMgr& Instance();
	BOOL StartService();
	BO]]></description><category></category></item><item><title><![CDATA[简单系统托盘类]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/43952719</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/43952719</guid><author>hckMe</author><pubDate>Thu, 26 Feb 2015 14:18:19 +0800</pubDate><description><![CDATA[#pragma once
class SystemTray
{
public:
	SystemTray();
	~SystemTray(void);

	void Create(HWND hWnd, UINT uID, UINT uMsg, LPWSTR lpTip);
	BOOL Show();
	BOOL Close();

private:
	NOTIFYICONDATA	m_nid;
};]]></description><category></category></item><item><title><![CDATA[C++ Rijndael加密算法]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/43791823</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/43791823</guid><author>hckMe</author><pubDate>Fri, 13 Feb 2015 10:03:08 +0800</pubDate><description><![CDATA[//Rijndael.h

#ifndef __RIJNDAEL_H__
#define __RIJNDAEL_H__

#include 
#include 

using namespace std;

//Rijndael (pronounced Reindaal) is a block cipher, designed by Joan Daemen and Vincent Rijmen a]]></description><category></category></item><item><title><![CDATA[C++日志记录类logging]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/43635601</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/43635601</guid><author>hckMe</author><pubDate>Sun, 08 Feb 2015 10:50:11 +0800</pubDate><description><![CDATA[// Copyright (c) 2012 Ohyo net work. All rights reserved.
// 2012/01/04
// logging.h
//
//

#ifndef __INCLUDE_LOGGING_H__
#define __INCLUDE_LOGGING_H__

#include "str_conv.inl"
#include 
#include 
#in]]></description><category></category></item><item><title><![CDATA[很实用的C++ ini解析类]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/43483179</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/43483179</guid><author>hckMe</author><pubDate>Wed, 04 Feb 2015 10:45:19 +0800</pubDate><description><![CDATA[头文件：
#pragma once
#include 
#include 

class INIReader
{
public:
	INIReader(std::string filename);
	INIReader(const char* buf);
	int	ParseError();
	std::string	Get(std::string section, std::string na]]></description><category></category></item><item><title><![CDATA[判断程序是否在虚拟机中运行]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/43191621</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/43191621</guid><author>hckMe</author><pubDate>Tue, 27 Jan 2015 10:29:29 +0800</pubDate><description><![CDATA[判断系统是否为虚拟机环境，可以根据很多固定的硬件标识（磁盘的型号、主板型号、BIOS型号等）或者虚拟机中进程（一般在虚拟机中安装系统后，虚拟机会自动安装一些辅助性的程序，例如vmtool.exe）。


详细信息可以参考下面的表格。





判断是否为虚拟机的参数很多，一般情况下，我们可以参考磁盘的型号是否包含vmware,vbox,virtual,qemu关键字来确定是否为虚]]></description><category></category></item><item><title><![CDATA[VC常用进程函数]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/42673315</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/42673315</guid><author>hckMe</author><pubDate>Tue, 13 Jan 2015 10:39:00 +0800</pubDate><description><![CDATA[class ProcessUtils
{
public:
	static DWORD FindProcess(const TCHAR* strProcessName);
	static BOOL KillProcess(const TCHAR* strProcessName);
	static BOOL GetDebugPriv();
	static DWORD GetMainThreadId(D]]></description><category></category></item><item><title><![CDATA[C++软件版本比较函数]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/42639011</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/42639011</guid><author>hckMe</author><pubDate>Mon, 12 Jan 2015 10:06:37 +0800</pubDate><description><![CDATA[规定版本格式为：x.x.x.x (例如：1.0.0.0)。

int wscmp_ver(const wstring& ver1, const wstring& ver2)
{
		int vVer1[4] = {0};
		int vVer2[4] = {0};
		swscanf(ver1.c_str(), L"%d.%d.%d.%d", &vVer1[0], &vVer1[1], &vV]]></description><category></category></item><item><title><![CDATA[string与wstring互转]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/42638963</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/42638963</guid><author>hckMe</author><pubDate>Mon, 12 Jan 2015 10:03:30 +0800</pubDate><description><![CDATA[std::string -> std::wstring
wstring	stdcxx_s2ws(string s)
{
		wstring ws;
	#ifdef _MSC_VER
		int iLen = ::MultiByteToWideChar(CP_ACP, 0, s.c_str(), -1, NULL, 0);
		if(iLen > 0)
		{
			wchar_t* pwszDs]]></description><category></category></item><item><title><![CDATA[HWND句柄与字符串互转]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/42638817</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/42638817</guid><author>hckMe</author><pubDate>Mon, 12 Jan 2015 09:58:29 +0800</pubDate><description><![CDATA[HWND -> std::wstring
wstring hwnd2ws(HWND hWnd)
	{
		wchar_t wszHWndView[64] = {};
		::wnsprintfW(wszHWndView, _countof(wszHWndView), L"%X", hWnd);
		return wszHWndView;
	}

std::wstring -> HWND
H]]></description><category></category></item><item><title><![CDATA[C++实现简单异或加密算法]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/42026939</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/42026939</guid><author>hckMe</author><pubDate>Fri, 19 Dec 2014 13:05:09 +0800</pubDate><description><![CDATA[#pragma once
#include 

class NXCORE_API XorCrypt
{
public:
	static std::string Xor(__in const std::string& input,
		__in const std::string& key);
	static bool Encrypt(__in const std::string& input,
	]]></description><category></category></item><item><title><![CDATA[C++ base64编码和解码算法]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/41846973</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/41846973</guid><author>hckMe</author><pubDate>Wed, 10 Dec 2014 15:41:39 +0800</pubDate><description><![CDATA[#include 

namespace base64 {
	std::string base64_encode(unsigned char const* , unsigned int len);
	std::string base64_decode(std::string const& s);
}


#include "base64.h"

namespace base64
{
	sta]]></description><category></category></item><item><title><![CDATA[VC++使用DES算法进行文件加密和解密]]></title><link>https://blog.youkuaiyun.com/hckMe/article/details/41846531</link><guid>https://blog.youkuaiyun.com/hckMe/article/details/41846531</guid><author>hckMe</author><pubDate>Wed, 10 Dec 2014 15:18:41 +0800</pubDate><description><![CDATA[头文件：
extern "C"
{
	BOOL xEncrypt(LPCTSTR lpszSource, LPCTSTR lpszDestination, LPCTSTR lpszPassword);
	BOOL xDecrypt(LPCTSTR lpszSource, LPCTSTR lpszDestination, LPCTSTR lpszPassword);
}
cpp文件：
#inc]]></description><category></category></item></channel></rss>