.exeファイルをダイアログから指定し、system(○○.exe)で実行したいと思っています。
調べながらSystem::Stringをchar*へ変換する工程を入れ、以下のようなプログラムを作成しました。
OpenFileDialog^ dlg = gcnew OpenFileDialog();
dlg -> Filter = "実行ファイル (*.exe)|*.exe";
if(dlg -> ShowDialog() != System::Windows::Forms::DialogResult::OK){
return;
}
System::String^ strfn = dlg->FileName;
char* sysfile = (char*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(strfn).ToPointer();
system(sysfile);
System::Runtime::InteropServices::Marshal::FreeHGlobal(IntPtr(sysfile));
調べたところ、括弧内をcmd.exeに送るだけなので問題があるということがわかりました。
そこで、
このように直接指定して実行したところ成功しました。
ここからが質問なのですが、上のコード内の「C:\\test.exe」の部分を変数で指定するようにするにはどうしたらいいのでしょうか?
dlg->FileName内には「C:\test.exe」が入っているのを確認しました。
教えていただけるとうれしいです。