Есть ядро AX 2009 SP1 RU7, хочется научиться запускать из кода X++ клиента этой сборки ядра под текущим пользователем в текущей сессии
с минимизированным окном, чтобы он не мелькал на экране. Запускаю через System.Diagnostics.Process с использованием System.Diagnostics.ProcessStartInfo. Что уже перепробовал:
- параметр командной строки -minimize (в ядре клиента есть такой, но, может, он к окнам не имеет отношения);
- processStartInfo.set_CreateNoWindow( true );
- processStartInfo.set_WindowStyle( System.Diagnostics.ProcessWindowStyle::Minimized ) вместе с set_UseShellExecute( false );
- processStartInfo.set_WindowStyle( System.Diagnostics.ProcessWindowStyle::Hidden ) вместе с set_UseShellExecute( false );
- WinAPI::shellExecute() c _show == #SW_HIDE/#SW_SHOWMINIMIZED/#SW_SHOWNOACTIVATE/#SW_SHOWMINNOACTIVE;
Все равно, зараза, всплывает, мелькает, фокус ввода перехватывает и дико этим раздражает. Может, есть еще какие варианты "внешнего воздействия"?.. Ловить момент запуска процесса клиента, искать его окошко и прятать принудительно не хочется, равно как и не хочется дописывать какую-то логику в info.startupPost(), чтобы клиент при определенных условиях сам минимизировал свое окно. Или клиент Аксапты совсем в этом плане "невменяем", и помогут только такие средства?..
Совсем скрывать окно клиента, скажем, запуская его в другой виндовой сессии, не хочется, потому что он запускается не просто так, а для работы - мало ли, отладчик вылезет на точке останова или сообщение о том, что он че-то там где-то куда-то не может.
PS. Использовать Business Connector - не вариант: он кое-чего не умеет как раз из-за отсутствия "морды".