Visual Basic 2008 mouse klick

  • VB

  • KeySLo
  • 2494 Aufrufe 16 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Visual Basic 2008 mouse klick

    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 :)
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • 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...
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]
  • Ich will hier mal eine Lanze für VB brechen.
    Auch in VB kann ein MausKlick simuliert werden:

    Quellcode

    1. Public Class Form1
    2. Private Structure POINTAPI
    3. Public X As Long
    4. Public Y As Long
    5. End Structure
    6. Private Declare Function ClientToScreen Lib "user32" ( _
    7. ByVal hWnd As Long, ByVal lpPoint As POINTAPI) As Long
    8. Public Declare Function SetCursorPos Lib "user32" (ByVal x As Integer, ByVal y As Integer) As Long
    9. Private Declare Sub mouse_event Lib "user32" ( _
    10. ByVal dwFlags As Long, _
    11. ByVal dx As Long, ByVal dy As Long, _
    12. ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    13. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    14. Const MOUSEEVENT_LEFTDOWN = &H2
    15. Const MOUSEEVENT_LEFTUP = &H4
    16. Dim ret As Long
    17. ret = SetCursorPos(50, 100)
    18. Application.DoEvents()
    19. mouse_event(MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0)
    20. mouse_event(MOUSEEVENT_LEFTUP, 0, 0, 0, 0)
    21. mouse_event(MOUSEEVENT_LEFTDOWN, 0, 0, 0, 0)
    22. mouse_event(MOUSEEVENT_LEFTUP, 0, 0, 0, 0)
    23. End Sub
    24. End Class
    Alles anzeigen


    Macht an der Position 50, 100 einen Doppelklick.
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...
  • 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 ...)
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...
  • 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:

    Quellcode

    1. [FONT='Courier New']
    2. BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
    3. BREAK {BREAK}
    4. CAPS LOCK {CAPSLOCK}
    5. DEL or DELETE {DELETE} or {DEL}
    6. DOWN ARROW {DOWN}
    7. END {END}
    8. ENTER {ENTER}or ~
    9. ESC {ESC}
    10. HELP {HELP}
    11. HOME {HOME}
    12. INS or INSERT {INSERT} or {INS}
    13. LEFT ARROW {LEFT}
    14. NUM LOCK {NUMLOCK}
    15. PAGE DOWN {PGDN}
    16. PAGE UP {PGUP}
    17. PRINT SCREEN {PRTSC}
    18. RIGHT ARROW {RIGHT}
    19. SCROLL LOCK {SCROLLLOCK}
    20. TAB {TAB}
    21. UP ARROW {UP}
    22. F1 {F1}
    23. F2 {F2}
    24. F3 {F3}
    25. F4 {F4}
    26. F5 {F5}
    27. F6 {F6}
    28. F7 {F7}
    29. F8 {F8}
    30. F9 {F9}
    31. F10 {F10}
    32. F11 {F11}
    33. F12 {F12}
    34. F13 {F13}
    35. F14 {F14}
    36. F15 {F15}
    37. F16 {F16}
    38. SHIFT +
    39. CTRL ^
    40. ALT %
    41. [/FONT]
    Alles anzeigen



    Und dann ein kleines Beispiel zu sendKeys:

    Quellcode

    1. Dim Ergebnis, I
    2. 'Starten des Windows-Calculators und Auffangen der Applikation-ID
    3. appID = Shell("CALC.EXE", 1)
    4. 'Sicherstellen dass der Calculator den Fokus hat
    5. AppActivate appID
    6. 'berechnen der Summe der Zahlen von 1 bis 100
    7. For I = 1 To 99
    8. 'send keys um I zu addieren
    9. SendKeys I & "{+}", True
    10. Next I
    11. SendKeys ("100"), True
    12. SendKeys "=", True
    13. 'Schließen des Calculators mit [Alt]+[F4]
    14. SendKeys "%{F4}", True
    Alles anzeigen
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von wasawasa ()

  • 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

    Quellcode

    1. Dim I As Integer
    2. Dim appID As Integer
    3. 'Starten des Windows-Calculators und Auffangen der Applikation-ID
    4. appID = Shell("CALC.EXE", 1)
    5. 'Sicherstellen dass der Calculator den Fokus hat
    6. AppActivate(appID)
    7. 'berechnen der Summe der Zahlen von 1 bis 100
    8. For I = 1 To 99
    9. 'send keys um I zu addieren
    10. SendKeys.SendWait(I & "{+}")
    11. Next I
    12. SendKeys.SendWait("100")
    13. SendKeys.SendWait("=")
    14. 'Schließen des Calculators mit [Alt]+[F4]
    15. SendKeys.SendWait("%{F4}")
    Alles anzeigen


    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.
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von wasawasa ()