c++ - MoveWindow()、跳过、闪避或绕过消息传递?

标签 c++ winapi user32

我正在使用 MoveWindow() 调整窗口大小,但我不拥有该窗口。我只是从不同的进程中窃取了它,现在我正在摆弄它的 hWindow。

然而,我从中窃取它的进程正在运行一个消息循环,处理其中一些消息(WM_MOVEWM_SIZEWM_GETMINMAXINFO、等等)这基本上阻止了我用它做任何我想做的事。有时,它甚至不会让我调整它的大小超过给定的最大值,这是让它全屏运行的关键。

除了使用 asm,还有什么方法可以绕过消息传递吗?

最佳答案

SetWindowPos有一个标志不告诉窗口你正在用它做某事:

SetWindowPos (hwnd, 0, x, y, width, height, SWP_NOZORDER | SWP_NOSENDCHANGING);

如评论中所述,依赖代码中的这种行为来获得更多乐趣并不好,对其他窗口也不公平,而且您很容易遇到问题。 Raymond Chen有一些关于此的特别有趣的博客文章,例如“如果两个程序这样做会怎样?”

关于c++ - MoveWindow()、跳过、闪避或绕过消息传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11044449/

相关文章:

c++ - MongoDB C++:mongocxx::pool 线程安全吗?

c++ - 使编辑控件透明 WinAPI (win32)

c# - user32 MoveWindow 不适用于 C#、Windows 7、控制台应用程序

c# - 在 win ce5.0 中使用 user32.dll

C++ 类不是自身的基础

gnuSTL_shared 的 Android NDK 构建问题

c++ - 如何将 std::string 转换为 WCHAR

memory - 程序在内存中的外观如何?

c++ - ListView控件中的LVN_ITEMCHANGED优化

Java JNA FindWindow() - 查找函数时出错 'FindWindow' : The specified procedure could not be found