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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1115
ニボッシーコマンドラインツール経由の終了コードの取得5解決


ニボッシー

リンク

2014/11/15(Sat) 21:05:30|NO.66032

現在コマンドラインツールを利用した補助ツールを作っているのですが、
そのコマンドラインツールの終了コードを取得したくてもHSPで取得する方法が分からず困っています。
コマンドラインツールの呼び出しには、exec命令を使って直接コマンドを入力しています。
そのコマンドラインツールでの終了コード(正常終了だと1失敗だと0)の取得を
HSPで取得する方法はありますでしょうか?よろしくお願いします。



この記事に返信する


cats

リンク

2014/11/15(Sat) 22:14:27|NO.66036

起動したいプログラムをWSH→DOSという流れで呼び出して取得します。
DOSを経由しますので、コマンドも実行できてしまいます。
例外処理が必要ならいれてください。

#module #deffunc CallDOS var ret, str cmd newcom wsh, "WScript.Shell" comres com wsh -> "Exec" "%ComSpec% /c " + cmd while com("Status") : wend if com("Status") == 0 { com = com("StdOut") ret = com("ReadAll") } delcom wsh return #global sdim out, 4096 // ファイルの結果 CallDOS out, "hsptmp.exe" mes "----- 出力結果 -----" mes out // コマンドも指定できる CallDOS out, "dir C:\\" mes "----- 出力結果 -----" mes out stop



ニボッシー

リンク

2014/11/15(Sat) 23:19:11|NO.66037

>catsさん
モジュールまで作っていただきありがとうございます!
これで先に進めそうですありがとうございました!



ニボッシー

リンク

2014/11/15(Sat) 23:53:35|NO.66038

>catsさん
重ね重ね申し訳ありません。
コマンドラインツールでexecで使えたような
コマンドラインツールのウィンドウを非表示でCallDOSを実行することは出来ませんでしょうか?



cats

リンク

2014/11/16(Sun) 00:18:01|NO.66040

WSHのExecでの非表示実行の仕方が分からないのでhspextに頼みました。
(Execでの非表示実行はできない?)
hspextのpipeexecを使えば簡単に出力を取得できます。
ただし、16bitアプリケーションやバッチファイルでは動作しないようです。

#include "hspext.as" sdim out, 65536 pipeexec out, "hsptmp.exe" if stat : mes "取得に失敗しました。" : stop sdim pipe, 1024 repeat await 15 pipeget pipe if stat == 0 : break loop mes out stop



ニボッシー

リンク

2014/11/16(Sun) 00:30:23|NO.66041

>catsさん
何から何までありがとうございます!
無事最小化で起動出来ました。pipexecっていう命令があったんですねー。
昔は無かった気がするのですっかり見落としていました。



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