Какое событие отправляется в окно Windows Forms при нажатии его кнопки на панели задач? - PullRequest
3 голосов
/ 14 мая 2010

Когда пользователь нажимает заголовок / кнопку окна на панели задач, какое событие .NET (или сообщение Windows API) отправляется окну?

Я использую C # / .NET 2.0 / Windows Forms.

Спасибо

Ответы [ 2 ]

2 голосов
/ 14 мая 2010

Чтобы обнаружить сообщения, которые отправляются окну в различных точках, вы должны рассмотреть использование Microsoft Spy ++. На моей машине он находится по следующему пути

"D:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\spyxx.exe" 

Примечание. Я использую 64-битную ОС, поэтому (x86).

Тип и количество сообщений довольно велики, и я уверен, что они немного различаются в разных версиях ОС, таких как XP и Windows 7. Однако ключевые события / сообщения, вероятно, останутся довольно постоянными.

WM_ACTIVATE (при активации и деактивации) WM_WINDOWPOSCHANGING WM_WINDOWPOSCHANGED и т.д.

Другим хорошим инструментом является ManagedSpy, но я не пробовал его ни на чем, кроме XP, он, похоже, не работает на 64-битной Windows 7, но я не провел много исследований (пока!). http://msdn.microsoft.com/en-us/magazine/cc163617.aspx

0 голосов
/ 14 мая 2010

События «Активировано» и «Деактивировать» обычно происходят при нажатии кнопки на панели задач, но не всегда. Они также возникают, когда вы просто нажимаете на окно или переходите в другое окно.

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

...