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?
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
#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
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
moin,
ich möchte gerne auf den tasten druck warten, wie geht das wohl ...?
danke
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:
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.
Warum machst du den Screenshot nicht einfach über AutoIt (_ScreenCapture)?
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?
Ja sicher alles, was du willst ;).
peethebee
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?
Nö, kein Problem :).
Schau dir mal die Beispiele in der Hilfe zu ScreenCapture an und ersetze das dann an der Stelle mit "Send" in Tweakys Skript (Post 2) :).
peethebee
So, mal als Ansatz für Screenshots mit AutoIt
[autoit]#include <ScreenCapture.au3>
#include <Misc.au3>
$i = 0
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
JAAA! Das ist perfekt! vielen, vielen Dank.
Würde das Sleep(100) noch ergänzen, damit nicht mehrere Screenshots gemacht werden, wenn man die Taste klick
[autoit]Do
Sleep(10)
Until Not _IsPressed("01")