如何检测窗口已被最大化?

我有我的应用程序和第三方应用程序。 而且我需要知道第三方应用程序的窗口已经被最大化。 有什么办法可以知道吗?
起初,我认为我可以使用自己的callback函数来处理这个窗口的事件。

SetWindowLong(hwnd, GWL_WNDPROC, (LONG)WindowProc); 

但是这个函数失败,错误“访问被拒绝”。 这是有原因的。 改变你不属于自己的窗口是不明智的。

所以我该怎么做?

当窗口即将被最小化或最大化时,您实际上可以得到通知。 您将需要使用SetWindowsHook过程来安装和侦听WH_CBT_Hook。

以下是关于WIndowsHooks的一般信息:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/Hooks/AboutHooks.asp

这里是一个线程,告诉你如何在VB中做一些小事(对于WH_Mouse_Hook):

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=581752&SiteID=1

希望这可以帮助,

使用GetWindowPlacement函数。 确保在调用GetWindowPlacement之前将WINDOWPLACEMENT的长度成员设置为sizeof(WINDOWPLACEMENT)。

如果窗口被最大化,返回的WINDOWPLACEMENT结构的showCmd字段应该等于SW_MAXIMIZE(3)。