HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0122
cmdコマンドプロンプトの画面を取得6未解決


cmd

リンク

2016/1/22(Fri) 13:01:03|NO.74226

現在コマンドプロンプトを立ち上げ、そこにコマンドを送信してコンパイラを実行して、自動でコンパイルを行えるプログラムを作っています。
そこで、コンパイルの完了を自動で検知したいのですが、一つ思いついたのが、コンパイル終了時にコマンドプロンプト画面に

C:\Users\xxx\hoge>

と表示されることに着目しました。
コマンドプロンプトのこの文字を取得する方法はありませんか?



この記事に返信する


kanamaru

リンク

2016/1/22(Fri) 13:10:50|NO.74227

わざわざOCRを使わなくとも、
例えば、
コマンドプロンプトで行う処理の最後に何かテキスト作成させて、
そのテキストファイルが存在するかを調べるとか、
行う処理の最後にexit入れるとか、他の方法使った方がいいと思います。
ただ、コンパイルの自動化だったらコンパイル結果をテキストファイルに出力させて、
そのファイルの存在を調べた方がいいかも。
(execで直接コンパイラを呼ぶというのはダメなのかな?)



cmd

リンク

2016/1/22(Fri) 13:19:15|NO.74228

>kanamaruさん
その方法は考えたのですが、このソフトを使うのは私一人だけでなく、複数人が使用するのでコンパイルの終了条件は様々なのです。
またコンパイルするソースは現在進行形で改良が進んでいてその場その場で仕様が異なるので、何か特定のファイルを検知といった過程を取ると将来的に使用できなくなる可能性が高いと考えました。
コンパイラはexecを使って起動しています。
ただコンパイルしているファイルはFortranなのでHSPの動作と切り離して考えたほうがいいかもしれません。



skyblue

リンク

2016/1/22(Fri) 16:45:17|NO.74229

pipe系の命令ではだめなのでしょうか?



KA

リンク

2016/1/22(Fri) 17:53:52|NO.74230

>>現在コマンドプロンプトを立ち上げ、そこにコマンドを送信
プロンプトを立ち上げる必要性が無いのなら、バッチファイルで良いのでは?
終わったら勝手に閉じてくれます。

>>コンパイルの完了を自動で検知したい
「検知してどうしたいのか」で考え方も変わってきますよ。



zero

リンク

2016/1/23(Sat) 01:41:01|NO.74241

>コマンドプロンプトのこの文字を取得する方法はありませんか?
WinAPIのReadConsoleOutput関数を叩けばできなくはないです。
しかし、そこからプロンプトの文字列をマッチングして取得するのは
いかんせん処理が複雑になります。

そこで、他の方々も言われていますが、やはりパイプを使うというのは
どうでしょうか? hspext.dllにpipeexecという命令があります。
コマンドプロンプトを起動してそこへコマンドを書き込むのではなく、
pipeexecでコンパイラを直接呼ぶようにすれば、pipegetで実行の終了を
監視できます。パイプの場合はコマンドプロンプトの黒い画面は出ませんが、
やりたいことは恐らくできるかと思います。



skyblue

リンク

2016/1/23(Sat) 07:28:48|NO.74245

>パイプの場合はコマンドプロンプトの黒い画面は出ませんが、
>やりたいことは恐らくできるかと思います。
確か画面を表示する事が出来たはずですけど。



ONION software Copyright 1997-2021(c) All rights reserved.