CreateProcess でperlを起動させています。
Perlの出力内容をテキストボックスに表示させたいんですけど、
アプリケーション上で標準出力の内容を取得する方法がわかりません。
すごく初心者なので恥ずかしいのですが、ご参考までにソースを記述します。↓
なにかおかしい所がありましたら、ご指摘頂けると有り難いです。
----------------------------------
begin
Button2.Enabled:=False;
// 外部アプリ、表示状態を設定-------------
with StartupInfo do begin
// 構造体のサイズを指定
cb := SizeOf(TStartupInfo);
// ウィンドウの位置を指定
dwX := 0;
dwY := 0;
// ウィンドウのサイズを指定
dwXSize := 640;
dwYSize := 480;
// ウィンドウの表示状態を指定
wShowWindow := SW_SHOWNORMAL;
// 有効な設定項目を指定
dwFlags := STARTF_USESHOWWINDOW
or STARTF_USESIZE or STARTF_USEPOSITION;
// それ以外の項目を初期化
lpDesktop := nil;
lpReserved := nil;
lpTitle := nil;
cbReserved2 := 0;
lpReserved2 := nil;
end;
// 外部アプリを起動------------------------
s := 'C:\perl2\sample2.exe';
ret := CreateProcess(
nil,PChar(s),nil,nil,False,CREATE_DEFAULT_ERROR_MODE,
nil,'C:\perl2\',StartupInfo,ProcessInfo);
if ret then
begin
// このループで外部アプリが終了するまで待つ
while WaitForSingleObject(ProcessInfo.hProcess, 0) = WAIT_TIMEOUT do
begin
Application.ProcessMessages;
end;
exit;
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end
else
begin
ShowMessage('プログラムが起動できません。');
end;
----------------------------------
logに同じような質問があったのですが、回答にあったURLが消えてたので。。
宜しくお願いします。
ここが参考になるかと。
http://forum.nifty.com/fdelphi/samples/01397.html
http://maxxdelphisite.free.fr/
ここのサイトのDosCommandコンポーネントをつかえば良いかと思います。
高性能なコンポーネントです
ツイート | ![]() |