在 visual basic 中,是否可以将我的光标传送到 x*y 坐标(不是 x,y)

In visual basic, is it possible to teleport my cursor to x*y coordinates (Not x,y)

所以我在 visual basic 中有这个程序,它需要四处传送光标并单击。有点像游戏的自动作弊,但不是真正的作弊。

无论如何,我希望用户将坐标设置为一个点,然后将这些坐标设置为一个值,然后按下按钮传送到这些坐标。

好吧,我可以让他得到坐标。我可以让光标瞬移。我可以将他到达的坐标设置为整数 X 和整数 Y,以便光标传送到那里。但我必须把所有这些都做 8 次。所以我需要 24 个整数。

我在想,如果我可以乘以 xy,也许我可以跳过所有这些,所以假设他将坐标设置为 320 (x) 和 72 (y)。 (320,72) 好吧,如果我乘以 xy,我会得到屏幕上存在于该坐标中的像素数(对吗?)

好的,所以我们只有 8 个整数,少得多。

但是如何让光标传送到位置"X*Y"(在320*72的情况下是像素编号23040)。

*TL;DR 是否可以将此 Windows.Forms.Cursor.Position = New Point(320,72) 转换为此 Windows.Forms.Cursor.Position = New Point(23040(即 320* 72))*

可能吗?

我想不出办法请帮助我。谢谢。

没有。 (x, y) 不等同于 (x * y).

如果你仔细想想,原因就很明显了。 xy 有许多不同的输入值会给出相同的产品。例如,6 * 1 = 6,2 * 3 也是如此。6 对应屏幕上的哪个位置?坐标 (6, 1)、(1, 6)、(2, 3) 或 (3, 2)?

处的点

可能有更好的方法,但我发现你问题中的描述很难理解。如果您只想在屏幕上的特定位置模拟点击事件,则不需要先明确地将光标移动到那里。我会建议如何做到这一点,但目前尚不清楚您使用的是哪种语言。您已将问题标记为 [vbscript],但随后谈到了 Windows 表单,这在 VBScript 中不存在。如果您正在使用 VB.NET,您可能最终会得到 P/Invoking SendInput 函数。 Google 代码示例。

虽然我同意其他 answers/comments 的观点,但您描述的是可能的,但您不能简单地将 x 和 y 坐标相乘。您需要考虑屏幕宽度:

Private Function PointToPixelNumber(pt As Point) As Integer
    Return pt.Y * Screen.PrimaryScreen.Bounds.Width + pt.X
End Function

Private Function PixelNumberToPoint(pixelNumber As Integer) As Point
    Return New Point(pixelNumber \ Screen.PrimaryScreen.Bounds.Width, pixelNumber Mod Screen.PrimaryScreen.Bounds.Width)
End Function

请注意此代码使用整数除法 (\)。它还假设原点在屏幕的左上角并且从零开始(即左上角坐标为(0, 0))