Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 9 reacties
Bron: AutoHotkey, submitter: Silhouet

AutoHotkey wordt in C++ ontwikkeld en stelt je in staat om vaak gebruikte toetsaanslagen, handelingen en/of knoppencombo's met het toetsenbord, muis en gamepad achter een sneltoets te zetten, zodat de betreffende handeling in één keer wordt uitgevoerd. Daarbij is het mogelijk om eerder gescripte toetscombinaties van AutoIt2 te converteren naar de scripttaal van AutoKey. De nieuwste versie van AutoHotkey heeft rugnummer 1.0.48 meegekregen en is vanaf deze pagina in verschillende uitvoeringen te downloaden. De release notes van deze versie zien er als volgt uit:

Compatibility: The change most likely to affect backward compatibility is that floating point numbers stored in variables now have higher precision. Scripts that rely on tiny differences in precision would either need to be reviewed and updated, or have their compatibility improved by using "SetFormat Float" (e.g. SetFormat, Float, 0.6) anywhere in the script. "SetFormat Float" disables the higher precision, but gives up some of the new, faster floating point performance.

Performance: The main theme of this release is faster performance. Almost all scripts should run faster -- especially those that make heavy use of expressions and integer math/comparisons (which may run up to three times as fast). To achieve the full benefit, a script either should avoid using SetFormat or should use SetFormat's fast mode.

Performance improvements

  • Expressions and function calls are compiled more heavily, making them much faster (especially complex integer expressions, including those with commas).
  • Binary numbers are cached for variables to avoid conversions to/from strings. This makes numerical operations involving variables much faster.
  • Literal integers in expressions and math/comparison commands are replaced with binary integers, which makes them faster; e.g. X+5 and "if x > 5".
  • LOOPs, IFs, and ELSEs that have blocks (braces) are faster due to skipping the opening '{'. A side-effect is that the '{' is omitted from ListLines.
  • Thread-creation performance is improved, which should help rapid-fire threads in OnMessage(), RegisterCallback(), and GUI events.

Changes that might affect existing scripts (other than higher-precision floating point described at the top)

  • When "SetFormat, Integer, Hex" is in effect, assigning a literal decimal integer to a variable also converts it to hex. Usually this is only a display issue.
  • For OnMessage() performance, the message number and HWND arrive as standard numbers rather than appearing unconditionally as hex. Usually this is only a display issue.
  • To achieve various improvements in performance, scripts now use slightly more memory (proportionate to the number of variables and expressions).
  • Changed and fixed "if var is time" and other uses of YYYYMMDDHHMISS date-time stamps to recognize that months outside the range 1-12 are invalid. [thanks Nick]
  • Changed and improved dynamic function calling to allow passing more parameters than defined by a function, in which case the parameters are evaluated but discarded. [developed by Lexikos]

Other improvements

  • Added function IsFunc(), which indicates whether a function may be called dynamically. [developed by Lexikos]
  • Added the while-loop, which repeats its commands until its expression evaluates to false. [developed by Lexikos]
  • Added an assume-static mode for functions. [developed by Lexikos]
  • Added built-in variables A_IsPaused and A_IsCritical. [developed by Lexikos]
  • Improved NumPut() to support UInt64 like DllCall(). [thanks Sean]
  • Improved mouse wheel support by adding WheelLeft and WheelRight as hotkeys and supporting them in Send, Click, and related commands. However, WheelLeft/Right has no effect on operating systems older than Windows Vista. [developed by Lexikos]
  • Upgraded compiled script compressor from UPX 3.00 to 3.03.

Fixes

  • Fixed inability to use MsgBox's timeout parameter when the "Text" parameter had an expression containing commas.
  • Fixed "Menu, Delete, Item-that's-a-submenu" not to disrupt the associated submenu. [thanks animeaime & Lexikos]
  • Fixed the GUI Hotkey control to return usable hotkey names even for dead keys (e.g. "^" instead of Zircumflex). [thanks DerRaphael]
  • Fixed RegDelete so that it won't delete an entire root key when SubKey is blank. [thanks Icarus]
  • Fixed registry loops to support subkey names longer than 259 (rare). In prior versions, such subkeys would either be skipped or cause a crash. [thanks Krzysztof Sliwinski & Eggi]
  • Fixed FileSelectFolder by providing an option to make it compatible with BartPE/WinPE. [thanks markreflex]
  • Fixed window/control IDs (HWNDs), which in rare cases wrongly started with 0xFFFFFFFF instead of just 0x. [thanks Micahs]
  • Fixed inability of Send commands to use the Down/Up modifiers with the "}" character. [thanks neovars]
Versienummer:1.0.48
Releasestatus:Final
Besturingssystemen:Windows 9x, Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista
Website:AutoHotkey
Download:http://www.autohotkey.com/download/
Licentietype:Freeware
Moderatie-faq Wijzig weergave

Reacties (9)

Prachtig programma, ik gebruik het samen met WinLIRC op mijn HTPC. Met een druk op de knop van de afstandsbediening starten er scripts op die in mogelijkheden slecht belemmerd worden door mijn eigen fantasie.
De mogelijkheden zijn inderdaad onbeperkt, mits je je enigszins verdiept in de nogal onelegante microsoft GUI interfaces.

Ik als programmeur en verstokte keyboard fan, gebruik autohotkey vooral om meer control te krijgen over keyboard shortcuts en het aanzienlijk uitbreiden van de mouse movements/buttons met allerlei key modifiers. Zo gebruik ik alt-<left button>-<move> om een window te verplaatsen en alt-<right button>-<move> voor een intelligente window resize (vim windows worden bv per karakter vergroot ipv per pixel). <Alt>-e voor edit in explorer, <Alt>-z voor maximaliseer window alleen verticaal, etc.

Mijn probleem met autohotkey is de script taal. Die is niet intu´tief, white space afhankelijk en het gebruik van variabelen is niet uniform. Maar het ergste is dat binnen een script er zeer slecht overzicht is in de flow control.
Ik vind de taal van AutoIt toch wat fijner samen met de IDE.
Ook ik vind AutoIt fijner omdat je toch meer algemenere toepassingen / scripts maakt dan enkel iets wat gemoeid is met hotkeys.
AutoIt gaat een stap verder en loont zich dan ook meer om te leren dan deze toepassing in mijn geval.

Maar misschien heeft iemand alleen de voorkeuren om hotkeys tot het fijnste niveau te kunnen gebruiken, dan is deze tool met obvious naam de winnaar.

AutoIt vind ik prettig omdat je er redelijk standalone tools mee kunt maken, met een leuke gui etc.
Volgens mij gaat dit niet met AutoHotkey, maar zekerweten doe ik 't niet.
Beetje offtopic wellicht;

Ik zoek al een tijdje een programma waarmee ik een 2e USB (numeriek) toetsenbord aan kan sluiten en aan de toetsen van aparte functionaliteit kan toevoegen. Ik begrijp dat het mogelijk is om in Windows low-level onderscheid te maken tussen verschillende toetsenborden maar Windows ze op high-level allemaal bij elkaar voegt, maar in theorie moet het dus heel goed mogelijk zijn. Iemand enig idee of er zo'n programma bestaat.
Misschien moet je het zoeken in het feit dat je toetsenbord een 2de HID is.
En rechtstreeks van deze HID zou je de commando's moeten capturen.
Nou ja, in AutoIt is het niet zo moeilijk om de numerieke toetsen af te vangen. Of het ook lukt voor een extra USB toetsenbord zou je even moeten proberen. Op mijn eigen toetsenbord werkt dit als een tierelier:
HotKeySet("{NUMPAD7}", "NumericSeven")
HotKeySet("{NUMPAD8}", "NumericEight")

While 1
Sleep(1000)
WEnd

Func NumericSeven()
MsgBox(0, 'YES!','Numerieke 7 ingedrukt!')
EndFunc

Func NumericEight()
ShellExecute("Notepad.exe")
EndFunc
edit: formattering

[Reactie gewijzigd door P_Tingen op 3 maart 2009 12:09]

Het probleem is dat ik deze hotkeys dan ENKEL voor het 2e toetsenbord wil; het zouden dus EXTRA toetsen worden, niet dubbelle zoals in jouw voorbeeld.
Kijk hier eens, erg gebruiksvriendelijk is het niet, maar in theorie zou je hiermee moeten kunnen bereiken wat jij wilt.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True