【问题标题】:How to keep window inactive on simulated clicks?如何在模拟点击时保持窗口不活动?
【发布时间】:2012-12-29 19:43:40
【问题描述】:

我用 C++ 编写了一个程序,它使用以下方法模拟对非活动窗口的点击:

PostMessage (z, WM_LBUTTONDOWN, 0,MAKELONG(t.left+x,t.top+y));

但只要点击它就会激活窗口并且窗口会移动到顶部。

有没有一种方法可以让窗口保持非活动状态或通过其他方式单击它?

我使用SetWindowPos(z , HWND_BOTTOM,....) 使该窗口位于 z 顺序列表的底部,但它仍会激活。

编辑:窗口是游戏机

【问题讨论】:

  • 这当然是正常的,当您使用鼠标单击窗口时也会发生这种情况。不,如果您没有程序的源代码,则无法更改该行为。
  • 我也在尝试做类似的事情。但是如果他有源代码呢​​?他要做什么?:)
  • 在其他窗口(文件夹、记事本)上不会激活它们
  • 如果你控制了目标窗口,你可以处理WM_MOUSEACTIVATE消息来阻止窗口激活(通过返回MA_NOACTIVATE)。
  • 合成输入PostMessage是错误的工具。请改用SendInput。扩展 Jonathan Potter 的建议,即使您没有源代码,您也可以控制不属于您的窗口。您首先必须将代码放入目标进程(例如使用挂钩)。下一步是让该代码子类化目标窗口。一旦你的 WndProc 得到控制,你可以简单地忽略 WM_MOUSEACTIVATE 消息。但请注意,这不能保证有效。

标签: c++ winapi click window


【解决方案1】:

尝试从PostMessage 切换到SendInput,看看是否得到相同的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多