C++ プログラムで次のコマンドを実行する必要があります。
WinExec("program_name.exe", SW_SHOW);
Visual Studio 2010 を使用しています。文字列 "program_name.exe" を回避するために、変数、定数などを使用する方法はありますか? 現在、私のコンピューターで動作していますが、私のプログラムは、プロジェクト/exe ファイルの名前がわからない別のコンピューターでテストされます。
C++ プログラムで次のコマンドを実行する必要があります。
WinExec("program_name.exe", SW_SHOW);
Visual Studio 2010 を使用しています。文字列 "program_name.exe" を回避するために、変数、定数などを使用する方法はありますか? 現在、私のコンピューターで動作していますが、私のプログラムは、プロジェクト/exe ファイルの名前がわからない別のコンピューターでテストされます。
実行可能ファイル名は、メイン関数のパラメーターとして渡されます。
int main(int argc, char **argv)
{
string exename = argv[0];
}
実行したい .exe ファイルを、それを実行している .exe と同じ場所に保存して、ハードコードされた定数名をそのままにしておくことができます。
または、コマンド ライン引数を介して実行するプログラム名を渡すのも良い方法です。引数を解析するためのチュートリアルは次のとおりです 。
そうすれば、その文字列を変数に置き換えて、.exe を実行するときにコマンド ラインから名前を渡すことができます。
conf ファイルを開き、アプリ名を読み取り、アプリの保存パスが存在するかどうかをテストしてから、関数に渡します
これは単なる例であり、同じ考えです
int main()
{
string appName;
if (getAppName(appName))
{
WinExec(appName.c_str(), SW_SHOW);
/// WinExec(appName, SW_SHOW);
/// ^^^ one of these
}
return 0;
}
関数は次のようになります
bool getAppName(string& appName)
{
string str;
///file open, and read;
///read(str)
if(fileExist(str))
{
appName = str;
return true;
}
return false;
}