Eine voll geschriebene Python -Wrapper um Autohotkey.
pip install ahk
Benötigt Python 3.8+
Unterstützt Autohotkey V1 und V2. Siehe auch: Nicht-Python-Abhängigkeiten
from ahk import AHK
ahk = AHK ()
ahk . mouse_move ( x = 100 , y = 100 , blocking = True ) # Blocks until mouse finishes moving (the default)
ahk . mouse_move ( x = 150 , y = 150 , speed = 10 , blocking = True ) # Moves the mouse to x, y taking 'speed' seconds to move
print ( ahk . mouse_position ) # (150, 150)Nicht-exponierende Beispiele für einige Funktionen, die mit diesem Paket verfügbar sind. In der vollständigen Dokumentation finden Sie vollständige API -Referenzen und zusätzliche Funktionen.
Hotkeys können so konfiguriert werden, dass Python -Funktionen als Rückrufe ausgeführt werden.
Zum Beispiel:
from ahk import AHK
def my_callback ():
print ( 'Hello callback!' )
ahk = AHK ()
# when WIN + n is pressed, fire `my_callback`
ahk . add_hotkey ( '#n' , callback = my_callback )
ahk . start_hotkeys () # start the hotkey process thread
ahk . block_forever () # not strictly needed in all scripts -- stops the script from exiting; sleep forever Jetzt wann immer Sie drücken + n wird die my_callback -Rückruffunktion in einem Hintergrund -Thread aufgerufen.
Sie können auch einen Ausnahmebehandler für Ihren Rückruf hinzufügen:
from ahk import AHK
ahk = AHK ()
def go_boom ():
raise Exception ( 'boom!' )
def my_ex_handler ( hotkey : str , exception : Exception ):
print ( 'exception with callback for hotkey' , hotkey , 'Here was the error:' , exception )
ahk . add_hotkey ( '#n' , callback = go_boom , ex_handler = my_ex_handler )Es gibt auch Methoden zum Entfernen von Hotkeys:
# ...
ahk . remove_hotkey ( '#n' ) # remove a hotkey by its keyname
ahk . clear_hotkeys () # remove all hotkeysBeachten Sie, dass:
ahk.start_hotkeys() )ahk.stop_hotkeys() gestoppt werden (werden nicht mehr aktiv abrufen)Siehe auch die relevante AHK -Dokumentation
Hotstrings können auch zum Hotkey -Prozess -Thread hinzugefügt werden.
Zusätzlich zu Hotstrings, die normale AHK -String -Ersatzstoffe unterstützen, können Sie auch Python -Rückrufe (mit optionalen Ausnahmebehandlern) als Reaktion auf das Auslösen von Hotstrings bereitstellen.
from ahk import AHK
ahk = AHK ()
def my_callback ():
print ( 'hello callback!' )
ahk . add_hotstring ( 'btw' , 'by the way' ) # string replacements
ahk . add_hotstring ( 'btw' , my_callback ) # call python function in response to the hotstringSie können auch Hotstrings entfernen:
ahk . remove_hotstring ( 'btw' ) # remove a hotstring by its trigger sequence
ahk . clear_hotstrings () # remove all registered hotstrings from ahk import AHK
ahk = AHK ()
ahk . mouse_position # Returns a tuple of mouse coordinates (x, y) (relative to active window)
ahk . get_mouse_position ( coord_mode = 'Screen' ) # get coordinates relative to the screen
ahk . mouse_move ( 100 , 100 , speed = 10 , relative = True ) # Moves the mouse reletave to the current position
ahk . mouse_position = ( 100 , 100 ) # Moves the mouse instantly to absolute screen position
ahk . click () # Click the primary mouse button
ahk . click ( 200 , 200 ) # Moves the mouse to a particular position and clicks (relative to active window)
ahk . click ( 100 , 200 , coord_mode = 'Screen' ) # click relative to the screen instead of active window
ahk . click ( button = 'R' , click_count = 2 ) # Clicks the right mouse button twice
ahk . right_click () # Clicks the secondary mouse button
ahk . mouse_drag ( 100 , 100 , relative = True ) # Holds down primary button and moves the mouse from ahk import AHK
ahk = AHK ()
ahk . type ( 'hello, world!' ) # Send keys, as if typed (performs string escapes for you)
ahk . send_input ( 'Hello, {U+1F30E}{!}' ) # Like AHK SendInput
# Unlike `type`, control sequences must be escaped manually.
# For example the characters `!^+#=` and braces (`{` `}`) must be escaped manually.
ahk . key_state ( 'Control' ) # Return True or False based on whether Control key is pressed down
ahk . key_state ( 'CapsLock' , mode = 'T' ) # Check toggle state of a key (like for NumLock, CapsLock, etc)
ahk . key_press ( 'a' ) # Press and release a key
ahk . key_down ( 'Control' ) # Press down (but do not release) Control key
ahk . key_up ( 'Control' ) # Release the key
ahk . set_capslock_state ( "On" ) # Turn CapsLock on
if ahk . key_wait ( 'x' , timeout = 3 ): # wait for a key to be pressed; returns a boolean
print ( 'X was pressed within 3 seconds' )
else :
print ( 'X was not pressed within 3 seconds' )Sie können auch Sachen mit Fenstern machen.
from ahk import AHK
ahk = AHK ()
win = ahk . active_window # Get the active window
win = ahk . win_get ( title = 'Untitled - Notepad' ) # by title
all_windows = ahk . list_windows () # list of all windows
win = ahk . win_get_from_mouse_position () # the window under the mouse cursor
win = ahk . win_get ( title = 'ahk_pid 20366' ) # get window from pid
# Wait for a window
try :
# wait up to 5 seconds for notepad
win = ahk . win_wait ( title = 'Untitled - Notepad' , timeout = 5 )
# see also: win_wait_active, win_wait_not_active
except TimeoutError :
print ( 'Notepad was not found!' ) from ahk import AHK
ahk = AHK ()
ahk . run_script ( 'Run Notepad' ) # Open notepad
win = ahk . find_window ( title = 'Untitled - Notepad' ) # Find the opened window; returns a `Window` object
# Window object methods
win . send ( 'hello' , control = 'Edit1' ) # Send keys directly to the window (does not need focus!)
# OR ahk.control_send(title='Untitled - Notepad', control='Edit1')
win . move ( x = 200 , y = 300 , width = 500 , height = 800 )
win . activate () # Give the window focus
win . close () # Close the window
win . hide () # Hide the window
win . kill () # Kill the window
win . maximize () # Maximize the window
win . minimize () # Minimize the window
win . restore () # Restore the window
win . show () # Show the window
win . disable () # Make the window non-interactable
win . enable () # Enable it again
win . to_top () # Move the window on top of other windows
win . to_bottom () # Move the window to the bottom of the other windows
win . get_class () # Get the class name of the window
win . get_minmax () # Get the min/max status
win . get_process_name () # Get the process name (e.g., "notepad.exe")
win . process_name # Property; same as `.get_process_name()` above
win . is_always_on_top () # Whether the window has the 'always on top' style applied
win . list_controls () # Get a list of controls (list of `Control` objects)
win . redraw () # Redraw the window
win . set_style ( "-0xC00000" ) # Set a style on the window (in this case, removing the title bar)
win . set_ex_style ( "^0x80" ) # Set an ExStyle on the window (in this case, removes the window from alt-tab list)
win . set_region ( "" ) # See: https://www.autohotkey.com/docs/v2/lib/WinSetRegion.htm
win . set_trans_color ( "White" ) # Makes all pixels of the chosen color invisible inside the specified window.
win . set_transparent ( 155 ) # Makes the specified window semi-transparent (or "Off" to turn off transparency)
win . always_on_top = 'On' # Make the window always on top
# or
win . set_always_on_top ( 'On' )
for window in ahk . list_windows (): # list all (non-hidden) windows -- ``detect_hidden_windows=True`` to include hidden
print ( window . title )
# Some more attributes
print ( window . text ) # window text -- or .get_text()
print ( window . get_position ()) # (x, y, width, height)
print ( window . id ) # the ahk_id of the window
print ( window . pid ) # process ID -- or .get_pid()
print ( window . process_path ) # or .get_process_path()
if win . active : # or win.is_active()
...
if win . exist : # or win.exists()
...
# Controls
edit_control = win . list_controls ()[ 0 ] # get the first control for the window, in this case "Edit1" for Notepad
edit_control . get_text () # get the text in Notepad
edit_control . get_position () # returns a `Postion` namedtuple: e.g. Position(x=6, y=49, width=2381, height=1013) Verschiedene Fenstermethoden können auch direkt aufgerufen werden, ohne zuerst ein Window zu erstellen, indem die zugrunde liegenden win_* -Methoden in der AHK -Klasse verwendet werden. Anstelle von win.close() wie oben könnte man stattdessen ahk.win_close(title='Untitled - Notepad') nennen.
from ahk import AHK
ahk = AHK ()
ahk . image_search ( 'C: \ path \ to \ image.jpg' ) # Find an image on screen
# Find an image within a boundary on screen
ahk . image_search ( 'C: \ path \ to \ image.jpg' , upper_bound = ( 100 , 100 ), # upper-left corner of search area
lower_bound = ( 400 , 400 )) # lower-right corner of search area
ahk . pixel_get_color ( 100 , 100 ) # Get color of pixel located at coords (100, 100)
ahk . pixel_search ( color = '0x9d6346' , search_region_start = ( 0 , 0 ), search_region_end = ( 500 , 500 )) # Get coords of the first pixel with specified color Clipboard abrufen/festlegen
from ahk import AHK
ahk = AHK ()
ahk . set_clipboard ( 'hello N{EARTH GLOBE AMERICAS} ' ) # set clipboard text contents
ahk . get_clipboard () # get clipboard text contents
# 'hello ?'
ahk . set_clipboard ( "" ) # Clear the clipboard
ahk . clip_wait ( timeout = 3 ) # Wait for clipboard contents to change (with text or file(s))
ahk . clip_wait ( timeout = 3 , wait_for_any_data = True ) # wait for _any_ clipboard contents Sie können auch ClipboardAll erhalten/festlegen. Sie sollten jedoch niemals versuchen, set_clipboard_all mit anderen Daten zu rufen, als genau wie genau von get_clipboard_all zurückgegeben oder unerwartete Probleme auftreten.
from ahk import AHK
ahk = AHK ()
# save all clipboard contents in all formats
saved_clipboard = ahk . get_clipboard_all ()
ahk . set_clipboard ( 'something else' )
...
ahk . set_clipboard_all ( saved_clipboard ) # restore saved content from earlier Sie können auch einen Rückruf festlegen, der ausgeführt wird, wenn sich der Zwischenablettungsinhalt ändert. Wie bei den oben genannten Hotkey -Methoden können Sie auch einen Ausnahmebehandler festlegen. Wie Hotkeys erfordern auch die Rückrufe .start_hotkeys() on_clipboard_change .
Die Rückruffunktion muss ein Positionsargument akzeptieren, bei dem es sich um eine Ganzzahl handelt, die den Clipboard -Datentyp angibt.
from ahk import AHK
ahk = AHK ()
def my_clipboard_callback ( change_type : int ):
if change_type == 0 :
print ( 'Clipboard is now empty' )
elif change_type == 1 :
print ( 'Clipboard has text contents' )
elif change_type == 2 :
print ( 'Clipboard has non-text contents' )
ahk . on_clipboard_change ( my_clipboard_callback )
ahk . start_hotkeys () # like with hotkeys, must be called at least once for listening to start
# ...
ahk . set_clipboard ( "hello" ) # will cause the message "Clipboard has text contents" to be printed by the callback
ahk . set_clipboard ( "" ) # Clears the clipboard, causing the message "Clipboard is now empty" to be printed by the callback from ahk import AHK
ahk = AHK ()
ahk . sound_play ( 'C: \ path \ to \ sound.wav' ) # Play an audio file
ahk . sound_beep ( frequency = 440 , duration = 1000 ) # Play a beep for 1 second (duration in microseconds)
ahk . get_volume ( device_number = 1 ) # Get volume of a device
ahk . set_volume ( 50 , device_number = 1 ) # Set volume of a device
ahk . sound_get ( device_number = 1 , component_type = 'MASTER' , control_type = 'VOLUME' ) # Get sound device property
ahk . sound_set ( 50 , device_number = 1 , component_type = 'MASTER' , control_type = 'VOLUME' ) # Set sound device property Tooltips/TrayTips
import time
from ahk import AHK
ahk = AHK ()
ahk . show_tooltip ( "hello4" , x = 10 , y = 10 )
time . sleep ( 2 )
ahk . hide_tooltip () # hide the tooltip
ahk . show_info_traytip ( "Info" , "It's also info" , silent = False , blocking = True ) # Default info traytip
ahk . show_warning_traytip ( "Warning" , "It's a warning" ) # Warning traytip
ahk . show_error_traytip ( "Error" , "It's an error" ) # Error trytipDialogfelder
from ahk import AHK , MsgBoxButtons
ahk = AHK ()
ahk . msg_box ( text = 'Do you like message boxes?' , title = 'My Title' , buttons = MsgBoxButtons . YES_NO )
ahk . input_box ( prompt = 'Password' , title = 'Enter your password' , hide = True )
ahk . file_select_box ( title = 'Select one or more mp3 files' , multi = True , filter = '*.mp3' , file_must_exist = True )
ahk . folder_select_box ( prompt = 'Select a folder' ) Sie können verschiedene globale Zustände wie CoordMode , DetectHiddenWindows usw. ändern. Sie müssen diese Parameter also nicht direkt an Funktionsaufrufe übergeben
from ahk import AHK
ahk = AHK ()
ahk . set_coord_mode ( 'Mouse' , 'Screen' ) # set default Mouse CoordMode to be relative to Screen
ahk . set_detect_hidden_windows ( True ) # Turn on detect hidden windows by default
ahk . set_send_level ( 5 ) # Change send https://www.autohotkey.com/docs/v1/lib/SendLevel.htm
ahk . set_title_match_mode ( 'Slow' ) # change title match speed and/or mode
ahk . set_title_match_mode ( 'RegEx' )
ahk . set_title_match_mode (( 'RegEx' , 'Slow' )) # or both at the same time
ahk . set_send_mode ( 'Event' ) # change the default SendMode Sie können Anweisungen hinzufügen, die allen generierten Skripten hinzugefügt werden. Um beispielsweise zu verhindern, dass das AHK -Trayicon erscheint, können Sie die Notrayicon -Richtlinie hinzufügen.
from ahk import AHK
from ahk . directives import NoTrayIcon
ahk = AHK ( directives = [ NoTrayIcon ])Standardmäßig werden einige Anweisungen automatisch hinzugefügt, um die Funktionalität zu gewährleisten, und werden mit allen vom Benutzer bereitgestellten Richtlinien zusammengeführt.
Anweisungen werden nicht für den AHK -Prozess angewendet, der für die Behandlung von Hotkeys und Hotstrings (unten diskutiert) standardmäßig verwendet wird. So wenden Sie eine Anweisung auf den Hotkeys -Prozess an, indem Sie das Schlüsselwortargument apply_to_hotkeys_process=True :
from ahk import AHK
from ahk . directives import NoTrayIcon
directives = [
NoTrayIcon ( apply_to_hotkeys_process = True )
]
ahk = AHK ( directives = directives )Wie oben erläutert, können Sie das Tablettsymbol verbergen, wenn Sie dies wünschen. Darüber hinaus stehen einige Methoden zur Anpassung des Tablettsymbols zur Verfügung.
from ahk import AHK
ahk = AHK ()
# change the tray icon (in this case, using a builtin system icon)
ahk . menu_tray_icon ( 'Shell32.dll' , 174 )
# revert it back to the original:
ahk . menu_tray_icon ()
# change the tooltip that shows up when hovering the mouse over the tray icon
ahk . menu_tray_tooltip ( 'My Program Name' )
# Hide the tray icon
ahk . menu_tray_icon_hide ()
# Show the tray icon that was previously hidden by ``NoTrayIcon`` or ``menu_tray_icon_hide``
ahk . menu_tray_icon_show ()Sie können Registrierungsschlüssel lesen/schreiben/löschen:
from ahk import AHK
ahk = AHK ()
ahk . reg_write ( 'REG_SZ' , r'HKEY_CURRENT_USERSOFTWAREmy-software' , value = 'test' )
ahk . reg_write ( 'REG_SZ' , r'HKEY_CURRENT_USERSOFTWAREmy-software' , value_name = 'foo' , value = 'bar' )
ahk . reg_read ( r'HKEY_CURRENT_USERSOFTWAREmy-software' ) # 'test'
ahk . reg_delete ( r'HKEY_CURRENT_USERSOFTWAREmy-software' )Wenn kein Schlüssel vorhanden ist oder ein anderes Problem auftritt, wird eine Ausnahme angeworfen.
Die meisten Methoden in dieser Bibliothek liefern eine nicht blockierende Oberfläche, sodass Ihre Python-Skripte weiter ausführen können, während Ihre AHK-Skripte ausgeführt werden.
Standardmäßig blockieren alle Aufrufe - jede Funktion wird vollständig ausgeführt, bevor die nächste Funktion ausgeführt wird.
Manchmal möchten Sie jedoch einen anderen Code ausführen, während AHK einen Code ausführt. Wenn das Argument blocking von Keywords mit False geliefert wird, kehren Funktionsaufrufe sofort zurück, während die AHK -Funktion im Hintergrund durchgeführt wird.
Als Beispiel können Sie die Maus langsam bewegen und ihre Position im Umzug melden:
import time
from ahk import AHK
ahk = AHK ()
ahk . mouse_position = ( 200 , 200 ) # Moves the mouse instantly to the start position
start = time . time ()
# move the mouse very slowly
ahk . mouse_move ( x = 100 , y = 100 , speed = 30 , blocking = False )
# This code begins executing right away, even though the mouse is still moving
while True :
t = round ( time . time () - start , 4 )
position = ahk . mouse_position
print ( t , position ) # report mouse position while it moves
if position == ( 100 , 100 ):
break Wenn Sie blocking=False angeben, erhalten Sie immer ein spezielles FutureResult -Objekt (oder ein AsyncFutureResult Objekt in der unten besprochenen Async -API), mit dem Sie auf die Funktion warten können, um den Rückgabewert über eine get_result -Funktion zu vervollständigen und abzurufen. Selbst wenn eine Funktion normalerweise None zurückgibt, kann dies nützlich sein, um sicherzustellen, dass AHK die Ausführung der Funktion beendet hat.
Nicht blockierende Anrufe:
set_coord_mode calls oder ähnlich) - dies kann sich in einer zukünftigen Version ändern.FutureResult -Objekt (oder ein AsyncFutureResult -Objekt in der unten besprochenen asynchronen API zurück) zurück, mit dem Sie auf die Funktion warten können, um den Rücklaufwert über die result zu vervollständigen und abzurufen. Selbst wenn eine Funktion normalerweise None zurückgibt, kann dies nützlich sein, um sicherzustellen, dass AHK die Ausführung der Funktion beendet hat. from ahk import AHK
ahk = AHK ()
future_result = ahk . mouse_move ( 100 , 100 , speed = 40 , blocking = False )
...
# wait on the mouse_move to finish
future_result . result ( timeout = 10 ) # timeout keyword is optional Eine asynchrische API wird bereitgestellt, sodass Funktionen mit async / await aufgerufen werden können. Die gleichen Methoden aus der synchronen API sind in der asynchronen API verfügbar.
from ahk import AsyncAHK
import asyncio
ahk = AsyncAHK ()
async def main ():
await ahk . mouse_move ( 100 , 100 )
x , y = await ahk . get_mouse_position ()
print ( x , y )
asyncio . run ( main ())Die asynchrische API ist mit der der normalen API mit einigen bemerkenswerten Unterschieden identisch:
.mouse_position oder .title for Windows) auf ED await können, wurden zusätzliche Methoden (wie get_mouse_position() und get_title() ) für eine intuitivere API hinzugefügt und werden für die Verwendung von Eigenschaften empfohlen.ahk.mouse_postion = (200, 200) ) sind in der asynchronen API nicht zulässig (ein RuntimeError wird angehoben). Immobiliensetzer bleiben in der Sync -API verfügbar.AsyncFutureResult -Objekte (zurückgegeben, wenn blocking=False angegeben ist) funktionieren genauso wie die FutureResult -Objekte in der Sync -API, außer dass das timeout -Schlüsselwort für die result nicht unterstützt wird).Beachten Sie auch, dass:
AsyncAHK -Instanz nicht gleichzeitig ausgeführt. Sie müssen entweder blocking=False verwenden, wie in der Synchronisationspunkte oder mehrere Instanzen von AsyncAHK . Diese Bibliothek ist vollständig vom Typ Typ angezeigt, sodass Sie Tools wie mypy nutzen können, um die Typkorrigität Ihres Codes zu validieren. IDEs, die Typen-Überprüfungsfunktionen implementieren, können auch Hinweise zum Typ nutzen, um sicherzustellen, dass Ihr Code sicher ist.
Sie können auch einen beliebigen autohotkey -Code entweder als .ahk -Skriptdatei oder als Zeichenfolge mit AHK -Code ausführen.
from ahk import AHK
ahk = AHK ()
my_script = '''
MouseMove, 100, 100
; etc...
'''
ahk . run_script ( my_script ) from ahk import AHK
ahk = AHK ()
script_path = r'C:PathTomyscript.ahk'
ahk . run_script ( script_path ) Um dieses Paket zu verwenden, benötigen Sie die autohotkey ausführbare Datei (z. B. AutoHotkey.exe ). Es wird erwartet, dass es standardmäßig oder in einem Standard -Installationsort auf dem Weg ist ( C:Program FilesAutoHotkeyAutoHotkey.exe für V1 oder C:Program FilesAutoHotkeyv2AutoHotkey64.exe für v2)
Autohotkey V1 und V2 werden beide vollständig unterstützt, obwohl einige Verhaltensunterschiede auftreten, je nachdem, welche Version Sie verwenden. Siehe Notizen unten.
Die empfohlene Möglichkeit zur Versorgung der Autohotkey -Binärdatei (für V1 und V2) besteht darin, das binary Extra für dieses Paket zu installieren. Dies liefert die erforderlichen ausführbaren Ausführbarungen und sorgt dafür, dass sie korrekt auf dem Pfad platziert werden.
pip install "ahk[binary]"
Alternativ können Sie den Pfad im Code bereitstellen:
from ahk import AHK
ahk = AHK ( executable_path = 'C: \ path \ to \ AutoHotkey.exe' ) Sie können auch die Umgebungsvariable AHK_PATH verwenden, um den ausführbaren Ort anzugeben.
set AHK_PATH=C:PathToAutoHotkey.exe
python myscript.py Wenn standardmäßig kein executable_path Parameter (oder AHK_PATH -Umgebungsvariable) festgelegt wird, werden nur autohotkey v1 -Binärnamen auf Pfad- oder Standard -Installationsorten gesucht. Dieses Verhalten kann sich in zukünftigen Versionen ändern, damit V2 standardmäßig verwendet werden kann.
Um Autohotkey Version 2 zu verwenden, können Sie eines der folgenden Dinge tun:
executable_path mit dem Speicherort des autohotkey v2 -Binary anAHK_PATH mit dem Speicherort eines autohotkey v2 -Binaryversion mit dem Wert v2 an, mit dem die ausführbare Datei mit autohotkey v2 -Binärnamen und Standardinstallationsorten gefunden werden kann.Zum Beispiel:
from ahk import AHK
ahk = AHK ( executable_path = r'C:Program FilesAutoHotkeyv2AutoHotkey64.exe' )
# OR
ahk = AHK ( version = 'v2' ) Wenn Sie das Keyword -Argument der version (entweder "v1" oder "v2" angeben), wird ein Scheck durchgeführt, um sicherzustellen, dass das angegebene (oder entdeckte) Binäre der angeforderten Version übereinstimmt. Wenn das Schlüsselwort version weggelassen wird, wird die Version automatisch aus der ausführbaren Binärdatei ermittelt (oder entdeckt).
Die API dieses Projekts wurde ursprünglich gegen Autoohotkey V1 entwickelt, und Funktionssignaturen sind auch bei Verwendung von AutoOhotkey V2 gleich. Während der größte Teil des Verhaltens gleich bleibt, ändert sich ein Verhalten bei der Verwendung von Autohotkey V2 im Vergleich zu V1. Dies ist hauptsächlich auf zugrunde liegende Unterschiede zwischen den beiden Versionen zurückzuführen.
Einige der bemerkenswerten Unterschiede, die Sie bei der Verwendung von AutoOhotkey V2 mit dieser Bibliothek verwenden können, umfassen:
None zurückzugeben (wie in AutoHotkey V2 wird ein TargetError in den meisten Fällen geworfen, in denen das Fenster oder die Steuerung nicht gefunden werden kann).ControlSend ( ahk.control_send oder Window.send oder Control.send ) unterscheidet sich in autohotkey v2, wenn der control nicht angegeben ist. In V1 werden Schlüssel an die obersten Steuerelemente gesendet, was normalerweise das richtige Verhalten ist. In V2 werden Schlüssel direkt an das Fenster gesendet. Dies bedeutet, dass Sie in vielen Fällen die Steuerung bei Verwendung von V2 explizit angeben müssen.secondstowait -Paramater für TrayTip ( ahk.show_traytip ) wurde in V2 entfernt. Wenn Sie diesen Parameter in der Python -Wrapper angeben, wird eine Warnung abgeleitet und der Parameter wird ignoriert.Input eher in V1 als Event (beispielsweise werden Mausgeschwindigkeitsparameter für mouse_move und mouse_drag in V2 ignoriert, es sei denn, der Send -Modus wird geändert)2 in AutoHotkey V2. Es ist 1 in Autohotkey V1. Verwenden Sie die Keyword-Argumente title_match_mode um zu win_get und andere Methoden, die dieses Schlüsselwort akzeptieren, um dieses Verhalten zu steuern, oder verwenden Sie set_title_match_mode , um das Standardverhalten zu ändern (Nicht blockierende Anrufe werden in separaten Prozessen ausgeführt und werden nicht von set_title_match_mode betroffen) ausgeführt und werden nicht von set_title_match_mode betroffen) ausgeführt und werden nicht von set_title_match_mode betroffen) ausgeführt und werden nicht von set_title_match_mode betroffen) ausgeführt und werden nicht von set_title_match_mode betroffen) ausgeführt und nicht von set_title_match_mode betroffen). Sie können Erweiterungen für die Erweiterung der Funktionalität von ahk entwickeln - dh Ihr eigenes Autohotkey -Code und das Hinzufügen zusätzlicher Methoden zur AHK -Klasse. Weitere Informationen finden Sie in den erweiterten Dokumenten.
Alle Beiträge werden begrüßt und geschätzt.
Bitte zögern Sie nicht, ein Github -Problem oder eine PR für Feedback, Ideen, Feature -Anfragen oder Fragen zu öffnen.
Dies sind einige ähnliche Projekte, die häufig zur Automatisierung mit Python verwendet werden.
keyboard , der Python -Mauskontrolle !