既存の実行可能ファイルを置き換える非常に単純なプログラムを作成しようとしています。引数を少し変えて、元のプログラムを新しい引数で実行する必要があります。サードパーティのライブラリによって自動的かつサイレントに呼び出されるはずです。
正常に実行されますが、コンソール ウィンドウがポップアップして、呼び出されたプログラムの出力が表示されます。そのコンソール ウィンドウが表示されないようにする必要があります。プログラムの出力は気にしません。
私の最初の試みはコンソール アプリケーションとして設定されていたので、同じことを行う新しい Windows GUI アプリを作成することでこれを修正できると考えました。しかし、それでもコンソールがポップアップします。元のコマンドはコンソール アプリケーションとしてマークされていると想定しているため、Windows は自動的に実行するコンソール ウィンドウを提供します。念のため、元の _exec() への呼び出しを system() への呼び出しに置き換えてみました。助け無し。
このコンソール ウィンドウを非表示にする方法を知っている人はいますか?
これが私のコードです:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
char* lpCmdLine,
int nCmdShow)
{
char *argString, *executable;
// argString and executable are retrieved here
std::vector< std::string > newArgs;
// newArgs gets set up with the intended arguments here
char const ** newArgsP = new char const*[newArgs.size() + 1];
for (unsigned int i = 0; i < newArgs.size(); ++i)
{
newArgsP[i] = newArgs[i].c_str();
}
newArgsP[newArgs.size()] = NULL;
int rv = _execv(executable, newArgsP);
if (rv)
{
return -1;
}
}