-1

別のプログラムを実行する Windows サービスを作成しました。しかし、今はGUIを持っているがバックグラウンドでプログラムを実行したいので、GUIを表示したくありません。これは私がサービスに使用したコードです

しかし、私はGUIプログラムを編集することはできません

GUIを非表示に設定するか、サービスプログラムからvisible = falseに設定する方法はありますか?

このサービスは、Visual Studio を使用して C++ で作成された Windows サービスです。

CreateProcess を使用して exe ファイルを開始しました。サービスからプログラムを実行するために使用しているコードは次のとおりです。

path = "C:\MyDirectory\MyFile.exe";

STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
if (CreateProcess(path, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
    ::WaitForSingleObject(processInfo.hProcess, INFINITE);
    CloseHandle(processInfo.hProcess);
    CloseHandle(processInfo.hThread);
}

プログラム自体を編集せずに GUI を非表示にすることは可能ですか?

4

1 に答える 1

0

最も近いwShowWindowのは、STARTUPINFO 構造体のメンバーを設定することです。nCmdShowそれでも、アプリケーションが のパラメーターを尊重する場合にのみ機能しますWinMain

STARTUPINFO info = {0};

info.dwFlags = STARTF_USESHOWWINDOW;
info.wShowWindow = SW_HIDE;

if (CreateProcess(path, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
    //...
}
于 2013-04-18T15:17:28.690 に答える