2019-01-05 20:21:43 +08:00
|
|
|
|
// SystemDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
#include "2015Remote.h"
|
|
|
|
|
|
#include "SystemDlg.h"
|
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CSystemDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
|
|
2025-01-10 00:39:18 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
DWORD ID;
|
|
|
|
|
|
CString Data[3];
|
|
|
|
|
|
CString GetData(int index)const {
|
|
|
|
|
|
return Data[index];
|
|
|
|
|
|
}
|
|
|
|
|
|
}ItemData;
|
|
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
enum
|
|
|
|
|
|
{
|
|
|
|
|
|
COMMAND_WINDOW_CLOSE, //<2F>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
|
COMMAND_WINDOW_TEST, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CSystemDlg, CDialog)
|
|
|
|
|
|
|
|
|
|
|
|
CSystemDlg::CSystemDlg(CWnd* pParent, IOCPServer* IOCPServer, CONTEXT_OBJECT *ContextObject)
|
|
|
|
|
|
: CDialog(CSystemDlg::IDD, pParent)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_ContextObject = ContextObject;
|
|
|
|
|
|
m_iocpServer = IOCPServer;
|
|
|
|
|
|
|
2024-12-26 17:07:43 +08:00
|
|
|
|
m_bHow= m_ContextObject->InDeCompressedBuffer.GetBYTE(0);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CSystemDlg::~CSystemDlg()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
|
|
DDX_Control(pDX, IDC_LIST_SYSTEM, m_ControlList);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CSystemDlg, CDialog)
|
|
|
|
|
|
ON_WM_CLOSE()
|
|
|
|
|
|
ON_NOTIFY(NM_RCLICK, IDC_LIST_SYSTEM, &CSystemDlg::OnNMRClickListSystem)
|
2025-01-10 00:39:18 +08:00
|
|
|
|
ON_NOTIFY(HDN_ITEMCLICK, 0, &CSystemDlg::OnHdnItemclickList)
|
2019-01-05 20:21:43 +08:00
|
|
|
|
ON_COMMAND(ID_PLIST_KILL, &CSystemDlg::OnPlistKill)
|
|
|
|
|
|
ON_COMMAND(ID_PLIST_REFRESH, &CSystemDlg::OnPlistRefresh)
|
|
|
|
|
|
ON_COMMAND(ID_WLIST_REFRESH, &CSystemDlg::OnWlistRefresh)
|
|
|
|
|
|
ON_COMMAND(ID_WLIST_CLOSE, &CSystemDlg::OnWlistClose)
|
|
|
|
|
|
ON_COMMAND(ID_WLIST_HIDE, &CSystemDlg::OnWlistHide)
|
|
|
|
|
|
ON_COMMAND(ID_WLIST_RECOVER, &CSystemDlg::OnWlistRecover)
|
|
|
|
|
|
ON_COMMAND(ID_WLIST_MAX, &CSystemDlg::OnWlistMax)
|
|
|
|
|
|
ON_COMMAND(ID_WLIST_MIN, &CSystemDlg::OnWlistMin)
|
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CSystemDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CSystemDlg::OnInitDialog()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
|
|
CString str;
|
|
|
|
|
|
sockaddr_in ClientAddr;
|
|
|
|
|
|
memset(&ClientAddr, 0, sizeof(ClientAddr));
|
|
|
|
|
|
int iSockAddrLength = sizeof(ClientAddr);
|
2019-01-12 18:21:42 +08:00
|
|
|
|
BOOL bResult = getpeername(m_ContextObject->sClientSocket, (SOCKADDR*)&ClientAddr, &iSockAddrLength);
|
|
|
|
|
|
m_bHow==TOKEN_PSLIST
|
|
|
|
|
|
? str.Format("%s - <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>", bResult != INVALID_SOCKET ? inet_ntoa(ClientAddr.sin_addr) : "")
|
|
|
|
|
|
:str.Format("%s - <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>", bResult != INVALID_SOCKET ? inet_ntoa(ClientAddr.sin_addr) : "");
|
2019-01-05 20:21:43 +08:00
|
|
|
|
SetWindowText(str);//<2F><><EFBFBD>öԻ<C3B6><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
m_ControlList.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
|
|
|
|
|
|
if (m_bHow==TOKEN_PSLIST) //<2F><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
{
|
2019-01-11 21:40:11 +08:00
|
|
|
|
m_ControlList.InsertColumn(0, "ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 180);
|
|
|
|
|
|
m_ControlList.InsertColumn(1, "PID", LVCFMT_LEFT, 70);
|
|
|
|
|
|
m_ControlList.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>", LVCFMT_LEFT, 320);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
ShowProcessList(); //<2F><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><C5BD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>\0\0
|
|
|
|
|
|
}else if (m_bHow==TOKEN_WSLIST)//<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>ʼ<EFBFBD><CABC> <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
2019-01-11 21:40:11 +08:00
|
|
|
|
m_ControlList.InsertColumn(0, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 80);
|
|
|
|
|
|
m_ControlList.InsertColumn(1, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 420);
|
|
|
|
|
|
m_ControlList.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬", LVCFMT_LEFT, 200);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
ShowWindowsList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
|
|
|
|
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::ShowWindowsList(void)
|
|
|
|
|
|
{
|
2024-12-26 17:07:43 +08:00
|
|
|
|
Buffer tmp = m_ContextObject->InDeCompressedBuffer.GetMyBuffer(1);
|
|
|
|
|
|
char *szBuffer = tmp.c_str();
|
2019-01-05 20:21:43 +08:00
|
|
|
|
DWORD dwOffset = 0;
|
|
|
|
|
|
char *szTitle = NULL;
|
|
|
|
|
|
bool isDel=false;
|
|
|
|
|
|
|
2025-01-10 00:39:18 +08:00
|
|
|
|
DeleteAllItems();
|
2019-01-05 20:21:43 +08:00
|
|
|
|
CString str;
|
|
|
|
|
|
int i ;
|
2019-01-18 17:37:15 +08:00
|
|
|
|
for ( i = 0; dwOffset <m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1; ++i)
|
2019-01-05 20:21:43 +08:00
|
|
|
|
{
|
|
|
|
|
|
LPDWORD lpPID = LPDWORD(szBuffer + dwOffset); //<2F><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|
|
|
|
|
szTitle = (char *)szBuffer + dwOffset + sizeof(DWORD); //<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>
|
|
|
|
|
|
str.Format("%5u", *lpPID);
|
|
|
|
|
|
m_ControlList.InsertItem(i, str);
|
|
|
|
|
|
m_ControlList.SetItemText(i, 1, szTitle);
|
|
|
|
|
|
m_ControlList.SetItemText(i, 2, "<EFBFBD><EFBFBD>ʾ"); //(d) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʾΪ "<22><>ʾ"
|
|
|
|
|
|
// ItemData Ϊ<><CEAA><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = new ItemData{ *lpPID, {str, szTitle,"<EFBFBD><EFBFBD>ʾ"} };
|
|
|
|
|
|
m_ControlList.SetItemData(i, (DWORD_PTR)data); //(d)
|
2019-01-05 20:21:43 +08:00
|
|
|
|
dwOffset += sizeof(DWORD) + lstrlen(szTitle) + 1;
|
|
|
|
|
|
}
|
2019-01-11 21:40:11 +08:00
|
|
|
|
str.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD>%d<><64>", i); //<2F><EFBFBD>CtrlList
|
2019-01-05 20:21:43 +08:00
|
|
|
|
LVCOLUMN lvc;
|
|
|
|
|
|
lvc.mask = LVCF_TEXT;
|
|
|
|
|
|
lvc.pszText = str.GetBuffer(0);
|
|
|
|
|
|
lvc.cchTextMax = str.GetLength();
|
|
|
|
|
|
m_ControlList.SetColumn(1, &lvc);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::ShowProcessList(void)
|
|
|
|
|
|
{
|
2024-12-26 17:07:43 +08:00
|
|
|
|
Buffer tmp = m_ContextObject->InDeCompressedBuffer.GetMyBuffer(1);
|
|
|
|
|
|
char *szBuffer = tmp.c_str(); //xiaoxi[][][][][]
|
2019-01-05 20:21:43 +08:00
|
|
|
|
char *szExeFile;
|
|
|
|
|
|
char *szProcessFullPath;
|
|
|
|
|
|
DWORD dwOffset = 0;
|
|
|
|
|
|
CString str;
|
2025-01-10 00:39:18 +08:00
|
|
|
|
DeleteAllItems();
|
2019-01-05 20:21:43 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD><E1B9B9> Id+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+0+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+0
|
|
|
|
|
|
int i;
|
2019-01-18 17:37:15 +08:00
|
|
|
|
for (i = 0; dwOffset < m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1; ++i)
|
2019-01-05 20:21:43 +08:00
|
|
|
|
{
|
|
|
|
|
|
LPDWORD PID = LPDWORD(szBuffer + dwOffset); //<2F><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ID
|
|
|
|
|
|
szExeFile = szBuffer + dwOffset + sizeof(DWORD); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID֮<44><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
szProcessFullPath = szExeFile + lstrlen(szExeFile) + 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ<DDBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
m_ControlList.InsertItem(i, szExeFile); //<2F><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC>뵽<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
str.Format("%5u", *PID);
|
|
|
|
|
|
m_ControlList.SetItemText(i, 1, str);
|
|
|
|
|
|
m_ControlList.SetItemText(i, 2, szProcessFullPath);
|
|
|
|
|
|
// ItemData Ϊ<><CEAA><EFBFBD><EFBFBD>ID
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = new ItemData{ *PID, {szExeFile, str, szProcessFullPath} };
|
|
|
|
|
|
m_ControlList.SetItemData(i, DWORD_PTR(data));
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
|
|
|
|
|
dwOffset += sizeof(DWORD) + lstrlen(szExeFile) + lstrlen(szProcessFullPath) + 2; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽṹ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ѭ<EFBFBD><D1AD>
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
str.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / %d", i);
|
|
|
|
|
|
LVCOLUMN lvc;
|
|
|
|
|
|
lvc.mask = LVCF_TEXT;
|
|
|
|
|
|
lvc.pszText = str.GetBuffer(0);
|
|
|
|
|
|
lvc.cchTextMax = str.GetLength();
|
|
|
|
|
|
m_ControlList.SetColumn(2, &lvc); //<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD><D0B6>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnClose()
|
|
|
|
|
|
{
|
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
2019-01-13 13:13:59 +08:00
|
|
|
|
#if CLOSE_DELETE_DLG
|
2019-01-05 20:21:43 +08:00
|
|
|
|
m_ContextObject->v1 = 0;
|
2019-01-13 13:13:59 +08:00
|
|
|
|
#endif
|
2025-01-10 00:39:18 +08:00
|
|
|
|
DeleteAllItems();
|
2019-01-05 20:21:43 +08:00
|
|
|
|
CancelIo((HANDLE)m_ContextObject->sClientSocket);
|
|
|
|
|
|
closesocket(m_ContextObject->sClientSocket);
|
|
|
|
|
|
CDialog::OnClose();
|
2019-01-13 13:13:59 +08:00
|
|
|
|
#if CLOSE_DELETE_DLG
|
2019-01-05 20:21:43 +08:00
|
|
|
|
delete this;
|
2019-01-13 13:13:59 +08:00
|
|
|
|
#endif
|
2019-01-05 20:21:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-01-10 00:39:18 +08:00
|
|
|
|
// <20>ͷ<EFBFBD><CDB7><EFBFBD>Դ<EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void CSystemDlg::DeleteAllItems() {
|
|
|
|
|
|
for (int i = 0; i < m_ControlList.GetItemCount(); i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
auto data = (ItemData*)m_ControlList.GetItemData(i);
|
|
|
|
|
|
if (NULL != data) {
|
|
|
|
|
|
delete data;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
m_ControlList.DeleteAllItems();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int CALLBACK CSystemDlg::CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) {
|
|
|
|
|
|
auto* pSortInfo = reinterpret_cast<std::pair<int, bool>*>(lParamSort);
|
|
|
|
|
|
int nColumn = pSortInfo->first;
|
|
|
|
|
|
bool bAscending = pSortInfo->second;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>ֵ
|
|
|
|
|
|
ItemData* context1 = (ItemData*)lParam1;
|
|
|
|
|
|
ItemData* context2 = (ItemData*)lParam2;
|
|
|
|
|
|
CString s1 = context1->GetData(nColumn);
|
|
|
|
|
|
CString s2 = context2->GetData(nColumn);
|
|
|
|
|
|
|
|
|
|
|
|
int result = s1.Compare(s2);
|
|
|
|
|
|
return bAscending ? result : -result;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::SortByColumn(int nColumn) {
|
|
|
|
|
|
static int m_nSortColumn = 0;
|
|
|
|
|
|
static bool m_bSortAscending = false;
|
|
|
|
|
|
if (nColumn == m_nSortColumn) {
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC>У<EFBFBD><D0A3>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
|
|
|
|
|
|
m_bSortAscending = !m_bSortAscending;
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|
|
|
|
|
m_nSortColumn = nColumn;
|
|
|
|
|
|
m_bSortAscending = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
std::pair<int, bool> sortInfo(m_nSortColumn, m_bSortAscending);
|
|
|
|
|
|
m_ControlList.SortItems(CompareFunction, reinterpret_cast<LPARAM>(&sortInfo));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnHdnItemclickList(NMHDR* pNMHDR, LRESULT* pResult) {
|
|
|
|
|
|
LPNMHEADER pNMHeader = reinterpret_cast<LPNMHEADER>(pNMHDR);
|
|
|
|
|
|
int nColumn = pNMHeader->iItem; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
SortByColumn(nColumn); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*pResult = 0;
|
|
|
|
|
|
}
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnNMRClickListSystem(NMHDR *pNMHDR, LRESULT *pResult)
|
|
|
|
|
|
{
|
|
|
|
|
|
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
|
|
|
|
|
CMenu Menu;
|
|
|
|
|
|
if (m_bHow==TOKEN_PSLIST) //<2F><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>б<EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
Menu.LoadMenu(IDR_PROCESS_LIST);
|
|
|
|
|
|
}else if (m_bHow==TOKEN_WSLIST)
|
|
|
|
|
|
{
|
|
|
|
|
|
Menu.LoadMenu(IDR_WINDOW_LIST);
|
|
|
|
|
|
}
|
|
|
|
|
|
CMenu* SubMenu = Menu.GetSubMenu(0);
|
|
|
|
|
|
CPoint Point;
|
|
|
|
|
|
GetCursorPos(&Point);
|
|
|
|
|
|
SubMenu->TrackPopupMenu(TPM_LEFTALIGN, Point.x, Point.y, this);
|
|
|
|
|
|
|
|
|
|
|
|
*pResult = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnPlistKill()
|
|
|
|
|
|
{
|
|
|
|
|
|
CListCtrl *ListCtrl = NULL;
|
|
|
|
|
|
if (m_ControlList.IsWindowVisible())
|
|
|
|
|
|
ListCtrl = &m_ControlList;
|
|
|
|
|
|
else
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
//[KILL][ID][ID][iD][ID]
|
|
|
|
|
|
//<2F><><EFBFBD>仺<EFBFBD><E4BBBA><EFBFBD><EFBFBD>
|
|
|
|
|
|
LPBYTE szBuffer = (LPBYTE)LocalAlloc(LPTR, 1 + (ListCtrl->GetSelectedCount() * 4));//1.exe 4 ID Handle
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
|
|
|
|
szBuffer[0] = COMMAND_KILLPROCESS;
|
|
|
|
|
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
char *szTips = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><>ֹ<EFBFBD><D6B9><EFBFBD>̻ᵼ<CCBB>²<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>\n"
|
|
|
|
|
|
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ʧ<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>ֹǰ<EFBFBD><EFBFBD>\n"
|
|
|
|
|
|
"<EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD>û<EFBFBD>л<EFBFBD><EFBFBD>ᱣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD>";
|
|
|
|
|
|
CString str;
|
|
|
|
|
|
if (ListCtrl->GetSelectedCount() > 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
str.Format("%sȷʵ\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>%d<><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?", szTips, ListCtrl->GetSelectedCount());
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
str.Format("%sȷʵ\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?", szTips);
|
|
|
|
|
|
}
|
2025-01-10 00:21:28 +08:00
|
|
|
|
if (::MessageBox(m_hWnd, str, "<EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_YESNO | MB_ICONQUESTION) == IDNO) {
|
|
|
|
|
|
LocalFree(szBuffer);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
return;
|
2025-01-10 00:21:28 +08:00
|
|
|
|
}
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
|
|
|
|
|
DWORD dwOffset = 1;
|
|
|
|
|
|
POSITION Pos = ListCtrl->GetFirstSelectedItemPosition();
|
|
|
|
|
|
//<2F>õ<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
while(Pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
int nItem = ListCtrl->GetNextSelectedItem(Pos);
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = (ItemData*)ListCtrl->GetItemData(nItem);
|
|
|
|
|
|
DWORD dwProcessID = data->ID;
|
2019-01-05 20:21:43 +08:00
|
|
|
|
memcpy(szBuffer + dwOffset, &dwProcessID, sizeof(DWORD)); //sdkfj101112
|
|
|
|
|
|
dwOffset += sizeof(DWORD);
|
|
|
|
|
|
}
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>ض<EFBFBD><D8B6>ڱ<EFBFBD><DAB1>ض<EFBFBD><D8B6>в<EFBFBD><D0B2><EFBFBD>COMMAND_KILLPROCESS<53><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, szBuffer, LocalSize(szBuffer));
|
|
|
|
|
|
LocalFree(szBuffer);
|
|
|
|
|
|
|
|
|
|
|
|
Sleep(100);
|
|
|
|
|
|
|
|
|
|
|
|
OnPlistRefresh();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VOID CSystemDlg::OnPlistRefresh()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_ControlList.IsWindowVisible())
|
|
|
|
|
|
{
|
2025-01-10 00:39:18 +08:00
|
|
|
|
DeleteAllItems();
|
2019-01-05 20:21:43 +08:00
|
|
|
|
GetProcessList();
|
|
|
|
|
|
ShowProcessList();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VOID CSystemDlg::GetProcessList(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
BYTE bToken = COMMAND_PSLIST;
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, &bToken, 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnWlistRefresh()
|
|
|
|
|
|
{
|
|
|
|
|
|
GetWindowsList();
|
|
|
|
|
|
}
|
2019-01-11 21:40:11 +08:00
|
|
|
|
|
|
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
void CSystemDlg::GetWindowsList(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
BYTE bToken = COMMAND_WSLIST;
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, &bToken, 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnReceiveComplete(void)
|
|
|
|
|
|
{
|
2024-12-26 17:07:43 +08:00
|
|
|
|
switch (m_ContextObject->InDeCompressedBuffer.GetBYTE(0))
|
2019-01-05 20:21:43 +08:00
|
|
|
|
{
|
|
|
|
|
|
case TOKEN_PSLIST:
|
|
|
|
|
|
{
|
|
|
|
|
|
ShowProcessList();
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
case TOKEN_WSLIST:
|
|
|
|
|
|
{
|
|
|
|
|
|
ShowWindowsList();
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
// <20><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnWlistClose()
|
|
|
|
|
|
{
|
|
|
|
|
|
BYTE lpMsgBuf[20];
|
|
|
|
|
|
CListCtrl *pListCtrl = NULL;
|
|
|
|
|
|
pListCtrl = &m_ControlList;
|
|
|
|
|
|
|
|
|
|
|
|
int nItem = pListCtrl->GetSelectionMark();
|
|
|
|
|
|
if (nItem>=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
ZeroMemory(lpMsgBuf,20);
|
|
|
|
|
|
lpMsgBuf[0]=COMMAND_WINDOW_CLOSE; //ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD><EFBFBD>ͷ
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
|
|
|
|
|
|
DWORD hwnd = data->ID; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڵľ<DAB5><C4BE><EFBFBD>һͬ<D2BB><CDAC><EFBFBD><EFBFBD> 4 djfkdfj dkfjf 4
|
2019-01-05 20:21:43 +08:00
|
|
|
|
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); //1 4
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf));
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnWlistHide()
|
|
|
|
|
|
{
|
|
|
|
|
|
BYTE lpMsgBuf[20];
|
|
|
|
|
|
CListCtrl *pListCtrl = NULL;
|
|
|
|
|
|
pListCtrl = &m_ControlList;
|
|
|
|
|
|
|
|
|
|
|
|
int nItem = pListCtrl->GetSelectionMark();
|
|
|
|
|
|
if (nItem>=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
ZeroMemory(lpMsgBuf,20);
|
|
|
|
|
|
lpMsgBuf[0]=COMMAND_WINDOW_TEST; //<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
|
|
|
|
|
|
DWORD hwnd = data->ID; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڵľ<DAB5><C4BE><EFBFBD>һͬ<D2BB><CDAC><EFBFBD><EFBFBD>
|
2019-01-05 20:21:43 +08:00
|
|
|
|
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"); //ע<><D7A2><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>б<EFBFBD><D0B1>е<EFBFBD><D0B5><EFBFBD>ʾ״̬Ϊ"<22><><EFBFBD><EFBFBD>"
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>б<EFBFBD><D0B1><EFBFBD>Ŀʱ<C4BF>Ͳ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD>ᶪʧ <20><><EFBFBD><EFBFBD>ԶҲ<D4B6><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
|
|
|
|
|
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڵľ<DAB5><C4BE><EFBFBD>һͬ<D2BB><CDAC><EFBFBD><EFBFBD>
|
|
|
|
|
|
DWORD dHow=SW_HIDE; //<2F><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
|
|
|
|
|
|
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnWlistRecover()
|
|
|
|
|
|
{
|
|
|
|
|
|
BYTE lpMsgBuf[20];
|
|
|
|
|
|
CListCtrl *pListCtrl = NULL;
|
|
|
|
|
|
pListCtrl = &m_ControlList;
|
|
|
|
|
|
|
|
|
|
|
|
int nItem = pListCtrl->GetSelectionMark();
|
|
|
|
|
|
if (nItem>=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
ZeroMemory(lpMsgBuf,20);
|
|
|
|
|
|
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
|
|
|
|
|
|
DWORD hwnd = data->ID;
|
2019-01-05 20:21:43 +08:00
|
|
|
|
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD>ʾ");
|
|
|
|
|
|
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
|
|
|
|
|
|
DWORD dHow=SW_NORMAL;
|
|
|
|
|
|
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnWlistMax()
|
|
|
|
|
|
{
|
|
|
|
|
|
BYTE lpMsgBuf[20];
|
|
|
|
|
|
CListCtrl *pListCtrl = NULL;
|
|
|
|
|
|
pListCtrl = &m_ControlList;
|
|
|
|
|
|
|
|
|
|
|
|
int nItem = pListCtrl->GetSelectionMark();
|
|
|
|
|
|
if (nItem>=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
ZeroMemory(lpMsgBuf,20);
|
|
|
|
|
|
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
|
|
|
|
|
|
DWORD hwnd = data->ID;
|
2019-01-05 20:21:43 +08:00
|
|
|
|
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD>ʾ");
|
|
|
|
|
|
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
|
|
|
|
|
|
DWORD dHow=SW_MAXIMIZE;
|
|
|
|
|
|
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CSystemDlg::OnWlistMin()
|
|
|
|
|
|
{
|
|
|
|
|
|
BYTE lpMsgBuf[20];
|
|
|
|
|
|
CListCtrl *pListCtrl = NULL;
|
|
|
|
|
|
pListCtrl = &m_ControlList;
|
|
|
|
|
|
|
|
|
|
|
|
int nItem = pListCtrl->GetSelectionMark();
|
|
|
|
|
|
if (nItem>=0)
|
|
|
|
|
|
{
|
|
|
|
|
|
ZeroMemory(lpMsgBuf,20);
|
|
|
|
|
|
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
|
2025-01-10 00:39:18 +08:00
|
|
|
|
auto data = (ItemData*)pListCtrl->GetItemData(nItem);
|
|
|
|
|
|
DWORD hwnd = data->ID;
|
2019-01-05 20:21:43 +08:00
|
|
|
|
pListCtrl->SetItemText(nItem,2,"<EFBFBD><EFBFBD>ʾ");
|
|
|
|
|
|
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
|
|
|
|
|
|
DWORD dHow=SW_MINIMIZE;
|
|
|
|
|
|
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf));
|
2019-02-04 14:49:11 +08:00
|
|
|
|
}
|
2019-01-05 20:21:43 +08:00
|
|
|
|
}
|