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

📄 listview.h

📁 Cele Task - 强大的工作管理员
💻 H
字号:



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



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 属性字符串
#ifdef _CHS
#define STR_ProcessMsg			TEXT("进程: %08X\n名称: %s")
#define STR_TaskMsg				TEXT("标题: %s\n")	\
								TEXT("句柄: %08X\n")	\
								TEXT("风格: %08X\n")	\
								TEXT("扩展: %08X\n\n")	\
								TEXT("类名: %s\n")	\
								TEXT("风格: %08X\n\n")	\
								TEXT("进程: %08X\n")	\
								TEXT("名称: %s\n")

#else
#define STR_ProcessMsg			TEXT("Process: %08X\nName: %s")
#define STR_TaskMsg				TEXT("Caption: %s\n")	\
								TEXT("Handle: %08X\n")	\
								TEXT("Style: %08X\n")	\
								TEXT("Extended Style: %08X\n\n")	\
								TEXT("Class: %s\n")	\
								TEXT("Class Style: %08X\n\n")	\
								TEXT("Process: %08X\n")	\
								TEXT("Name: %s\n")
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 系统任务
const TCHAR c_tzSysTask[][16] = 
{
	TEXT("MSStart"),
	TEXT("ActiveSync"),	
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 系统进程
const TCHAR c_tzSysProcess[][20] = 
{
	TEXT("NK.exe"),
	TEXT("filesys.exe"),
	TEXT("device.exe"),
	TEXT("telshell.exe"),
	TEXT("gwes.exe"),
	TEXT("rapisrv.exe"),
	TEXT("rnaapp.exe"),
	TEXT("repllog.exe"),
	TEXT("connmgr.exe"),
	TEXT("srvtrust.exe"),
	TEXT("services.exe"),
	TEXT("home.exe"),
	TEXT("appman.exe"),
	TEXT("udp2tcp.exe"),
	TEXT("cdial.exe"),
	TEXT("cprog.exe"),
	TEXT("CeleTask.exe"),
	TEXT("rapiclnt.exe"),
	TEXT("rapiclnt"),
	TEXT("poutlook.exe"),
	TEXT("edm.exe"),
	TEXT("ConManClient.exe"),
	TEXT("ConManClient2.exe"),
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CListView 类
class CListView
{
public:
	static HWND m_hWnd;						// 窗口句柄
	static UINT m_uView;					// 列表项数目
	static UINT m_uCount;					// 列表项数目

public:
	// 创建
	static VOID Create();

	// 刷新
	static VOID Refresh(UINT uView = m_uView);

	// 切换
	inline static VOID Toggle() {Refresh((m_uView == IDM_View_Task) ? IDM_View_Process : IDM_View_Task);}

public:
	// 转到
	static VOID Goto(UINT uIndex = ListView_GetNextItem(m_hWnd, -1, LVIS_SELECTED));

	// 属性
	static VOID View(UINT uIndex = ListView_GetNextItem(m_hWnd, -1, LVIS_SELECTED));

	// 关闭
	static VOID Close();

	// 关闭全部
	static VOID CloseAll(BOOL bExcludeCur = FALSE);

	// 关闭全部任务
	inline static VOID CloseAllTask() {EnumWindows(EnumWindowsProc, TRUE);}

private:
	// 枚举窗口
	static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam);

	// 关闭任务
	static VOID CloseTask(HWND hWnd);

	// 枚举进程
	static VOID EnumProcess(DWORD dwProcess = 0, PTSTR ptzPath = NULL);

	// 关闭进程
	static VOID CloseProcess(DWORD dwProcess);

	// 添加列表项
	static INT AddItem(PTSTR ptzText, LPARAM lParam = 0);

private:
	// 窗口是否激活
	inline static BOOL IsActiveWindow(HWND hWnd)
	{
		DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE);
		DWORD dwExStyle = GetWindowLong(hWnd, GWL_EXSTYLE);
		return (dwStyle & WS_VISIBLE) && ((dwStyle & WS_DISABLED) == 0) && ((dwExStyle & WS_EX_NOACTIVATE) == 0);
	}

	// 获取所有者窗口
	inline static HWND GetOwnerWindow(HWND hWnd)
	{
		HWND hOwner;

		do
		{
			hOwner = hWnd;
		}
		while (hWnd = GetWindow(hWnd, GW_OWNER));

		return hOwner;
	}

	// 获取列表项参数
	inline static LPARAM GetParam(UINT uIndex)
	{
		LVITEM lviItem = {0};
		lviItem.iItem = uIndex;
		lviItem.mask = LVIF_PARAM;
		ListView_GetItem(m_hWnd, &lviItem);
		return lviItem.lParam;
	}
	
	// 是否是用户窗口
	inline static BOOL IsUserTask(PCTSTR ptzName)
	{
		for (UINT i = 0; i < _NumOf(c_tzSysTask); i++)
		{
			if (lstrcmpi(ptzName, c_tzSysTask[i]) == 0)
			{
				return FALSE;
			}
		}

		return TRUE;
	}

	// 是否是用户进程
	inline static BOOL IsUserProcess(PCTSTR ptzName)
	{
		for (UINT i = 0; i < _NumOf(c_tzSysProcess); i++)
		{
			if (lstrcmpi(ptzName, c_tzSysProcess[i]) == 0)
			{
				return FALSE;
			}
		}

		return TRUE;
	}
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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