2016-05-29 10 views
0

Also habe ich dieses Programm in Visual Basic, die Teleportieren Sie den Cursor um und Klicken erfordert. Ein bisschen wie ein automatischer Cheat für ein Spiel, aber nicht wirklich ein Cheat.In Visual Basic, ist es möglich, meinen Cursor zu x * y Koordinaten zu teleportieren (Nicht x, y)

Wie auch immer ich möchte, dass der Benutzer Koordinaten auf einen Punkt setzt, dann legen Sie diese Koordinaten auf einen Wert, dann teleportieren Sie mit einem Tastendruck zu diesen Koordinaten.

Okay, ich kann ihn die Koordinaten bekommen lassen. Ich kann den Cursor teleportieren lassen. Ich kann die Koordinaten, die er bekommen hat, auf eine Ganzzahl X und eine Ganzzahl Y setzen, damit der Cursor dorthin teleportiert wird. Aber ich muss das alles achtmal machen. Also brauche ich 24 ganze Zahlen.

Ich dachte, vielleicht kann ich alles überspringen, wenn ich x y multiplizieren kann, also sagen wir, dass er die Koordinaten auf 320 (x) und 72 (y) setzt. (320,72) Ordnung so, wenn ich multiplizieren x y ich die Pixelzahl auf dem Bildschirm erhalten, die in das existiert Koordinate (oder?)

Okay, das macht es so nur wir 8 ganze Zahlen haben, die viel weniger .

Aber wie mache ich den Cursor Teleport an die Stelle "X * Y" (im Falle von 320 * 72 ist es Pixel Nummer 23040).

* TL; DR ist es möglich, diese Windows.Forms.Cursor.Position = New Point (320,72) in diese Windows.Forms.Cursor.Position = New Point (23040 (die 320 ist zu konvertieren * 72)) *

Ist es möglich?

Ich kann mir nicht vorstellen, wie es geht, bitte hilf mir. Vielen Dank.

+0

Sie könnten eine 'List (Of Point)' haben, die viele Positionen enthält. [Liste (Of T) -Klassen-Dokumentation] (https://msdn.microsoft.com/en-us/library/6sh2ey19%28v=vs.110%29.aspx). –

Antwort

1

Nein. (X, y) entspricht nicht (x * y).

Der Grund warum ist offensichtlich, wenn Sie darüber nachdenken. Es gibt viele verschiedene Eingabewerte für x und y, die das gleiche Produkt ergeben würden. Zum Beispiel: 6 * 1 = 6, und auch 2 * 3. Welche Position auf dem Bildschirm würde 6 entsprechen? Der Punkt bei den Koordinaten (6, 1), (1, 6), (2, 3) oder (3, 2)?

Möglicherweise gibt es einen besseren Weg, aber ich finde die Beschreibung in Ihrer Frage sehr schwer zu verstehen. Wenn Sie lediglich ein Klickereignis an einer bestimmten Position auf dem Bildschirm simulieren möchten, müssen Sie den Cursor nicht explizit zuerst dorthin bewegen. Ich würde vorschlagen, wie das geht, aber es ist nicht klar, welche Sprache Sie verwenden. Sie haben die Frage [vbscript] markiert, aber dann über Windows Forms gesprochen, die in VBScript nicht existiert. Wenn Sie VB.NET verwenden, werden Sie wahrscheinlich die Funktion SendInput aufrufen. Google für Codebeispiele.

+0

ja Tags sind falsch hoppla. Ich benutze Mausereignis Windows.Forms.Cursor.Position = New System.Drawing.Point (Windows.Forms.Cursor.Position) mouse_event (& H2, 0, 0, 0, 1) ‚klicken mouse_event (& H4, 0, 0, 0, 1) 'unclick Muss ich die ersten zwei Nullen in Koordinaten ändern? (& H4, 0, 0, 0, 1) Vielen Dank für Ihre Hilfe –

0

Während ich mit anderen Antworten/Kommentaren einverstanden bin, ist das, was Sie beschreiben, möglich, aber Sie können nicht einfach die X- und Y-Koordinaten multiplizieren. Sie müssen die Bildschirmbreite berücksichtigen:

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 

Bitte beachten Sie, dass dieser Code Integer Division (\) verwendet. Es wird auch angenommen, dass der Ursprung oben links auf dem Bildschirm ist und auf Null basiert (dh die obere linke Koordinate ist (0, 0))