Я использую вызов CreateProcess в программе на C ++ для выполнения JAR-файла, который запускает приложение Java Swing GUI. Все работает нормально, за исключением того, что приложение Java запускается в свернутом виде, и я хочу, чтобы оно начиналось с отображаемого окна. Вот соответствующий фрагмент кода:
// Construct the command string to be used for the CreateProcess call,
//including a parameter string
sprintf(cmdStr, "javaw -jar \"AppDir\\App.jar\" %s", parmStr);
// Create and initialized startup-info structure for use with CreateProcess call
STARTUPINFO startInfo;
ZeroMemory(&startInfo, sizeof(startInfo));
startInfo.wShowWindow = SW_NORMAL;
startInfo.dwFlags = STARTF_USESHOWWINDOW;
startInfo.cb = sizeof(startInfo);
PROCESS_INFORMATION procInfo;
ZeroMemory(&procInfo, sizeof(procInfo));
if (!CreateProcess(NULL, cmdStr, NULL, NULL, FALSE, 0, NULL, NULL, &startInfo, &procInfo))
{
MessageBox( dialogOwner, "Create Process Error", "Application not instantiated", MB_OK);
}
Согласно литературе MSDN, установка флага wShowWindow в SW_NORMAL и dwFlags в STARTF_USESHOWWINDOW должна помочь, но некоторые комментарии, которые я читал на этом и других форумах подразумевается, что иногда эти флаги игнорируются (например, для консольных приложений), поэтому мне было интересно, если это было здесь. Для справки, у меня была эта проблема до того, как она ушла сама по себе, и теперь она вернулась после того, как я сделал некоторые изменения в коде. Но я не устанавливал никаких флагов в структуре startupinfo раньше, поэтому я надеялся добиться некоторой согласованности в поведении. Любые советы или указатели будут оценены ...
Шелдон Р.