Как я могу показать форму в процессе1 из формы в процессе2? - PullRequest
0 голосов
/ 24 марта 2010

Я пытаюсь показать скрытую форму в process1 от другого, вызванного:

Process.Start(@"F:\MyOtherFormPath\MyOtherForm.exe",this.Handle.ToInt32());

Как вы можете видеть, я передал номер дескриптора скрытой формы, с которого я называю «MyOtherForm», и я использовал этот номер, чтобы получить дескриптор и показать скрытую форму из моей «MyOtherForm» следующим образом:

Form newFrm = Form.FromHandle(new IntPtr(long.Parse(handleNumberOfMyHiddenForm)));
newFrm.show();

Но это не сработало, в любом случае.

P.S .: не исключение.

Спасибо в продвинутом ..

Ответы [ 2 ]

1 голос
/ 24 марта 2010

То, что вы пытаетесь сделать, невозможно, это чудо, что вы не получили исключение. Дескриптор окна действителен между процессами, если они выполняются в одном сеансе. Но Control.FromHandle () может найти только те элементы управления, которые были созданы в процессе, из которого он вызывается. В вашем случае он должен вернуть ноль.

Сделать видимой форму в другом процессе действительно возможно, вам придется P / Invoke ShowWindow () с помощью SW_SHOWNORMAL. Посетите pinvoke.net для декларации. Используйте Handle.ToInt64 (), чтобы он нормально работал в 64-разрядных операционных системах.

0 голосов
/ 24 марта 2010

Дескриптор, который вы передаете, недопустим в другом процессе.

Чтобы выполнить то, что вы хотели бы сделать, вам придется использовать какой-то способ межпроцессного взаимодействия. В .NET это можно сделать, например, используя WCF или .NET Remoting.

Другим способом управления другим приложением было бы использование P / Invoke или автоматизации пользовательского интерфейса (пространство имен System.Windows.Automation).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...