• ベストアンサー

コンソールアプリ内でDosコマンドを使用したい

kirishima8と申します。 よろしくお願いします。 開発環境 WindowsVista business 32bit Visual Studio 2005 VC++ Win32アプリでコンソールアプリで、Dosのコマンドラインを利用したいのです。 新たにbatファイル等を作成・実行するのではなく、ずっと同一のコンソールウィンドウを利用し、かつ、Dosコマンドをプログラム側から利用できたらと考えています。 コマンドプロンプトのような機能を、自分で作ったアプリに実装させたいというのが最終的な目標となります。 MSDNで調べてみたところ、WriteConsoleInput()や関連APIが見つかりました。 しかしながら、パラメータの説明が何を指すのかという点が、現時点で私には解り辛いです。 何らかの情報をお持ちの方、ご教授ください。 未熟者ですので、上記では内容が伝わらないかもしれません。 何か不明な点がございましたら、お尋ねになってください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★質問の意図が良くつかめませんでした。 >コマンドプロンプトのような機能を、自分で作ったアプリに実装させたいというのが最終的な目標となります。  ↑  本当にご自分で『コマンド・プロンプト』のようなシェル機能を実装したいのですか?  単に『コマンド・プロンプト』で動くプログラムを実行したいだけなら回答者No.1さんの  アドバイスにあるやり方で実行できます。 ・ShellExecute()以外にもWinExec()、CreateProcess()やC標準関数のsystem()関数も使えます。  Windowsプログラムにおいて一番お手ごろなのはShellExecute()でしょうね。  使い方は  ShellExecute( (1), (2), (3), (4) ,(5) ,(6) );  (1)親ウインドウハンドル  (2)操作文字列  (3)コマンド名  (4)パラメータ  (5)作業ディレクトリ  (6)表示状態  こんな感じです。 ・この質問はシェル機能を実装したいのか?  DOSコマンドを単に実行したいのか?  またはそれ以外なのか?  補足して下さい。 ・でわ。また。

kirishima8
質問者

お礼

>★質問の意図が良くつかめませんでした。 お手間を取らせました。 要領を得ない表現が多々あったと私も反省しております。 >・この質問はシェル機能を実装したいのか? >DOSコマンドを単に実行したいのか? >またはそれ以外なのか? ・実行ファイルでDOSコマンドを叩いて、その出力データを取得したい。 ・WIN32APIを直接利用しなくても、代用可能な処理はDOSコマンドに任せてしまいたい。 ただしいずれの場合も、ウィンドウ表示はさせたくありません。 また、別にbatファイルのような実行ファイルを用意しておいて、それを利用するというやり方はNGということでお願いします。 >・ShellExecute()以外にもWinExec()、CreateProcess()やC標準関数のsystem()関数も使えます。 現在アドバイスに従い、調査・実験中です。 助言感謝致します。

その他の回答 (1)

回答No.1

お手軽なのは、 #include <stdlib.h> で、 std::system("この中にコマンドラインをそのまま"); かと思います。 ただ、これは、実行時に「窓」が表示されますけど。 以前描いたコードを探してみたら、 ShellExecute(NULL, "open" ,"C:/etc/SHOWJST.EXE", "/O" ,NULL, SW_HIDE); というのがありました。 多分、#include <windows.h> で使えるのではと思います。 上のコードで、 NULL …… 多分、このまま "open" …… おなじく、 "C:/etc/SHOWJST.EXE" …… ここに実行ファイル名 "/O" …… これは、実行ファイルに渡すオプション部分 NULL …… 多分、このまま SW_HIDE …… 窓を開かずに実行 で、実行は可能なはずです。

参考URL:
http://msdn.microsoft.com/library/ja/jpshell/html/_win32_shellexecute.asp?frame=true
kirishima8
質問者

お礼

早速のご回答、感謝致します。 >ShellExecute() 現時点での私が直面している課題を克服するには十分効果を発揮してくれています。 std::systemは、Dosコマンドをプログラムで実行させたいという本来の希望を叶えてくれるのですが、新たにウィンドウが表示される点だけは容認し難いところがあります。 下手な質問文に対応して頂き、感謝致します。

関連するQ&A

  • 他のアプリが起動しているプログラムの、コマンドラインを取得したい

    あるwinアプリ(1)が、コンソールプログラム(2)を起動中だとして、 他のwinアプリ(3)が、(1)が起動している(2)のコマンドラインパラメータを取得する方法はあるのでしょうか? もし、あるようでしたらその方法を、教えて頂けないでしょうか。 winアプリ(3)は、VC6作成の、win32APIアプリです。 よろしくお願い致します。

  • dosコマンドプロンプト %0の扱いですが、

    dosコマンドプロンプト %0の扱いですが、 この度dosのbatファイルを作成しましたが、 abc.batのようなファイル名で、 %0を使うと、「abc.bat」と全てが参照されてしまいます。 「abc」のみを取り込みたい(.batを落としたい)のですが、 どう書けば宜しいのでしょうか。 宜しくお願いします。

  • コンソールアプリを使いたい

    .sndを.waveに変換したくて調べてみると、 snd2wavというコンソールアプリを使えば変換できることが分かりました。 しかし今までコマンドプロンプトに触れたことがなく あれこれ調べつつやってみても、なかなかこのアプリを起動(?)させることができません。 ですので初心者にも分かりやすいコマンドプロンプトの使い方を載せているサイトなどあれば教えてほしいです。

  • VBでDosコマンドを動かすには

    VB6でDosのコマンドを入力して実行させたいと思っているのですが、どのように設定すればいいのでしょうか? わざわざVB6からDosプロンプトを起動させるわけではございません。 理想ではテキストボックスにコマンドを入力してボタンを押すと実行すると言う形にしたいのですが・・・。 ご存知の方ご指導よろしくお願いします たぶんAPIを使うのだと思いますがAPIまだまだ知識不足なので、分かりやすく解説していただければ助かります。 よろしくお願いします。

  • XPで 動作する DOSコマンド モードの件ですが

    XPで 動作する DOSコマンド モードの件ですが 以下の 2種類があります 1 「スタート] - [プログラム] - [アクセサリ] - [コマンドプロンプト]    2 セーフモードで 起動した コマンドモード 昔の DOS アプリが 1では うまく動作しませんが 2では動作します コマンド モードに 違いがあるのでしょうか? できれば XPマシンで 昔の DOSの AUTOEXCEC.batのように 自動で DOS アプリを起動したいのですが なにか ヒントがあれば 教えてください     

  • DOSプロンプトでコマンドが動作しない

    batファイルを作るためにとりあえずwindows端末のDOSプロンプト を立ち上げ、コマンドをたたいてみようとしています 端末はwindows7なのですが、DOSプロンプトに対して openコマンドをたたいたら 'open'は内部コマンドまたは外部コマンド、操作可能なプログラム またはバッチファイルとして認識されていません とのメッセージがでます Webで調べるとパスが通ってない?とのことのようですが このopenコマンドがwindows7のどこにあるか あるいはそれがわかった時、どこにどのように記載したらいいか 等、記載のサイトとか方法について教えていただけないでしようか よろしくお願いします。

  • VC、コンソールアプリ結果のウインドウサイズ

    OSはwindows2000proSP2、VC6スタンダードで コンソールアプリケーションを作っています。 アプリを実行すると、結果がコマンドプロンプトに出てきますが、 コマンドプロンプトのウインドウサイズ幅が小さく、 変なところで折り返って表示されてしまい、見栄えが悪くなってしまいます。 そこで、実行結果が出力されるコマンドプロンプトのウインドウサイズを 変更したいのですが、どう設定したらよいかわかりません。 どうしたらウインドウサイズを変更できるのでしょうか?

  • Dosコマンドが分かりません

    Dosコマンドについて、色んなサイトを見てもよく分からない点をお聞きしたいと思います。 1)Dosプロンプト画面で「再起動」コマンドは無いのでしょうか?rebootとか打っても駄目です。UnixのX-Windowでは、rebootで再起動になったのですが。 2)以前Unixを勉強した際に、コマンドについては、 ユーザ側 - シェル - カーネル という図式が あったのですが、Winでも同じような仕組みなのでしょうか?またシェルは何を使っているのでしょうか? 3)内部コマンドと外部コマンドの違いは何ですか? よろしくお願いします。

  • コマンドプロンプトで path を事前に設定したい

     Windows Xp の利用者です。しばしば DOS のプログラム(自作コマンドなど)を使いたい場合があります。で、コマンドプロンプトを開くと、path がいろいろ設定されています。(各種アプリのインストールによって設定が変えられたのでしょう。)  私も、自分の path を設定しておき、コマンドプロンプトを利用する際、いつも追加されているようにしたいのです。  試しに、「スタートアップ」フォルダーに init.bat を置き、その中に、「path c:\WINCOM;d:\」と書いてみました。以前の DOS の autoexec.bat の感覚ですが、ダメでした。Windows Xp が立ち上がると、全部無視されています。  どうやればいいのでしょうか。

  • コンソールを実行後に閉じないようにするコマンド

    test.batからTest.vbs というファイルを起動しているのですが、 エラーが出てしまっており、 エラー内容を確認したいのですが DOSプロンプトの画面が閉じてしまって困っています。 cscript C:\tools\Scripts\Test.vbs //I と書いたあとに、 waitとかrestとか なにかもう一行足すとコンソールを閉じずに表示したままにしてくれていた記憶があるのですが、 本当に基本的かつトンチンカンな質問だと思うのですが どなたか教えてください! もしお時間があれば普通はどうやってデバッグするものなのかもヒントをいただけるとうれしいです。 よろしくお願いいたします。