gpt4 book ai didi

c# - 为什么我的伪造按钮按下失败并显示 SendMessage?

转载 作者:可可西里 更新时间:2023-11-01 09:46:32 25 4
gpt4 key购买 nike

我正在尝试通过 SendMessage(..) 方法将鼠标事件发送到 windows 中的窗口。

我面临的问题是消息似乎没有传送到我发送它们的窗口,即使 SendMessage 返回 0,这(根据文档)表示消息已成功传递。

我正在使用以下代码:

(设 pPoint 结构,selectedWindow.Handle 为窗口的有效句柄)

int position = ((p.X & 0xFFFF) << 16) | (p.Y & 0xFFFF);

SendMessage(selectedWindow.Handle, 0x0201, new IntPtr(), new IntPtr(position));
SendMessage(selectedWindow.Handle, 0x0202, new IntPtr(), new IntPtr(position));

0x02010x0202WM_LBUTTONDOWNWM_LBUTTONUP

有人能告诉我为什么这不起作用吗?

(编辑:我正在使用ScreenToClient() 方法将屏幕位置转换为窗口内的位置)

最佳答案

鼠标消息通常从消息队列中获取,这意味着您应该使用 PostMessage()。但这不太可能是真正的问题,很少有程序在消息循环中处理鼠标。 UAC 是一个明显的失败场景,您无法将消息发送到提升程序拥有的窗口。您发送了错误的 WParam 值,这可能会产生影响。当然,您可能有错误的窗口句柄。

但更有可能的原因是我们看不到代码。您似乎在生成消息的 X 和 Y 坐标时遇到了一些麻烦。不需要这样的努力,在哪里单击按钮都没有关系。您不妨在 (1, 1) 处单击它:

 PostMessage(selectedWindow.Handle, 0x0201, new IntPtr(1), new IntPtr(0x10001));
PostMessage(selectedWindow.Handle, 0x0202, new IntPtr(0), new IntPtr(0x10001));

或者换句话说,鼠标坐标是相对于窗口的左上角。其他黑客正在生成 BM_CLICK 消息以及按钮生成的任何 WM_COMMAND 消息。

使用Spy++工具观察消息处理。

关于c# - 为什么我的伪造按钮按下失败并显示 SendMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6479941/

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