小弟使用了 CreateProcess,
创建cmd.exe,并执行了ipconfig/renew命令
但问题是cmd.exe程序没有关闭
在任务管理器中观察
cmd.exe始终没有关闭
跪求怎么关闭进程??试用下terminateprocess(),还是没关闭进程程序代码见下面:        STARTUPINFO   si;   
ZeroMemory(&si,sizeof(si));   
si.cb = sizeof STARTUPINFO;   
    
PROCESS_INFORMATION   pi;   
BOOL   res   =   CreateProcess(NULL,   
"cmd.exe /k ipconfig/renew",
NULL,   
NULL,   
NULL,   
NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW ,
NULL,   
NULL,   
&si,   
&pi);   
    
if   (TRUE == res)   
{   
//等待进程执行完毕   
WaitForSingleObject(pi.hProcess, INFINITE);       
CloseHandle(pi.hProcess);   
CloseHandle(pi.hThread);   
}   

解决方案 »

  1.   

    TerminateProcess不起作用,返回值是什么?
    有窗口的进程,可以发送WM_QUIT消息
      

  2.   

    你为什么要创建cmd?这个命令是打开一个控制台窗口,你不执行exit或点击叉子当然不会自己关了
    你完全可以直接创建ipconfig这个进程吧
      

  3.   

    WaitForSingleObject(pi.hProcess, INFINITE); 这句执行了吗?
      

  4.   

    为什么不用ShellExecute执行命令?
    CreateProcess不是在这种情况下使用的
      

  5.   

    是要关闭进程啊,TerminateProcess 会不起作用?
      

  6.   

    terminateprocess关不了
    任务管理器里面依然可见cmd程序WaitForSingleObject(pi.hProcess, INFINITE);的返回值为1
      

  7.   

    直接CreateProcess ipconfig难道不行么?
      

  8.   

    ipconfig/renew是个命令,不是个目录+文件名
    这个命令是在cmd里面执行的
    楼上的弄错的吧
      

  9.   

    ipconfig是外部命令,可以直接CreateProcess, LZ也可以System()或ShellExecute
      

  10.   

    谁说的啊,ipconfig分明是个外部命令吗,是windows\system32\ipconfig.exe文件
      

  11.   

    我有一个办法,建个bat文件renew.bat里面写
    ipconfig/renew然后
         STARTUPINFO   si;    
    ZeroMemory(&si,sizeof(si));    
    si.cb = sizeof STARTUPINFO;    
         
    PROCESS_INFORMATION   pi;    
    BOOL   res   =   CreateProcess(NULL,    
    "renew.bat", 
    NULL,    
    NULL,    
    NULL,    
    NORMAL_PRIORITY_CLASS  ¦ CREATE_NO_WINDOW , 
    NULL,    
    NULL,    
    &si,    
    &pi);    
         
    if   (TRUE == res)    
    {    
    //等待进程执行完毕    
    WaitForSingleObject(pi.hProcess, INFINITE);        
    CloseHandle(pi.hProcess);    
    CloseHandle(pi.hThread);    
    }   
      

  12.   

    肯定没执行terminateprocess,你应该不会傻到WaitForSingleObject以后再terminateprocess吧