diff --git a/ReadMe.txt b/ReadMe.txt index 8c36954..714f171 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -52,3 +52,9 @@ 3、发现服务端需要采用默认英文输入法,才能在远程桌面输入中文(怀疑本地输入法截获消息)。 4、添加崩溃时写dump文件的代码。 + +2019.1.11 + +1、修复文件管理对话框多次打开崩溃的问题(【遗留问题】)。 + +2、遗留问题:远程cmd窗口总是将输入命令输出2次、文件对话框的菜单操作可能已失效。 diff --git a/client/SystemManager.cpp b/client/SystemManager.cpp index 1e7517f..3b6e3d6 100644 --- a/client/SystemManager.cpp +++ b/client/SystemManager.cpp @@ -84,9 +84,6 @@ LPBYTE CSystemManager::GetProcessList() //򿪽̲ؾ hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pe32.th32ProcessID); //Ŀ - - // if ((pe32.th32ProcessID !=0) && - // (pe32.th32ProcessID !=4)) { //öٵһģҲǵǰ· EnumProcessModules(hProcess, &hModules, sizeof(hModules), &cbNeeded); @@ -240,7 +237,6 @@ LPBYTE CSystemManager::GetWindowsList() EnumWindows((WNDENUMPROC)EnumWindowsProc, (LPARAM)&szBuffer); //עắ //APIкָ //ϵͳעһ ص - szBuffer[0] = TOKEN_WSLIST; return szBuffer; } @@ -260,7 +256,6 @@ BOOL CALLBACK CSystemManager::EnumWindowsProc(HWND hWnd, LPARAM lParam) //Ҫ if (!IsWindowVisible(hWnd) || lstrlen(szTitle) == 0) return true; //̹ͬһעķ͵ض˵ݽṹ - if (szBuffer == NULL) szBuffer = (LPBYTE)LocalAlloc(LPTR, 1); //ʱ仺 diff --git a/server/2015Remote/2015Remote.rc b/server/2015Remote/2015Remote.rc index 39a966b..406960e 100644 Binary files a/server/2015Remote/2015Remote.rc and b/server/2015Remote/2015Remote.rc differ diff --git a/server/2015Remote/2015Remote.vcxproj b/server/2015Remote/2015Remote.vcxproj index 9202f8e..81165a0 100644 --- a/server/2015Remote/2015Remote.vcxproj +++ b/server/2015Remote/2015Remote.vcxproj @@ -180,6 +180,12 @@ + + + + + + diff --git a/server/2015Remote/2015Remote.vcxproj.filters b/server/2015Remote/2015Remote.vcxproj.filters index 775479c..ec3dfc6 100644 --- a/server/2015Remote/2015Remote.vcxproj.filters +++ b/server/2015Remote/2015Remote.vcxproj.filters @@ -274,4 +274,18 @@ + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + 资源文件 + + \ No newline at end of file diff --git a/server/2015Remote/2015RemoteDlg.cpp b/server/2015Remote/2015RemoteDlg.cpp index 6a349e0..2b3b276 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -18,12 +18,16 @@ #include "RegisterDlg.h" #include "ServicesDlg.h" #include "VideoDlg.h" +#include #ifdef _DEBUG #define new DEBUG_NEW #endif #define UM_ICONNOTIFY WM_USER+100 + +std::vector v_FileDlg; + enum { ONLINELIST_IP=0, //IP˳ @@ -121,6 +125,23 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent /*=NULL*/) InitializeCriticalSection(&m_cs); } + +CMy2015RemoteDlg::~CMy2015RemoteDlg() +{ + EnterCriticalSection(&m_cs); + for (std::vector::iterator iter = v_FileDlg.begin(); + iter != v_FileDlg.end(); ++iter) + { + CFileManagerDlg *cur = *iter; + ::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0); + while (false == cur->m_bIsClosed) + Sleep(1); + delete cur; + } + LeaveCriticalSection(&m_cs); + DeleteCriticalSection(&m_cs); +} + void CMy2015RemoteDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); @@ -235,7 +256,7 @@ VOID CMy2015RemoteDlg::CreateNotifyBar() m_Nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; //ӵе״̬ m_Nid.uCallbackMessage = UM_ICONNOTIFY; //صϢ m_Nid.hIcon = m_hIcon; //icon - CString strTips ="2015RemoteԶЭ........."; //ʾ + CString strTips =": ԶЭ"; //ʾ lstrcpyn(m_Nid.szTip, (LPCSTR)strTips, sizeof(m_Nid.szTip) / sizeof(m_Nid.szTip[0])); Shell_NotifyIcon(NIM_ADD, &m_Nid); //ʾ } @@ -304,7 +325,7 @@ VOID CMy2015RemoteDlg::InitControl() m_CList_Message.SetExtendedStyle(LVS_EX_FULLROWSELECT); - SetTimer(0,3000,NULL); + SetTimer(0,3000,NULL); // ʱõļԻ } @@ -366,6 +387,7 @@ BOOL CMy2015RemoteDlg::OnInitDialog() CDialogEx::OnInitDialog(); // ...˵ӵϵͳ˵С + SetWindowText(_T("Yama")); // IDM_ABOUTBOX ϵͳΧڡ ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); @@ -543,6 +565,22 @@ void CMy2015RemoteDlg::OnTimer(UINT_PTR nIDEvent) void CMy2015RemoteDlg::OnClose() { + bool bOpened = false; + for (std::vector::iterator iter = v_FileDlg.begin(); + iter != v_FileDlg.end(); ++iter) + { + CFileManagerDlg *cur = *iter; + if (!cur->m_bIsClosed){ + bOpened = true; + break; + } + } + if (bOpened) + { + MessageBox(_T("ȹرļ!")); + return; + } + // TODO: ڴϢ/Ĭֵ KillTimer(0); @@ -702,9 +740,7 @@ VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength) //Bar VOID CMy2015RemoteDlg::OnAbout() { - MessageBox("1","1"); - - m_ToolBar.SetButtonText(0,"Terminal"); //λͼļ + MessageBox("Copyleft (c) FTU 2019", ""); } //Menu @@ -1095,6 +1131,21 @@ LRESULT CMy2015RemoteDlg::OnOpenFileManagerDialog(WPARAM wParam, LPARAM lParam) ContextObject->v1 = FILEMANAGER_DLG; ContextObject->hDlg = Dlg; + EnterCriticalSection(&m_cs); + for (std::vector::iterator iter = v_FileDlg.begin(); + iter != v_FileDlg.end(); ) + { + CFileManagerDlg *cur = *iter; + if (cur->m_bIsClosed) + { + delete cur; + iter = v_FileDlg.erase(iter); + }else{ + ++iter; + } + } + v_FileDlg.push_back(Dlg); + LeaveCriticalSection(&m_cs); return 0; } diff --git a/server/2015Remote/2015RemoteDlg.h b/server/2015Remote/2015RemoteDlg.h index fe1be4b..fbc5944 100644 --- a/server/2015Remote/2015RemoteDlg.h +++ b/server/2015Remote/2015RemoteDlg.h @@ -24,10 +24,7 @@ class CMy2015RemoteDlg : public CDialogEx // public: CMy2015RemoteDlg(CWnd* pParent = NULL); // ׼캯 - ~CMy2015RemoteDlg() - { - DeleteCriticalSection(&m_cs); - } + ~CMy2015RemoteDlg(); // Ի enum { IDD = IDD_MY2015REMOTE_DIALOG }; protected: diff --git a/server/2015Remote/CpuUseage.cpp b/server/2015Remote/CpuUseage.cpp index 9dd09b5..01b726a 100644 --- a/server/2015Remote/CpuUseage.cpp +++ b/server/2015Remote/CpuUseage.cpp @@ -24,7 +24,8 @@ BOOL CCpuUsage::Init() m_pCounterStruct = (PPDHCOUNTERSTRUCT) new PDHCOUNTERSTRUCT; //ͳƸȤϵͳϢʱȽӦļӽ - PDH_STATUS pdh_status = PdhAddCounter(m_hQuery, (LPCSTR)szCounterName, (DWORD) m_pCounterStruct, &(m_pCounterStruct->hCounter)); + PDH_STATUS pdh_status = PdhAddCounter(m_hQuery, (LPCSTR)szCounterName, + (DWORD) m_pCounterStruct, &(m_pCounterStruct->hCounter)); if (ERROR_SUCCESS != pdh_status) { return FALSE; diff --git a/server/2015Remote/FileManagerDlg.cpp b/server/2015Remote/FileManagerDlg.cpp index 81637a3..bcd3927 100644 --- a/server/2015Remote/FileManagerDlg.cpp +++ b/server/2015Remote/FileManagerDlg.cpp @@ -32,6 +32,8 @@ CFileManagerDlg::CFileManagerDlg(CWnd* pParent, CIOCPServer* pIOCPServer, Client { //{{AFX_DATA_INIT(CFileManagerDlg) //}}AFX_DATA_INIT + m_bIsClosed = false; + m_ProgressCtrl = NULL; SHFILEINFO sfi; SHGetFileInfo ( @@ -929,6 +931,8 @@ void CFileManagerDlg::OnClose() closesocket(m_pContext->m_Socket); CDialog::OnClose(); + m_bIsClosed = true; + //delete this; //˴ͷڴڵ2α } CString CFileManagerDlg::GetParentDirectory(CString strPath) diff --git a/server/2015Remote/FileManagerDlg.h b/server/2015Remote/FileManagerDlg.h index bd83ccf..3551b57 100644 --- a/server/2015Remote/FileManagerDlg.h +++ b/server/2015Remote/FileManagerDlg.h @@ -70,7 +70,11 @@ public: HICON m_hIcon; CStatusBar m_wndStatusBar; CFileManagerDlg(CWnd* pParent = NULL, CIOCPServer* pIOCPServer = NULL, ClientContext *pContext = NULL); // standard constructor - + bool m_bIsClosed; + ~CFileManagerDlg() + { + if(m_ProgressCtrl) delete m_ProgressCtrl; + } // Dialog Data //{{AFX_DATA(CFileManagerDlg) enum { IDD = IDD_FILE }; diff --git a/server/2015Remote/SettingDlg.cpp b/server/2015Remote/SettingDlg.cpp index b61d9bf..89e6f9a 100644 --- a/server/2015Remote/SettingDlg.cpp +++ b/server/2015Remote/SettingDlg.cpp @@ -34,7 +34,6 @@ BEGIN_MESSAGE_MAP(CSettingDlg, CDialog) ON_BN_CLICKED(IDC_BUTTON_SETTINGAPPLY, &CSettingDlg::OnBnClickedButtonSettingapply) ON_EN_CHANGE(IDC_EDIT_PORT, &CSettingDlg::OnEnChangeEditPort) ON_EN_CHANGE(IDC_EDIT_MAX, &CSettingDlg::OnEnChangeEditMax) - ON_BN_CLICKED(IDC_BUTTON_MSG, &CSettingDlg::OnBnClickedButtonMsg) END_MESSAGE_MAP() @@ -60,8 +59,6 @@ BOOL CSettingDlg::OnInitDialog() void CSettingDlg::OnBnClickedButtonSettingapply() { - // TODO: ڴӿؼ֪ͨ - //MessageBox("1"); UpdateData(TRUE); ((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("Settings", "ListenPort", m_nListenPort); //iniļдֵ @@ -99,13 +96,3 @@ void CSettingDlg::OnEnChangeEditMax() ::ShowWindow(hApplyButton,SW_NORMAL); ::EnableWindow(hApplyButton,TRUE); } - - -void CSettingDlg::OnBnClickedButtonMsg() -{ - // TODO: ڴӿؼ֪ͨ - HWND hFather = NULL; - - hFather = ::FindWindow(NULL,"2015Remote"); - ::SendMessage(hFather,WM_CLOSE,NULL,NULL); -} diff --git a/server/2015Remote/SettingDlg.h b/server/2015Remote/SettingDlg.h index 5f7363a..e16f426 100644 --- a/server/2015Remote/SettingDlg.h +++ b/server/2015Remote/SettingDlg.h @@ -27,5 +27,4 @@ public: afx_msg void OnEnChangeEditPort(); afx_msg void OnEnChangeEditMax(); CButton m_ApplyButton; - afx_msg void OnBnClickedButtonMsg(); }; diff --git a/server/2015Remote/SystemDlg.cpp b/server/2015Remote/SystemDlg.cpp index 177b50a..d22f0ec 100644 --- a/server/2015Remote/SystemDlg.cpp +++ b/server/2015Remote/SystemDlg.cpp @@ -69,16 +69,16 @@ BOOL CSystemDlg::OnInitDialog() m_ControlList.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT); if (m_bHow==TOKEN_PSLIST) //̹ʼб { - m_ControlList.InsertColumn(0, "ӳ", LVCFMT_LEFT, 120); - m_ControlList.InsertColumn(1, "PID", LVCFMT_LEFT, 50); - m_ControlList.InsertColumn(2, "·", LVCFMT_LEFT, 200); + m_ControlList.InsertColumn(0, "ӳ", LVCFMT_LEFT, 180); + m_ControlList.InsertColumn(1, "PID", LVCFMT_LEFT, 70); + m_ControlList.InsertColumn(2, "·", LVCFMT_LEFT, 320); ShowProcessList(); //ڵһϢŽ̵԰ʾб\0\0 }else if (m_bHow==TOKEN_WSLIST)//ڹʼб { //ʼ ڹб - m_ControlList.InsertColumn(0, "PID", LVCFMT_LEFT, 50); - m_ControlList.InsertColumn(1, "", LVCFMT_LEFT, 300); - m_ControlList.InsertColumn(2, "״̬", LVCFMT_LEFT, 300); + m_ControlList.InsertColumn(0, "", LVCFMT_LEFT, 80); + m_ControlList.InsertColumn(1, "", LVCFMT_LEFT, 420); + m_ControlList.InsertColumn(2, "״̬", LVCFMT_LEFT, 200); ShowWindowsList(); } @@ -108,7 +108,7 @@ void CSystemDlg::ShowWindowsList(void) m_ControlList.SetItemData(i, *lpPID); //(d) dwOffset += sizeof(DWORD) + lstrlen(szTitle) + 1; } - str.Format(" ڸ%d", i); //޸CtrlList + str.Format(" ڸ%d", i); //޸CtrlList LVCOLUMN lvc; lvc.mask = LVCF_TEXT; lvc.pszText = str.GetBuffer(0); @@ -253,6 +253,8 @@ void CSystemDlg::OnWlistRefresh() { GetWindowsList(); } + + void CSystemDlg::GetWindowsList(void) { BYTE bToken = COMMAND_WSLIST; diff --git a/server/2015Remote/res/2015Remote.ico b/server/2015Remote/res/2015Remote.ico index d56fbcd..1b8cead 100644 Binary files a/server/2015Remote/res/2015Remote.ico and b/server/2015Remote/res/2015Remote.ico differ