Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何检测窗口已最大化?_C++_C_Windows_Winapi - Fatal编程技术网

C++ 如何检测窗口已最大化?

C++ 如何检测窗口已最大化?,c++,c,windows,winapi,C++,C,Windows,Winapi,我有我的应用程序和第三方应用程序。我需要知道,第三方应用程序的窗口已经被最大化。有办法知道吗 起初,我认为可以使用自己的回调函数来处理此窗口的事件 SetWindowLong(hwnd, GWL_WNDPROC, (LONG)WindowProc); 但此函数失败,错误为“拒绝访问”。这是有原因的。在橱窗里改变一些你不拥有的东西是不明智的 那么我应该怎么做呢?使用函数。在调用GetWindowPlacement之前,请确保将WINDOWPLACEMENT的长度成员设置为sizeof(WIND

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

SetWindowLong(hwnd, GWL_WNDPROC, (LONG)WindowProc);
但此函数失败,错误为“拒绝访问”。这是有原因的。在橱窗里改变一些你不拥有的东西是不明智的

那么我应该怎么做呢?

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


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

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

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

下面是一个线程,它向您展示了如何在VB中执行smiliar(用于WH_鼠标钩)操作:


希望这有帮助,

这是一个与您的@RedX类似的问题,谢谢。但这很有趣:我找不到任何与“最大化”窗口相关的事件。而且,很明显,它根本不存在。可能是我不明白什么,但它不只是为了找出窗户的属性吗?同时,我需要在每次窗口最大化时获取一个事件。不,您不会在每次窗口最大化时获取一个事件。使用此函数可以获取窗口的当前位置和状态。虽然你可以创建一个线程并定期启动这个函数(使用循环/定时器)来检查第三方窗口是否最大化。实际上,这意味着我应该将回调函数放在Dll中。不幸的是,这种方式不适合我。但是谢谢你的提示。