2015-07-20 196 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);