Лучший способ & # 8220; док-станции & # 8221; стороннее приложение, запущенное на панели windows.forms?
Вопрос
В настоящее время я делаю это следующим образом:
<Ч>// _Container is the panel that the program is to be displayed in.
System.Diagnostics.Process procTest = new System.Diagnostics.Process();
procTest.StartInfo.FileName = "TEST.EXE";
procTest.StartInfo.CreateNoWindow = false;
procTest.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
procTest.Start();
procTest.WaitForInputIdle();
SetParent(procTest.MainWindowHandle, _Container.Handle);
MoveWindow(procTest.MainWindowHandle,
0, 0, _Container.Width, _Container.Height, true);
<Ч>
Проблема с этим кодом заключается в том, что некоторые части пользовательского интерфейса приложения больше не работают должным образом после того, как я изменил MainWindowHandle (то есть: кнопки пропускают текст).
Есть ли способ сделать это, не вызывая проблем с закрепленным приложением? (Либо через .net или user32)?
Решение
Прежде всего, вместо того, чтобы просто ждать 1,5 секунды, попробуйте вызвать Вы уже находитесь. procTest.
WaitForInputIdle
, чтобы дождаться освобождения цикла сообщений.
В общем, я не думаю, что это можно сделать без изменения программы, которую вы размещаете.
РЕДАКТИРОВАТЬ . Вы можете попытаться удержать другую программу над областью хостинга, скрывшись от панели задач, удалив строку заголовка, переместив ее по мере перемещения вашей программы и т. д. Однако это все равно не помогло бы. не работает идеально; Я рекомендую вам попробовать найти альтернативу.
Попробуйте связаться с разработчиками стороннего приложения и попросить их совета.