各位论坛上的朋友,想请教一下,小弟在DELPHI里面调用以下命令
 ShellExecute(Handle, nil, 'cmd.exe', pchar('/K  md c:\目录'), nil, SW_HIDE);
但发现在调用完成后会在进程里面多出一个cmd.exe,假如我要连接执行一千条以上的shellExecute命令,那么就不可能实现了,有没有办法,可以在每调用一条ShellExecute调命令之后,就终止一个CMD进程呢?我试过用以下的过程,在每执行一次
ShellExecute(Handle, nil, 'cmd.exe', pchar('/K  md c:\目录'), nil, SW_HIDE);
然后就 KillProc('cmd.exe'),但发现程序就不能正常进行调用了,不知道为什么?
希望有大虾能帮忙解决,每ShellExecute一次之后,就可以立即出现的CMD.exe,然后让其继续执行下一次的ShellExecute,这样不断循环,直到ShellExecute不再执行为止。衷心谢谢!!!procedure TForm1.KillProc(procname: string); //终止指定的进程
const
  PROCESS_TERMINATE = $0001;
var
  ExeFileName: string;
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32; //注意:TProcessEntry32必须引用单元TlHelp32
begin
  ExeFileName := procname;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while integer(ContinueLoop) <> 0 do
    begin
      if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
        UpperCase(ExeFileName))
        or (UpperCase(FProcessEntry32.szExeFile) =
        UpperCase(ExeFileName))) then
        TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),
          FProcessEntry32.th32ProcessID), 0);
      ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
    end;
end;