56th AutoHotkey Webinar: Pulover’s Macro Creator by Rodolfo Batista

AutoHotkey webinarWe were fortunate enough to have Rodolfo Batista come to our 56th AutoHotkey webinar and talk through his amazing Pulover’s Macro Creator!

The first hour Rodolfo talked through it’s creation, usage and common users

The Second hour we dove a bit deeper into Pulover’s Macro Creator and some of his other tools.   The Listview class of his was a topic of this past webinar lead by Jean Lalonde (author of Quick Access Popup).  You can access Pulover’s (Rodolfo’s) Github here

This script gets ~3,000 Downloads per week!  And is an amazingly popular sub-thread on the AutoHotkey forum

The tool was first created in April of 2012.  This means for nearly 10 years Rodolfo has worked on this on his own time!  If you’ve ever benefited from using the tool, please consider donating to him.  I did as, when I was first learning AHK, I used his tool to help see what code was being generated.

You can also subscribe to Rodolfo’s YouTube Channel here.

Script Highlight: OSDTip() by SKAN.

AutoHotkey Announcements

17 ways to Automate with AutoHotkey   https://www.the-automator.com/WaysToAutomate

Automating with APIs vs. Human Interface  https://youtu.be/p-NlPtABtTA

AutoHotkey Podcasts

88How to use shell hooks with AHK

89- Automating texting with PushBullet

New AutoHotkey Podcast format!  “The Automator’s Podcast

90– What to do before you write one line of code


How to stop someone from taking your script | Prevent easy decompiling with this #1 Hack

Its very easy to peak inside a compiled AutoHotkey script!  In this AutoHotkey demo video I show

How to stop someone from taking your script |Prevent easy decompiling

In the video  mention the below resources to help stop someone from taking your script

http://www.angusj.com/resourcehacker/ #download ;Resource Hacker ;Look at RCData
https://www.autohotkey.com/mpress/ ;mpress for compression
https://github.com/upx/upx/releases ;UPX for 64 bit or 32 bit compression
http://www.autohotkey.com/board/topic/82986-ahk-l-decompiler-payload-method/ How to stop someone from taking your script with Payload; AHK_Decompiler
https://github.com/HotKeyIt/ ; AutoHotkey_H Compiler

If you want to take it to the net level with AutoHotkey_H, you can watch this AutoHotkey Webinar where HotkeyIt (author of AutoHotkey_H) walks through the “long way” to compile an AutoHotkey script with AutoHotkey_H.  It’s really complicated and doesn’t add too much more of protection so I highly recommend doing the approach I do in the video!

AutoHotkey GitHub Webinar: Become an amazing AHK Programmer in 2020

AutoHotkey Github WebinarWe had an awesome webinar today! Jean Lalonde, author of Quick Access Popup, lead us on a great webinar today regarding how to use GitHub to with our AutoHotkey scripts & programs.  BTW we streamed the webinar live to this AutoHotkey Facebook group.

AutoHotkey Podcasts Highlighted

Ways to make money with around AutoHotkey  

Selling Software Group Discussion   

  • Jackie Sztuk
  • Ryan Wells
  • Jean Lalonde
  • Raptor X
  • Charlie Simmons / Tank
  • Joe Glines

Do people see what needs Automation?

Script Highlight

taskManager by fenchai23


AutoHotkey GitHub Webinar

Video Hour 1: High-level overview
Video Hour 2: Finishing up on GitHub

Here’s the deck shared by Jean Lalonde during the webinar


04: Automating Chrome to Set Text & Click a button

Automating Chrome with AutoHotkey

In the fourth session with GeekDude we look at out to Chrome and AutoHotkeyautomate setting text in a search field and then hitting the button to submit the search.

Automating Chrome to Set Text & Click a button

donate to GeekDudeIf you’re loving this, please consider donating to GeekDude!

AutoHotkey script for Automating Chrome to Set Text & Click a button

#Include   ;Remember to put Chrome in your library folder

page:=Chrome.GetPageByTitle("AutoHotkey Community","contains") ;This will connect to the second index of a specific tab
If !IsObject(page){
MsgBox % "That wasn' t object / the page wasn't found"
page.Evaluate("document.querySelector('#keywords').value ='Chrome.ahk'")
Variable =document.querySelector('#keywords').value ='Chrome.ahk'
page.Evaluate("document.querySelector('#keywords').value ='" var "'")
page.Evaluate("document.querySelector('#search > fieldset > button').value ='Chrome.ahk'")

Notes for Automating Chrome to Set Text & Click a button

00:36     Go to AutoHotkey.com/boards/

00:44     Connect to tab using Chrome.GetPageByTitle(“AutoHotkey Community”) ;the default matchtype is “starts with”

01:23     Look at page structure using right-click and Inspect.  This opends Devtools with that element selected.

01:46     It has an ID of “keywords”, copy js path.  Which will give you queryselector(“#keywords”)

02:26     Use the .value to set some text in that box.

03:00     page.Evaluate(“document.querySelector(‘#keywords’).value =’Chrome.ahk'”)

04:01     Make sure inside the JavaScript you use the “=”, not “:=”

04:15     Some people don’t want to have to learn JavaScript.  When using Chrome, you’re going to have to learn JavaScript.

04:56     When using Chrome.ahk, we’re injecting JavaScript.  So best to learn

05:54     The button is right next to the input.  You can go back to the page and right-click the button, then hit Inspect

06:13     Test the new js path.  Instead of using .value, use .click

06:42     Test in Chrome developer tool

07:18     When running an Evaluate method, it waits for the previous Evaluate to finish (so no need to sleep between them).

07:44     If you run into a problem where you think it is happening too quickly, check the forum for some solutions

08:40     Sometimes what you want to input won’t always be a static string.  If you’re trying to reference a variable, you need to use the expression syntax.  In an expression, you’re not just assigning text, you’re doing math or making function calls.

Variable =document.querySelector(‘#keywords’).value =’Chrome.ahk’


page.Evaluate(“document.querySelector(”#keywords ‘).value ='” variablevar:=”duh”

page.Evaluate(“document.querySelector(‘#keywords’).value ='” var “‘”) “‘”)

10:48     This works because AutoHotkey splits everything up on a given line.   First is a name of a function, then says this is inside the function, then this is text inside a function.  Then builds from left to right as to the string that will be used.

12:15     AutoHotkey proceeds left to right when evaluating an expression

12:40     when you use := you’re in expression assignment mode.

13:25     With just single = you’re in plain-text mode.  It reads it as text

15:00     When automating a site, you don’t know what kind of buffer’s they have to prevent scraping / botting.

15:49     When you start automating, you might start seeing Captcha’s everywhere

16:04     Sites get really good at looking like a normal site to a user, but looking like an impenetrable fortress to code

16:36     If your variable contains a single quote or other special charachters, JavaScript will interpret it as code instead of text.

17:13     JavaScript string escape sequence will replace characters with special escape sequences

Not mentioned in Video but GeekDude wrote me after

You can escape JavaScript code using Coco’s JSON library does actually do that escaping that we discussed when talking about putting data on the page. The syntax for invoking it looks like this:

variable = 123`r`n456’quote”quote

page.Evaluate(“document.querySelector(‘#whatever’).value = ” Chrome.Jxon_Dump(variable))

The dump function will automatically escape anything that needs escaped and add quotes to anything that needs quotes.