栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

以编程方式在另一个窗口中单击鼠标

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

以编程方式在另一个窗口中单击鼠标

您无法通过发送消息来做到这一点,而是使用SendInput Windows API。

调用方法ClickOnPoint,这是表单单击事件的一个示例,

this.handle
表单句柄也是如此,请注意,这些是发送窗口巫婆句柄的客户端坐标,您可以轻松地更改它并发送屏幕坐标,在这种情况下,您不需要或下面的ClientToScreen调用。

ClickonPoint(this.Handle, new Point(375, 340));

更新:现在使用tnx Tom,使用SendInput。

顺便说一句 我只使用了此示例所需的声明,还有更多漂亮的库:Windows Input Simulator(C#SendInput包装器-
模拟键盘和鼠标)

  public class ClickonPointTool  {    [Dllimport("user32.dll")]    static extern bool ClientToScreen(IntPtr hWnd, ref Point lpPoint);    [Dllimport("user32.dll")]    internal static extern uint SendInput(uint nInputs, [MarshalAs(UnmanagedType.LPArray), In] INPUT[] pInputs,  int cbSize);#pragma warning disable 649    internal struct INPUT    {      public UInt32 Type;      public MOUSEKEYBDHARDWAREINPUT Data;    }    [StructLayout(LayoutKind.Explicit)]    internal struct MOUSEKEYBDHARDWAREINPUT    {      [FieldOffset(0)]      public MOUSEINPUT Mouse;    }    internal struct MOUSEINPUT    {      public Int32 X;      public Int32 Y;      public UInt32 MouseData;      public UInt32 Flags;      public UInt32 Time;      public IntPtr ExtraInfo;    }#pragma warning restore 649    public static void ClickonPoint(IntPtr wndHandle , Point clientPoint)    {      var oldPos = Cursor.Position;      /// get screen coordinates      ClientToScreen(wndHandle, ref clientPoint);      /// set cursor on coords, and press mouse      Cursor.Position = new Point(clientPoint.X, clientPoint.Y);      var inputMouseDown = new INPUT();      inputMouseDown.Type = 0; /// input type mouse      inputMouseDown.Data.Mouse.Flags = 0x0002; /// left button down      var inputMouseUp = new INPUT();      inputMouseUp.Type = 0; /// input type mouse      inputMouseUp.Data.Mouse.Flags = 0x0004; /// left button up      var inputs = new INPUT[] { inputMouseDown, inputMouseUp };      SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(INPUT)));      /// return mouse       Cursor.Position = oldPos;    }  }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495428.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号