87 lines
1.9 KiB
C++
87 lines
1.9 KiB
C++
#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;
|
||
};
|