Лучший способ & # 8220; док-станции & # 8221; стороннее приложение, запущенное на панели windows.forms?

StackOverflow https://stackoverflow.com/questions/1435358

  •  07-07-2019
  •  | 
  •  

Вопрос

В настоящее время я делаю это следующим образом:

<Ч>
// _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 , чтобы дождаться освобождения цикла сообщений. Вы уже находитесь.

В общем, я не думаю, что это можно сделать без изменения программы, которую вы размещаете.

РЕДАКТИРОВАТЬ . Вы можете попытаться удержать другую программу над областью хостинга, скрывшись от панели задач, удалив строку заголовка, переместив ее по мере перемещения вашей программы и т. д. Однако это все равно не помогло бы. не работает идеально; Я рекомендую вам попробовать найти альтернативу.

Попробуйте связаться с разработчиками стороннего приложения и попросить их совета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top