DOBON.NET DOBON.NETプログラミング掲示板過去ログ

.netでのコマンドプロンプト利用について

環境/言語:[XP]
分類:[.NET]

コマンドプロンプトを.netから利用したいのですが上手くいきません
やりたいことはコマンドプロンプトのウインドを見えないように起動して文字列を打ち込んでエンターキーを押しコマンドプロンプトを終了させることです

このまま起動してみるとコマンドプロンプトが大量にバックグラウンドで開いてしまいます。終了のさせ方もよくわからないのでどなたか教えて貰えないでしょうか?よろしくお願いしますm(_ _ ")m

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim cmd As New ProcessStartInfo()

cmd.FileName = "c:\windows\System32\cmd.exe" ' 実行するファイル
cmd.CreateNoWindow = True ' コンソール・ウィンドウを開かない
cmd.UseShellExecute = False ' シェル機能を使用しない

Process.Start(cmd) 'コマンドプロンプト起動

SendKeys.SendWait("文字列{Enter}")
もちもちさん

> やりたいことはコマンドプロンプトのウインドを見えないように
> 起動して文字列を打ち込んでエンターキーを押し
> コマンドプロンプトを終了させることです

解決方法ではありませんが、
コマンドプロンプトで実現させる必要があるように思えませんが、
コマンドプロンプトで実行しようとしているコマンドを
Shell等で起動する方法ではいけないのでしょうか
> 解決方法ではありませんが、
> コマンドプロンプトで実現させる必要があるように思えませんが、
> コマンドプロンプトで実行しようとしているコマンドを
> Shell等で起動する方法ではいけないのでしょうか


返信ありがとうございます。shellはプログラムを実行するだけじゃないのでしょうか?やろうとしてるのはフォルダを仮想ドライブに見せようとしています
コマンドプロンプトで subst p: "C:\Program Files\" と打つだけなのですが
コマンドプロンプトを起動しないでできるようなものでしょうか?
> コマンドプロンプトで subst p: "C:\Program Files\" と打つだけなのですが
> コマンドプロンプトを起動しないでできるようなものでしょうか?
subst.exeをそのまま呼び出せば良いのでは?

Process.Start("subst", "p: \"C:\\Program Files\"");
返信ありがとうございます。subst呼び出そうとしてみたのですが上手く動いてくれませんでした(´・ω・`)ナンデ・・・

> subst.exeをそのまま呼び出せば良いのでは?
>
> Process.Start("subst", "p: \"C:\\Program Files\"");

この通りにもやってみたのですがエラーが出てしまいます
とりあえず次ので動きましたがコンソール画面が出てしまいます(;´Д⊂) あう‥


' コマンドプロンプトを起動
Dim hProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start("c:\windows\System32\cmd.exe")

Threading.Thread.Sleep(50)
SendKeys.SendWait("Subst p: C:\download{Enter}") '仮想ドライブに
Threading.Thread.Sleep(100)

hProcess.CloseMainWindow() 'コマンドプロンプト終了
2009/01/08(Thu) 23:18:43 編集(投稿者)

>>Process.Start("subst", "p: \"C:\\Program Files\"");
>
> この通りにもやってみたのですがエラーが出てしまいます
「エラーが出ます」の一言でなく、「****Exception、〜〜〜〜」といった例外が発生するとか、「エラー CSXXXX 〜〜〜が****」といったコンパイルエラーが発生するとか、情報を頂けると追加の返答を受けやすいと思います。


> とりあえず次ので動きましたがコンソール画面が出てしまいます(;´Д⊂) あう‥
見えている画面に対してキーを送るわけですから、コンソール画面を出さなければ、substの実行はできません。
そう考えれば、「コンソールを出したくない」という要求を満たすためには、そもそも「コンソールにキーを送ってsubstを実行する」という手法自体が NG ということになります。

# それとも、コンソールが一瞬見えるのは OK だが、自動的に閉じるということを実現できていないだけ?
■No23741に返信(Azuleanさんの記事)
> Process.Start("subst", "p: \"C:\\Program Files\"");
ではなく、
 Process.Start("SUBST", "p: ""C:\Program Files""")
にしないと、エラーになってしまうような。
>  Process.Start("SUBST", "p: ""C:\Program Files""")
> にしないと、エラーになってしまうような。
ご指摘&フォローありがとうございます。

VB.NETはエスケープがそれでしたね。
気づける要素があったのに、気づけていないあたりだめだなぁ。
2009/01/09(Fri) 18:14:23 編集(投稿者)

返信遅くなってしまいましたがありがとうございます

■No23753に返信(Azuleanさんの記事)
>> Process.Start("SUBST", "p: ""C:\Program Files""")
>>にしないと、エラーになってしまうような。

この通りにやってみたらスムーズにできました
コンソールウインドが表示されてしまうのはしょうがないんですね(・ω・`)
親切にありがとうございましたo(_ _)o ペコッ
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板