gpt4 book ai didi

windows - 为什么 SendMessage() 函数不起作用?

转载 作者:可可西里 更新时间:2023-11-01 09:21:13 24 4
gpt4 key购买 nike

我尝试向窗口发送 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息(模拟鼠标点击而不移动光标)。

我的程序在许多窗口上运行良好,但有一些不运行 :(像注册表编辑器、Yahoo Messenger、一些 Firefox 站点等...

我怎样才能与上面的人一起工作??

注意#1:我使用的是 Win7

注意#2:我的代码只是调用 api 和函数并将它们应用到特定的窗口句柄上。它工作正常,但不是在所有 Windows 上 :(

最佳答案

UAC 的另一个方面,称为 UIPI 或用户界面隐私隔离,可能会导致此问题。旨在防止未提升运行的程序劫持提升的程序的功能。这当然解释了 Regedit.exe 的问题,如果一个程序可以征用它向注册表中插入内容,显然 UAC 将是无效的。您必须提升运行程序才能绕过此限制。

另一个是 SendMessage() 没有正确模拟鼠标输入。您发送的消息通常发布到消息队列。您需要改用 PostMessage() 。您还应该模拟 WM_MOUSEMOVE。

模拟鼠标输入的正确方法是通过 SendInput()。那个完全模拟了鼠标驱动程序的行为,程序无法分辨出其中的区别。但是随着额外的要求,您必须确保您尝试自动化的任何程序都在前台运行。这很难,SetForegroundWindow() 不够可靠。因此,如果您实际上只想将鼠标消息发送到前台窗口,则只考虑 SendInput(),无论它是什么。

关于windows - 为什么 SendMessage() 函数不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com