当前位置:  开发笔记 > 编程语言 > 正文

在C#中的非活动窗口上的某个位置模拟鼠标点击

如何解决《在C#中的非活动窗口上的某个位置模拟鼠标点击》经验,为你挑选了1个好方法。

这是原始问题,但它被认为是java: 在Java中的非活动窗口上的某个位置模拟鼠标点击?

无论如何,我正在构建一个在后台运行的机器人.这个机器人要求我点击.当然,我希望能够在机器人运行时做其他事情.

所以我想知道是否可以在非活动窗口的某个位置模拟鼠标点击.

如果可以的话,如果你们中的任何人能帮助我,我将不胜感激.

谢谢!



1> Nasreddine..:

是的,这是可能的,这是我以前学校项目使用的代码:

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
public const int MOUSEEVENTF_RIGHTDOWN = 0x08;
public const int MOUSEEVENTF_RIGHTUP = 0x10;

//This simulates a left mouse click
public static void LeftMouseClick(Point position)
{
    Cursor.Position = position;
    mouse_event(MOUSEEVENTF_LEFTDOWN, position.X, position.Y, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, position.X, position.Y, 0, 0);
}

编辑:似乎该mouse_event功能被替换SendInput()但它仍然有效(Windows 7及更早版本)


`mouse_event`非常好,它相当于`SendInput`但更容易驾驶.
`SendInput`是一种更通用的灵活功能.保留`mouse_event`和`keybd_event`以与旧软件兼容.我认为没有理由停止使用`mouse_event`.您可以将Windows消息发布到不活动的Windows,有时可以成功伪造输入.但是,我会在伪造输入之前查看UIautomation.
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有