基本代码如下:
cmdline = "java Main"void CreateProcess(_TCHAR *cmdline)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
if (!CreateProcess( NULL, cmdline,NULL, NULL, false, DEBUG_PROCESS | CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
{
        _ftprintf(stderr,_T("err : %d\n"),GetLastError());

}
}Main.java里就是输出一个hello world,可以这样调用好像不行。请大家帮忙。

解决方案 »

  1.   

    CreateProcess是建立进程。你能把cmdline = "java Main" 当成命令行吗?
      

  2.   


    BOOL bResult = FALSE;
    CString strcmd = "\"";
    strcmd += CUtility::GetInstance().GetBasePath() + "IBSservice.exe\" ";
    strcmd += "-protect"; SECURITY_ATTRIBUTES sa;
    // HANDLE hRead,hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE; STARTUPINFO si;
    PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) ); // Start the child process. 
    if( CreateProcess( NULL,   // No module name (use command line). 
    (char*)(LPCTSTR)strcmd, // Command line. 
    NULL,             // Process handle not inheritable. 
    NULL,             // Thread handle not inheritable. 
    FALSE,            // Set handle inheritance to FALSE. 
    CREATE_NO_WINDOW|NORMAL_PRIORITY_CLASS,                // creation flags. 
    NULL,             // Use parent's environment block. 
    NULL,             // Use parent's starting directory. 
    &si,              // Pointer to STARTUPINFO structure.
    &pi )             // Pointer to PROCESS_INFORMATION structure.

    {
    // Wait until child process exits.
    //WaitForSingleObject( pi.hProcess, INFINITE );
    // Close process and thread handles. 
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    bResult = TRUE;
    }
      

  3.   

    调用 exe的我试过了,没有什么问题,可以调用java类一直没有成功过。。
      

  4.   

    CreateProcess本身就是调用exe,调用java类?C++里不能直接调用的