?? global.cpp
字號:
}
}
CString gcsString,gcsId,gcsName;
DWORD dwStructArray[200];
BOOL WINAPI RunCommand(DWORD dwCommand,HANDLE hParam,HANDLE & hResult)
{
switch(dwCommand){
case 0:
{//compile file
CAWFlow m_Compi;
m_Compi.SetBus(gDllGlobalManager.GetBus());
time_t tm=time(NULL);
BOOL bRet=m_Compi.CreateFlow((LPSTR)hParam,(DWORD)tm);
if(bRet){
m_Compi.CloseFlow(TRUE);
}
return bRet;
}
break;
case 1:
{//prepare trace a own compile flow
CAWFlow * pFlow=new CAWFlow;
pFlow->SetBus(gDllGlobalManager.GetBus());
time_t tm=(time_t)hResult;
if(!hResult)tm=time(NULL);
BOOL bRet=pFlow->CreateFlow((LPSTR)hParam,(DWORD)tm);
if(bRet){
gDllGlobalManager.m_FlowList.Add(pFlow);
}
else{
delete pFlow;
pFlow=NULL;
}
pFlow->SetDebugStyle(TRUE);
pFlow->m_bBoolCanTrace=TRUE;
pFlow->m_bAutoDelete=TRUE;
return (BOOL)((CUserControl *)pFlow);
}
break;
case 2:
{//clear trace a own compile flow
CUserControl * p=(CUserControl * )hParam;
CAWFlow * pFlow=(CAWFlow * )p;
for(int i=0;i<gDllGlobalManager.m_FlowList.GetSize();i++){
if(gDllGlobalManager.m_FlowList[i]==pFlow){
if(p->IsValid()&&p->ControlValid()){
p->EndTask();
}
// delete pFlow;//AUTO RELEASE
gDllGlobalManager.m_FlowList.RemoveAt(i);
return TRUE;
}
}
return FALSE;
}
break;
case 3:
{
DWORD dwOldId=(DWORD)hParam;
DWORD dwNewId=(DWORD)hResult;
CUserFlow * p=gFlowMg.FindFlow(dwOldId,TRUE);
if(p){
if(dwNewId){
p->m_dwFlowId=dwNewId;
}
else{
gFlowMg.CloseFlow(p);
}
return TRUE;
}
}
break;
case 4:
{
CUserControl * p=(CUserControl * )hParam;
DWORD dwCommId=(DWORD)hResult;
if(p&&p->IsValid()&&p->ControlValid()){
switch(dwCommId){
case 0:
return p->Start();
case 1:
p->CloseFlow();
return TRUE;
case 2:
return p->Step();
case 3:
return p->Resume();
case 4:
return p->Suspend();
case 5:
p->SetDebugStyle(TRUE);
return TRUE;
case 6:
p->SetDebugStyle(FALSE);
return TRUE;
}
}
return FALSE;
}
break;
case 5:
{
CUserControl * p=(CUserControl * )hParam;
DWORD dwCommId=(DWORD)hResult;
if(p&&p->IsValid()&&p->ControlValid()/*&&p->IsPaused()*/){
UniVar tv;
if(p->GetDataValue(dwCommId,tv)){
if(tv.it==DATA_TYPE_HANDLE){
gcsString.Format("Len:%ld",tv.GetDataLength());
if(tv.GetDataLength()){
gcsString+=",";
if(tv.ToA()){
gcsString+=(LPSTR)tv;
}
}
}
else{
char * ppp=tv.ToA();
if(ppp){
gcsString=ppp;
}
else{
gcsString="";
}
}
}
else{
gcsString="無效變量";
}
}
else{
gcsString="無效變量";
}
return (BOOL)(LPCTSTR)gcsString;
}
break;
case 6:
{
CUserControl * p=(CUserControl * )hParam;
if(p&&p->IsValid()&&p->ControlValid()/*&&p->IsPaused()*/){
int itype=0;
POSITION pos=p->m_pFlow->m_pStyle->m_StyleStrTable.GetStartPosition();
DWORD dwId;
int i=0;
while(pos){
p->m_pFlow->m_pStyle->m_StyleStrTable.GetNextAssoc(pos,gcsName,(void * &)dwId);
switch(dwId&STYPE_FILTER){
case TYPE_STATIC:
case TYPE_VARIANT:
{
if(dwId&STYPE_FILTER==TYPE_STATIC){
itype=0;
}
else{
itype=1;
}
gcsId.Format("0x%lx",dwId);
UniVar tv;
if(p->GetDataValue(dwId,tv)){
if(tv.it==DATA_TYPE_HANDLE){
gcsString.Format("Len:%ld",tv.GetDataLength());
if(tv.GetDataLength()){
gcsString+=",";
if(tv.ToA()){
gcsString+=(LPSTR)tv;
}
}
}
else{
char * ppp=tv.ToA();
if(ppp){
gcsString=ppp;
}
else{
gcsString="";
}
}
}
else{
gcsString="無效變量";
}
if(gDllGlobalManager.m_pGlobalApi)
gDllGlobalManager.m_pGlobalApi->APISetFlowVariant(gcsName,gcsString,gcsId,itype,i);
i++;
}
break;
}
}
pos=p->m_pFlow->m_FlowStrTable.GetStartPosition();
while(pos){
p->m_pFlow->m_FlowStrTable.GetNextAssoc(pos,gcsName,(void * &)dwId);
switch(dwId&STYPE_FILTER){
case TYPE_GLOBALVAR:
{
itype=2;
gcsId.Format("0x%lx",dwId);
UniVar tv;
if(p->GetDataValue(dwId,tv)){
if(tv.it==DATA_TYPE_HANDLE){
gcsString.Format("Len:%ld",tv.GetDataLength());
if(tv.GetDataLength()){
gcsString+=",";
if(tv.ToA()){
gcsString+=(LPSTR)tv;
}
}
}
else{
char * ppp=tv.ToA();
if(ppp){
gcsString=ppp;
}
else{
gcsString="";
}
}
}
else{
gcsString="無效變量";
}
if(gDllGlobalManager.m_pGlobalApi)
gDllGlobalManager.m_pGlobalApi->APISetFlowVariant(gcsName,gcsString,gcsId,itype,i);
i++;
}
break;
}
}
}
}
break;
case 7:
{
CUserControl * p=(CUserControl * )hParam;
if(p&&p->IsValid()&&p->ControlValid()/*&&p->IsPaused()*/&&p->m_pControl->m_CallSt.pt.pFun){
if(hResult==p->m_pControl->m_CallSt.pt.pOt)return TRUE;
int itype=0;
DWORD dwId;
int i=0;
CString cs="";
POSITION pos=p->m_pFlow->m_FlowStrTable.GetStartPosition();
switch(p->m_pControl->m_CallSt.iType){
case CALL_MAIN:
cs="_mainproc__";
break;
case CALL_EVENT:
case CALL_FUNC:
while(pos){
p->m_pFlow->m_FlowStrTable.GetNextAssoc(pos,cs,(void * &)dwId);
if(dwId==p->m_pControl->m_CallSt.pt.pEv->dwPositionId){
cs+="__";
pos=p->m_pFlow->m_FlowStrTable.GetStartPosition();
break;
}
}
break;
default:
pos=NULL;
}
hResult=p->m_pControl->m_CallSt.pt.pOt;
if(!pos)return FALSE;
CString cs1;
while(pos){
p->m_pFlow->m_FlowStrTable.GetNextAssoc(pos,cs1,(void * &)dwId);
if((dwId&STYPE_FILTER)==TYPE_LOCALVAR){
if(!memcmp((void *)(LPCTSTR)cs,(void *)(LPCTSTR)cs1,cs.GetLength())){
gcsName=((LPCTSTR)cs1)+cs.GetLength();
itype=3;
gcsId.Format("0x%lx",dwId);
UniVar tv;
if(p->GetDataValue(dwId,tv)){
if(tv.it==DATA_TYPE_HANDLE){
gcsString.Format("Len:%ld",tv.GetDataLength());
if(tv.GetDataLength()){
gcsString+=",";
if(tv.ToA()){
gcsString+=(LPSTR)tv;
}
}
}
else{
char * ppp=tv.ToA();
if(ppp){
gcsString=ppp;
}
else{
gcsString="";
}
}
}
else{
gcsString="無效變量";
}
if(gDllGlobalManager.m_pGlobalApi)
gDllGlobalManager.m_pGlobalApi->APISetFlowVariant(gcsName,gcsString,gcsId,itype,i);
i++;
}
}
}
return TRUE;
}
return FALSE;
}
break;
case 8://get current local point
{
CUserControl * p=(CUserControl * )hParam;
if(p&&p->IsValid()&&p->ControlValid()&&p->IsPaused()&&p->m_pControl->m_CallSt.pt.pFun){
hResult=(HANDLE)p->m_pControl->m_CallSt.pt.pFun;
}
else{
hResult=NULL;
}
return TRUE;
}
break;
case 9://get user flow info
{
CUserControl * p=(CUserControl * )hParam;
hResult=NULL;
if(p&&p->IsValid()&&p->ControlValid()){
if(p->m_pFlow){
hResult=(HANDLE)dwStructArray;
gcsName=p->m_pFlow->m_csFileName;
dwStructArray[0]=(DWORD)(LPCTSTR)gcsName;
dwStructArray[1]=p->m_pFlow->m_dwFlowId;
dwStructArray[2]=(DWORD)(p->m_pFlow->m_ListName.GetSize()+1);
gcsString=p->m_csDescripe;
dwStructArray[3]=(DWORD)(LPCTSTR)gcsString;
}
}
return TRUE;
}
break;
case 10://get user flow info
{
CUserControl * p=(CUserControl * )hParam;
hResult=NULL;
if(p&&p->IsValid()&&p->ControlValid()){
if(p->m_pFlow){
hResult=(HANDLE)dwStructArray;
dwStructArray[0]=(DWORD)(p->m_pFlow->m_ListName.GetSize()+1);
dwStructArray[1]=(DWORD)(LPCTSTR)p->m_pFlow->m_csFileName;
for(int i=0;i<p->m_pFlow->m_ListName.GetSize();i++){
dwStructArray[2+i]=(DWORD)(LPCTSTR)(*p->m_pFlow->m_ListName[i]);
}
return TRUE;
}
}
}
break;
default:
break;
}
return FALSE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -