5

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

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

但此功能失败并出现错误“访问被拒绝”。这是有原因的。在窗口中更改您不拥有的东西并不是很明智。

所以我该怎么做?

4

2 回答 2

1

当窗口即将被最小化或最大化时,您实际上可以得到通知。您将需要使用 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

希望这可以帮助,

于 2013-10-02T13:29:39.037 回答
1

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

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

于 2013-10-02T13:28:28.877 回答