void CHelperSystem::GotoAnchorHelp(const STRING& strAnchor) { //------------------------------- //寻找目标窗口 HWND hCmdWnd = ::FindWindow(0, m_strCmdWnd.c_str()); if(!hCmdWnd) { CreateHelperProcess(strAnchor); return; } //------------------------------- //向目标窗口发送命令 typedef struct { unsigned char cCmdType; unsigned char cReserve1; unsigned char cReserve2; unsigned char cReserve3; char pContents[MAX_PATH]; } HELPER_COMMAND, FAR *LPHELPER_COMMAND; static HELPER_COMMAND cmd; ZeroMemory(&cmd, sizeof(HELPER_COMMAND)); _snprintf(cmd.pContents, MAX_PATH, "%s", strAnchor.c_str()); static COPYDATASTRUCT cCopyData; ZeroMemory(&cCopyData, sizeof(COPYDATASTRUCT)); cCopyData.dwData = 0; cCopyData.cbData = sizeof(unsigned char)*4 + (DWORD)strlen(cmd.pContents) + 1; cCopyData.lpData = &cmd; SendMessage(hCmdWnd, WM_COPYDATA, 0, (LPARAM)&cCopyData); }
static VOID ExecHelper(PWSTR FileName, ULONG Timeout, PHANDLE PProcess) { NTSTATUS Result; Result = ExtractHelperProgram(FileName); ASSERT(NT_SUCCESS(Result)); Result = CreateHelperProcess(FileName, Timeout, PProcess); ASSERT(NT_SUCCESS(Result)); }
void CHelperSystem::GotoAnchorHelp() { char strTmp[MAX_PATH]; UINT WorldID=CGameProcedure::s_pVariableSystem->GetAs_Int("WorldID"); if(WorldID==0) //出错 return; _snprintf(strTmp,MAX_PATH, "WorldID%u", CGameProcedure::s_pVariableSystem->GetAs_Int("WorldID")); //------------------------------- //寻找目标窗口 HWND hCmdWnd = ::FindWindow(0, m_strCmdWnd.c_str()); if(!hCmdWnd) { CreateHelperProcess(strTmp); return; } //------------------------------- //向目标窗口发送命令 typedef struct { unsigned char cCmdType; unsigned char cReserve1; unsigned char cReserve2; unsigned char cReserve3; char pContents[MAX_PATH]; } HELPER_COMMAND, FAR *LPHELPER_COMMAND; static HELPER_COMMAND cmd; ZeroMemory(&cmd, sizeof(HELPER_COMMAND)); _snprintf(cmd.pContents, MAX_PATH, "%s", strTmp); static COPYDATASTRUCT cCopyData; ZeroMemory(&cCopyData, sizeof(COPYDATASTRUCT)); cCopyData.dwData = 0; cCopyData.cbData = sizeof(unsigned char)*4 + (DWORD)strlen(cmd.pContents) + 1; cCopyData.lpData = &cmd; SendMessage(hCmdWnd, WM_COPYDATA, 0, (LPARAM)&cCopyData); }