掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DOSプログラムを実行させるには? (ID:17639)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>1.引数にSW_HIDEが使えませんでしたっけ. wShowWindow := 0; ← SW_HIDE のはず 引数が間違っているのでしょうか? >2.Win32APIのGetLastErrorで取得できる? > エラーコードもWin32APIの付録にあったと思います GetLastError でリターン値を取得しました。 わざとエラーが出るようにして呼び出しても0しか返ってきません >3.リアルタイムというのがどういう状態を言うのかはわかりませんが, > 出力したファイルの内容を表示するというのはどうでしょう. ファイル出力の場合だと、呼び出したプログラムが終了してからでないと 結果が表示できないので、stdout で出力されているだろうから その結果を処理と平行しながら表示したいのです。 ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ 以下現状のソースです ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ☆呼び出し側 ProcessDir := 'D:\Source'; ProcessFile := ProcessDir + '\Source.bpr'; if FileExists(ProcessFile) then begin if SetCurrentDir(ProcessDir) then begin ProgramMakeExecute('-fSource.mak > make.lst'); end; end; ☆呼び出されている関数 function TForm1.ProgramMakeExecute(CmdStr: String): Integer; var SI: TStartupInfo; PI: TProcessInformation; CurrentDir: String; FileName: String; CommandStr: String; begin CurrentDir := GetCurrentDir; FileName := 'C:\Program Files\Borland\Delphi7\Bin\make.exe'; CommandStr := FileName + ' ' + CmdStr; with SI do begin Cb := SizeOf(SI); lpReserved := Nil; lpDesktop := Nil; lpTitle := Nil; dwX := 0; dwY := 0; dwXSize := 0; dwYSize := 0; dwXCountChars := 0; dwYCountChars := 0; dwFillAttribute := 0; dwFlags := 0; wShowWindow := 0; cbReserved2 := 0; lpReserved2 := Nil; hStdInput := 0; hStdOutput := 0; hStdError := 0; end; if CreateProcess(PChar(FileName), PChar(CommandStr), Nil, Nil, False, 0, Nil, PChar(CurrentDir), SI, PI) then begin // 処理終了を待つ while WaitForSingleObject(PI.hProcess, 0) = WAIT_TIMEOUT do Application.ProcessMessages; end; Result := GetLastError; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.