2013-12-04 3 views
5

Я пытаюсь получить дескриптор окна (HWND) основной формы моего приложения C# (приложение имеет только 1 форму).Process.GetCurrentProcess(). MainWindowHandle возвращает ноль

Некоторые решения на интернет-шоу, что я могу использовать:

Process.GetCurrentProcess().MainWindowHandle 

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

+0

Просто побочное примечание, выглядит, как вы не имеете доступа к вашей форме? почему бы просто не использовать свойство 'Handle'? –

+0

Если у вас есть только 1 форма, используйте свойство handle. – Dreamwalker

+0

Да, в форме, this.Handle дает не-нулевой указатель, но он не кажется правильным, когда я пытаюсь получить доступ, используя это значение, появляется нарушение доступа – jondinham

ответ

3

MSDN говорит:

Главное окно окно открывается процесс, который в настоящее время имеет фокус (форма TopLevel). Вы должны использовать метод Refresh, чтобы обновить объект Process, чтобы получить текущий обработчик главного окна, если он изменился.

и

Способ имеет главное окно, связанное с ним, только если процесс имеет графический интерфейс. Если связанный процесс не имеет главного окна, значение MainWindowHandle равно нулю. Значение также равно нулю для скрытых процессов, то есть процессов, которые не видны на панели задач. Это может иметь место для процессов, которые отображаются в виде значков в области уведомлений, в крайнем правом углу панели задач.

См http://msdn.microsoft.com/en-us/library/system.diagnostics.process.mainwindowhandle(v=vs.110).aspx

-6

попробуйте использовать

System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle 
+6

Это именно то, о чем уже упоминался. –

+0

@Ben Voigt: да, я знаю это, но в своем приложении он рассматривал класс «Process» из некоторого другого пространства имен, поэтому я добавил System.Diagnostics, и он сработал. –

+1

Но это было бы ошибкой времени компиляции. Не исключено, что это проблема, когда в вопросе четко сказано, что код компилируется и возвращает ноль. –

Смежные вопросы