fast/Platform/ModuleProcess.h
2025-01-20 10:30:01 +08:00

87 lines
1.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
typedef struct MODULE_DATA
{
void* pModule;
int lMsgId;
int lDataLen;
char acData[4];
}*pMODULE_DATA;
void g_PipeCallBack(void* pObj, int lMsgId,WPARAM wparam, LPARAM lparam);
#define WM_MODULE_DATA_ID (WM_USER + 666)
#define WM_MODULE_CONNECT_ID (WM_USER + 667)
#define WM_UPDATE_MODULE_STATUS (WM_USER + 20668)
class CModuleProcess
{
friend void g_PipeCallBack(void* pObj, int lMsgId, WPARAM wparam, LPARAM lparam);
public:
//hWnd收到子模块消息时转发的目标窗口
CModuleProcess(CAgvMainDialog *pMainWnd, CString strModulePath, CString strModuleName, int lModuleIndex);
~CModuleProcess(void);
void SetPipeName(CString strPipeName) { m_strPipeName = strPipeName; }
//启动模块
BOOL Start(int nDebug=0);
//停止模块
void Stop();
//获取当前模块状态太0 未启动1已启动
BOOL GetStatus();
//发送数据到模块进程
BOOL SendDataToModule(int lMsgId, const char* pData, int lLen);
//控制线程
void ProcessManageThr();
CRect GetRect(){return m_rect;}
void SetRect(CRect rect){m_rect = rect;}
CString GetModulePath() { return m_strModulePath; }
CString GetModuleName() { return m_strModuleName; }
BOOL GetConnectState(){return m_bIsConnectModule;}
VOID SetConnectState(BOOL bState){m_bIsConnectModule = bState;}
CHttpClient m_httpClent;
CAgvMainDialog *m_pAgvMainWnd;
int m_lModuleIndex;
int m_nDebug;
int m_lReStartCount;
int m_lState;//0 未启动1已启动2稍后重启
protected:
//和模块进程通讯的管道回调函数:
//1、lparam > 0时wparam为数据内容lparam为数据长度
//2、lparam-1管道连接成功-2管道断开-3管道异常
void PipeCallBack(int lMsgId, WPARAM wparam, LPARAM lparam);
//启动一次应用,被管理线程调用
BOOL StartModule();
private:
CString m_strModulePath;
CString m_strModuleName;
CCEXPipeServerBase* m_pstPipeServer;
HANDLE m_hProcessManageThr;
BOOL m_bAcitv;
HWND m_hWnd;
CRect m_rect;//模块所占用的矩形框位置
CString m_strPipeName;
PROCESS_INFORMATION m_pi; //进程信息结构
BOOL m_bIsConnectModule;
};