Bei Mausklick Tastendruck simulieren

  • Hallo zusammen,

    wie kann ich, wenn eine Taste der Maus gedrückt wird, einen Tastendruck simulieren? Benötige die Funktion für automatische Screenshots in einem Bildschirmexperiment.

    Hat jemand eine Idee?

  • Hi,
    meinste du etwa so?
    a

    [autoit]

    #include <Misc.au3>
    Do
    If _IsPressed("01") Then ;linke Maustaste gedrückt
    Send("a") ; "a" senden evtl auch Controlsend verwenden
    EndIf
    Sleep(100) ;notwendig, da sonst mehrere Buchstaben gesendet werden
    Until _IsPressed("02") ;solange bis die rechte Maustaste gedrückt wird

    [/autoit]
  • Ja ungefähr so, sollte es sein. Gibt es einen speziellen Code für die "Pause"-Taste oder die "Druck"-Taste?

    Kann ich bei der UNTIL-Zeile auch was anderes angeben, ich möchte nicht das es so lange gesendet wird bis eine andere Taste gedrückt wird. Es soll ja nur für den Moment des Klicks an die Zwischenablage geschickt werden

    2 Mal editiert, zuletzt von jimmyeatworld (7. August 2008 um 13:38)

  • Function SendParameters


    keys
    The sequence of keys to send.

    flag
    [optional] Changes how "keys" is processed:
    flag = 0 (default), Text
    contains special characters like + and ! to indicate SHIFT and ALT
    key-presses.
    flag = 1, keys are sent raw.


    Return Value
    None.


    Remarks
    See the Appendix for
    some tips on using Send. AutoIt can send all ASCII and Extended ASCII characters (0-255), to
    send UNICODE
    characters you must use the "ASC" option and the code of the character you wish
    to send (see {ASC}
    at the bottom of the table below).

    The "Send" command syntax is
    similar to that of ScriptIt and the Visual Basic "SendKeys" command. Characters
    are sent as written with the exception of the following
    characters:

    '!'
    This tells AutoIt to send an ALT keystroke,
    therefore Send("This is text!a") would send the keys "This is
    text" and then press "ALT+a".

    N.B. Some programs are very choosy about
    capital letters and ALT keys, i.e. "!A" is different to "!a". The first says
    ALT+SHIFT+A, the second is ALT+a. If in doubt, use lowercase!

    '+'
    This
    tells AutoIt to send a SHIFT keystroke, therefore Send("Hell+o") would
    send the text
    "HellO". Send("!+a") would send "ALT+SHIFT+a".

    '^'
    This tells AutoIt to
    send a CONTROL
    keystroke, therefore Send("^!a") would send "CTRL+ALT+a".

    N.B. Some programs are very
    choosy about capital letters and CTRL keys, i.e. "^A" is different to "^a". The
    first says CTRL+SHIFT+A, the second is CTRL+a. If in doubt, use
    lowercase!

    '#'
    The hash now sends a Windows keystroke; therefore,
    Send("#r") would
    send Win+r which
    launches the Run dialog box.

    You can set SendCapslockMode to make CAPS
    LOCK disabled at the start of a Send operation and restored upon completion.
    However, if
    a user is holding down the Shift key when a Send function begins,
    text may be sent in uppercase.
    One workaround is to Send("{SHIFTDOWN}{SHIFTUP}") before the other Send 
    operations.

    Certain keyboard as the Czech one send different characters
    when using the Shift Key or being in CAPS LOCK enabled and sending a char. Due
    to the send AutoIt
    implementation the CAPS LOCKed char will be sent as Shifted one so it will
    not work
    .

    Certain special keys can be sent and should be enclosed in
    braces:

    N.B. Windows does not allow the simulation of the "CTRL-ALT-DEL"
    combination!


    Send Command (if zero flag)
    Resulting Keypress

    {!}
    !

    {#}
    #

    {+}
    +

    {^}
    ^

    {{}
    {

    {}}
    }

    {SPACE}
    SPACE

    {ENTER}
    ENTER key on the main keyboard

    {ALT}
    ALT

    {BACKSPACE} or {BS}
    BACKSPACE

    {DELETE} or {DEL}
    DELETE

    {UP}
    Up arrow

    {DOWN}
    Down arrow

    {LEFT}
    Left arrow

    {RIGHT}
    Right arrow

    {HOME}
    HOME

    {END}
    END

    {ESCAPE} or {ESC}
    ESCAPE

    {INSERT} or {INS}
    INS

    {PGUP}
    PageUp

    {PGDN}
    PageDown

    {F1} - {F12}
    Function keys

    {TAB}
    TAB

    {PRINTSCREEN}
    Print Screen key

    {LWIN}
    Left Windows key

    {RWIN}
    Right Windows key

    {NUMLOCK on}
    NUMLOCK (on/off/toggle)

    {CAPSLOCK off}
    CAPSLOCK (on/off/toggle)

    {SCROLLLOCK toggle}
    SCROLLLOCK (on/off/toggle)

    {BREAK}
    for Ctrl+Break processing

    {PAUSE}
    PAUSE

    {NUMPAD0} - {NUMPAD9}
    Numpad digits

    {NUMPADMULT}
    Numpad Multiply

    {NUMPADADD}
    Numpad Add

    {NUMPADSUB}
    Numpad Subtract

    {NUMPADDIV}
    Numpad Divide

    {NUMPADDOT}
    Numpad period

    {NUMPADENTER}
    Enter key on the numpad

    {APPSKEY}
    Windows App key

    {LALT}
    Left ALT key

    {RALT}
    Right ALT key

    {LCTRL}
    Left CTRL key

    {RCTRL}
    Right CTRL key

    {LSHIFT}
    Left Shift key

    {RSHIFT}
    Right Shift key

    {SLEEP}
    Computer SLEEP key

    {ALTDOWN}
    Holds the ALT key down until {ALTUP} is sent

    {SHIFTDOWN}
    Holds the SHIFT key down until {SHIFTUP} is sent

    {CTRLDOWN}
    Holds the CTRL key down until {CTRLUP} is sent

    {LWINDOWN}
    Holds the left Windows key down until {LWINUP} is sent

    {RWINDOWN}
    Holds the right Windows key down until {RWINUP} is sent

    {ASC nnnn}
    Send the
    ALT+nnnn key combination

    {BROWSER_BACK}
    2000/XP Only: Select the browser "back" button

    {BROWSER_FORWARD}
    2000/XP Only: Select the browser "forward" button

    {BROWSER_REFRESH}
    2000/XP Only: Select the browser "refresh" button

    {BROWSER_STOP}
    2000/XP Only: Select the browser "stop" button

    {BROWSER_SEARCH}
    2000/XP Only: Select the browser "search" button

    {BROWSER_FAVORITES}
    2000/XP Only: Select the browser "favorites" button

    {BROWSER_HOME}
    2000/XP Only: Launch the browser and go to the home page

    {VOLUME_MUTE}
    2000/XP Only: Mute the volume

    {VOLUME_DOWN}
    2000/XP Only: Reduce the volume

    {VOLUME_UP}
    2000/XP Only: Increase the volume

    {MEDIA_NEXT}
    2000/XP Only: Select next track in media player

    {MEDIA_PREV}
    2000/XP Only: Select previous track in media player

    {MEDIA_STOP}
    2000/XP Only: Stop media player

    {MEDIA_PLAY_PAUSE}
    2000/XP Only: Play/pause media player

    {LAUNCH_MAIL}
    2000/XP Only: Launch the email application

    {LAUNCH_MEDIA}
    2000/XP Only: Launch media player

    {LAUNCH_APP1}
    2000/XP Only: Launch user app1

    {LAUNCH_APP2}
    2000/XP Only: Launch user app2

    To send the ASCII value A
    (same as pressing ALT+065 on the numeric keypad)
    Send("{ASC
    065}")

    (When using 2 digit ASCII codes you must use a leading 0,
    otherwise an obsolete 437 code page is used).

    To send UNICODE characters
    enter the character code (decimal or hex), for example this sends a Chinese
    character
    Send("{ASC 2709}") or Send("{ASC
    0xA95}")

    Single keys can also be repeated, e.g.
    Send("{DEL 4}") ;Presses
    the DEL key 4 times
    Send("{S 30}") ;Sends 30 'S' characters
    Send("+{TAB 4}") ;Presses
    SHIFT+TAB 4 times

    The key will be send at least once even if the count is zero.

    To
    hold a key down (generally only useful for games)
    Send("{a down}") ;Holds
    the A key down
    Send("{a up}") ;Releases the A key

    To set the state
    of the capslock, numlock and scrolllock keys
    Send("{NumLock on}")
    ;Turns the NumLock key on
    Send("{CapsLock off}") ;Turns the CapsLock key
    off
    Send("{ScrollLock toggle}") ;Toggles the state of
    ScrollLock

    If you wish to use a variable for the count, try
    $n =
    4
    Send("+{TAB " & $n & "}")

    If you wish to
    send the ASCII
    value A four times, then try
    $x = Chr(65)
    Send("{" & $x & "
    4}")

    Most laptop computer keyboards have a special Fn key. This key
    cannot be simulated.

    Note, by setting the flag parameter to 1 the above
    "special" processing will be disabled. This is useful when you want to send some text copied
    from a variable and you want the text sent exactly as written.

    For
    example, open Folder Options (in the control panel) and try the following:


    Send("{TAB}")
    Navigate to next control (button, checkbox,
    etc)

    Send("+{TAB}")
    Navigate to previous control.

    Send("^{TAB}")
    Navigate to next WindowTab (on a Tabbed dialog window)

    Send("^+{TAB}")
    Navigate to previous WindowTab.

    Send("{SPACE}")
    Can be used to toggle a checkbox or click a button.

    Send("{+}")
    Usually checks a checkbox (if it's a "real" checkbox.)

    Send("{-}")
    Usually unchecks a checkbox.

    Send("{NumPadMult}")
    Recursively expands folders in a
    SysTreeView32.

    Use Alt-key combos to access menu
    items. Also, open Notepad and try the following:
    Send("!f") Send Alt+f, the access
    key for Notepad's file menu. Try other letters!


    Send("{DOWN}")
    Move down a menu.

    Send("{UP}")
    Move up a menu.

    Send("{LEFT}")
    Move leftward to new menu or expand a submenu.

    Send("{RIGHT}")
    Move rightward to new menu or collapse a submenu.

    See Windows' Help--press Win+F1--for a complete list
    of keyboard shortcuts if you don't know the importance of Alt+F4, PrintScreen,
    Ctrl+C, and so on.

    When running a script on a remote computer through a
    program as psexec (https://autoit.de/www.sysinternals.com) or beyondexec (https://autoit.de/www.beyondlogic.org) it
    is necessary, specially when sending strokes to a program launch by the script
    with a Run function, to use ControlSend or other ControlXXX functions to
    directly communicate with the control. Send even with Opt("SendAttachMode",1) is not
    working.
    Using the -s mode when submitting can help to have better right on
    the remote computer.

    Opt("SendKeyDelay",...) alters the the length of the
    brief pause in between sent keystrokes.
    Opt("SendKeyDownDelay",...) alters
    the length of time a key is held down before being released during a
    keystroke.

  • Ich glaube er wollte einfach wissen, wie er die DRUCK-Taste abfragen kann. Dazu gibts es in der Hilfe zu _IsPressed() eine Liste:

    Spoiler anzeigen

    01 Left mouse button
    02 Right mouse button
    04 Middle mouse button (three-button mouse)
    05 Windows 2000/XP: X1 mouse button
    06 Windows 2000/XP: X2 mouse button
    08 BACKSPACE key
    09 TAB key
    0C CLEAR key
    0D ENTER key
    10 SHIFT key
    11 CTRL key
    12 ALT key
    13 PAUSE key
    14 CAPS LOCK key
    1B ESC key
    20 SPACEBAR
    21 PAGE UP key
    22 PAGE DOWN key
    23 END key
    24 HOME key
    25 LEFT ARROW key
    26 UP ARROW key
    27 RIGHT ARROW key
    28 DOWN ARROW key
    29 SELECT key
    2A PRINT key
    2B EXECUTE key
    2C PRINT SCREEN key
    2D INS key
    2E DEL key
    30 0 key
    31 1 key
    32 2 key
    33 3 key
    34 4 key
    35 5 key
    36 6 key
    37 7 key
    38 8 key
    39 9 key
    41 A key
    42 B key
    43 C key
    44 D key
    45 E key
    46 F key
    47 G key
    48 H key
    49 I key
    4A J key
    4B K key
    4C L key
    4D M key
    4E N key
    4F O key
    50 P key
    51 Q key
    52 R key
    53 S key
    54 T key
    55 U key
    56 V key
    57 W key
    58 X key
    59 Y key
    5A Z key
    5B Left Windows key
    5C Right Windows key
    60 Numeric keypad 0 key
    61 Numeric keypad 1 key
    62 Numeric keypad 2 key
    63 Numeric keypad 3 key
    64 Numeric keypad 4 key
    65 Numeric keypad 5 key
    66 Numeric keypad 6 key
    67 Numeric keypad 7 key
    68 Numeric keypad 8 key
    69 Numeric keypad 9 key
    6A Multiply key
    6B Add key
    6C Separator key
    6D Subtract key
    6E Decimal key
    6F Divide key
    70 F1 key
    71 F2 key
    72 F3 key
    73 F4 key
    74 F5 key
    75 F6 key
    76 F7 key
    77 F8 key
    78 F9 key
    79 F10 key
    7A F11 key
    7B F12 key
    7C-7F F13 key - F16 key
    80H-87H F17 key - F24 key
    90 NUM LOCK key
    91 SCROLL LOCK key
    A0 Left SHIFT key
    A1 Right SHIFT key
    A2 Left CONTROL key
    A3 Right CONTROL key
    A4 Left MENU key
    A5 Right MENU key
    BA ;
    BB =
    BC ,
    BD -
    BE .
    BF /
    C0 `
    DB [
    DC \
    DD ]

  • firewalldevil
    Bitte mach die Hilfe in Spoiler

    In der Hilfe stehen die Tasten schän aufgelistet drinnen.
    Wenn du Until wegläßt läuft die Funktion nicht, bzw du kommst aus der Funktion nicht wieder raus

  • Ok, ich glaub ich erklärs nochmal.
    Ich möchte, das bei einem Mausklick der aktuelle Bildschirminhalt an die Zwischenablage gesendet wird und automatisch gespeichert wird mit fortlaufender Nummerierung. Dafür habe ich ein Screenshot-Programm, das wenn die "Druck" Taste gedrückt wird so eine automatische Speicherung macht. Jetzt dachte ich wenn ich mit AutoIt den Druck der "Druck"-Taste bei jedem Mausklick simuliere bräuchte ich nicht selber im richtigen Moment die Druck-Taste drücken.

    Also brauche ich ein Script das im Hintergrund läuft und immer wenn die Maustaste gedrückt wird den tastendruck simuliert.

  • So gut kenn ich mich halt mit Autoit nicht aus. Ich arbeite mich langsam in das ein, was ich für meine Diplomarbeit brauche.

    Kann ich denn automatisch Screenshots machen lassen, bei denen nicht nach dateiname gefragt wird und die fortlaufend nummeriert, am besten mit uhrzeit, abgespeichert werden?

  • Und kannst du mir dabei helfen?

    Ist es ein Problem wenn nebenbei ein zweites AutoIT-Script läuft das Einträge aus Formularfelder und checkboxen protokolliert und in Textdateien schreibt?

  • So, mal als Ansatz für Screenshots mit AutoIt

    [autoit]

    #include <ScreenCapture.au3>
    #include <Misc.au3>
    $i = 0

    [/autoit][autoit][/autoit][autoit]

    While 1
    If _IsPressed("01") Then
    $i += 1
    If StringLen($i) <> 2 Then $i = "0" & $i ;damit nicht 1, 2, 3 sondern 01, 02, 03 angezeigt wird
    $dateiname = "C:\name " & $i & " " & @YEAR & "_" & @MON & "_" & @MDAY & " " & @HOUR & "_" & @MIN & "_" & @SEC & ".jpg" ;Dateiname mit Zähler und Datum
    _ScreenCapture_Capture($dateiname, 0, 0, -1, -1, False) ;kompletter Bildschirm ohne Cursor
    Sleep(100)
    EndIf
    Sleep(10)
    WEnd

    [/autoit]
  • Würde das Sleep(100) noch ergänzen, damit nicht mehrere Screenshots gemacht werden, wenn man die Taste klick :D

    [autoit]

    Do
    Sleep(10)
    Until Not _IsPressed("01")

    [/autoit]