2015-07-20 225 views
0

在MFC中,我想創建一個進程,方法是打開命令窗口,然後在打開的記事本中執行一條命令。
我發現這種嘗試沒有成功MFC命令窗口命令

STARTUPINFO sInfo = {0}; 
sInfo.cb = sizeof(sInfo); 
PROCESS_INFORMATION pInfo = {0}; 

CreateProcess("C:\\WINDOWS\\System32\\cmd.exe",""0,0,TRUE, 
NORMAL_PRIORITY_CLASS,0,0,&sInfo,&pInfo); 
+0

*「它沒有工作」*不是問題描述。問題描述必須包括預期的行爲以及觀察到的行爲。 – IInspectable

回答

1

你不告訴CMD做任何事情。試試這個:

CreateProcess(0, "C:\\WINDOWS\\System32\\cmd.exe /c notepad.exe", 0, 0, TRUE, 0, 0, 0, &sInfo, &pInfo); 

但也許這是比較容易

ShellExecute(0, "open", "cmd.exe", "/C notepad.exe", 0, SW_HIDE); 

甚至這樣的:

system("notepad.exe"); 
+0

Thanx!有用! –

0

轉到MSDN文檔,我們可以看到,你不指定第二個參數這是要執行的命令行。

另一方面,第六個參數沒有NORMAL_PRIORITY_CLASS枚舉項。你應該這樣做:

STARTUPINFO si = { sizeof(si) }; 
PROCESS_INFORMATION pi; 

si.dwFlags = STARTF_USESHOWWINDOW; 
si.wShowWindow = TRUE; 
TCHAR cmdline[] =TEXT(" notepad.exe"); 
BOOL bRet = ::CreateProcess ( 
    TEXT("C:\\WINDOWS\\System32\\cmd.exe"), 
    cmdline,  
    NULL, 
    NULL, 
    FALSE, 
    CREATE_NEW_CONSOLE, 
    NULL, 
    NULL, 
    &si, 
    &pi);