請教如何定時啟動程式並列印畫面 |
答題得分者是:richtop
|
wychen57
一般會員 發表:32 回覆:77 積分:21 註冊:2003-10-04 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
wychen57
一般會員 發表:32 回覆:77 積分:21 註冊:2003-10-04 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
wychen57 您好:
引言: 大大你好,你可能誤會我的意思了,我是要寫一支程式去啟動m-graphics,並將參數傳給m-graphics,實際上秀資料的是mgraphics而非我的程式喔不好意思!不過說實在,仍無法完全了解您的問題所在,因不知道執行後的結果會以何種方式呈現。 現在假設您執行了 > < class="code">// following codes borrowed from the source codes of DevPHP. function getDOSOutput(Cmd, WorkDir: String): string; var tsi: TStartupInfo; tpi: TProcessInformation; nRead: DWORD; aBuf: Array[0..101] of char; sa: TSecurityAttributes; hOutputReadTmp, hOutputRead, hOutputWrite, hInputWriteTmp, hInputRead, hInputWrite, hErrorWrite: THandle; FOutput: String; begin FOutput := ''; sa.nLength := SizeOf(TSecurityAttributes); sa.lpSecurityDescriptor := nil; sa.bInheritHandle := True; CreatePipe(hOutputReadTmp, hOutputWrite, @sa, 0); DuplicateHandle(GetCurrentProcess(), hOutputWrite, GetCurrentProcess(), @hErrorWrite, 0, true, DUPLICATE_SAME_ACCESS); CreatePipe(hInputRead, hInputWriteTmp, @sa, 0); DuplicateHandle(GetCurrentProcess(), hOutputReadTmp, GetCurrentProcess(), @hOutputRead, 0, false, DUPLICATE_SAME_ACCESS); DuplicateHandle(GetCurrentProcess(), hInputWriteTmp, GetCurrentProcess(), @hInputWrite, 0, false, DUPLICATE_SAME_ACCESS); CloseHandle(hOutputReadTmp); CloseHandle(hInputWriteTmp); FillChar(tsi, SizeOf(TStartupInfo), 0); tsi.cb := SizeOf(TStartupInfo); tsi.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; tsi.hStdInput := hInputRead; tsi.hStdOutput := hOutputWrite; tsi.hStdError := hErrorWrite; CreateProcess(nil, PChar(Cmd), @sa, @sa, true, 0, nil, PChar(WorkDir), tsi, tpi); CloseHandle(hOutputWrite); CloseHandle(hInputRead ); CloseHandle(hErrorWrite); Application.ProcessMessages; repeat if (not ReadFile(hOutputRead, aBuf, 16, nRead, nil)) or (nRead = 0) then begin if GetLastError = ERROR_BROKEN_PIPE then Break else MessageDlg('Pipe read error, could not execute file', mtError, [mbOK], 0); end; aBuf[nRead] := #0; FOutput := FOutput PChar(@aBuf[0]); Application.ProcessMessages; until False; Result := FOutput; end; procedure TForm1.Button1Click(Sender: TObject); var WorkDir : string; begin WorkDir := '.'; //Memo1.Text := getDOSOutput('c:/php/php.exe c:/php/test.php', WorkDir); Memo1.Text := getDOSOutput('cmd /c dir c:\ /O:D', WorkDir); // OK! end; RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |