Mea Culpa — The Forgotten Millisecond

It Seems that I Have a Millisecond Blind Spot

I know that a millisecond lasts one-thousandth of a second. However, it seems I have a proclivity for calling a millisecond a microsecond. I have no excuse. As a physics major, I know the difference. Somehow my brain tends to use “microsecond” in place of “millisecond.”

RobotResponsibilityA reader recently brought to my attention that I incorrectly placed “microsecond” in one of my books when referring to the time delay used in the AutoHotkey Sleep command. Not only did I make the error in that book, but in a couple more of the earlier books and other timing commands. I have no excuse. The online documentation has it perfect.

This isn’t the first time I’ve been notified of the problem. In fact, I had deluded myself into thinking I had already corrected the error in my books. (It must have slipped my mind or become trapped in my blindspot.) I have since gone back and fixed the problem in the earlier books. How could this go on for so long?

The Forgotten “Milli”-second

Let’s face it! The prefix “milli-” doesn’t get much respect these days. Ever since the introduction of the microprocessor, we stopped caring about anything bigger. Nobody uses “milli” in advertising when “micro” or even “nano” adds more emphasis. In my books, even though I knew I was talking about thousandths of a second, I kept calling it a microsecond (millionth of a second).

We might measure a blink of an eye in milliseconds (300-400ms). It would be ridiculous to say a blink takes 300,000 to 400,000 microseconds. Yet, when it comes to computers, I’m always ready to talk in terms of a millionth of a second.

Fortunately, my examples and the calculations in the books work out fine, so very few people would actually find themselves misled. It still seems like a bonehead mistake to make.

I updated the problem books (A Beginner’s Guide, Digging DeeperAutoHotkey Applications, and AutoHotkey Tricks) with the correction. If you purchased your copy at and have no downloads remaining, please submit the following form for increased downloads:

Sorry about the confusion,



Blocking Mouse Action (AutoHotkey BlockInput Tip)

Clarification of Earlier AutoHotkey BlockInput Command Tips

While working on a couple of chapters in my new book, I noticed that I had effectively blocked inadvertent mouse movement while running a demonstration of a Windows Paint automation routine. In the script DrawSquiggle.ahk, AutoHotkey turns off the mouse while it executes various other mouse movements. Otherwise, any accidental manual movement of the mouse cursor might screw up the final result. Most importantly, the command to block mouse action worked without raising user privilege levels or running the script as an administrator.

The DrawSquiggle.ahk script demonstrates how AutoHotkey can control the selection of tools and mouse actions in Windows Paint.

Continue reading

Working on a New AutoHotkey Book

Compiling Material for My Biggest Book Yet!

I’ve started bringing together the parts for my next AutoHotkey book. I have over thirty AutoHotkey tips in the form of previous (no longer published) articles I wrote for the old ComputorEdge Magazine and another thirty, or so, I thought there would be pie!I’ve written since that time on various topics without a specific theme. As I organize the chapters, I see various motifs running through them. I plan to include numerous recent insights as I rewrite and edit each piece.

None of the above repeats work previously published as chapters in my other books. However,  I’m also considering including, with proper emphasis, my most important AutoHotkey epiphanies and “best practices” which do appear in the other books. This new, heavier e-book should be a good reference for almost anyone. Continue reading

Check Window Status with WinGet, ExStyle (AutoHotkey Tip)

ExStyle Settings Help to Polish AutoHotkey Window Manipulation Scripts, Plus a Couple of Tricks

Each window in Microsoft Windows includes style settings (Style and ExStyle) which control its appearance and action. You can view these settings with the CheckStyles.ahk script discussed in the blog “The WinSet, ExStyle Command for Mouse-Click Transparent Windows (Intermediate AutoHotkey Tip).” If you build AutoHotkey window manipulation tools, then you’ll find CheckStyles.ahk indispensable both as a quick reference and a tester. The CheckStyles.ahk script displays the settings for any window under the mouse cursor. Continue reading

Reset Hotkeys with Label Name Drop-Through Behavior (AutoHotkey Tip)

Sometimes Not Encapsulating Hotkeys with the Return Command Serves a Purpose

Last time, I discussed how to change the transparency level of any window under the mouse cursor with a scroll of the mouse wheel. The SeeThruWinWheel.ahk works great, but, if you increase the invisibility of the window too much, you might lose track of the window. We need a technique for instantly bringing a window instantly back into view. I did that with a trick from the blog “Understanding Label Names and Subroutines (Beginning AutoHotkey Tip).”

AutoHotkey Library Deal
AutoHotkey Library Deal

While studying the behavior of Label names in AutoHotkey scripts, I came up with the CheeseBurgerRecipe.ahk script which automatically moves to the next Hotkey recipe step with no additional code by dropping pass the next Label name directly into its subroutine. I didn’t expect to find another use for this technique so soon, but when I encountered the problem of losing track of invisible windows, this technique offered a quick fix. Continue reading

Understanding AutoHotkey %Var% Variable Text Replacement (AutoHotkey Tip)

Handy Window Transparency Wheel Using Macro Replacement Quickly Peeks Under a Window without Moving It, Plus the Difference Between % Var and %Var% Made Easy

The AutoHotkey online documentation goes into great detail about the traditional method for retrieving values from variables (%Var%) and the force expression evaluation method (% Var). It can take the new AutoHotkey user a little while to comprehend the differences between the two. In an effort to clarify the variations and help beginners to understand when to use which method, I offer an alternative way to view the operations. For the traditional method, I prefer using the terms macro substitution or variable name replacement. Once, you understand how it works, differentiating when and how to use each technique becomes easy.

The value-added trick comes when creating variables containing new variables on-the-fly by combining the two methods (i.e. forcing an expression % which contain a %Var% variable name replacement). The first step involves replacing the variable with its value, the new variable name (%Var%). The second step requires the forced evaluation of the new variable (% VarValue) as part of an expression.

*          *          *

Volume Control
Volume Wheel

A while back I installed a volume control operated by the mouse scroll wheel. Simply hover over the Windows Task Bar and scroll the mouse wheel up or down to adjust the PC speaker volume level higher or lower, respectively. A progress bar (shown at right) pops up displaying the changing volume level. I’ve added this convenient tool to my standard AutoHotkey script and use it all the time.

Tranparency Menu
Transparency Menu

At a later date, while playing with window visibility, I set up a menu for changing the transparency level for the active window (shown at left). At the end of that blog, I suggested, “If you want to get really fancy, then you might use the mouse wheel to set the transparency (or opaqueness) level.” I’ve done just that with my new SeeThruWinWheel.ahk script. Now, by holding down the CTRL key while scrolling the mouse wheel, the window under the mouse cursor becomes less opaque (WheelDown) or more opaque (WheelUp). In the course of writing this short script, I implemented a number of AutoHotkey tricks worth discussing. Continue reading

Stop Accidental Deletions with the BlockInput Command (AutoHotkey Tip—Part Two)

AutoHotkey BlockInput Command May Cause Stuck Keys! Fix It with the KeyWait Command

In the last blog, we dealt with the issue of setting the privilege level required to use the BlockInput command. In the BackupText.ahk and IncrementalSaveText.ahk scripts, the AutoHotkey command prevents user mouse/keyboard input while the script selects and copies text to the Windows Clipboard, but it doesn’t work without Administrator privileges. After raising the script to a higher level, we demonstrated how to use Windows Task Manager to bypass the User Account Control (UAC) warning window.

At the end of the blog, I mentioned an additional problem where BlockInput causes keys (usually one or more from the Hotkey combination) to stick in the down position. Here’s the trouble. Continue reading