gpt4 book ai didi

c# - 如何使用 windowhook 模拟按键

转载 作者:行者123 更新时间:2023-11-30 16:24:50 24 4
gpt4 key购买 nike

我相信我正在尝试做的事情相当简单,但已经被谷歌搜索困了几个小时。
我有一个带按钮的窗体。当我按下按钮时,我想用鼠标右键单击坐标 50、50。这在表单之外,所以我认为应该使用 windowhook 来完成。请帮忙。

最佳答案

您不应该使用 hook,而应该使用 WinApi。您需要 USER32.DLL 中的两种方法之一(阅读 MSDN 中的不同方法):

[DllImport("user32.dll")]
private static extern bool SendMessage(int hnd, Messages msg, int wParam, uint lParam);
[DllImport("user32.dll")]
private static extern bool PostMessage(int hWnd, Messages msg, int wParam, int lParam);

Messages 是一个枚举,这里是:

enum Messages
{
WM_LBUTTONDOWN = 0x201,
WM_LBUTTONUP = 0x202,
WM_RBUTTONDOWN = 0x204,
WM_RBUTTONUP = 0x205
}

使用这种方法,您应该将特殊消息发送到 hWND 等于 0,这意味着将消息发送到桌面。

这里的方法对你有帮助:

public static void MouseLeftClick(Point p)
{
int coordinates = p.X | (p.Y << 16);
PostMessage(0, Messages.WM_LBUTTONDOWN, 0x1, coordinates);
PostMessage(0, Messages.WM_LBUTTONUP, 0x1, coordinates);
}

public static void MouseRightClick(Point p)
{
int coordinates = p.X | (p.Y << 16);
PostMessage(0, Messages.WM_RBUTTONDOWN, 0x1, coordinates);
PostMessage(0, Messages.WM_RBUTTONUP, 0x1, coordinates);
}

通过将 0 更改为任何窗口的句柄,您可以在任何您想要的窗口中按左键或右键。

关于c# - 如何使用 windowhook 模拟按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450366/

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