在DOS下執行地程式,將結果丟到Memo顯示 |
尚未結案
|
borispong
一般會員 ![]() ![]() 發表:2 回覆:4 積分:0 註冊:2005-10-25 發送簡訊給我 |
void __fastcall TForm1::nfsClick(TObject *Sender)
{ SECURITY_DESCRIPTOR sd; SECURITY_ATTRIBUTES sa; STARTUPINFO si; LPSECURITY_ATTRIBUTES lpsa = NULL; OSVERSIONINFO osv; osv.dwOSVersionInfoSize = sizeof(osv); GetVersionEx(&osv); HANDLE hReadPipe, hWritePipe; PROCESS_INFORMATION pi; char aText[10000]; DWORD dwSizeLow,ByteRead; AnsiString parm; PChar lpa; AnsiString str1 = " -v "; //執行檔參數1。 AnsiString str2 = " -n "; //執行檔參數2。 AnsiString str3 = Edit1->Text; //輸入值 AnsiString data = str1 str2 str3; //將參數與輸入值合併成data。 start=clock(); //時間開始 if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT) { InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(&sd, true, NULL, false); sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = true; sa.lpSecurityDescriptor = &sd; lpsa = &sa; } if (CreatePipe(&hReadPipe, &hWritePipe, lpsa, 0)==0) { ShowMessage("Create Pipe-Line error!"); CloseHandle(hReadPipe); CloseHandle(hWritePipe); return; } ZeroMemory(&si, sizeof(si)); si.cb=sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW |STARTF_USESTDHANDLES; si.wShowWindow = SW_HIDE; si.hStdOutput = hWritePipe; si.hStdError = hWritePipe; parm = "123.exe " data; //程式執行,且加入參數值 if (!CreateProcess(0,&parm[1], 0,//security 0,// security true,//inherits handles CREATE_NEW_CONSOLE, 0, 0, &si, &pi)) { return;} WaitForSingleObject(pi.hProcess,INFINITE); dwSizeLow=GetFileSize(hReadPipe, NULL); if (dwSizeLow>0) { ReadFile(hReadPipe, aText, dwSizeLow, &ByteRead, NULL); Memo1->Lines->Append("Number is :" Edit1->Text); Memo1->Lines->Append(String(aText)); end=clock(); total_time=(end-start)/CLK_TCK; Memo1->Lines->Add("計算時間為:" FloatToStr(total_time) " 秒"); } CloseHandle(pi.hThread); CloseHandle(pi.hProcess); CloseHandle(hReadPipe); CloseHandle(hWritePipe); } 請問各位先進前輩們: 以上是我的程式碼,該DOS下的程式123.exe,在執行時必須要加入參數,且希望最後將結果丟到Memo上面顯示。 但是該程式123.exe於執行時必須要跑非常久的時間約2個小時,且大約跑個三十分鐘就結束了,最後結果都無法顯示出來,不知為何耶? 煩請前輩們指點一下嘍! |
w45
一般會員 ![]() ![]() 發表:25 回覆:29 積分:15 註冊:2006-07-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |