知道一个软件的路径,怎么样用CreateProcess()打开这个软件。能给出具体一点的代码吗?

解决方案 »

  1.   

    //启动notepad
    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    si.cb=sizeof(si);
    si.lpReserved=NULL;
    si.lpDesktop=NULL;
    si.lpTitle=NULL;
    si.cbReserved2=0;
    si.lpReserved2=NULL;
    si.dwFlags=STARTF_USEPOSITION;
    si.dwX=0;
    si.dwY=0;
    CreateProcess("c:\\windows\\notepad.exe",NULL,NULL,NULL,FALSE,
    CREATE_DEFAULT_ERROR_MODE,NULL,"c:\\windows",&si,&pi);
    参看MSDN:
    BOOL CreateProcess(
      LPCTSTR lpApplicationName,
                             // pointer to name of executable module
      LPTSTR lpCommandLine,  // pointer to command line string
      LPSECURITY_ATTRIBUTES lpProcessAttributes,  // process security attributes
      LPSECURITY_ATTRIBUTES lpThreadAttributes,   // thread security attributes
      BOOL bInheritHandles,  // handle inheritance flag
      DWORD dwCreationFlags, // creation flags
      LPVOID lpEnvironment,  // pointer to new environment block
      LPCTSTR lpCurrentDirectory,   // pointer to current directory name
      LPSTARTUPINFO lpStartupInfo,  // pointer to STARTUPINFO
      LPPROCESS_INFORMATION lpProcessInformation  // pointer to PROCESS_INFORMATION
    );
    typedef struct _STARTUPINFO { // si 
        DWORD   cb; 
        LPTSTR  lpReserved; 
        LPTSTR  lpDesktop; 
        LPTSTR  lpTitle; 
        DWORD   dwX; 
        DWORD   dwY; 
        DWORD   dwXSize; 
        DWORD   dwYSize; 
        DWORD   dwXCountChars; 
        DWORD   dwYCountChars; 
        DWORD   dwFillAttribute; 
        DWORD   dwFlags; 
        WORD    wShowWindow; 
        WORD    cbReserved2; 
        LPBYTE  lpReserved2; 
        HANDLE  hStdInput; 
        HANDLE  hStdOutput; 
        HANDLE  hStdError; 
    } STARTUPINFO, *LPSTARTUPINFO; 
    //pi由系统传回
    typedef struct _PROCESS_INFORMATION { // pi 
        HANDLE hProcess; 
        HANDLE hThread; 
        DWORD dwProcessId; 
        DWORD dwThreadId; 
    } PROCESS_INFORMATION;