⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macro.h

📁 PPC上的任务管理器源代码, 可以列表, 中止等操作, 并自动过滤PPC内部程序任务.
💻 H
字号:



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 预处理
#pragma once
#include "Define.h"
#include <Windows.h>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 错误捕捉
#define _Try
#define _Finally					__Finally:
#define _Leave						goto __Finally
#define _LeaveIf(c)					if (c) {_Leave;}
#define _LeaveExIf(c, e)			if (c) {e; _Leave;}
#define _ExIf(c, e)					if (c) {e;}
#define _ExIfElse(c, e, l)			if (c) {e;} else {l;}
#define _ReturnIf(c)				if (c) {return;}
#define _ReturnExIf(c, e)			if (c) {e; return;}
#define _ReturnValIf(c, r)			if (c) {return r;}
#define _ReturnValExIf(c, e, r)		if (c) {e; return r;}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 安全释放
#define _SafeDelete(p)				if (p) {delete p; p = NULL;}
#define _SafeRelease(p)				if (p) {(p)->Release(); p = NULL;}
#define _SafeFreeLibrary(h)			if (h) {FreeLibrary(h); h = NULL;}
#define _SafeDeleteObject(h)		if (h) {DeleteObject(h); h = NULL;}
#define _SafeCloseHandle(h)			if (h) {CloseHandle(h); h = NULL;}
#define _SafeDestroyWindow(h)		if (h) {DestroyWindow(h); h = NULL;}
#define _SafeCloseValidHandle(h)	if ((h) != INVALID_HANDLE_VALUE) {CloseHandle(h); h = INVALID_HANDLE_VALUE;}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Windows 版本
#define _WinVer						_winver
#define _WinVerMajor				_winmajor
#define _WinVerMinor				_winminor
#define _WinVerBuild				_osver

#define _WinVerEqualNT()			((GetVersion() & 0x80000000) == 0)
#define _WinVerEqual(a, i)			((_WinVerMajor == a) && (_WinVerMinor == i))
#define _WinVerAbove(a, i)			((_WinVerMajor > a) || ((_WinVerMajor == a) && (_WinVerMinor > i)))
#define _WinVerBelow(a, i)			((_WinVerMajor < a) || ((_WinVerMajor == a) && (_WinVerMinor < i)))
#define _WinVerAboveEqual(a, i)		((_WinVerMajor > a) || ((_WinVerMajor == a) && (_WinVerMinor >= i)))
#define _WinVerBelowEqual(a, i)		((_WinVerMajor < a) || ((_WinVerMajor == a) && (_WinVerMinor <= i)))
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 常用函数简写
#define _HeapAlloc(n)				HeapAlloc(GetProcessHeap(), 0, n)
#define _HeapAllocZero(n)			HeapAlloc(GetProcessHeap(), HEAP_ZeroMem_MEMORY, n)
#define _HeapFree(p)				HeapFree(GetProcessHeap(), 0, (PVOID) p)

#define _ShellOpen(f, p, s)			ShellExecute(NULL, TEXT("open"), f, p, NULL, s)

#define _CreateThread(f, p, d)		CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) f, (PVOID) p, 0, (PDWORD) d)
#define _BeginThread(f, p)			{DWORD dwThread; CloseHandle(_CreateThread(f, p, &dwThread));}

#define _CreateFileForRead(f)		CreateFile(f, GENERIC_READ, 3, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL)
#define _CreateFileForWrite(f)		CreateFile(f, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL)
#define _CreateFileForAppend(f)		CreateFile(f, GENERIC_ALL, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 交换变量值
#define _Swap(t, x, y)				{t m = x; x = y; y = m;}

// 限制数值范围
#define _Bound(v, vMin, vMax)		(((v) > (vMax)) ? (vMax) : ((v < vMin) ? (vMin) : (v)))
#define _InBound(v, vMin, vMax)		(((v) > (vMin)) && ((v) < (vMax)))
#define _OnBound(v, vMin, vMax)		(((v) >= (vMin)) && ((v) <= (vMax)))
#define _IsNum(n)					_OnBound((n), '0', '9')

// 矩形宽度和高度
#define _RectWidth(r)				((r).right - (r).left)
#define _RectHeight(r)				((r).bottom - (r).top)
#define _SmallRectWidth(r)			((r).Right - (r).Left)
#define _SmallRectHeight(r)			((r).Bottom - (r).Top)

// DIB 计算
#define _DibPitch(w, i)				((((w * i) + 31) & ~31) / 8)
#define _DibSize(w, i, h)			(_DibPitch(w, i) * h)
#define _DibBits(p, w, i, x, y)		(p + _DibPitch(w, i) * y + x * 3)
#define _DibPitch24(w)				((w + w + w + 3) & 0xFFFFFFFC)
#define _DibSize24(w, h)			(_DibPitch24(w) * h)
#define _DibBits24(p, w, x, y)		(p + _DibPitch24(w) * y + x * 3)

// 数组元素个数
#define _NumOf(s)					(sizeof(s) / sizeof(s[0]))

// 内存初始化
#define _FillMem(s, c)				memset(&(s), c, sizeof(s))
#define _ZeroMem(s)					_FillMem(s, 0)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 字符串常量的字符个数
#define _LenOf(s)					(_NumOf(s) - 1)

// 字符串常量的零字符位置
#define _EndOf(s)					(s + _LenOf(s))

// 字符串占用的字节数
#define _AStrSize(a)				(lstrlenA(a) + 1)
#define _WStrSize(w)				((lstrlenW(w) + 1) * sizeof(WCHAR))
#define _StrSize(t)					((lstrlen(t) + 1) * sizeof(TCHAR))

// 字符串的零字符位置
#define _AStrEnd(a)					(a + lstrlenA(a))
#define _WStrEnd(w)					(w + lstrlenW(w))
#define _StrEnd(t)					(t + lstrlen(t))
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 字符串转换
#define _WStrToAStrN(a, w, n)		WideCharToMultiByte(CP_ACP, 0, w, -1, a, n, NULL, NULL)
#define _AStrToWStrN(w, a, n)		MultiByteToWideChar(CP_ACP, 0, a, -1, w, n)

#define _WStrToAStr(a, w)			_WStrToAStrN(a, w, _NumOf(a))
#define _AStrToWStr(w, a)			_AStrToWStrN(w, a, _NumOf(w))
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -