2019-01-05 20:21:43 +08:00
// stdafx.h : <20> <> ϵͳ<CFB5> <CDB3> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> İ<EFBFBD> <C4B0> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD>
// <20> <> <EFBFBD> Ǿ<EFBFBD> <C7BE> <EFBFBD> ʹ <EFBFBD> õ<EFBFBD> <C3B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ĵ<EFBFBD>
// <20> ض<EFBFBD> <D8B6> <EFBFBD> <EFBFBD> <EFBFBD> Ŀ<EFBFBD> İ<EFBFBD> <C4B0> <EFBFBD> <EFBFBD> ļ<EFBFBD>
# pragma once
2024-12-27 19:18:44 +08:00
# include "common/commands.h"
2019-09-07 10:47:50 +08:00
// ʹ <> <CAB9> ѹ<EFBFBD> <D1B9> <EFBFBD> 㷨<EFBFBD> <E3B7A8> <EFBFBD> 㷨<EFBFBD> <E3B7A8> Ҫ<EFBFBD> <D2AA> clien<65> <6E> stdafx.hƥ<68> <C6A5>
# define USING_COMPRESS 1
2019-01-17 20:41:51 +08:00
// <20> Ƿ<EFBFBD> ʹ <EFBFBD> <CAB9> ZLIB
2025-01-15 18:49:15 +08:00
# define USING_ZLIB 0
2019-01-17 11:58:26 +08:00
2019-01-17 20:41:51 +08:00
# if !USING_ZLIB
// <20> Ƿ<EFBFBD> ʹ <EFBFBD> <CAB9> LZ4
2025-01-15 18:49:15 +08:00
# define USING_LZ4 0
2025-02-07 18:59:15 +08:00
# if !USING_LZ4
# define USING_ZSTD 1
2025-02-25 03:20:32 +08:00
# define USING_CTX 0
2025-02-07 18:59:15 +08:00
# endif
2019-01-17 20:41:51 +08:00
# endif
2019-01-05 20:21:43 +08:00
# ifndef _SECURE_ATL
# define _SECURE_ATL 1
# endif
# ifndef VC_EXTRALEAN
# define VC_EXTRALEAN // <20> <> Windows ͷ<> <CDB7> <EFBFBD> ų<EFBFBD> <C5B3> <EFBFBD> <EFBFBD> <EFBFBD> ʹ <EFBFBD> õ<EFBFBD> <C3B5> <EFBFBD> <EFBFBD> <EFBFBD>
# endif
2025-01-15 18:49:15 +08:00
# ifdef _DEBUG
# define Mprintf(format, ...) printf(format, ##__VA_ARGS__)
# else
# define Mprintf(format, ...)
# endif
2019-01-13 00:04:50 +08:00
// <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
2019-01-13 13:13:59 +08:00
// <20> رնԻ<D5B6> <D4BB> <EFBFBD> ʱɾ<CAB1> <C9BE> <EFBFBD> Ի<EFBFBD> <D4BB> <EFBFBD>
# define CLOSE_DELETE_DLG 0
2019-01-05 20:21:43 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ڴ<EFBFBD> й©<D0B9> <C2A9> <EFBFBD> 谲װVLD<4C> <44> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ע<EFBFBD> ʹ <EFBFBD> <CDB4> <EFBFBD>
2024-09-06 15:59:24 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> װ<EFBFBD> <D7B0> VLD, <20> 뽫<EFBFBD> <EBBDAB> װ·<D7B0> <C2B7> <EFBFBD> <EFBFBD> <EFBFBD> ӵ<EFBFBD> <D3B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : <20> <> <EFBFBD> <EFBFBD> Ϊ"VLDPATH", ·<> <C2B7> Ϊ"D:\Program Files (x86)\Visual Leak Detector"
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʵ<EFBFBD> ʰ<EFBFBD> װĿ¼<C4BF> <C2BC> дVLDPATH. <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ֶ<EFBFBD> <D6B6> ༭ÿ<E0BCAD> <C3BF> <EFBFBD> <EFBFBD> Ŀ<EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> ͷ<EFBFBD> ļ<EFBFBD> Ŀ¼<C4BF> Ϳ <EFBFBD> Ŀ¼. <20> й<EFBFBD> <D0B9> <EFBFBD> <EFBFBD> <EFBFBD> VLD<4C> <44> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> <EFBFBD> ο <EFBFBD> <CEBF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
// VS2017<31> <37> ǰ<EFBFBD> 汾<EFBFBD> <E6B1BE> VLD: https://kinddragon.github.io/vld
// VS2019ʹ <39> õ<EFBFBD> VLD<4C> <44> ֧<EFBFBD> <D6A7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> VS<56> 汾, <20> Ƽ <EFBFBD> <C6BC> <EFBFBD> : https://github.com/oneiric/vld/releases/tag/v2.7.0
// <20> <> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> ܿض˳<D8B6> <CBB3> <EFBFBD> <EFBFBD> ŵ<EFBFBD> <C5B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> ʹ <EFBFBD> <CAB9> Releaseģʽ <C4A3> <CABD> <EFBFBD> ɵij<C9B5> <C4B3> <EFBFBD> , <20> Խ<EFBFBD> <D4BD> <EFBFBD> <EFBFBD> <EFBFBD> VLD<4C> <44> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ; <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> VLD<4C> <44> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> һ ͬ<D2BB> <CDAC> <EFBFBD> <EFBFBD> .
2024-12-29 23:33:33 +08:00
// <20> <> <EFBFBD> <EFBFBD> VLD<4C> <44> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> й¶<D0B9> <C2B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ٲ<EFBFBD> <D9B2> ˺<EFBFBD> <CBBA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ö<EFBFBD> ջ<EFBFBD> <D5BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʹ <EFBFBD> ÷<EFBFBD> <C3B7> ŷ<EFBFBD> <C5B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> ء<EFBFBD> <D8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Գ<EFBFBD> <D4B3> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// ȷ<> <C8B7> <EFBFBD> <EFBFBD> <EFBFBD> ĵ<EFBFBD> <C4B5> Թ<EFBFBD> <D4B9> ߣ<EFBFBD> <DFA3> <EFBFBD> Visual Studio <20> <> WinDbg<62> <67> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˷<EFBFBD> <CBB7> ŷ<EFBFBD> <C5B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> ŷ<EFBFBD> <C5B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> ȱʧ<C8B1> ķ<EFBFBD> <C4B7> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> dbghelp.pdb<64> <62> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 仺<EFBFBD> 浽<EFBFBD> <E6B5BD> <EFBFBD> ط<EFBFBD> <D8B7> <EFBFBD> ·<EFBFBD> <C2B7> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> ÷<EFBFBD> <C3B7> ŷ<EFBFBD> <C5B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Visual Studio Ϊ<> <CEAA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Visual Studio <20> У <EFBFBD> <D0A3> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> > ѡ <> <D1A1> > <20> <> <EFBFBD> š<EFBFBD>
// <20> <> ѡ Microsoft Symbol Servers. ָ<> <D6B8> <EFBFBD> <EFBFBD> <EFBFBD> Ż<EFBFBD> <C5BB> <EFBFBD> Ŀ¼<C4BF> <C2BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> "C:\Symbols"<22> <>
// <20> <> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> ȱʧ<C8B1> ķ<EFBFBD> <C4B7> ţ<EFBFBD> <C5A3> <EFBFBD> dbghelp.pdb<64> <62> <EFBFBD> <EFBFBD> <EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> ص<EFBFBD> <D8B5> <EFBFBD> <EFBFBD> <EFBFBD> Ŀ¼<C4BF> <C2BC>
2019-01-05 20:21:43 +08:00
# include "vld.h"
# include "targetver.h"
# define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // ijЩ CString <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʽ <EFBFBD> <CABD>
// <20> ر<EFBFBD> MFC <20> <> ijЩ<C4B3> <D0A9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɷ<EFBFBD> <C9B7> ĺ<EFBFBD> <C4BA> Եľ<D4B5> <C4BE> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
# define _AFX_ALL_WARNINGS
# include <afxwin.h> // MFC <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͱ<EFBFBD> <EFBFBD> <D7BC> <EFBFBD> <EFBFBD>
# include <afxext.h> // MFC <20> <> չ
# include <afxdisp.h> // MFC <20> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD>
# ifndef _AFX_NO_OLE_SUPPORT
# include <afxdtctl.h> // MFC <20> <> Internet Explorer 4 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> <D8BC> <EFBFBD> ֧<EFBFBD> <D6A7>
# endif
# ifndef _AFX_NO_AFXCMN_SUPPORT
# include <afxcmn.h> // MFC <20> <> Windows <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ؼ<EFBFBD> <D8BC> <EFBFBD> ֧<EFBFBD> <D6A7>
# endif // _AFX_NO_AFXCMN_SUPPORT
# include <afxcontrolbars.h> // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϳ ؼ<CDBF> <D8BC> <EFBFBD> <EFBFBD> <EFBFBD> MFC ֧<> <D6A7>
# define WM_USERTOONLINELIST WM_USER + 3000
# define WM_OPENSCREENSPYDIALOG WM_USER + 3001
# define WM_OPENFILEMANAGERDIALOG WM_USER + 3002
# define WM_OPENTALKDIALOG WM_USER+3003
# define WM_OPENSHELLDIALOG WM_USER+3004
# define WM_OPENSYSTEMDIALOG WM_USER+3005
# define WM_OPENAUDIODIALOG WM_USER+3006
# define WM_OPENSERVICESDIALOG WM_USER+3007
# define WM_OPENREGISTERDIALOG WM_USER+3008
# define WM_OPENWEBCAMDIALOG WM_USER+3009
# define WM_USEROFFLINEMSG WM_USER+3010
enum
{
FILEMANAGER_DLG = 1 ,
SCREENSPY_DLG ,
VIDEO_DLG ,
AUDIO_DLG ,
KEYBOARD_DLG ,
SYSTEM_DLG ,
SHELL_DLG ,
SERVICES_DLG ,
REGISTER_DLG ,
TALK_DLG ,
MONITOR_DLG
} ;
# ifdef _UNICODE
# if defined _M_IX86
# pragma comment(linker," / manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
# elif defined _M_X64
# pragma comment(linker," / manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
# else
# pragma comment(linker," / manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
# endif
# endif
# include <assert.h>
# include <MMSystem.h>
# pragma comment(lib, "winmm.lib")
// <20> ߾<EFBFBD> <DFBE> ȵ<EFBFBD> ˯<EFBFBD> ߺ <EFBFBD> <DFBA> <EFBFBD>
# define Sleep_m(ms) { timeBeginPeriod(1); Sleep(ms); timeEndPeriod(1); }
// <20> Բ<EFBFBD> <D4B2> <EFBFBD> n<EFBFBD> <6E> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> C<EFBFBD> µȴ<C2B5> T<EFBFBD> <54> (n<> Dz<EFBFBD> <C7B2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 1000)
# define WAIT_n(C, T, n) {assert(!(1000%(n)));int s=(1000*(T)) / (n);do{Sleep(n);}while((C)&&(--s));}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> C<EFBFBD> <43> <EFBFBD> <EFBFBD> ʱ<EFBFBD> ȴ<EFBFBD> T<EFBFBD> <54> (<28> <> <EFBFBD> <EFBFBD> 10ms)
# define WAIT(C, T) { timeBeginPeriod(1); WAIT_n(C, T, 10); timeEndPeriod(1); }
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> C<EFBFBD> <43> <EFBFBD> <EFBFBD> ʱ<EFBFBD> ȴ<EFBFBD> T<EFBFBD> <54> (<28> <> <EFBFBD> <EFBFBD> 1ms)
# define WAIT_1(C, T) { timeBeginPeriod(1); WAIT_n(C, T, 1); timeEndPeriod(1); }
2019-01-10 19:35:03 +08:00
// <20> <> <EFBFBD> ܼ<EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㺯<EFBFBD> <E3BAAF> <EFBFBD> ĺ<EFBFBD> ʱ
class auto_tick
{
private :
const char * func ;
2019-09-07 10:47:50 +08:00
int span ;
2019-01-10 19:35:03 +08:00
clock_t tick ;
__inline clock_t now ( ) const { return clock ( ) ; }
2019-09-07 10:47:50 +08:00
__inline int time ( ) const { return now ( ) - tick ; }
2019-01-10 19:35:03 +08:00
public :
2019-09-07 10:47:50 +08:00
auto_tick ( const char * func_name , int th = 5 ) : func ( func_name ) , span ( th ) , tick ( now ( ) ) { }
~ auto_tick ( ) { stop ( ) ; }
__inline void stop ( ) {
if ( span ! = 0 ) { int s ( this - > time ( ) ) ; if ( s > span ) TRACE ( " [%s]ִ<> <D6B4> ʱ<EFBFBD> <CAB1> : [%d]ms. \n " , func , s ) ; span = 0 ; }
}
2019-01-10 19:35:03 +08:00
} ;
# ifdef _DEBUG
// <20> <> <EFBFBD> ܼ<EFBFBD> <DCBC> 㵱ǰ<E3B5B1> <C7B0> <EFBFBD> <EFBFBD> <EFBFBD> ĺ<EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> ӡ
2019-01-20 20:04:11 +08:00
# define AUTO_TICK(thresh) auto_tick TICK(__FUNCTION__, thresh)
2019-09-07 10:47:50 +08:00
# define STOP_TICK TICK.stop()
2019-01-10 19:35:03 +08:00
# else
# define AUTO_TICK(thresh)
2019-09-07 10:47:50 +08:00
# define STOP_TICK
2019-01-10 19:35:03 +08:00
# endif