C#鼠标移动和点击相对于活动窗口
问题描述:
您好我一直在使用类似的代码在一块自动化的我一直在努力C#鼠标移动和点击相对于活动窗口
public static void LeftClick(int x, int y)
{
Cursor.Position = new System.Drawing.Point(x, y); //<= fails without this
mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
}
然而,除非我是哑巴这个移动鼠标到x,y从屏幕的左上角,如果活动窗口不是我期望它的位置,会导致问题,任何人都可以提出一种实现相同功能的方法,将鼠标移动到相对于活动窗口的点。
谢谢
答
您需要安装GetWindowRect()来找出窗口的位置。所以你可以通过窗口位置调整x和y。访问pinvoke.net进行声明。
答
只需要减去您的目标窗口的位置(相对于屏幕)。
答
你所看到的确实是预期的行为。 Cursor.Position
property描述了光标在屏幕上的位置的坐标,而不是相对于您的窗体。
然而,每一个控制暴露了两个方便的方法,您可以利用屏幕坐标和控制坐标之间进行转换:
的
Control.PointToClient
method计算指定屏幕点到客户端的位置坐标。使用它将从屏幕坐标转换为客户端坐标(即与您的控件相关的那些坐标,例如表单)。Control.PointToScreen
method计算指定客户端到scren坐标的位置。使用它将从客户端坐标转换为屏幕坐标。
答
尝试PointToClient
,你正在努力寻找相对点控制的PointToScreen
。
嗨,那里感谢,因为它似乎GetWindowRect是我需要我访问了pinvoke.net我只是困惑如何获得窗口句柄可能有人给我一个指针。 – rs82uk 2011-01-31 22:27:12