kirishima8と申します。
よろしくお願いします。
開発環境
WindowsVista business 32bit
Visual Studio 2005 VC++
Win32アプリでコンソールアプリで、Dosのコマンドラインを利用したいのです。
新たにbatファイル等を作成・実行するのではなく、ずっと同一のコンソールウィンドウを利用し、かつ、Dosコマンドをプログラム側から利用できたらと考えています。
コマンドプロンプトのような機能を、自分で作ったアプリに実装させたいというのが最終的な目標となります。
MSDNで調べてみたところ、WriteConsoleInput()や関連APIが見つかりました。
しかしながら、パラメータの説明が何を指すのかという点が、現時点で私には解り辛いです。
何らかの情報をお持ちの方、ご教授ください。
未熟者ですので、上記では内容が伝わらないかもしれません。
何か不明な点がございましたら、お尋ねになってください。
よろしくお願いします。
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コマンドを単に実行したいのか?
またはそれ以外なのか?
補足して下さい。
・でわ。また。
>★質問の意図が良くつかめませんでした。
お手間を取らせました。
要領を得ない表現が多々あったと私も反省しております。
>・この質問はシェル機能を実装したいのか?
>DOSコマンドを単に実行したいのか?
>またはそれ以外なのか?
・実行ファイルでDOSコマンドを叩いて、その出力データを取得したい。
・WIN32APIを直接利用しなくても、代用可能な処理はDOSコマンドに任せてしまいたい。
ただしいずれの場合も、ウィンドウ表示はさせたくありません。
また、別にbatファイルのような実行ファイルを用意しておいて、それを利用するというやり方はNGということでお願いします。
>・ShellExecute()以外にもWinExec()、CreateProcess()やC標準関数のsystem()関数も使えます。
現在アドバイスに従い、調査・実験中です。
助言感謝致します。
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/htm …
早速のご回答、感謝致します。
>ShellExecute()
現時点での私が直面している課題を克服するには十分効果を発揮してくれています。
std::systemは、Dosコマンドをプログラムで実行させたいという本来の希望を叶えてくれるのですが、新たにウィンドウが表示される点だけは容認し難いところがあります。
下手な質問文に対応して頂き、感謝致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(OS) DOSコマンド『dir』の『/o』オプション 3 2023/03/10 09:29
- アプリ 著作権に関する質問です 3 2023/02/11 10:31
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- docomo(ドコモ) docomoでの機種変更 Google Pixel 6a 11 2022/11/20 12:22
- Windows 7 Windows7でMicrosoft VirtualPC2007 SP1を使用する 9 2022/11/17 13:12
- IT・エンジニアリング インフラエンジニア(ネットワークエンジニア)の検証業務について教えてください。 インフラ初心者なので 2 2022/06/26 00:08
- カードローン・キャッシング 楽天カードの増額の申し込みについて 昨日、 楽天カード株式会社から→ 拝啓 平素は楽天カードをご利用 1 2022/03/23 10:34
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(プログラミング・Web制作) DOSコマンドに詳しい方、お知恵をお貸しください 5 2022/11/04 20:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MacOS:ターミナルではNPMのコ...
-
ShellExecuteの使い方について
-
staticのメモリ共有について
-
windowsのタスクスケジューラを...
-
コンパイルできるのに実行できない
-
SYSTEM関数等を用いて複数のコ...
-
ACCESSでタイトルバーを非表示...
-
cmd /c を使ったときと使わなか...
-
VB6.0 ラベルが文字化け
-
コマンドプロンプトが使えない
-
Eclipseで、プロジェクト名のと...
-
Eclipseのアンインストールの仕方
-
split関数で区切り文字がない場合
-
html上で、バッチやexeファイル...
-
SVFの設定について:クラスパス...
-
シンボルが見つかりませんとい...
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
Eclipse(JAVA)のデバッグで他...
-
マイクラjavaでForgeを入れたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSでタイトルバーを非表示...
-
VBプログラムから「管理者とし...
-
ShellExecuteの使い方について
-
CloudSticky.jarが起動しない。
-
windowsのタスクスケジューラを...
-
ブレークポイントを設置してな...
-
32bitアプリから64bitアプリの...
-
staticのメモリ共有について
-
実行したらがメモ帳出て来てしまう
-
ShellExecuteでDOSコマンド実行...
-
batよりjava起動
-
C# コマンドプロンプト画面で表...
-
jarファイルをバッチで実行させ...
-
コマンドを実行してコマンドラ...
-
Tomcatのメモリー使用量が知りたい
-
windows power shell icacl
-
SYSTEM関数等を用いて複数のコ...
-
コンパイルできるのに実行できない
-
C#からバッチファイルを起動で
-
「SimpleEntry を型に解決でき...
おすすめ情報