Files
SimpleRemoter/server/2015Remote/2015RemoteDlg.cpp

1752 lines
46 KiB
C++
Raw Normal View History

// 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"
#include <vector>
2025-01-31 22:22:16 +08:00
#include "KeyBoardDlg.h"
#include "InputDlg.h"
#include "CPasswordDlg.h"
#include "pwd_gen.h"
#include "DateVerify.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define UM_ICONNOTIFY WM_USER+100
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>)
ONLINELIST_PING, //PING(<28>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
ONLINELIST_VERSION, // <20><EFBFBD><E6B1BE>Ϣ
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>
ONLINELIST_MAX,
};
typedef struct
{
const char* szTitle; //<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int nWidth; //<2F>б<EFBFBD><D0B1>Ŀ<EFBFBD><C4BF><EFBFBD>
}COLUMNSTRUCT;
const int g_Column_Count_Online = ONLINELIST_MAX; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COLUMNSTRUCT g_Column_Data_Online[g_Column_Count_Online] =
{
{"IP", 148 },
{"<EFBFBD>˿<EFBFBD>", 64 },
{"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>ע", 160 },
{"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ", 256 },
{"CPU", 80 },
{"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ", 72 },
{"PING", 100 },
{"<EFBFBD>", 80 },
{"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 150 },
2024-12-29 01:09:06 +08:00
{"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 50 },
};
// <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3>򡰹<EFBFBD><F2A1B0B9>ڡ<EFBFBD><DAA1>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD> CAboutDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
const int g_Column_Count_Message = 3; // <20>б<EFBFBD><D0B1>ĸ<EFBFBD><C4B8><EFBFBD>
COLUMNSTRUCT g_Column_Data_Message[g_Column_Count_Message] =
{
{"<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 200 },
{"ʱ<EFBFBD><EFBFBD>", 200 },
{"<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 490 }
};
int g_Column_Online_Width = 0;
int g_Column_Message_Width = 0;
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>
CMy2015RemoteDlg::CMy2015RemoteDlg(IOCPServer* iocpServer, CWnd* pParent): CDialogEx(CMy2015RemoteDlg::IDD, pParent)
{
m_iocpServer = iocpServer;
m_hExit = CreateEvent(NULL, TRUE, FALSE, NULL);
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_bmOnline[0].LoadBitmap(IDB_BITMAP_ONLINE);
m_bmOnline[1].LoadBitmap(IDB_BITMAP_UPDATE);
m_bmOnline[2].LoadBitmap(IDB_BITMAP_DELETE);
m_bmOnline[3].LoadBitmap(IDB_BITMAP_SHARE);
InitializeCriticalSection(&m_cs);
}
CMy2015RemoteDlg::~CMy2015RemoteDlg()
{
DeleteCriticalSection(&m_cs);
for (int i = 0; i < PAYLOAD_MAXTYPE; i++)
SAFE_DELETE(m_ServerDLL[i]);
}
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)
ON_NOTIFY(HDN_ITEMCLICK, 0, &CMy2015RemoteDlg::OnHdnItemclickList)
ON_COMMAND(ID_ONLINE_MESSAGE, &CMy2015RemoteDlg::OnOnlineMessage)
ON_COMMAND(ID_ONLINE_DELETE, &CMy2015RemoteDlg::OnOnlineDelete)
ON_COMMAND(ID_ONLINE_UPDATE, &CMy2015RemoteDlg::OnOnlineUpdate)
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)
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)
ON_MESSAGE(WM_HANDLEMESSAGE, OnHandleMessage)
2025-01-31 22:22:16 +08:00
ON_MESSAGE(WM_OPENKEYBOARDDIALOG, OnOpenKeyboardDialog)
ON_WM_HELPINFO()
ON_COMMAND(ID_ONLINE_SHARE, &CMy2015RemoteDlg::OnOnlineShare)
ON_COMMAND(ID_TOOL_AUTH, &CMy2015RemoteDlg::OnToolAuth)
END_MESSAGE_MAP()
// CMy2015RemoteDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CMy2015RemoteDlg::OnIconNotify(WPARAM wParam, LPARAM lParam)
{
switch ((UINT)lParam)
{
case WM_LBUTTONDOWN:
{
if (IsIconic())
{
ShowWindow(SW_SHOW);
break;
}
ShowWindow(IsWindowVisible() ? SW_HIDE : SW_SHOW);
SetForegroundWindow();
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()
{
HMENU hMenu = LoadMenu(NULL,MAKEINTRESOURCE(IDR_MENU_MAIN)); //<2F><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>Դ
::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>
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]));
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>");
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)
{
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)
{
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>...");
}
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;
}
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;
}
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)
{
EnterCriticalSection(&m_cs);
2025-02-06 04:15:34 +08:00
if (IsExitItem(m_CList_Online, (ULONG_PTR)ContextObject)) {
LeaveCriticalSection(&m_cs);
OutputDebugStringA(CString("===> '") + strIP + CString("' already exist!!\n"));
return;
}
//Ĭ<><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);
auto vec = SplitCString(tp.IsEmpty() ? "DLL" : tp);
tp = vec[0];
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);
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);
CString data[10] = { strIP, strAddr,strPCName,strOS,strCPU,strVideo,strPing,ver,st,tp };
ContextObject->SetClientInfo(data);
m_CList_Online.SetItemData(i,(DWORD_PTR)ContextObject);
ShowMessage(true,strIP+"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
LeaveCriticalSection(&m_cs);
SendMasterSettings(ContextObject);
}
VOID CMy2015RemoteDlg::ShowMessage(BOOL bOk, CString strMsg)
{
CTime Timer = CTime::GetCurrentTime();
CString strTime= Timer.Format("%H:%M:%S");
CString strIsOK= bOk ? "ִ<EFBFBD>гɹ<EFBFBD>" : "ִ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
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;
EnterCriticalSection(&m_cs);
int m_iCount = m_CList_Online.GetItemCount();
LeaveCriticalSection(&m_cs);
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>
}
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;
}
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>
SetWindowText(_T("Yama"));
// 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);
}
}
m_ServerDLL[PAYLOAD_DLL_X86] = ReadKernelDll(false);
m_ServerDLL[PAYLOAD_DLL_X64] = ReadKernelDll(true);
// <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>
isClosed = FALSE;
g_2015RemoteDlg = this;
CreateToolBar();
InitControl();
CreatStatusBar();
CreateNotifyBar();
CreateSolidMenu();
if (!ListenPort()) {
OnCancel();
return FALSE;
}
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);
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;
}
EnterCriticalSection(&m_cs);
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>
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>
}
}
LeaveCriticalSection(&m_cs);
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>
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()
{
// <20><><EFBFBD>ش<EFBFBD><D8B4>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD>ǹر<C7B9>
ShowWindow(SW_HIDE);
OutputDebugStringA("======> Hide\n");
}
void CMy2015RemoteDlg::Release(){
OutputDebugStringA("======> Release\n");
isClosed = TRUE;
2021-03-14 12:15:53 +08:00
ShowWindow(SW_HIDE);
Shell_NotifyIcon(NIM_DELETE, &m_Nid);
2019-01-13 00:04:50 +08:00
BYTE bToken = CLIENT_EXIT_WITH_SERVER ? COMMAND_BYE : SERVER_EXIT;
EnterCriticalSection(&m_cs);
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));
}
LeaveCriticalSection(&m_cs);
Sleep(500);
if (m_iocpServer != NULL)
{
m_iocpServer->Destroy();
m_iocpServer = NULL;
}
g_2015RemoteDlg = NULL;
SetEvent(m_hExit);
CloseHandle(m_hExit);
m_hExit = NULL;
Sleep(500);
2019-09-07 10:47:50 +08:00
timeEndPeriod(1);
}
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;
}
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();
EnterCriticalSection(&m_cs);
int n = m_CList_Online.GetSelectedCount();
LeaveCriticalSection(&m_cs);
if (n == 0) //<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1>
{
2019-01-18 17:37:15 +08:00
for (int i = 0;i<iCount;++i)
{
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]);
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]);
Menu.SetMenuItemBitmaps(ID_ONLINE_SHARE, MF_BYCOMMAND, &m_bmOnline[3], &m_bmOnline[3]);
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));
}
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()
{
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;
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));
}
}
void CMy2015RemoteDlg::OnOnlineDelete()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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;
BYTE bToken = COMMAND_BYE; //<2F>򱻿ض˷<D8B6><CBB7><EFBFBD>һ<EFBFBD><D2BB>COMMAND_SYSTEM
SendSelectedCommand(&bToken, sizeof(BYTE)); //Context PreSending PostSending
EnterCriticalSection(&m_cs);
int iCount = m_CList_Online.GetSelectedCount();
for (int i=0;i<iCount;++i)
{
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
int iItem = m_CList_Online.GetNextSelectedItem(Pos);
CString strIP = m_CList_Online.GetItemText(iItem,ONLINELIST_IP);
m_CList_Online.DeleteItem(iItem);
strIP+="<EFBFBD>Ͽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
ShowMessage(true,strIP);
}
LeaveCriticalSection(&m_cs);
}
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()
{
int n = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "DXGI");
CString algo = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetStr("settings", "ScreenCompress", "");
BYTE bToken[32] = { COMMAND_SCREEN_SPY, n, algo.IsEmpty() ? ALGORITHM_DIFF : atoi(algo.GetString())};
SendSelectedCommand(bToken, sizeof(bToken));
}
VOID CMy2015RemoteDlg::OnOnlineFileManager()
{
BYTE bToken = COMMAND_LIST_DRIVE;
SendSelectedCommand(&bToken, sizeof(BYTE));
}
VOID CMy2015RemoteDlg::OnOnlineAudioManager()
{
BYTE bToken = COMMAND_AUDIO;
SendSelectedCommand(&bToken, sizeof(BYTE));
}
VOID CMy2015RemoteDlg::OnOnlineVideoManager()
{
BYTE bToken = COMMAND_WEBCAM;
SendSelectedCommand(&bToken, sizeof(BYTE));
}
VOID CMy2015RemoteDlg::OnOnlineServerManager()
{
BYTE bToken = COMMAND_SERVICES;
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));
}
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();
}
bool CMy2015RemoteDlg::CheckValid() {
DateVerify verify;
#ifdef _DEBUG
BOOL isTrail = verify.isTrail(0);
#else
BOOL isTrail = verify.isTrail(14);
#endif
if (!isTrail) {
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())
return false;
// <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);
return false;
}
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);
return false;
}
}
// <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);
return false;
}
if (dlg.m_sPassword != pwd)
THIS_APP->m_iniFile.SetStr(settings, pwdKey, dlg.m_sPassword);
}
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;
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CBuildDlg Dlg;
Dlg.m_strIP = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetStr("settings", "localIp", "");
int Port = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "ghost");
Dlg.m_strPort = Port <= 0 ? "6543" : std::to_string(Port).c_str();
Dlg.DoModal();
}
VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength)
{
EnterCriticalSection(&m_cs);
POSITION Pos = m_CList_Online.GetFirstSelectedItemPosition();
while(Pos)
{
int iItem = m_CList_Online.GetNextSelectedItem(Pos);
CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(iItem);
if (szBuffer[0]== COMMAND_WEBCAM && ContextObject->sClientInfo[ONLINELIST_VIDEO] == CString("<EFBFBD><EFBFBD>"))
{
continue;
}
// <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>ݰ<EFBFBD>
m_iocpServer->OnClientPreSending(ContextObject,szBuffer, ulLength);
}
LeaveCriticalSection(&m_cs);
}
//<2F><><EFBFBD><EFBFBD>Bar
VOID CMy2015RemoteDlg::OnAbout()
{
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>");
}
//<2F><><EFBFBD><EFBFBD>Menu
void CMy2015RemoteDlg::OnNotifyShow()
{
BOOL v= IsWindowVisible();
ShowWindow(v? SW_HIDE : SW_SHOW);
}
void CMy2015RemoteDlg::OnNotifyExit()
{
Release();
CDialogEx::OnOK(); // <20>رնԻ<D5B6><D4BB><EFBFBD>
}
//<2F><>̬<EFBFBD>˵<EFBFBD>
void CMy2015RemoteDlg::OnMainSet()
{
2024-12-31 03:11:26 +08:00
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
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);
}
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);
}
void CMy2015RemoteDlg::OnMainExit()
{
Release();
CDialogEx::OnOK(); // <20>رնԻ<D5B6><D4BB><EFBFBD>
}
BOOL CMy2015RemoteDlg::ListenPort()
{
int nPort = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "ghost");
//<2F><>ȡini <20>ļ<EFBFBD><C4BC>еļ<D0B5><C4BC><EFBFBD><EFBFBD>˿<EFBFBD>
int nMaxConnection = ((CMy2015RemoteApp*)AfxGetApp())->m_iniFile.GetInt("settings", "MaxConnection");
//<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)
nMaxConnection = 10000;
return Activate(nPort,nMaxConnection); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
}
BOOL CMy2015RemoteDlg::Activate(int nPort,int nMaxConnection)
{
assert(m_iocpServer);
UINT ret = 0;
if ( (ret=m_iocpServer->StartServer(NotifyProc, OfflineProc, nPort)) !=0 )
{
OutputDebugStringA("======> StartServer Failed \n");
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));
return FALSE;
}
CString strTemp;
strTemp.Format("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>: %d<>ɹ<EFBFBD>", nPort);
ShowMessage(true,strTemp);
return TRUE;
}
VOID CALLBACK CMy2015RemoteDlg::NotifyProc(CONTEXT_OBJECT* ContextObject)
{
if (!g_2015RemoteDlg)
return;
AUTO_TICK(50);
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;
}
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);
}
}
}
// <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)
{
if (!g_2015RemoteDlg)
return;
dlgInfo* dlg = ContextObject->v1 > 0 ? new dlgInfo(ContextObject->hDlg, ContextObject->v1) : NULL;
2025-02-06 04:15:34 +08:00
SOCKET nSocket = ContextObject->sClientSocket;
g_2015RemoteDlg->PostMessage(WM_USEROFFLINEMSG, (WPARAM)dlg, (LPARAM)nSocket);
ContextObject->v1 = 0;
}
LRESULT CMy2015RemoteDlg::OnHandleMessage(WPARAM wParam, LPARAM lParam) {
HANDLE hEvent = (HANDLE)wParam;
CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)lParam;
MessageHandle(ContextObject);
if (hEvent) {
SetEvent(hEvent);
CloseHandle(hEvent);
}
return S_OK;
}
VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject)
{
if (isClosed) {
return;
}
switch (ContextObject->InDeCompressedBuffer.GetBYTE(0))
{
case TOKEN_HEARTBEAT: case 137:
UpdateActiveWindow(ContextObject);
break;
case SOCKET_DLLLOADER: {// <20><><EFBFBD><EFBFBD>DLL
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);
break;
}
case COMMAND_BYE: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
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>¼
g_2015RemoteDlg->SendMessage(WM_OPENKEYBOARDDIALOG, 0, (LPARAM)ContextObject);
2025-01-31 22:22:16 +08:00
break;
}
case TOKEN_LOGIN: // <20><><EFBFBD>߰<EFBFBD> shine
{
g_2015RemoteDlg->SendMessage(WM_USERTOONLINELIST, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_BITMAPINFO: // Զ<><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_2015RemoteDlg->SendMessage(WM_OPENSCREENSPYDIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_DRIVE_LIST: // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
{
g_2015RemoteDlg->SendMessage(WM_OPENFILEMANAGERDIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_TALK_START: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
{
g_2015RemoteDlg->SendMessage(WM_OPENTALKDIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_SHELL_START: // Զ<><D4B6><EFBFBD>ն<EFBFBD>
{
g_2015RemoteDlg->SendMessage(WM_OPENSHELLDIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_WSLIST: // <20><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>
case TOKEN_PSLIST: // <20><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>
{
g_2015RemoteDlg->SendMessage(WM_OPENSYSTEMDIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_AUDIO_START: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_2015RemoteDlg->SendMessage(WM_OPENAUDIODIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_REGEDIT: // ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_2015RemoteDlg->SendMessage(WM_OPENREGISTERDIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_SERVERLIST: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
g_2015RemoteDlg->SendMessage(WM_OPENSERVICESDIALOG, 0, (LPARAM)ContextObject);
break;
}
case TOKEN_WEBCAM_BITMAPINFO: // <20><><EFBFBD><EFBFBD>ͷ
{
g_2015RemoteDlg->SendMessage(WM_OPENWEBCAMDIALOG, 0, (LPARAM)ContextObject);
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>
if (ContextObject == NULL || isClosed)
{
return -1;
}
try
{
sockaddr_in ClientAddr;
memset(&ClientAddr, 0, sizeof(ClientAddr));
int iClientAddrLen = sizeof(sockaddr_in);
SOCKET nSocket = ContextObject->sClientSocket;
BOOL bOk = getpeername(nSocket, (SOCKADDR*)&ClientAddr, &iClientAddrLen);
// <20><><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
if (ContextObject->InDeCompressedBuffer.GetBufferLength() != sizeof(LOGIN_INFOR))
{
char buf[100];
sprintf_s(buf, "*** Received [%s] invalid login data! ***\n", inet_ntoa(ClientAddr.sin_addr));
OutputDebugStringA(buf);
return -1;
}
LOGIN_INFOR* LoginInfor = new LOGIN_INFOR;
ContextObject->InDeCompressedBuffer.CopyBuffer((LPBYTE)LoginInfor, sizeof(LOGIN_INFOR), 0);
strIP = inet_ntoa(ClientAddr.sin_addr);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
strPCName = LoginInfor->szPCName;
//<2F><EFBFBD><E6B1BE>Ϣ
strOS = LoginInfor->OsVerInfoEx;
//CPU
strCPU.Format("%dMHz", LoginInfor->dwCPUMHz);
//<2F><><EFBFBD><EFBFBD>
strPing.Format("%d", LoginInfor->dwSpeed);
strVideo = m_settings.DetectSoftware ? "<EFBFBD><EFBFBD>" : LoginInfor->bWebCamIsExist ? "<EFBFBD><EFBFBD>" : "<EFBFBD><EFBFBD>";
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);
delete LoginInfor;
return S_OK;
}catch(...){
OutputDebugStringA("[ERROR] OnUserToOnlineList catch an error \n");
}
return -1;
}
LRESULT CMy2015RemoteDlg::OnUserOfflineMsg(WPARAM wParam, LPARAM lParam)
{
OutputDebugStringA("======> OnUserOfflineMsg\n");
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;
if (p)
{
switch(p->v1)
{
case TALK_DLG:
{
CTalkDlg *Dlg = (CTalkDlg*)p->hDlg;
delete Dlg;
break;
}
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;
break;
}
case REGISTER_DLG:
{
CRegisterDlg *Dlg = (CRegisterDlg*)p->hDlg;
delete Dlg; //<2F><><EFBFBD><EFBFBD><E2B4A6>
break;
}
2025-01-31 22:22:16 +08:00
case KEYBOARD_DLG:
{
CKeyBoardDlg* Dlg = (CKeyBoardDlg*)p->hDlg;
delete Dlg;
break;
}
default:break;
}
delete p;
p = NULL;
}
return S_OK;
}
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());
}
}
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);
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>
Dlg->Create(IDD_FILE, GetDesktopWindow()); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dlg
Dlg->ShowWindow(SW_SHOW);
ContextObject->v1 = FILEMANAGER_DLG;
ContextObject->hDlg = Dlg;
EnterCriticalSection(&m_cs);
2021-03-14 12:15:53 +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
*/
LeaveCriticalSection(&m_cs);
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;
}
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;
}
BOOL CMy2015RemoteDlg::OnHelpInfo(HELPINFO* pHelpInfo)
{
2025-01-12 06:00:02 +08:00
MessageBox("Copyleft (c) FTU 2025", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return TRUE;
}
BOOL CMy2015RemoteDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
return TRUE;
}
return CDialogEx::PreTranslateMessage(pMsg);
}
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));
}
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();
}