VC++で作ったエディタからコマンドプロンプトを呼び出したのですが

[戻る]
イルカ 2007/01/25(木) 14:33:00
環境は、VC++2005、Win32、Formで開発してます。

メニューバーに、コマンドプロンプトというメニューを制作してそこからコマンドプロ
ンプトを呼び出したいのですが、可能ですか?

可能ならば方法を教えてください。

Blue 2007/01/25(木) 14:37:48
>Win32、Form
どういうことでしょうか?
(CLRならWindows フォームアプリケーションがあるけど、、、)

コマンドプロンプトの画面を出すだけなら出来ます。

Win32ならShellExecuteとかCreateProcessとか
CLRならProcessクラスを使う。

PATIO 2007/01/26(金) 11:10:08
コマンドプロンプトもウインドウを出すアプリの一種なので
Blueさんが言われているように別のプロセスを起動する関数で
そのアプリを起動すればよいだけです。

\WINDOWS\system32の下にcmd.exeと言うのがあります。
これを試しにエクスプローラーからダブルクリックで起動してみればわかると思います。

Blue 2007/01/26(金) 11:19:31
一応、コマンドプロンプトのパスは環境変数"COMSPEC"から取得すべきでしょう。

Win32 APIをつかうなら

TCHAR cmd[MAX_PATH];
GetEnvironmentVariable(TEXT("COMSPEC"), cmd, MAX_PATH);
// もしくは
// ExpandEnvironmentStrings(TEXT("%COMSPEC%"), cmd, MAX_PATH);


システムコール関数であれば

LPCTSTR cmd = _tgetenv(TEXT("COMSPEC")); // tchar.h


.NET Framework(C++/CLI)なら

System::String^ cmd = System::Environment::GetEnvironmentVariable(L"COMSPEC");

で取得できます。

PATIO 2007/01/26(金) 11:26:22
> 一応、コマンドプロンプトのパスは環境変数"COMSPEC"から取得すべきでしょう。

御意。
この環境変数久しぶりに見た気がします。
コマンドプロンプトを呼び出すこと自体が殆ど無いからなぁ。

イルカ 2007/01/29(月) 13:25:15
Blueさん
PATIOさん
ありがとうございます。

System::String^ cmd = System::Environment::GetEnvironmentVariable(L"COMSPEC");
を使ってcmdにパス取得したのですが、コマンドプロンプトを呼び出すことがができませ
んでした。

.NET Framework(C++/CLI)では、どのようにプロセスを呼び出したらいいですか?

Blue 2007/01/29(月) 13:41:10
>cmdにパス取得したのですが、コマンドプロンプトを呼び出すことがができませんでし
た。

パスを取得するだけでは起動できませんよ?
ちゃんとレス読んでいるのでしょうか?

>CLRならProcessクラスを使う。

System::Diagnostics::Process::Start(cmd);

[MSDN]Process.Start メソッド (String)  
http://msdn2.microsoft.com/ja-jp/library/53ezey2s(VS.80).aspx

イルカ 2007/01/29(月) 13:49:39
[[解決]]
Blueさん、ありがとうございます。

パスを取得してから、ShellExecuteとかCreateProcessが使えないのと
Processクラスの使い方が分からず弱ってしまいました。

System::Diagnostics::Process::Start(cmd);で起動させることができ解決できました。
ありがとうございます。

古いスレッドには追加発言できません。