くだすれVB6.0以前(超初心者向け)at TECH
くだすれVB6.0以前(超初心者向け) - 暇つぶし2ch903:デフォルトの名無しさん
09/05/29 12:24:36
コンソールアプリケーションには疎いのですが、
パイプのようなものとは記号「>」でファイル出力するという意味でしょうか?

中間に入力などがあり分岐したい場合に対処できないと思ったのと
ファイルへの入出力を伴うのは処理速度がストレージ性能に依存するため避けたのですがどうでしょうか?

904:デフォルトの名無しさん
09/05/29 12:54:06
VB パイプ
などでぐぐれば多少は出てくるでしょうに、それすらしないんですか

905:デフォルトの名無しさん
09/05/29 13:07:49
処理速度とか気にしてる割にはシェルの起動時間は気にならないんですね

めんどくさいから素直に何がしたいのか書けよ


906:899
09/05/29 13:16:59
すいませんでした
ググって来ました
私が言っていたのはリダイレクトだったのですね、失礼しました

> 「標準入出力」というのは、ユーザーが何もしなくてもOSが「標準で」用意してくれる入力先・出力先のことです。
> 「リダイレクト」によって標準入出力をファイルに変更したり、
> 「パイプ」によってあるコンソールアプリの標準出力を別のコンソールアプリの標準入力につなげたり出来ます。

・・・このパイプのようなものを実際どう組み込んだらよいのでしょうか?

>>899ソースでobjExec.StdOut.ReadLineの場所で止まってしまう理由が分かりません
/cをつけて自動終了するようにして使うしかないのでしょうか?
StdInやStdOutをどのように捕らえたら良いのかお教え願えませんでしょうか?

907:デフォルトの名無しさん
09/05/29 13:24:06
ぐぐれば一番最初に出てきただろうに、なんなのこいつ

908:899
09/05/29 13:34:33
>>905
シェルの起動時間とはなんでしょうか?

CreateObjectの事でしょうか?
これは一度作成したのちずっと保持する予定なので気にしていません

コマンドプロンプトのExec呼び出しの事でしょうか?
こちらも一度しか呼び出さないようにして再利用する事を考えていて、その結果このような質問に至りました。

>何がしたいのか
いくつかのCUIアプリケーション(コンソールコマンドの結果)のGUI化です
ExecメソッドではStdIn、StdOutというもので制御が可能と知ったので、
これを使ってコマンドプロンプトもどきを作れないかと考えました。
これができればいろんなもののGUI化が出来るだろうと思いテストソースを書きました。

>>907
すいません


909:デフォルトの名無しさん
09/05/29 13:36:41
ほぼそのもののソースがググると出てくるんだが
まだ不満があるのか

910:デフォルトの名無しさん
09/05/29 13:37:10
ごめんなさい、それはどこですか?

911:デフォルトの名無しさん
09/05/29 13:40:52
>>909
お前うぜーよ
URL貼る気ねーならくるな

912:デフォルトの名無しさん
09/05/29 13:46:28
MSDNライブラリのStdInプロパティの説明くらい読めばいいのに

913:899
09/05/29 14:04:21
>>912 ありがとうございます

このあたりの事でしょうか?
URLリンク(msdn.microsoft.com)
一応MSDNのこのあたりは関連するキーワードのものを含め何度か読み返してはいたのですが、
前述の無反応になる件の答えが見出せず困っています・・・
アホですいません

Do Until objExec.StdOut.AtEndOfStream
の判定ではポインタが最後に到達していないはずなのですが
StdOut.ReadLineメソッドを呼び出すと処理が戻らず(エラーも出ず)待機してしまう理由がどうしてもわかりません

914:デフォルトの名無しさん
09/05/29 15:33:52
いちいち自分でググってそのページを見てるくせに、
ここではほのめかしの回答しかしない屑。

915:デフォルトの名無しさん
09/05/29 15:46:09
先にexitを送らない限り一生終わらない(AtEndOfStreamはFalseのまま)
Dim objWShell
Dim objExec
Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("%ComSpec%")
objExec.StdIn.WriteLine "ipconfig"
objExec.StdIn.WriteLine "exit"
Do Until objExec.StdOut.AtEndOfStream
MsgBox objExec.StdOut.ReadLine
Loop

916:デフォルトの名無しさん
09/05/29 16:07:08
ipconfigの出力に[[hoge]]があると誤判定で終了してしまうが
Dim objWShell' As Object
Dim objExec' As Object
Set objWShell = CreateObject("WScript.Shell")
Set objExec = objWShell.Exec("%ComSpec%")
objExec.StdIn.WriteLine "ipconfig"
objExec.StdIn.WriteLine "echo [[hoge]]"
Do Until objExec.StdOut.AtEndOfStream
Dim sLine' As String
sLine = objExec.StdOut.ReadLine
If sLine = "[[hoge]]" Then Exit Do
MsgBox sLine
Loop
If Not objExec.StdOut.AtEndOfStream Then objExec.StdIn.WriteLine "exit"


917:デフォルトの名無しさん
09/05/29 21:10:27
>>915
ありがとうございます
相手(コマンドプロンプト)が終了しない限り、そのTextStreamは「Endがない」動作をするのですね

私のサンプルで停止していたのは、この「現在まだない次の行」を取得中で待機している、という事でしょうか
Exitを打たずともスマートな解決方法があるのではないかと思っていましたが、
簡単にはいかないようでその理由も大体把握できました

「Exec呼び出し先が動作中の時は、StdOutの最終行がAtEndOfStreamで検出できず、
 またStdOut.Read系で現在の最終行を超えて読もうとしてもエラーも出ず新たな行が入るまで待機してしまう」
と言う事ですね。
サンプルまで付けて頂いて、アホでも理解しやすく配慮していただき助かりました



>>916 回避策ありがとうございます
なるほど、未知の最終行を読むこと自体を回避するのですね
番兵を置いているところで目から鱗でした!
これならコマンドプロンプトをExitさせずに逐次StdOutを監視できそうです

918:デフォルトの名無しさん
09/06/07 13:02:33
誘導されてきました

何年か前の話です、バカでも使える簡単な言語を紹介してくれと知り合いに聞いたところ
「VBが良い、中学生でも扱える言語」といわれ家電量販店でVBを購入。
たしか「N88ベーシックと難易度は変わらない」とも言われました。N88ベーシックがなんなのか
よくわかりませんが似たようなベーシック言語は触ったことがあるのでVBもそんなものだと思って買いました
購入してそのまますっかり忘れて押入れの中に放置していたのですが、今日引っ張り出してきてインストール
しようとしたのです、するとIISとフロントベージと言うものがインストールされていないので
インストールできないとの表示が・・・
IISはアパッチのようなものだとしてフロントページが何なのか良くわかりません、調べてみると
ホームページビルダーのようなものらしいけどこれは買わないといけないのでしょうか?。
そもそも知り合いの説明がずいぶん間違っているようにしか思えないのですが。
昔のベーシックの難易度ってフォートランぐらいだったと思うのですが。
VBとやらはインストールの段階で知らない専門用語だらけです。
これはいったいどういうことなのでしょう?えらい人教えてください。

919:デフォルトの名無しさん
09/06/07 13:04:28
ヴァージョンは2003
OSのバージョンはWindows2000です

920:デフォルトの名無しさん
09/06/07 13:04:32
気にせずインストールを続ければOK

921:デフォルトの名無しさん
09/06/07 13:40:47
そのFrontPageはOfficeのFrontPageではなく、FrontPage 2000 Server Extensionsの方だな

ASP.netをやらないなら入れる必要なし

IISとFrontPage 2000 Server Extensionsを入れるなら
コントロールパネル→プログラムの追加と削除→Windowsコンポーネントの追加と削除
から、インストールが出来る

VB6スレだから、誘導が間違ってたんだろうけど
質問する場合は最初からバージョンは書いておいた方がいいよ

922:デフォルトの名無しさん
09/06/08 21:50:22
FrontPage 2000 Server Extensions
てそもそも何のために導入しなきゃいけないんだ?
いまいちよくわからずに入れていたんだが気になってきた

923:デフォルトの名無しさん
09/06/08 21:59:25
WebDAV ではないんだけど、あんな感じで Web サイト上の
コンテンツを更新するのに必要なんじゃなかったかな。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch