Solving cursor and bitmap issues in GDI for AutoHotkey v2
The video discusses using GDI to solve bitmap and picture control issues, including capturing and pasting images with the cursor, and explores different methods for creating and saving bitmaps in C++ and Python.
00:00 👨💻 Isaias and Hellbent worked on bitmap and picture control issues, creating a new screenshot class with cursor capture function using GDI.
Isaias and Hellbent worked through bitmap and picture control issues in the GDI library, sharing deep learning experiences.
Created a new class called screenshot in hotkey V2 that can take screenshots from screen, activity window, and client, with a function called capture, which had an issue with reading information in the wrong order but was eventually resolved.
The speaker captures the cursor using GDI and fills out a specific structure with information about the cursor’s size, flags, position, and type.
The function gets the icon, reads values from the cursor, draws it using GDI, and returns the context for that particular cursor.
04:30 📋 When working with GDI, manually releasing objects and copying memory prior to setting up the clipboard can solve issues with capturing and pasting images, including the I-beam cursor.
When working with GDI, objects must be released manually, and creating a new bitmap can cause issues when trying to copy it to the clipboard.
The speaker explains a function that captures cursor information and saves it properly into the clipboard, but when using an I-beam cursor, the captured image appears as a blank square.
The I-beam cursor changes color depending on the background and may not actually be an I-beam, with the bit mask and color playing a potential role in its appearance.
Copying memory prior to setting up the clipboard may solve issues with the H Global memory handle.
Is there a GDI function to convert H Global to H bitmap for use in a picture control?
The speaker demonstrated how to copy an image to the clipboard and paste it into a program using the “get image” function.
13:37 📚 Use GDI plus underscore create bitmap from clipboard to easily copy and retrieve images for quick prototyping in the library.
The solution is to take the internet into the library.
The speaker found a function called GDI plus underscore create bitmap from clipboard that allows for copying images from the clipboard to the screen.
Quickly prototype by using a simple two-line code to transfer clipboard data into a bitmap or h-bitmap for testing.
The speaker explains how to copy an image to the clipboard and retrieve it using a static function in a class method.
20:00 🔍 Knowing the difference between calling static and instance methods is important in V1 and V2.
The speaker discusses the difference between calling static and instance methods in V1 and V2, and the importance of knowing which one to call.
The speaker encountered a problem with the clipboard data and pointer allocation while trying to access a screenshot image class.
The speaker debugs an issue with a clipboard function by opening the clipboard before trying to get information out of it.
The issue with displaying data is not the data itself, but rather the control used to display it, specifically the use of GDI.
26:18 📋 The speaker discusses saving a bitmap to a file and converting a pointer to a bitmap using “convert HP” function.
Copying an image to the clipboard requires an additional step of saving it to a file and then reading the file.
The speaker plans to save a bitmap to a file but is unsure if it will solve the problem they are currently facing.
The speaker discusses converting a pointer to a bitmap using a function called “convert HP” and notes that taking a screenshot already sets the H bitmap.
Create a bitmap and save it to a file using the pivot map.
31:54 💻 Updating libraries and code is crucial for project success, while exploring different methods to create and save bitmaps in a file.
Always use Unicode and include the GDI plus library for testing, as there is no library for read.
The speaker is discussing the use of a codec to decode a string and obtain encoder parameters.
The speaker suggests the need for a visual confirmation when saving files and encounters an issue with the control function.
The speaker explores different methods to create and save bitmaps in a file.
The speaker discusses issues with outdated libraries and code in a project, and mentions the need to update to a newer version.
40:09 👨💻 The speaker discusses file creation, pointer usage, and image saving in C++ and Python, encountering issues with if statements and file verification.
The speaker discusses creating a file and using a pointer in a function.
The code saves a bitmap to an H file and creates a BMP file using GDI library.
The speaker encountered an issue with an if statement, made some adjustments, and successfully wrote to a file, but had to specify the type of number every time, and still needed to verify if the file had the correct icon.
The speaker demonstrates how to locally load and save an image file in Python using the show function.
Using alt submit and GDI plus library allows for proper rendering of binary data in picture controls.
Data can be stored in a rock using ones and zeros.
50:24 📷 Using GDI+ Library’s set image function can improve the quality of PNG images in a picture control, but there may be bugs with submitting images on a handle.
PNG images have transparency and opacity represented by zeros and ones, and GDI plus is required to work with newer image formats like PNG, which creates composite images with transparency.
The speaker discusses the issue of loading PNG images in a picture control and how specifying the image type as PNG does not work with a handle, but using the GDI+ Library’s set image function can improve the quality of the image.
The speaker encountered issues with a control’s size and loading a bitmap using GDI plus, but found that it worked correctly when using a BMP file and the “alt submit” command.
The rendering function doesn’t know how to handle transparency bits, resulting in different values when viewing an image in different ways.
The speaker discusses their process of creating a function to take screenshots from different sources and mentions the potential for using it in a Window Snipping Tool.
The issue of submitting images on a handle is complex and there may be a bug with the old submit that needs to be addressed.
While AI is the current “hot topic”, I’m still more amazed with the human brain. Well at least some people’s brains… (ha ha) Have you ever been working on something and had the solution just “jump” in your head (seemingly from nowhere)❓ I know it feels like magic but it’s your subconscious mind solving the problem for you. Using your subconscious is easy but, because humans (especially AHK users) are natural problem solvers it can be very hard to stop putting conscious effort on a problem and just letting your subconscious churn on it.
It seems counter intuitive, however, when you’ve hit a roadblock and are not making progress it is often best to stop (consciously) working on it and focus on something else. The more “different” the topic is, the easier it is for your subconscious to work on it.
Some people just like to go on walks or read a book. Personally, I’m a huge fan of sleep! When I am drifting off, I like to ask my self “how will I solve X problem”. More than half the time I wake up with a new approach to the problem.
%Name%, how do you use your subconscious?
Now on with the show…
📢Use our new AHK Syntax writer to automate older Windows programs❗
If you’re trying to automate older windows programs, you definitely need to check out our latest tool. It can make it super-easy to automate older programs that have the Win32 menus. Pay close attention in this video as we explain, you’re not sending clicks / mouse movements. This program will detect the “hidden ID” and then provide syntax for you to, programmatically, trigger it. This is a game changer for older Windows programs!
🤫 Unveiling the Secret to Automate Old Unruly Windows Programs!
Crazy problem triggering a HotString
During the Saturday Hero call last week (geared for people new to AutoHotkey) Bill P. had a very weird issue of HotStrings not working. We made this video discussing the issue and what ESET was doing. It’s probably something we should all be aware of as more security measures are bound to be coming (and prevalent in more programs)
Troubles using Text Expanders ESET Security software
AutoHotkey Task Manager
I’ve showed this AHK Task manager during several calls but hadn’t shared it. We borrowed it from Fenchai but made some tweaks to our own liking. You can see us walk through it in this video. I like it because it is easy for me to find specific AutoHotkey scripts (not just see 8 “AutoHotkey.exe”)
🅰mazing AutoHotkey Task Manager
AutoHotkey GUIs in v2
If you’re sticking with V1, our GUIs are easy course is a great starting place. If you’re switching to V2, GUIs have drastically changed. We’re almost done with our first module of Intro to GUIs in v2 meanwhile you can check out this video from TABNation where he gives an intro to basic GUIs in v2. In v2, GUIs are now objects which, if you understand them, add a lot of clarity to a very complex topic.
Get Started with AutoHotkey V2 GUIs: Your Step-by-Step Guide Part 1
Where Does the time go? ⏰
Ryan Wells, an AHK Hero member, shared a v1 script on our private Telegram group where he was tracking the active programs so he could see where he spent his time (and how often he was switching between programs). We took his script and ported it to v2 but added some more analysis to it. You can check out the process in this video. If you’re familiar with v1 but want to learn v2, our Painlessly switch from v1➡v2 course is for you!
Where does your time go? Track your time with this simple v1 or v2 AHK script
📚 What we’re reading
😲 Microsoft Edge now leaks the URL of every page you visit straight to Microsoft Bing…
Want more time than the free hour? Have content that you can’t have on YouTube? Consider joining the 🦸♀️AHK Hero club! Members receive big discounts to courses, consultations, tutoring, done for you project work, etc.
They also have access to exclusive & pre-released content and 3 “office hours” sessions each week which isn’t on YouTube.
🗣️ 💭 Quotable quotes
Successful people rarely start out as most likely to succeed
I never I either win, or learn. — Nelson Mandela
People who have time on their hands will inevitably waste the time of people who have work to do. — Thomas Sowell
Wake up. Challenge your belief systems. It’s better to realize you’ve been wrong for years, than to stubbornly hold onto a delusion that holds you back. — John Carlton
Do you know someone that would benefit from learning useful automation tips like the gems in today’s issue? Take a second and forward this newsletter and bask in the glow of their undying gratitude. Was this email forwarded to you?
P.S. We are no-longer having the Free Friday hour on YouTube however we do have 3 hours a week where we help AHK Hero members that are not open to the public. If you’re wanting to learn from others and open your eyes to the true power of AutoHotkey, I highly recommend you consider joining.
April 20th, 2023 AutoHotkey Newsletter
Howdy %Name%,
You are a product of your environment. So choose the environment that helps you develop toward your objective. Are the things around you helping you toward success-or are they holding you back?
Have you found a “community” that helps you when you’re stuck working with AutoHotkey? AutoHotkey is known for having some amazing communities however some of them can be tough on people new to AutoHotkey. I refuse to post to Reddit anymore (some people always flag my posts as spam) and I find the AHK Discord way too complicated.
If you are learning AutoHotkey consider the AHK Hero club. We are live helping each other 3 hours a week on zoom and have a private Telegram group where people can ask questions and help others. Normally the price is $14.99 per month however the flash sale drops it to 8.99 a month. Hurry and join because we only have 3 more spots then the sale will be over. AHK Hero members also get 25% off everything we offer!
Now on with the show…
Easily tweak how you peak inside your files
TJ, a member of the AHK Hero group, works with AutoHotkeyand UI Pathfor a living. I mentioned I had an interesting idea but didn’t have the bandwidth and asked him to work on it for me. He delivered an amazing tool that allows you to tweak the Preview Handlers. This tool is great because now I can see what is in the file w/o opening it! We review the tool, and how to use it, in this video. Great work TJ! If you’re needing a hand with something, you can reach TJ here.
Free Windows tool for Configuring Explorer Preview Handlers 😎
Automating Email Metrics in Excel with AutoHotkey
When I worked at Texas Instruments my colleague spent over 40 hours out of the month building the data set and then reporting on email metrics (we sent out over a million emails a month). I took over reporting, and did even more than he did, using Excel and COM with AutoHotkey. I had it down to where I’d hit the button and, in a couple of minutes, we’d have our report broken out by different business units, regions, languages, etc. Amazing what AutoHotkey can do with a bit of love! Here is a video of the program working. You can learn more about Excel and AHK here.
🤯😍 Incredible Excel Automation: Email Reporting Made Easy!
Easily bring back that missing window!
We’ve all “been there”. You can see the program in the taskbar but the GUI is NOWHERE to be found! In this video we show how easy it is to bring that window into view using just a few lines of AutoHotkey code.
You won’t believe how easy it is to bring a missing window to your mouse! 😲
Have a Spellcheck anywhere you type!
We get very used to having a spellcheck in programs, however did you know you can use AutoHotkey to have a spellcheck running across anywhere you can type? In this video we show the v1 spellcheck and then show how it can be converted to v2. If you’re new to v2, ourv1 to v2 coursehelps you get past the big hurdles. All our offerings come with a 200% money back guarantee!
Say goodbye to typos! 👋 with this Spell check in AutoHotkey v1 or v2
AutoHotkey Chrome Extension coming soon!
I was on a call with Thom from TABNation and he mentioned that an update to the AHK Chrome extension should be released this Sunday, April 23rd. We had a preview of the tool a while back which you can see here. If you want to know more about it, you can email Thom here.
Easily access AHK Resources with TABNation’s AHK Chrome Extension 😲
Are you stressed?
Just remmeber April is “stress awareness month” (and tax month coincidence???)
If you’re like me and hold your stress in your neck/shoulders, you might try this massage tool device. I bought one several years ago and it really helped iron out the knots! Shiatsu Back and Neck Massager with Heat🔥
Did you know you can hit Alt+F4 to closeany program? I use this a lot (especially when the window is acting weird)
🤣 A spot of Humor: Follow me for more tips!
AHK Hero?
Want more time than the free hour? Have content that you can’t have on YouTube? Consider joining the 🦸♀️AHK Hero club! Members receive big discounts to courses, consultations, tutoring, done for you project work, etc.
They also have access to exclusive & pre-released content and a 2nd “office hours” session which isn’t on YouTube.
🗣️ 💭 Quotable quotes
Whatever Your Mind Can Conceive and Believe, It Can Achieve. — Napoleon Hill
Decisions without actions are worthless
Put systems in place that will allow ordinary people to do extraordinary things — Joe Glines
Nobody goes there anymore. It’s too crowded — Yogi Berra
⏩SHARE WITH A FRIEND⏩
Do you know someone that would benefit from learning useful automation tips like the gems in today’s issue? Take a second and forward this newsletter and bask in the glow of their undying gratitude. Was this email forwarded to you?
P.S. The AHK Hero club is a fun and helpful environment for skills of ALL Levels. You’re missingouton 3 hours of the ability to ask us AutoHotkey questions (not to mention the private Telegram group) and bouncing ideas of peers. The 40% off flash sale only has 4 more openings then it will go back to $14.99 a month. Don’t be kicking yourself for missing out on this amazing deal!
April 13th, 2023 AutoHotkey Newsletter
I was talking to a buddy of mine the other day about how the general conversation of AI is, currently, probably wrong. Many people are asking the question:
Will Chat GPT / AI take my job?
In reality, they probably should be asking themselves
Will ahumanusing Chat GPT / AI take my job?
For most of us that is much more likely the case. How are you ensuring you don’t get outsourced? Learning AutoHotkey is just one way you can stay more productive than “the next guy”
Now on with the show…
Easily bring a missing window to your mouse 🐭
We’ve all been there. We can see a program on your taskbar however we can’t see it on any of our monitors. In this video we show just how easy it is to bring that missing window back to the location of your mouse. We first show the code in v1 but also show it in v2.
You won’t believe how easy it is to bring a missing window to your mouse! 😲
Spellcheck for AutoHotkey V2
An AHK Hero member was trying to convert the AHK spellcheck to v2. There was one subtle thing that made it a little tricky. In this video we walk through how we converted it. You can grab the script here.
Say goodbye to typos! 👋 with this Spell check in AutoHotkey v1 or v2
Learning v2? Don’t make this mistake like we did!
AHK v2 is really taking off! While it has a steeper learning curve, it will definitely make more complex things easier. Isaias is working on an updated Intro to GUIs course in v2. Meanwhile you might check out this video to avoid this pitfall! We learned so much from making it we added it to our V1 ➡v2 course!
⚠️Don’t Fall into this AutoHotkey v2 Trap when Setting Hotkeys😳
😲Easily Revolutionize Your Courses & Coaching with AI 🤖
5 Jaw-Dropping Ways ChatGPT Can Transform Your Lead Magnet Creation Process
Voice Recognition Will Change Your Life in 2023 (in these 5 ways, for better or worse)
⚡️Productivity tips Minimize all & Restore all quickly
Need to see your desktop quickly? Windows+M will minimize all running programs. To restore all windows to the way they were use Windows+Shift+M❗
🤣 A spot of Humor – I hate to admit it but I’ve been there…
AHK Hero?
Want more time than the free hour? Have content that you can’t have on YouTube? Consider joining the 🦸♀️AHK Hero club! Members receive big discounts to courses, consultations, tutoring, done for you project work, etc.
They also have access to exclusive & pre-released content and a 2nd “office hours” session which isn’t on YouTube.
🗣️ 💭 Quotable quotes
Whatever Your Mind Can Conceive and Believe, It Can Achieve. — Napoleon Hill (and this was pre-AutoHotkey!)
If you are not ready today, you will be even less so tomorrow — Ovid
Never let success get to your head, never let failure get to your heart
Life isn’t a calm pond — it’s an unpredictable ocean… you gotta learn to enjoy the ride, no matter what. — John Carlton
Do you know someone that would benefit from learning useful automation tips like the gems in today’s issue? Take a second and forward this newsletter and bask in the glow of their undying gratitude. Was this email forwarded to you?
Most of us have some amount of stress in their lives. One of the big causes of stress is having too much to do and too little time to do it. This is why I don’t have a lot of stress because I put in time years ago learning how to use AutoHotkey to work Smarter, not Harder!
No, AutoHotkey isn’t some kind of “magic pill”. It takes time to learn and apply however it can save you hundreds of hours doing mundane tasks. AutoHotkey is a great way to get the computer to do what computers do best and let you focus on more important things.
Our AHK Courses provide a clear path and are in bite-size segments (most being 3-5 minutes long).
Why not take advantage of our Flash sale for Intro to AutoHotkey in v2? This gives you an additional 20% off the sale price) (Don’t forget our courses have a 200% money back guarantee)
Retail price: $59.99 Sale price $49.99Flash sale: $39.99 Wow!
If you’re not new to AutoHotkey, perhaps our v1v2 course is a better way for you to avoid stress?
Regardless, how you learn AutoHotkey, you should schedule time on your calendar twice a week to learn more about automating your mundane tasks!
Now on with the show…
15 minute Intro to v2
In this video Isaias walks us through how to use AutoHotkey v2. We cover installing SciTE HotStrings, Hotkeys, and sending mouse clicks. If you’re new to AutoHotkey it’s a great video to get you started! Just remember AutoHotkey is addictive! I mean who doesn’t want to save time?
Intro to AutoHotkey Version 2 | Learn to automate programs with AHK v2
Beta test AHK Studio in v2
We’ve got a beta out there letting people use AHK Studio in v2. It’s not perfect, but it does let you edit both v1 and v2 code in AHK Studio. Here’s a short video showing its current status. You can grab the beta version here
Beta Testing AutoHotkey Studio for ahk v2
Sending a lot of text with AutoHotkey
HotStrings are great however, when you’re sending a lot of text, they can be problematic (because AutoHotkey is literally sending the keystrokes). In this video I show how you can easily get around this by shoving your content into he clipboard and pasting it.
How to send a lot of textFAST with AutoHotkey: Blast through text
Faking multi-threaded scripts in AutoHotkey
AutoHotkey is amazing however, because it is single-threaded, you can feel “stuck” when you’re trying to do multiple things at one time. In this video I show how easy it is to use a SetTimer to give the “illusion” of multithreading.
How to use a SetTimer in AutoHotkey to mimic Multi-Threading
Using the Windows Management Instrumentation
In our webinar on 18 ways to automate programs with AutoHotkey we mention WMI. During an AHK Hero call last weekend we dove a bit deeper into WMI because Irfan, the author of Rufaydium, had used it to detect if Chrome was running in Debug mode. For a refresher on WMI you can check out this video. Meanwhile AHK hero members know how to detect Debug mode but you’ll have to wait until we document it in a video…
Windows Management Instrumentation (WMI) and AutoHotkey
GodMode is a special folder that gives you quick access to all of Windows’ settings in one place. It originated with Windows Vista in 2007 and has been available in every version of Windows since then, including Windows 10 and Windows 11. To activate GodMode, you need to create a new folder anywhere you like and name it “GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}”. Once you open the folder, you’ll see all of Windows’ settings in one place.
A spot of Humor – Top 10 things never said by Hooters girls
Top 10 Things Never Said by a Hooters Girl
AHK Hero?
Want more time than the free hour? Have content that you can’t have on YouTube? Consider joining the AHK Hero club! Members receive big discounts to courses, consultations, tutoring, done for you project work, etc.
They also have access to exclusive & pre-released content and a 2nd “office hours” session which isn’t on YouTube.
Quick Access Popup news
I was watching this video on QAP this morning and 100% agree with Jean Lalonde that Icons are very helpful speeding up your recognition of a GUI. It’s one of the few criteria I had for our Prompt Assistant tool (which should be released soon). Adding icons takes a little more time up-front but will save you a TON of time in the long run!
Beautiful and efficient menus with Windows Quick Access Popup
Quotable quotes
Never be handicapped by your education — Dan Kennedy
Tough times never last, but tough people do — Robert Schuller
Amazing things get done when you don’t care who gets the credit — Joe Glines
Do you know someone that would benefit from learning useful automation tips like the gems in today’s issue? Take a second and forward this newsletter and bask in the glow of their undying gratitude. Was this email forwarded to you?
AutoHotkey is an amazing tool. There’s so many ways you can use it to save you time⏰. There definitely is an investment to learn to code however it is worth every minute you spend!
BTW- The other day I borrowed a meme and adapted it to this. I think of AutoHotkey people as “doers” not people that sit around and talk forever about how to do things. What do you think?
A long time ago the AutoHotkey forum used AutoHotkey.net to store files. Unfortunately it was hacked and the community lost a lot of great resources. While much of it was gone, people put together a nice list of scripts that were lost. In case you’ve never seen it, I made a short video and uploaded them here. Please keep in mind, I didn’t test all of the scripts in here so “Buyer beware” 💀
mySQL / ODBC connection
Have you tried to work with a SQL database but needed to get your connection string? The trickiest part to it is that, once you configure the driver / string you don’t have to do it again (it’s a “one and done” setting). So it’s easy to forget how to do it. For that reason Isaias and I made ourselves a video to document where we were getting it from for the mySQL ODBC connection. BTW I have a SQL Playlist in case you’re wanting to learn more about AutoHotkey & SQL
I was watching this video by Spawnova and he was showing his example of hacking Wordle. Do you play wordle? You can get Shin’s Wordle source code here.
A while back we had a great webinar on V2️. I asked Dimitri Geerts and Isaias Baez to join me in another discussion to better understand what to look out for in V2, some of the new features, and what is most likely to trip you up. There were some really interesting things mentioned at the very end of the video. Not trying to make you stick around for the full two hours but the last 15 minutes had some things that you’ll want to know!
Back in 2018 I chatted with JoeDF regarding how he got into, and uses, AutoHotkey. At times there were bandwidth issues but it was still a great call!
Productivity tips ⚡️
Listen to music that doesn’t have lyrics (or the lyrics are in another language). Personally I’ll often throw on Zydeco music which is usually very up-beat and “feels” like it’s in another language.
People who enjoy meetings should not be in charge of anything. — Thomas Sowell
Amateurs sit and wait for inspiration, the rest of us just get up and go to work. — Stephen King
Even Napoleon had his Watergate — Yogi Berra
Challenge your belief systems. It’s better to realize you’ve been wrong for years, than to stubbornly hold onto a delusion that holds you back. — John Carlton
P.S. Special thanks to the following for purchasing multipleAutoHotkey Udemy courses this month!
March 10th AutoHotkey Newsletter
Howdy %Name%,
No matter where you live, it’s impossible to not feel the effects of gas prices & inflation! Current estimates have the rate of inflation in the US between 6-10%. That’s crazy high however, given what’s going on in the world with Ukraine / Russia, I think it’s just the beginning of sky-rocketing prices. Why? Because nearly everything is delivered by vehicles! These gas price increases are going to be driving up the prices very soon!
So why am I bitching about it in the 🅰️🇺t🇴🇭🇴tk🇪🇾 🇳ewsletter? Because I 💯% believe the best way you can get a raise 💵is to BE WORTH MORE! One of the best ways to be worth more is to invest in yourself! People that learn AutoHotkey:
Get work done faster
Are more productive
Produce fewer errors
Provide more consistent work / deliverables
Are less likely to quit
Of course employers LOVE all the above! As a direct result they try and reward them. The #1 way of doing such is to 💰 pay them more! So commit to yourself today to find ways to be worth more!
Learning AutoHotkey is just one of many ways to improve yourself! Of course the best part of this is where’s the risk? If your employer doesn’t increase you’re pay you’re STILL WORTH MORE!
In case you missed the video I did ranting about being worth more, you can see it here; it’s one of my personal favorites!
Now on with the show…
Calculating time savings
A few years back I created this spreadsheet 📈 to help calculate savings /earnings by automating programs. Do you ever try and calculate this? Also, do you think I should create a version of the spreadsheet in AutoHotkey?
I was amazed how many people that do some coding are not aware of Regular Expressions. When I first became aware of them I thought they were neat but that I rarely had the need. But the more programs I wrote, the more I realized parsing text is a very common task to have! In this Intro to RegEx video I cover the basics. You can see my RegEx playlist here. I also highly recommend Jack Dunning’s book on RegEx. I bought it years ago and it really helped me learn them quickly and easily.
Speaking of parsing text, the other day I released a video showing both the Command StringSplit and the function StrSplit(). It’s one of the things that often confuses people new to AutoHotkey so I talk through both and why I prefer functions over commands.
MS Word Macro recorder and COM
I’ve recently made a few videos demonstrating using AHK & COM to automate MS Word. In this video I didn’t have an example to borrow from so I showed how I used the built-in Word VBA macro recorder to generate the VBA code and then adapt it to AutoHotkey COM code. COM is an amazing way to, programmatically, connect to and automate Word!
Using AutoHotkey to auto-generate numbers & delimiters
I’m not in love with how the script was implemented, but I love the idea and that he’s made a video showing how you can easily generate numbers parsed by a character. I’d make some tweaks to it but very cool to see others pushing out AutoHotkey examples!
In this AutoHotkey Expert interview I talk with a master Marketing guru that uses AutoHotkey among many other tools to automate his work. Ryan’s a super-bright and innovative guy that readily picks up any technology to solve his need.
Productivity tips ⚡️
Everybody has a time of the day that we’re “on fire”. A time when our brains are just kickin-butts and takin names. Interestingly we’re all different as to when that time is but, I’m willing to bet, you know when your time is!
The tip for this week is to make sure, during that window of time, you do the most tasking/ difficult work you have. Don’t do things you can “do in your sleep”. For me, the time is about 1 hour after I wake up. In the early afternoon I typically cool-off and then I handle things like replying to emails, etc.
When is your “take no prisoner” time?
A spot of Humor 🤣
Priceless! I can’t tell you how many times I’ve used that key phrase…
Quick Access Popup news
I learned a bit last week regarding how to add a “close this menu” option to Quick Access Popup. Very easy way to make sure you don’t end up with a hung window. Note, you’ll only need this if you’ve created a hotkey to open a submenu (which I highly recommend)
Quotable quotes 🗣️ 💭
Absorb what is useful, reject what is useless, add what is specifically your own. — Bruce Lee
It’s amazing how much you can accomplish when you don’t care who gets the credit — Joe Glines
Do the hard jobs first. Easy jobs will take care of themselves. — Dale Camegie
You better cut the pizza in four pieces because I’m not hungry enough to eat six — Yogi Berra
Say “sorry” and “I love you” often and without self-consciousness — John Carlton
P.S. Special thanks to the following for purchasing multipleAutoHotkey Udemy courses this month!
3 Bonnie O.
2 Greg S.
2 Tom S.
March 3rd AutoHotkey Newsletter
Hi %Name%,
March is here and I’m looking forward to getting outside to take advantage of our new horseshoe pit and volleyball net. 😊
For the 🐎horseshoe pit I found a nice place that will get afternoon shade. Unfortunately, the backstop for the first one got set up a bit off-angle which would put the other side a bit out in the Sun. I could have left it but I knew, every time I’d be out there sweating, I’d be cursing myself for not doing it “right” the first time. It reminds me why I learn to use API approaches (COM, Controls, Windows Messages) over Human approaches (Sending keystrokes or mouse clicks). If you take a bit more time at the beginning you’ll be much happier with the results! While API techniques are a bit more complex, they’re also much more reliable and faster than imitating a human. If the overall concepts are confusing to you, RaptorX and I discuss it in this video. Speaking of which, Isaias Baez (RaptorX) should be back starting next Monday! 😊
You also might be interested in this video where I discuss 17 different techniques to automate programs with AutoHotkey. The main point being, taking a little time to learn up front can really payout for the rest of your life! Why not invest in yourself and make the rest of your life easier by learning AutoHotkey?
The other day I was updating my AutoHotkey resources file that is in my Udemy Bonus Lectures and decided to document some of the process. In the video I cover various things I do on a regular basis. How I add tracking to the documents so I can tell what works (and what doesn’t). I even show my MS Word script for search & replacing hyperlinks.
Searching for Text across files 🔎
Are you sometimes looking for files with specific text in them? Or want to search/replace text within multiple files? GrepWin is a great FREE tool for doing just that! I recorded a short video showing how easy it is to use . I’ve used it for longer than I can remember and it’s saved my butt many times!
API Calls, Fiddler, SMS Texting and more
I was talking with Denilson Padilla about using APIs, monitoring network traffic with Fiddler and other things. Denilson is in Brazil and has a YouTube channel in Portuguese. I think we’re going to have regular calls on Monday evening so look for more videos with us discussing various AutoHotkey things. I’m considering letting others join the call (for a nominal fee). If you’re interested in being a part of this, shoot me an email.
Automating Outlook emails
In our AHK Facebook group I’ve been seeing several questions about using AutoHotkey with Outlook. I recently demonstrated how easy it is to get: Name, email, subject line, etc. but we also covered Outlook in this webinar which had several great examples. Automating Outlook with COM is an amazing!
Back in 2018 I chatted with Charlie Simmons / Tank (AutoHotkey forum admin). Tank’s got a long background in automation and used to travel around implementing Automation Anywhere. We discuss using the DOM (Document Object Model) can greatly improve your web scraping ability (and make your code more reliable). He also gives some insights to the pricing and negatives with Automation Anywhere.
A spot of Humor 🤣 – Look I’m Superman!
I was looking for an old video and stumbled upon this gem which I made ~25 years ago when I was going to college to work in TV production. The class requirement was to create a PSA (Public Service Announcement) that was exactly 30 seconds long. In the video you’ll see me jumping off a roof. I’d put a couch down below but it was really hard to force myself to jump (and not land on my legs). Sorry about the quality, I honestly didn’t think I had any copies of it so I’m glad I found this one!
I had a “hung window” in Quick Access Popup the other day and asked Jean how to avoid this. He gave me a tip and I quickly added a “close this window” to my submenu. Very quick tip to avoid it! Check out the video here.
Quotable quotes 🗣️ 💭
People who enjoy meetings should not be in charge of anything. — Thomas Sowell
I will always hire a lazy person to do a hard job, because they will always find an easy way to do it — Bill Gates
A nickel ain’t worth a dime anymore — Yogi Berra 🤣(with inflation these days it’s very true!)
Lead by example, not big talk. In fact, shut up until you’ve earned the right to talk by honing your chops. — John Carlton
I’m one to do my best to “practice what I preach”. Many times, Jackie and I have talked about how important it is to write “pseudocode” before you actually program. Lately I’ve taken this to heart and make sure that, when I start a new script, I quickly write out several lines of text that describes my goals / what I want to achieve.
The more I do it, the more it’s been helping! 👍
First, in case you’re not aware of what it is: Pseudocode is a human readable description of the steps planned steps in your script. Pseudocode is intended for human reading (not your AHK programming code).
Now that I’m writing pseudocode more frequently my scripts are far better organized and much more likely to take into account things that I wouldn’t normally think of. Also, by doing it more often, I’ve gotten to a point where it takes almost no time to do!
Think of it more as writing a 1️ st draft. Don’t try and get anything “perfect”. Don’t worry about misspellings or grammatical errors. Just make short notes to yourself about what you’re going to do. Trust me, after doing this for a while you’ll be so glad you started!
Are you writing pseudocode before you program?
Now on with the show…
ActiveX vs. GDIp
Did you catch the great video last week with where Dimitri Geerts created some amazing GUIs with an ActiveX GUI in 🅰️🇺t🇴🇭🇴tk🇪🇾 🇻2️? At the end of the video we were wondering how GDI would stack-up in comparison. Well Dimitri decided to put it to the test and build the game of life in both ActiveX and GDI. This is a really fun video where we demo the comparisons and discuss what is actually being done with the code.
Speaking of “pseudo” things, one thing that confuses people new to AutoHotkey are the usage of Arrays and Pseudo Arrays. In this video RaptorX walks us through using them in a command. BTW- I had a call with Isaias Baez / RaptorX last night and he’s ready to come back to work! 😁 Can’t wait to get back in our grove!
Are you cheating at work?
Continuing on with this concept of “is AutoHotkey cheating at work” I Ryan W. (Automation expert and marketing guru) his thoughts on the idea. It turned into a great chat (thankfully I’d recorded it). We continued on discussing how to evangelize AutoHotkey.
The book I mentioned is from John Carlton: The Entrepreneur’s Guide To Getting Your Shit Together. Chapter 2 has a ton of amazing quotes to live by. I’m going to include some of them at the bottom of the newsletter but there are a lot more in the book. The book mentioned by Ryan is Darren Hardy: The compound effect. It’s an amazing book with great ideas and tips how to be more productive!
🔎Searching / Replacing text within files
Do you need to find some code but don’t know the file name / location? I’ve been using grepWin for a really long time. It’s an amazing free tool that allows you to, easily, find and replace text within files. It’s allows you to filter on many things to limit the search and allows you to see the content of the file w/o opening it. Here I walk through a few examples how to use GrepWin.
For those of you on the AutoHotkey forum, you’ll be familiar with Joe Winograd. He runs/operates a business where he develops code for clients. In our AutoHotkey Guru interview I got to know him better and picked up some great AHK tips from one of the few people I know that works in AutoHotkey but IS A PROGRAMMER! He has some great content on working with PDFs and AutoHotkey.
Productivity tips ⚡️
Short and sweet: Kill your social pages (Facebook, LinkedIn, etc.) while you’re working!
A spot of Humor 🤣
Do you watch The IT Crowd? It’s one of the funniest shows I’ve ever seen🤣. They really nail many aspects of corporate world and geeks🤓! Here’s a short excerpt from S1 Episode 2. Freaking genius! The main tagline in the show is “Have you tried turning it on and off again”? What a great burn 🔥 on Windows!
Beta testing Clipboard 📋 manipulation tool
Many of us have this need but don’t even realize it! Wouldn’t it be cool if you could write some rules that would monitor your clipboard and apply them w/o you having to think about it? That’s just one of the uses of Quick Access Clipboard; a new tool from Jean Lalonde (author of QAP). He’s currently looking for beta testers to QAC. To learn more take a look at this video if you’d like to learn more and you can go here.
Quotable quotes 🗣️ 💭
The secret to getting ahead is getting started. The secret of getting started is breaking your complex, overwhelming tasks into small manageable tasks, and then starting on the first one. — Mark Twain
You’ll never be criticized by someone who is doing more than you. You’ll always be criticized by someone doing less —Denzel Washington
It’s not how much you screw up that counts. Nope. It’s how you fix your messes that matters.
You must stop expecting perfection — either from yourself, or your employees, or your customers and clients. It will never happen.
Life isn’t a calm pond — it’s an unpredictable ocean… you gotta learn to enjoy the ride, no matter what.
Real tragedy is having a loved one pass away, or getting bad news from the doctor. Everything else is just a small bump on the road as you haul ass through life.
Live below your means. And avoid all debt — if you can’t pay cash-in-full, don’t buy it. Let your thrill be in your accomplishments, not the toys you can suddenly afford on credit.
Put aside a healthy pile of “Up Yours” money, so you can walk away from any situation you don’t like, and know you’ll survive.
Be a good animal. Sweat a little bit every day, sleep well, eat well, purge your system, live like a warrior-poet. You can monitor how healthy you are by walking up a hill.
Learn some basic self-defense, today. The first thing a mugger does to a mark is knock you down –most people can’t handle any jostling at all, and freeze. The simple confidence of knowing what your options are — and where the “soft targets” are on an attacker — can save your life.
Do the right thing every time, as a habit. If you’re not clear on what the right thing is, that means you’re facing another life lesson. Figure it out. The test begins now.
Say “sorry” and “I love you” often and without self-consciousness
Take responsibility for your actions. This simple habit has profound consequences you will learn to enjoy. Fix what you break, clean up your mess, watch your buddy’s back.
You want it, you take it, you pay the price. There really is no free lunch.
If what you’ve done over the past 5 years hasn’t worked for you, then change what you’re doing. Or the next 5 years will be one long boring re-run of the same bullshit.
Wake up. Challenge your belief systems. It’s better to realize you’ve been wrong for years, than to stubbornly hold onto a delusion that holds you back.
Stop doing things that don’t work. Too many people go through their entire lives marrying the same type of mate over and over again, making the same behavior mistakes, and making excuses for themselves.
Stop making excuses. I don’t care how badly your parents, or your teachers, or the system screwed up your head. You’re old enough to make the decision to start over and rewrite your script. Nothing will change for you until you do.
Keep a master list of long-range goals
Accept defeat with grace. Learn your lesson, adjust, and plan for victory next time out. Know how to cheat. Don’t do it, but understanding the game thoroughly requires knowing how others take advantage.
Work hard, play hard. Think harder.
Just do it. The meek may inherit the earth, but only after the bold are through with it
It it’s critical, do it yourself. If it’s not, delegate. Learn the difference
Don’t lie. If you’re in a position where you can’t tell the truth, learn how to weasel-word your way around trouble or hurting innocent bystanders. But don’t lie.
Some things are and always will be out of your control. Stop freaking out about it. If you gotta cry, cry. Don’t make a big deal of it. Life has tears built-in.
Don’t borrow. Pay as you go. You borrow, you’re a kept man.
Right now, you owe someone a phone call. If it’s not yet past 8 p.m., make the call, even if your hand shakes as you dial.
Spending time with someone is more important than spending money on them.
Don’t try to change anyone. Learn the difference between actual help and co-dependent enabling.
Allow people to blossom or fail on their own. This takes ungodly patience, but it’s the only way it works.
Stop arguing.
Lead by example, not big talk. In fact, shut up until you’ve earned the right to talk by honing your chops.
You’re going to be an idiot occasionally. Embrace this opportunity for a good story, learn from it, forgive yourself, and try not to make idiocy a common event in your day.
Your reputation is built one act at a time, and a lifetime of good work can be squandered the same way. Respect is earned by consistent behavior.
Be where you said you’d be, when you said you’d be there, ready to do what you said you’d do.
Struggle is not a bad word. Accomplishment is impossible without it.
Intellectually-sound people change their minds when the facts change. Ideology sucks as a lifestyle.
Turn off the TV and go read.
Listen more than you talk. And when you talk, observe the rules of conversation. If these rules are a mystery to you, go hunt them down.
Don’t interfere with people disciplining their kids. Do interfere when clear abuse is occurring next door.
Tip twenty percent. If you’ve never worked in a job where you had to be nice to rude people, tip even more. You won’t start a trend, but you will make someone’s day and generate good karma.
Learn empathy. Get a vivid picture of what it’s like to walk in the other guy’s shoes.
Go the extra mile. Even when no one does it for you.
Eleanor Roosevelt was right: No one can make you feel inferior without your permission.
Sometimes you gotta take one for the team.
Learn to tell a joke. But don’t rely on them. True wit is intelligence and humor, not one-upmanship or memorization.
Not everyone likes you.
Right now is a good time to stop the bullshit. Get real. Take a painful review of yourself, and be honest. Face your faults, and begin the fix.
Love will always have baggage attached. Get over it. Love is essential to a full life. No matter what.
What people think of you is irrelevant. But how you leave this world matters. Even if it’s all futile in the end, play your part as well as you can. Real courage is fear, in action. Play your hand.
17th of February AutoHotkey Newsletter
Hi %Name%,
Let’s force ourselves to have an anxiety attack! Sounds crazy but anytime we step into unknown areas we ALL experience anxiety. It’s just human nature. It’s undoubtedly the #1 reason people stop trying to learn AutoHotkey!
AutoHotkey is an amazing language that allows people (like you and I) to “program” without really being programmers. However, the majority of people that start to use AutoHotkey stop right away (or never even try) because they see they have to “program” and believe they can’t do it.
Some will get started but then get very confused and even consider themselves “dumb” because they see others “getting it” in seconds. When I first started WebScraping I nearly gave up. I thought “I just don’t get it”. What I didn’t realize at the time is that WE ALL went through that learning (feeling stupid) process! Rarely are we all at the same “level” when learning something new.
But what gets some of us to keep plugging along into the dark abyss? Is it that some of us are just smarter?
Hogwash‼️
Those of us that continue to learn have “had a win”. We’ve automated something and then felt the joy of using that script, over and over, and avoid the mundane work. %name%, can you remember the script that saved you time? I used HotStrings and Hotkeys for the first 3 years of using AutoHotkey.
And they made me a Rockstar!
It’s a rough part of life but we need that carrot🥕! That reward for the work to continue on. If there’s no gain, then why submit to the pain?
This is one of the big reasons I created the AutoHotkey Udemy courses. Because AutoHotkey is so vast (with some many applications) having a clear path really helps! My courses aren’t “amazing” but they do provide a very clear path to start learning AutoHotkey.
Now on with the show…
Amazing ActiveX example with AutoHotkey V2
The other day I published a short video documenting how Maestrith had shown how to create an ActiveX GUI. Dimitri Geerts was inspired by it and did some amazing work! He then joined me in Zoom to demo some of it which was spectacular! The 2d work was amazing but the 3d version and “game of life” was really, really over-the-top! I should point out that it’s all done in V2 (mainly because GUIs are a bit simpler in V2 because they’re functions). Check out the video and let me know what you think! Click here if you’d like to learn more about AutoHotkey V2.
Awareness of Automation
It’s been a few years, perhaps Jackie and I need to go look at the current stats to see if the bar has moved at all? Are people more aware of ways to automate?
Parsing Text with AutoHotkey
In this video I show some tips & tricks how to parse text with AutoHotkey. The more programming you do, the more splitting text becomes “a thing”. RegEx is great but StrSplit() and InStr() are faster and simpler to get started with.
Why Do I Have to Prove I’m Not a Robot? BTW did you know CAPTCHA stands for “Completely Automated Public Turing test to tell Computers and Humans Apart”
AutoHotkey GURU 👨🏫 Interview:
I remember this call with RaptorX / Isaias Baez. RaptorX (AHKTuts on YouTube) was one of my inspirations for creating a YouTube channel. I’d watched his videos ~10 years before and was amazed at what was possible. This call was so much fun and educational, it’s no wonder we started working together a while after. BTW I’ve been in contact with him and he’s hoping to be back here in the next month or so. 😊
Productivity tips ⚡️
One of the best ways to spot “what to automate” is by batching your work! When you batch your work together you’re much more efficient! As a side benefit, it becomes painfully obvious what processes can be automated! Give it a try and tell me if I’m wrong!
A spot of Humor 🤣
I’d like to say “I’ve been there” but I’m not so sure I have! lol
Quotable quotes 🗣️ 💭
The tragedy in life doesn’t lie in not reaching your goal. The tragedy lies in having no goal to reach. — Benjamin E. Mays
If it’s critical, do it yourself. If it’s not, delegate. Learn the difference — John Carlton
When the whole world is running towards a cliff, he who is running in the opposite direction appears to have lost his mind.” —S. Lewis
You wouldn’t have won if we’d beaten you — Yogi Berra 🤣
P.S. Special thanks to the following for purchasing multiple AutoHotkey Udemy courses this month!
6 Peter E.
3 Sam B.
2 Łukasz G.
2 VCALD.
2 Sylwia B.
2 Swen B.
2 Sean M.
2 R.
2 Qun G.
2 Przemysław M.
2 Piotr Pawel B.
2 Paulina D.
2 P.
2 Natalia P.
2 Monika B.
2 MateuszH.
2 Mateusz T.
2 Mateusz J.
2 Marc P.
2 Malgorzata M.
2 Magdalena O.
2 Magdalena F.
2 Maciej W.
2 Lidia D.
2 Kosma W.
2 Kinga C.
2 Katarzyna U.
2 Karolina S.
2 K.
2 Justyna K.
2 Joanna R.
2 J.
2 Izabela K.
2 Iwona S.
2 Iwona Granacka-P.
2 G.
2 Ewelina W.
2 Ewa N.
2 Emilie H.
2 Doug B.
2 Damian G.
2 Claudia J.
2 Charles O.
2 Cezary K.
2 Cesar A.
2 Bartosz B.
2 B.
2 Annet S.
2 Anna C.
2 Anna B.
2 Alicja C.
2 Aleksandra P.
2 Agnieszka W.
2 Abdulmalik A.
10th of February AutoHotkey Newsletter
Howdy %Name%,
It was 24 years ago, however I remember it like it was yesterday. I took my first class in Advanced statistics 🧮 and sweated my way through it! I was cursing to myself because it was downright uncomfortable and painful. At times it made me feel incompetent and stupid.
When we’re trying something new, we feel awkward uncomfortable, and we might not like it. The question to answer is, “Is it worth it?” If the answer is “yes”, then continue to work through the discomfort.
Why did I continue learning stats after my first unpleasant experience? Simple. I knew that it was good for me. And I LOVED the outcome (finding hidden patterns in data)
Many of us learn AutoHotkey because, compared to other languages, it’s very easy to get started on. There’s nothing wrong with starting off with the basics! I used HotStrings and Hotkeys for the first 3 years! And it made me a Rock Star🎸 compared to my colleagues! But, when I finally started learning more advanced AutoHotkey functionality, I really blew-doors by everyone and my productivity skyrocketed! 🚀
Keep at it!
Trust me %Name%, learning is ALWAYS worth it! Carve-out a regular time to learn at least twice a week!
Developer’s Corner
Simple way to select items
Sometimes “simple” is the way to go! In this short video I show how you can easily automate selecting items form a list. I happen to be in Chrome in the example however, the general approach, will work in most programs.
Getting properties from an Outlook email
Outlook has a COM object which allows us to, easily, connect to it and access various properties. Here I demonstrate how you can get info from the currently-selected email. COM rocks! You can learn more about using COM with Outlook and Excel in this AutoHotkey webinar. Don’t forget we have over 60 AutoHotkey webinars you can watch!
Learning XML
I stumbled upon a video I hadn’t published where Maestrith (author of AHK Studio) was teaching me how to use his XML class. If you’re storing data XML is a great approach for smaller amounts of data (let’s say under 10,000 items)
Automating Graphs in Excel
I’m coaching some current grad students and remembered, a lifetime ago, I had automated graphs in Excel. Sadly the code I have now no-longer works but I’m planning on updating it once I have the time. Still the concept is amazing! Do you regularly make graphs? Why not have it down to hitting a button to make them? Be sure to check out my over 50 Excel tutorials and download my XL Function library.
AutoHotkey Guru👨🏫 Interview with JoeDF from the AHK forum
Back in 2018 I was able to have a chat with JoeDF from the AutoHotkey forum. Joe’s done some amazing things with AutoHotkey and, for such a young guy, has an amazing amount of posts on the AutoHotkey forum (currently 7,270).
Right now is a good time to stop the bullshit. Get real. Take a painful review of yourself, and be honest. Face your faults, and begin the fix. — John Carlton
P.S. Some of you may not have been receiving the AHK newsletter for a couple of weeks. A bug crept into my script that pulls the list ☹. Sorry for that! Many of the past Newsletters are posted on the-Automator in case you want to check them out or share them.
3rd of February AutoHotkey Newsletter
Howdy %Name%,
Do you feel stuck in the same position? 😲 Do you get the feeling people (things) are going around you?
Start learning to automate your work and I guarantee you you’ll be your boss / colleague’s best friend! Being more efficient and productive was always part of my plan in corporate America. It reminds me of this video where I discuss how to get a raise💲. Here’s a hint: Be WORTHMORE!
Raptor❎ / Isaias Baez
Just an FYI- I had a call with Isaias the other day. He stopped working for me as he had some personal things he had to take care of however he’s hoping to be able to come back in the next month or so. Here’s to hoping! I have lots of things I’m looking forward to working on with him (not to mention making some more deep-dive videos). Here’s one where we discuss various ways to store data with AutoHotkey
Debugging 🏴☠️
A little while back Jean Lalonde gave us a tutorial on using classes with AutoHotkey. I mentioned, in that video, that his use of SciTE4AutoHotkey debugging was amazing! If you’re not using a tools that has debugging, you’re really missing out! I have an intro to debugging in SciTE here. Or, if you’re an AutoHotkey Studio user like me, you can check this video out. Isaias / Raptor X prefers debugging in VS code. Or take a look around at my debugging playlist.
Comparing lists
I used to build SQL queries and would have to compare lists to make sure I 1) had everything and 2) didn’t have duplicates. This simple AutoHotkey script made it really easy!
Learning what can be automated by watching others
I conducted a couple dozen interviews with other AutoHotkey users. One of my favorite ones was with Gio Sperotto out of Brazil. He uses AutoHotkey at his family’s company and has done some AMAZING things! He also lead the webinar on Neural Networks.
AutoHotkey Resources
Jackie Sztuk and I discuss many of the AutoHotkey resources. Amazingly not much has changed! Are you aware of them all? Which ones do 👉you use %Firstname%?
Using a variable as the index when getting it from an Object
If you’re still learning objects and arrays, this is a great, short, video showing you how to access them if the index is stored in a variable. In objects, the dot notation literally looks for that value (not a reference)
Be decisive and make decisions however, when you have a mistake, remember it is just that; a mistake. Don’t get caught up in that you are the mistake in recognize that we all learn by doing mistakes the important point is not to do them again
A spot of Humor 🤣
This may seem edgy, but it’s 100% true! All code has a few WTF. If it doesn’t you proably spent too much time working on it!
Quotable quotes 🗣️ 💭
Never see failure as failure, but only as a learning experience – Tom Hopkins
The tragedy in life doesn’t lie in not reaching your goal. The tragedy lies in having no goal to reach. — Benjamin E. Mays
When the whole world is running towards a cliff, he who is running in the opposite direction appears to have lost his mind.” —S. Lewis
If you ask me anything I don’t know, I’m not going to answer — Yogi Berra
Live AutoHotkey Support Tomorrow
Don’t forget on Friday’s you can get free AutoHotkey support on my YouTube channel. Or you can sign up for reminders and join the zoom room. We are having a severe storm in Texas so, if I’m not there, the power is out! 🥶