D
DelphiBB
Unregistered / Unconfirmed
GUEST, unregistred user!
一、
bool __fastcall TFormMain:ataLoadOut(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);
}
bool __fastcall TFormMain:ataLoadOut(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);
}