下記関数でプロンプトを立ち上げ
カレントドライブがc:\の状態になります。
このあと(1)のようにtest.exe test.txtと入力させるには
どうしたらよいでしょうか?(手入力ならもちろんできますが)
ShellExecute(m_hWnd,open,cmd.exe,NULL,c:\\,SW_SHOW);
(1)プロンプトの画面
c:\>test.exe test.txt
フォーカスがあればキーボードイベントを使う手があると思いますが
バッチファイルに,
test.exe test.txt
と書いておいて,
cmd.exe /k バッチファイル
を呼び出してやればできませんかね?
実行するOSとVCのバージョン
特に実行OSによって挙動違うんですけど
CreateProcessしかやったこと無いんだけど
コマンドラインで「TEXT.BAT 0001」とやると、TEXT.BATは 0001と認識しますが
CreateProcessで同じ記述をしてもパラメータ「0001」と認識しないOSがいます
すべてできちんと動作させるには
「TEXT.BAT /0001」
としなければ、きちんとした動作になりません
ShellExecuteも同じような考えで動作しませんかね
DOS窓が出て入力待ちにならないと、やはりダメなんですかね?
アプリでDOS窓を起動させ、入力待ちにさせる行為自体にどんな意味があるのか
またどんな必要性があるのか不思議なのですが?
アプリ作る意味なさそうですけど?
Windowsの「Shell」って「cmd.exe」と同等のものと思いますけど違いますかね?
つまり アプリ→シェル(ShellExecute)→シェル(cmd.exe)→入力待ち
見たいな動作させてませんか? これでいいの?
systemを使えばいいと思いますよ。
例えば
#include<stdlib.h> ←必要
system(cls);
なら、すべてのDOS上の画面消えますし、
system(~.EXE)
なら ~.EXE が実行できます。
例:---------
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
system(C:\\windows\\notepad.exe C:\\test.txt); //←\\が二ついるのに注意
}
-------------
C:\test.txt を作って試してみてください。ちゃんと関連付けられてnotepadが実行されま
す。
このことを聞いていてのですよね?