一、
bool __fastcall TFormMain::DataLoadOut(Char* Cmd)
{
  bool Result = false;
  unsigned long ExitCode;
  STARTUPINFO *StartupInfo = new STARTUPINFO;
  PROCESS_INFORMATION *ProcessInfo = new PROCESS_INFORMATION;
  StartupInfo->cb = sizeof(STARTUPINFO);
  StartupInfo->dwFlags=STARTF_USESHOWWINDOW;
  StartupInfo->wShowWindow=SW_SHOWNORMAL;
  if (CreateProcess(NULL,Cmd,NULL,NULL,true,
    CREATE_NEW_CONSOLE|NORMAL_PRIORITY_CLASS,NULL,NULL,StartupInfo,ProcessInfo))
  {
    WaitForSingleObject(ProcessInfo->hProcess,INFINITE);
    GetExitCodeProcess(ProcessInfo->hProcess,&ExitCode))
    //问题1.在此处应该对这个GetExitCodeProcess的返回值和ExitCode如何处理?
  }//成功建立进程;
  CloseHandle(ProcessInfo->hProcess);
  CloseHandle(ProcessInfo->hThread);
  delete StartupInfo;
  delete ProcessInfo;
  return Result;
}
注:程序流程上的一些问题不必细究
二、有一个按钮调用上面的函数
void __fastcall TFormMain::Button1Click(TObject *Sender)
{
  Char *CMD2 = "bcp syscolumns out c:\\aaaa.txt -c -t, -S180.1.90.68 -Usa -Paaa111";
  Char *CMD = ListBox1->Items->Strings[0].c_str();
  for (int i =0;i<3;i++)
  {
    //调用CMD2没有问题
    //调用CMD时,就没法执行了,调试可以看到CMD = ????,因为为了程序通用,
   //所以要用StringList来传入字符串,应该如何传?
    DataLoadOut(CMD);
  }