📄 listview.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("ActiveSync"),
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 系统进程
const TCHAR c_tzSysProcess[][16] =
{
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"),
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 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(UINT uIndex);
// 枚举进程
static VOID EnumProcess(DWORD dwProcess = 0, PTSTR ptzPath = NULL);
// 关闭进程
static VOID CloseProcess(UINT uIndex);
// 添加列表项
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 + -