Visual Basic 2008 mouse klick VB 

Status
Für weitere Antworten geschlossen.
K

KeySLo

Hi, ich möchte mit Visual Basic 2008 ein Tool erstellen
das Tool soll mit den Mauszeiger in eine bestimmten Postion angeklickt werden
ich brauch nur den Code :(
 
Für sowas würde ich an deiner Stelle AutoIt v3 - Automate and Script Windows Tasks - For Free! benutzen...

Damit kannst du ein script schreiben, indem du dem coursor eine position gibst an die er sich bewegen soll. Klicken kannst du ihm auch beibringen....

Bevor du fragst: Nein ich kann die so ein script nicht schreiben, aber autoit ist so leicht zu benutzen, ein bisschen nachlesen und du bekommst das selber hin :)
 
Danke für die antwort
aber ich kenn mich nicht so gut aus mit AutoIt :(
weil es in englisch ist:(
 
Ja es wäre ja auch zu viel verlangt einfach mal ein bisschen auf der seite zu schauen, da gibt es nämlich auch sowas wie eine deutsche doku: AutoIt v3 - Documentation (Da musst du auf "german" klicken, das ist englisch und heißt übersetzt "deutsch")
 
also geht das nicht mit "Microsoft Visual Basic 2008 Express Edition"?
 
autoit ist eine programmiersprache und msvb ist eine ide die visual basic unterstüzt -> nein
 
Ich hab "AutoIt Full Installation" downgeloadet
und jetzt weiß ich nicht wo ich Codieren soll?
 
Wenn du AutoIt startest, dann wirst du nach dem Skript gefragt, das du öffnen möchtest. Eine Skriptdatei ist eine einfache Textdatei, die AutoIt-Schlüsselwörter und -Funktionen enthält, die AutoIt sagen, was es machen soll. Skripte können mit notepad.exe oder einer viel besseren Alternative geschrieben werden.

Obwohl AutoIt 3-Skripte einfache Textdateien sind, erhalten sie üblicherweise die Endung .au3, damit sich Skripte und Textdateien besser unterscheiden lassen. Wenn du AutoIt komplett installiert hast, kannst du ein Skript ausführen, indem du es einfach doppelt anklickst. Du kannst auch Optionen wählen - nämlich das Skript zu öffnen, zu bearbeiten oder zu kompilieren - wenn du mit der rechten Maustaste auf die .au3-Datei klickst.



Hier ein Beispielskript. Beachte, dass das ; einen Kommentar signalisert (ähnlich REM in MSDOS-Batch-Dateien):

; Das ist mein erstes Skript
MsgBox(0, "Mein erstes Skript!", "Hallo Welt!")

Aus der Hilfe kopiert... Da steht, wie schon erwähnt alles drin was man wissen muss...
 
Ich will hier mal eine Lanze für VB brechen.
Auch in VB kann ein MausKlick simuliert werden:

Code:
Public Class Form1

Private Structure POINTAPI
Public X As Long
Public Y As Long
End Structure

Private Declare Function ClientToScreen Lib "user32" ( _
ByVal hWnd As Long, ByVal lpPoint As POINTAPI) As Long
Public Declare Function SetCursorPos Lib "user32" (ByVal x As Integer, ByVal y As Integer) As Long
Private Declare Sub mouse_event Lib "user32" ( _
ByVal dwFlags As Long, _
ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Const MOUSEEVENT_LEFTDOWN = &H2
Const MOUSEEVENT_LEFTUP = &H4
Dim ret As Long
ret = SetCursorPos(50, 100)
Application.DoEvents()
mouse_event(MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0)
mouse_event(MOUSEEVENT_LEFTUP, 0, 0, 0, 0)
mouse_event(MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0)
mouse_event(MOUSEEVENT_LEFTUP, 0, 0, 0, 0)
End Sub

End Class

Macht an der Position 50, 100 einen Doppelklick.
 
Kurze Frage wasawa, danke für die gute Lösung, :)

wie sieht es da mit den Pfeiltasten hoch und runter aus?
 
Bei Tastaturklicks habe ich noch eine Frage:
Wo soll die Eingabe denn landen? Hat das Fenster den Fokus? Soll das Fenster über den Namen angesprochen werden? (zweiteres ist etwas problematischer ...)
 
Hmm, ziemlich schwer zu erklären ;) Ich weiß nicht weiß du damit meinst. :)

Also das soll eine Art "Trainer". Ich starte das VB-Programm, dann will ich das jede Minute (per Timer, alles schon fertig) eine Pfeiltaste betätigt wird (, also am besten die Hochtaste)... Also es handelt sich dabei um ein Spiel, mit den Pfeiltasten bewegt sich ein Spiel. Das Charakter soll also durch den Trainer jede Minute einmal bewegt werde ;)
 
Die Vorgehensweise von Maus und Tastatur unterscheiden sich etwas. Mausklicks gehen immer da hin wo der Mauszeiger steht. Da braucht man gar nicht drüber nachzudenken. Mit der Maus zielen und "klick".
Be der Tastatur ist es etwas trickreicher. Man hat viele Fenster und das GUI Manager muss entscheiden welches der Fenster die Buchstaben bekommt. Das ist normalerweise das Fenster mit dem Focus.

Hier erst mal eine Liste der Sonderzeichen:
Code:
[FONT='Courier New']
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

SHIFT +
CTRL ^ 
ALT %
[/FONT]


Und dann ein kleines Beispiel zu sendKeys:
Code:
Dim Ergebnis, I 

'Starten des Windows-Calculators und Auffangen der Applikation-ID 
appID = Shell("CALC.EXE", 1) 

'Sicherstellen dass der Calculator den Fokus hat 
AppActivate appID 

'berechnen der Summe der Zahlen von 1 bis 100
For I = 1 To 99 
'send keys um I zu addieren 
SendKeys I & "{+}", True
Next I
SendKeys ("100"), True
SendKeys "=", True 

'Schließen des Calculators mit [Alt]+[F4] 
SendKeys "%{F4}", True
 
Zuletzt bearbeitet von einem Moderator:
So, ich kenne mich nicht so gut mit dem normalen VB aus, wie siehts in VB.NET damit aus :D

Müsste doch irgendwie so aussehen oder?
SendKeys.Send("%{UP}")

Und das mit der AppID is mir auch noch unklar
 
Zuletzt bearbeitet von einem Moderator:
Sorry, wer lesen kann ist im Vorteil.
Hab völlig übersehen, dass Du die Frage für .net gestellt hast :-).

Also für VB.NET:
Die Liste der Kürzel gilt immer noch.
Die Programmierung geht ein klein bisschen anders.
In VB.NET ist "SendKeys" eine Klasse mit Methoden.
Will ich ein "A" senden, so sieht es aus wie folgt:
SendKeys.Send ("A");

Jetzt also mit VB.NET

Code:
Dim I As Integer
Dim appID As Integer
'Starten des Windows-Calculators und Auffangen der Applikation-ID 
appID = Shell("CALC.EXE", 1)

'Sicherstellen dass der Calculator den Fokus hat 
AppActivate(appID)

'berechnen der Summe der Zahlen von 1 bis 100
For I = 1 To 99
'send keys um I zu addieren 
SendKeys.SendWait(I & "{+}")
Next I
SendKeys.SendWait("100")
SendKeys.SendWait("=")

'Schließen des Calculators mit [Alt]+[F4] 
SendKeys.SendWait("%{F4}")

In VB gab es "SendKeys "=", True" und "SendKeys "=", False".
Bei "True" wartet er darauf, bis die Zielapplikation die Tastatureingabe verarbeitet hat (synchron).
Das ist in VB.NET durch "Send" und "SendWait" ersetzt worden.

Jetzt noch zu appID:
Ich starte aus meinem Programm heraus den Taschenrechner.
Der Befehl dazu ist "shell". Dieser befehl liefert mir eine eindeutige Identifikationsnummer mit,
die Windows beim Start vergeben hat.
Mit dieser Information rufe ich "AppActivate" auf. Das sagt Windows, dass diese App nun den Fokus hat
und die Tastatureingaben empfangen soll.
 
Zuletzt bearbeitet von einem Moderator:
Bevor jetzt jemand kommt und sich fragt wie er den Schuh richtig bindet ist hier das Thema "mouse klick" beendet :P

Gruß
Broken Sword
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten