降低退出时崩溃的概率
This commit is contained in:
@@ -67,3 +67,7 @@
|
|||||||
|
|
||||||
3、打开注册表关闭后崩溃,参照按对文件管理窗口的修改进行处理。遗留问题:
|
3、打开注册表关闭后崩溃,参照按对文件管理窗口的修改进行处理。遗留问题:
|
||||||
并无内存泄漏,但退出时报"HEAP: Free Heap modified after it was freed"问题。
|
并无内存泄漏,但退出时报"HEAP: Free Heap modified after it was freed"问题。
|
||||||
|
|
||||||
|
4、退出时睡眠一会,等待服务端清理,发现这样可以避免退出时崩溃的概率。
|
||||||
|
|
||||||
|
5、发布稍微稳定的版本V1.0.0.1。
|
||||||
|
|||||||
@@ -48,6 +48,8 @@
|
|||||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PreprocessorDefinitions>ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
@@ -64,6 +66,7 @@
|
|||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
|||||||
@@ -44,6 +44,8 @@
|
|||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
@@ -56,6 +58,7 @@
|
|||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
|||||||
@@ -53,6 +53,8 @@
|
|||||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PreprocessorDefinitions>_CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
@@ -69,6 +71,7 @@
|
|||||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>./;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>_CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ CMy2015RemoteApp::CMy2015RemoteApp()
|
|||||||
|
|
||||||
// TODO: <20>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬
|
// TODO: <20>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> InitInstance <20><>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> InitInstance <20><>
|
||||||
|
m_Mutex = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -75,6 +76,14 @@ CMy2015RemoteApp theApp;
|
|||||||
|
|
||||||
BOOL CMy2015RemoteApp::InitInstance()
|
BOOL CMy2015RemoteApp::InitInstance()
|
||||||
{
|
{
|
||||||
|
m_Mutex = CreateMutex(NULL, FALSE, "YAMA.EXE");
|
||||||
|
if (ERROR_ALREADY_EXISTS == GetLastError())
|
||||||
|
{
|
||||||
|
CloseHandle(m_Mutex);
|
||||||
|
m_Mutex = NULL;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
SetUnhandledExceptionFilter(&whenbuged);
|
SetUnhandledExceptionFilter(&whenbuged);
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows XP <20>ϵ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>嵥ָ<E5B5A5><D6B8>Ҫ
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows XP <20>ϵ<EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>嵥ָ<E5B5A5><D6B8>Ҫ
|
||||||
@@ -128,3 +137,15 @@ BOOL CMy2015RemoteApp::InitInstance()
|
|||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>á<EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>á<EFBFBD>
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CMy2015RemoteApp::ExitInstance()
|
||||||
|
{
|
||||||
|
if (m_Mutex)
|
||||||
|
{
|
||||||
|
CloseHandle(m_Mutex);
|
||||||
|
m_Mutex = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CWinApp::ExitInstance();
|
||||||
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ class CMy2015RemoteApp : public CWinApp
|
|||||||
public:
|
public:
|
||||||
CMy2015RemoteApp();
|
CMy2015RemoteApp();
|
||||||
iniFile m_iniFile;
|
iniFile m_iniFile;
|
||||||
|
HANDLE m_Mutex;
|
||||||
// <20><>д
|
// <20><>д
|
||||||
public:
|
public:
|
||||||
virtual BOOL InitInstance();
|
virtual BOOL InitInstance();
|
||||||
@@ -27,6 +28,7 @@ public:
|
|||||||
// ʵ<><CAB5>
|
// ʵ<><CAB5>
|
||||||
|
|
||||||
DECLARE_MESSAGE_MAP()
|
DECLARE_MESSAGE_MAP()
|
||||||
|
virtual int ExitInstance();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern CMy2015RemoteApp theApp;
|
extern CMy2015RemoteApp theApp;
|
||||||
Binary file not shown.
@@ -54,6 +54,8 @@
|
|||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<MinimalRebuild>false</MinimalRebuild>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
@@ -76,10 +78,12 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
<Optimization>MaxSpeed</Optimization>
|
<Optimization>MinSpace</Optimization>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||||
|
<StringPooling>true</StringPooling>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
|||||||
@@ -129,27 +129,6 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent /*=NULL*/)
|
|||||||
|
|
||||||
CMy2015RemoteDlg::~CMy2015RemoteDlg()
|
CMy2015RemoteDlg::~CMy2015RemoteDlg()
|
||||||
{
|
{
|
||||||
Sleep(200);
|
|
||||||
EnterCriticalSection(&m_cs);
|
|
||||||
for (std::vector<CFileManagerDlg *>::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;
|
|
||||||
}
|
|
||||||
for (std::vector<CRegisterDlg *>::iterator iter = v_RegDlg.begin();
|
|
||||||
iter != v_RegDlg.end(); ++iter)
|
|
||||||
{
|
|
||||||
CRegisterDlg *cur = *iter;
|
|
||||||
::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
|
||||||
while (false == cur->m_bIsClosed)
|
|
||||||
Sleep(1);
|
|
||||||
delete cur;
|
|
||||||
}
|
|
||||||
LeaveCriticalSection(&m_cs);
|
|
||||||
DeleteCriticalSection(&m_cs);
|
DeleteCriticalSection(&m_cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,6 +241,7 @@ VOID CMy2015RemoteDlg::CreatStatusBar()
|
|||||||
|
|
||||||
VOID CMy2015RemoteDlg::CreateNotifyBar()
|
VOID CMy2015RemoteDlg::CreateNotifyBar()
|
||||||
{
|
{
|
||||||
|
#if SHOW_NOTIFY
|
||||||
m_Nid.cbSize = sizeof(NOTIFYICONDATA); //<2F><>С<EFBFBD><D0A1>ֵ
|
m_Nid.cbSize = sizeof(NOTIFYICONDATA); //<2F><>С<EFBFBD><D0A1>ֵ
|
||||||
m_Nid.hWnd = m_hWnd; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>CWnd<6E><64><EFBFBD><EFBFBD>
|
m_Nid.hWnd = m_hWnd; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>CWnd<6E><64><EFBFBD><EFBFBD>
|
||||||
m_Nid.uID = IDR_MAINFRAME; //icon ID
|
m_Nid.uID = IDR_MAINFRAME; //icon ID
|
||||||
@@ -271,6 +251,7 @@ VOID CMy2015RemoteDlg::CreateNotifyBar()
|
|||||||
CString strTips ="<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Զ<><D4B6>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
CString strTips ="<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Զ<><D4B6>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||||
lstrcpyn(m_Nid.szTip, (LPCSTR)strTips, sizeof(m_Nid.szTip) / sizeof(m_Nid.szTip[0]));
|
lstrcpyn(m_Nid.szTip, (LPCSTR)strTips, sizeof(m_Nid.szTip) / sizeof(m_Nid.szTip[0]));
|
||||||
Shell_NotifyIcon(NIM_ADD, &m_Nid); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
Shell_NotifyIcon(NIM_ADD, &m_Nid); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID CMy2015RemoteDlg::CreateToolBar()
|
VOID CMy2015RemoteDlg::CreateToolBar()
|
||||||
@@ -438,6 +419,10 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
|
|||||||
|
|
||||||
ListenPort();
|
ListenPort();
|
||||||
|
|
||||||
|
#if !SHOW_NOTIFY
|
||||||
|
ShowWindow(SW_SHOW);
|
||||||
|
#endif
|
||||||
|
|
||||||
return TRUE; // <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TRUE
|
return TRUE; // <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TRUE
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -448,6 +433,12 @@ void CMy2015RemoteDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
|||||||
CAboutDlg dlgAbout;
|
CAboutDlg dlgAbout;
|
||||||
dlgAbout.DoModal();
|
dlgAbout.DoModal();
|
||||||
}
|
}
|
||||||
|
#if !SHOW_NOTIFY
|
||||||
|
else if(nID == SC_CLOSE || nID == SC_MINIMIZE)
|
||||||
|
{
|
||||||
|
ShowWindow(SW_HIDE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CDialogEx::OnSysCommand(nID, lParam);
|
CDialogEx::OnSysCommand(nID, lParam);
|
||||||
@@ -596,8 +587,34 @@ void CMy2015RemoteDlg::OnClose()
|
|||||||
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
|
||||||
KillTimer(0);
|
KillTimer(0);
|
||||||
|
|
||||||
|
#if SHOW_NOTIFY
|
||||||
Shell_NotifyIcon(NIM_DELETE, &m_Nid);
|
Shell_NotifyIcon(NIM_DELETE, &m_Nid);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
EnterCriticalSection(&m_cs);
|
||||||
|
for (std::vector<CFileManagerDlg *>::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;
|
||||||
|
}
|
||||||
|
for (std::vector<CRegisterDlg *>::iterator iter = v_RegDlg.begin();
|
||||||
|
iter != v_RegDlg.end(); ++iter)
|
||||||
|
{
|
||||||
|
CRegisterDlg *cur = *iter;
|
||||||
|
::SendMessage(cur->GetSafeHwnd(), WM_CLOSE, 0, 0);
|
||||||
|
while (false == cur->m_bIsClosed)
|
||||||
|
Sleep(1);
|
||||||
|
delete cur;
|
||||||
|
}
|
||||||
|
LeaveCriticalSection(&m_cs);
|
||||||
|
|
||||||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Sleep<65><70><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ⲻ<EFBFBD><E2B2BB><EFBFBD>˳<EFBFBD>ʱ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IOCP<43><50>Ҫ<EFBFBD><D2AA><EFBFBD>ظ<EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD>
|
||||||
|
ShowWindow(SW_HIDE);
|
||||||
|
Sleep(500);
|
||||||
|
|
||||||
if (m_iocpServer!=NULL)
|
if (m_iocpServer!=NULL)
|
||||||
{
|
{
|
||||||
@@ -788,13 +805,13 @@ void CMy2015RemoteDlg::OnMainExit()
|
|||||||
|
|
||||||
VOID CMy2015RemoteDlg::ListenPort()
|
VOID CMy2015RemoteDlg::ListenPort()
|
||||||
{
|
{
|
||||||
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "ListenPort");
|
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "ghost");
|
||||||
//<2F><>ȡini <20>ļ<EFBFBD><C4BC>еļ<D0B5><C4BC><EFBFBD><EFBFBD>˿<EFBFBD>
|
//<2F><>ȡini <20>ļ<EFBFBD><C4BC>еļ<D0B5><C4BC><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||||
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "MaxConnection");
|
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
|
||||||
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
if (nPort == 0)
|
if (nPort<=0 || nPort>65535)
|
||||||
nPort = 2356;
|
nPort = 6543;
|
||||||
if (nMaxConnection == 0)
|
if (nMaxConnection <= 0)
|
||||||
nMaxConnection = 10000;
|
nMaxConnection = 10000;
|
||||||
Activate(nPort,nMaxConnection); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
Activate(nPort,nMaxConnection); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,13 @@
|
|||||||
#include "TrueColorToolBar.h"
|
#include "TrueColorToolBar.h"
|
||||||
#include "IOCPServer.h"
|
#include "IOCPServer.h"
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||||
|
// <20>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
|
#define SHOW_NOTIFY 1
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
typedef struct _LOGIN_INFOR
|
typedef struct _LOGIN_INFOR
|
||||||
{
|
{
|
||||||
BYTE bToken; // = 1 //<2F><>½<EFBFBD><C2BD>Ϣ
|
BYTE bToken; // = 1 //<2F><>½<EFBFBD><C2BD>Ϣ
|
||||||
@@ -63,7 +70,9 @@ public:
|
|||||||
|
|
||||||
CStatusBar m_StatusBar; //״̬<D7B4><CCAC>
|
CStatusBar m_StatusBar; //״̬<D7B4><CCAC>
|
||||||
CTrueColorToolBar m_ToolBar;
|
CTrueColorToolBar m_ToolBar;
|
||||||
|
#if SHOW_NOTIFY
|
||||||
NOTIFYICONDATA m_Nid;
|
NOTIFYICONDATA m_Nid;
|
||||||
|
#endif
|
||||||
CRITICAL_SECTION m_cs;
|
CRITICAL_SECTION m_cs;
|
||||||
|
|
||||||
UINT m_iCount;
|
UINT m_iCount;
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ IOCPServer::IOCPServer(void)
|
|||||||
m_hListenEvent = WSA_INVALID_EVENT;
|
m_hListenEvent = WSA_INVALID_EVENT;
|
||||||
m_hListenThread = INVALID_HANDLE_VALUE;
|
m_hListenThread = INVALID_HANDLE_VALUE;
|
||||||
|
|
||||||
m_ulMaxConnections = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "MaxConnection");
|
m_ulMaxConnections = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
|
||||||
|
|
||||||
if (m_ulMaxConnections==0)
|
if (m_ulMaxConnections<=0)
|
||||||
{
|
{
|
||||||
m_ulMaxConnections = 100;
|
m_ulMaxConnections = 10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
InitializeCriticalSection(&m_cs);
|
InitializeCriticalSection(&m_cs);
|
||||||
|
|||||||
@@ -44,12 +44,12 @@ BOOL CSettingDlg::OnInitDialog()
|
|||||||
{
|
{
|
||||||
CDialog::OnInitDialog();
|
CDialog::OnInitDialog();
|
||||||
|
|
||||||
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "ListenPort");
|
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "ghost");
|
||||||
//<2F><>ȡini <20>ļ<EFBFBD><C4BC>еļ<D0B5><C4BC><EFBFBD><EFBFBD>˿<EFBFBD>
|
//<2F><>ȡini <20>ļ<EFBFBD><C4BC>еļ<D0B5><C4BC><EFBFBD><EFBFBD>˿<EFBFBD>
|
||||||
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("Settings", "MaxConnection");
|
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
|
||||||
|
|
||||||
m_nListenPort = nPort;
|
m_nListenPort = (nPort<=0 || nPort>65535) ? 6543 : nPort;
|
||||||
m_nMax_Connect = nMaxConnection;
|
m_nMax_Connect = nMaxConnection<=0 ? 10000 : nMaxConnection;
|
||||||
|
|
||||||
UpdateData(FALSE);
|
UpdateData(FALSE);
|
||||||
|
|
||||||
@@ -60,9 +60,9 @@ BOOL CSettingDlg::OnInitDialog()
|
|||||||
void CSettingDlg::OnBnClickedButtonSettingapply()
|
void CSettingDlg::OnBnClickedButtonSettingapply()
|
||||||
{
|
{
|
||||||
UpdateData(TRUE);
|
UpdateData(TRUE);
|
||||||
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("Settings", "ListenPort", m_nListenPort);
|
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("settings", "ghost", m_nListenPort);
|
||||||
//<2F><>ini<6E>ļ<EFBFBD><C4BC><EFBFBD>д<EFBFBD><D0B4>ֵ
|
//<2F><>ini<6E>ļ<EFBFBD><C4BC><EFBFBD>д<EFBFBD><D0B4>ֵ
|
||||||
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("Settings", "MaxConnection", m_nMax_Connect);
|
((CMy2015RemoteApp *)AfxGetApp())->m_iniFile.SetInt("settings", "MaxConnection", m_nMax_Connect);
|
||||||
|
|
||||||
m_ApplyButton.EnableWindow(FALSE);
|
m_ApplyButton.EnableWindow(FALSE);
|
||||||
m_ApplyButton.ShowWindow(SW_HIDE);
|
m_ApplyButton.ShowWindow(SW_HIDE);
|
||||||
|
|||||||
@@ -8,53 +8,26 @@ iniFile::iniFile(void)
|
|||||||
|
|
||||||
BOOL iniFile::ContructIniFile()
|
BOOL iniFile::ContructIniFile()
|
||||||
{
|
{
|
||||||
char szFilePath[MAX_PATH] = {0};
|
char szFilePath[MAX_PATH] = {0}, *p = szFilePath;
|
||||||
char* FindPoint = NULL;
|
|
||||||
|
|
||||||
::GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
|
::GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
|
||||||
|
while (*p) ++p;
|
||||||
|
while ('\\' != *p) --p;
|
||||||
|
strcpy(p+1, "settings.ini");
|
||||||
|
|
||||||
FindPoint = strrchr(szFilePath,'.');
|
m_IniFilePath = szFilePath;
|
||||||
if (FindPoint!=NULL)
|
|
||||||
{
|
|
||||||
*FindPoint = '\0';
|
|
||||||
strcat(szFilePath,".ini");
|
|
||||||
}
|
|
||||||
|
|
||||||
m_IniFilePath = szFilePath; //<2F><>ֵ<EFBFBD><D6B5><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> <20>鿴 һ<><D2BB><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD> IniFileName
|
|
||||||
|
|
||||||
HANDLE hFile = CreateFileA(m_IniFilePath,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); //ͬ<><CDAC> <20>첽
|
|
||||||
|
|
||||||
if (hFile==INVALID_HANDLE_VALUE)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
ULONG ulLow = GetFileSize(hFile,NULL);
|
|
||||||
|
|
||||||
if (ulLow>0)
|
|
||||||
{
|
|
||||||
CloseHandle(hFile);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseHandle(hFile);
|
|
||||||
|
|
||||||
WritePrivateProfileString("Settings", "ListenPort","2356",m_IniFilePath);
|
|
||||||
WritePrivateProfileString("Settings", "MaxConnection","10000",m_IniFilePath);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int iniFile::GetInt(CString MainKey,CString SubKey) //"Setting" "ListenPort"
|
int iniFile::GetInt(CString MainKey,CString SubKey)
|
||||||
{
|
{
|
||||||
return ::GetPrivateProfileInt(MainKey, SubKey,0,m_IniFilePath);
|
return ::GetPrivateProfileInt(MainKey, SubKey,0,m_IniFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL iniFile::SetInt(CString MainKey,CString SubKey,int Data)//8888
|
BOOL iniFile::SetInt(CString MainKey,CString SubKey,int Data)
|
||||||
{
|
{
|
||||||
CString strData;
|
CString strData;
|
||||||
strData.Format("%d", Data); //2356
|
strData.Format("%d", Data);
|
||||||
return ::WritePrivateProfileString(MainKey, SubKey,strData,m_IniFilePath);
|
return ::WritePrivateProfileString(MainKey, SubKey,strData,m_IniFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
class iniFile
|
class iniFile
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BOOL iniFile::ContructIniFile();
|
BOOL ContructIniFile();
|
||||||
int iniFile::GetInt(CString MainKey,CString SubKey);
|
int GetInt(CString MainKey,CString SubKey);
|
||||||
BOOL iniFile::SetInt(CString MainKey,CString SubKey,int Data);
|
BOOL SetInt(CString MainKey,CString SubKey,int Data);
|
||||||
CString m_IniFilePath;
|
CString m_IniFilePath;
|
||||||
iniFile(void);
|
iniFile(void);
|
||||||
~iniFile(void);
|
~iniFile(void);
|
||||||
|
|||||||
@@ -13,6 +13,9 @@
|
|||||||
#define VC_EXTRALEAN // <20><> Windows ͷ<><CDB7><EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
#define VC_EXTRALEAN // <20><> Windows ͷ<><CDB7><EFBFBD>ų<EFBFBD><C5B3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// <20>Ƴ<EFBFBD><C6B3>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>MFC<46>ؼ<EFBFBD><D8BC><EFBFBD>֧<EFBFBD>֣<EFBFBD><D6A3><EFBFBD>С<EFBFBD><D0A1>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С
|
||||||
|
#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS
|
||||||
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>й©<D0B9><C2A9><EFBFBD>谲װVLD<4C><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>й©<D0B9><C2A9><EFBFBD>谲װVLD<4C><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
|
||||||
#include "vld.h"
|
#include "vld.h"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user