2016-03-17 58 views
0

很多在MSDN花費的時間後,我創建的打開一個名爲system.exe文件這部分代碼。錯誤創建新的進程C++

的代碼編譯沒有任何錯誤,但該文件沒有啓動。我檢查過,如果文件存在,它存在但不啓動!

爲什麼?由於

void start(string path){ 
    STARTUPINFO Startupinf; 
    PROCESS_INFORMATION Processinfo; 
    cout<<path; 
    if(!CreateProcess(path.c_str(),NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,path.c_str(),&Startupinf,&Processinfo)){ 
     cout<<"\n\n\nERROR 3x02"; 
    } 
} 
+0

檢查的價值':GetLastError函數()' – marcinj

+0

如果要啓動一個進程的path.c_str()',那麼你的當前目錄不是'path.c_str()'這將是一個可執行文件 - 對嗎? – marcinj

回答

0

總結:

  1. 經常檢查調用CreateProcess()後什麼GetLastError()回報。

  2. 如果你開始一個過程path.c_str(),那麼你的當前目錄不是path.c_str()這將是一個可執行文件 - 對嗎?

  3. 初始化StartupInfoProcessInfo

    PROCESS_INFORMATION Processinfo; ZeroMemory(&Processinfo, sizeof(Processinfo)); 
    STARTUPINFO StartupInf; ZeroMemory(&StartupInf, sizeof(StartupInf)); 
    StartupInf.cb = sizeof(STARTUPINFO); 
    
+0

1)我不知道GetLastError函數的用法,但我加入它在虛空 2)年底是啊,沒錯,path.c_str()是不是這個程序 3)的拍一開始我初始化Startupinf和Processinfo,但仍然給我錯誤! –

+0

@MarioValentino讀GetLastError函數()值,然後檢查其錯誤代碼以便了解你做了錯誤的 – marcinj

+0

我怎麼能看呢? 控制檯給我處理返回0(0x00) –