AutoHotkey Webinar- Udemy, Newsletter and Beautiful HTML GUIs with Neutron.ahk

Video Hour 1: New Intermediate AutoHotkey course, Newsletter and more
Video Hour 2: Beautiful HTML GUIs with GeekDude’s Neutron.ank (thanks again GeekDude!)

Script Highlight: I a script I had for peeking into large files and determining the number of rows and view the headers but, more importantly, check out this video where Maestrith refactored my code for me.

AutoHotkey Podcasts

055-mp3 Video Adapting OCR to using a stream for screen clipping tool
056-mp3 Video How often do we need to re-educate ourselves
057-mp3 Video Non-Desktop running programs
058-mp3 Video Are Programs getting harder to automate?
059-mp3 Video What are API calls?

Udemy Courses

Alerts / Update newsletter from the-Automator

  • What I’ve automated
  • Cool scripts from forum / Facebook / Reddit, etc.
  • Podcast that week
  • Time-saving tip (not AutoHotkey related)

Subscribe to my alerts and be entered into chance to win 1 of 10  Intermediate AutoHotkey course giveaway!  The drawing will be held on June 1st

Udemy Intermediate AutoHotkey Course Syllabus

  • Intro
  • Recommended Default Settings
  • Various Types of Send
  • Using a SetTimer
  • Creating, reading and writing initialization files (.ini)
  • Working with the Windows Registry
  • Utilizing Controls to connect and automate programs
  • Selecting menus in (older) windows programs
  • Loops
    • Basic Loop
    • While
    • Until
    • Parsing Text
    • Files and Folders
  • Arrays
    • Simple Arrays
    • Associative Arrays

Here are the links / content shared in the chat during the webinar

15:09:50 From Joe Glines :
15:13:12 From Joe Glines :
15:13:18 From Brad Schrunk : What kind of file did you read
15:14:40 From Joe Glines : real estate data
15:14:50 From Joe Glines : it’s all free and available to the public
15:16:39 From Brad Schrunk : I use these type of file structures
15:16:43 From Brad Schrunk : for my record system
15:16:58 From Joe Glines : cool
15:17:49 From Robert Gray : Joe your short YT videos often say “This is something from my base AHK file”. Have you published that entire file somewhere, or are you just mining it for YouTube content?
15:18:35 From Joe Glines : It’s over 2,000 lines long. A ton is personal / not relevant so, no, I haven’t shared it
15:18:52 From Robert Gray : Understood. I have a similar one that I can’t really share.
15:20:11 From Mason G : An interesting note: Chrome.ahk works with Electron apps.
15:21:03 From Joe Glines : cool
15:28:10 From Robert Gray : Looking at your start page made me think to suggest you check out It’s the nicest Chrome start page tool I’ve seen. VERY configurable and it syncs content across your devices.
15:28:36 From Brad Schrunk : do have a link to the web code generator?
15:29:42 From Brad Schrunk : Yes the tank one or whatever is available
15:29:49 From Robert Gray : Take a look at It’s worth a look.
15:30:22 From Ryan Wells : Quick related point of web page launcher. IF you use HTML anchors and a AHK ‘link watcher’ on your page you can detect a click and then launch a script.
15:30:27 From Joe Glines :
15:30:56 From Brad Schrunk : The problem is I am not in your league or even in the parking lot
15:37:35 From Robert Gray : Ryan, can you expand a bit on the link watcher details?
15:38:24 From Ryan Wells : You just detect the click Robert but in this case the anchor doesn’t go anywhere… AHK detects the click.. and then you can launch your AHK script just as Jackie as says
15:38:35 From Mason G : Geek has been working on something called “neutron”. A full integration between AHK and Edge, so it can be used as a GUI properly.
15:39:02 From Robert Gray : I see. Thanks Ryan. Interesting idea.
15:39:14 From Mason G : Oh cool. Didn’t hear that, I’m at work currently
15:39:35 From Brad Schrunk : Thanks Men I have to head out I will be sure to watch this full video.
15:39:50 From Joe Glines : bye Brad
15:41:11 From Mason G : It’s using IE COM. Both neutron and Chrome.ahk use it though. So he may be using the base from Chrome.ahk, but it isn’t actually using Chrome
15:45:12 From Joe Glines :
15:46:16 From Mason G : Neutron is on Github now. I just compared the classes, they don’t really have anything in common. And I forgot: Neutron uses ActiveX. Basically the same, but it’s easier to integrate to an AHK gui
15:46:31 From Joe Glines :
15:49:42 From Mason G : Here is a snippet he posted from yesterday
15:51:20 From Dale Winchell : I have a couple of things..
15:51:25 From Geek Dude : Hey there Joe!
15:51:54 From Mason G : Hey Geek 🙂
15:56:56 From Robert Gray : Amazing!
16:03:16 From Joe Glines : Dale, lets let Geek Dude finish up then we’ll shift over to your stuff
16:05:50 From Dale Winchell : Ok, no problem at all
16:12:10 From Mason G : Relax support, huh? I’m sure you weren’t pressured 😉
16:26:47 From Robert Gray : Really nice work Geek Dude! I hope to someday know enough to use it. 🙂
16:34:44 From Geek Dude :
16:41:55 From Robert Gray : Can you reference an external style sheet file or must the CSS be in the AHK file?
16:42:36 From Robert Gray : Ah. OK thanks.
16:43:36 From Robert Gray : Thanks for sharing your work!
16:52:24 From Joe Glines : Autocorrect
16:53:46 From Robert Gray : Speaking of spelling corrections, I have a lot of those but I often overrun AHK’s attempt to fix a word as I continue to type the next work. I end up with a mixture of the new word and AHK’s correction. Is there a known fix for that? Maybe increase the typing speed on the fly, then reset it after the correction is complete?
16:54:49 From Robert Gray : “work” –> “word”
16:57:50 From Mason G : I could help, but.. yeah on my phone
16:58:02 From Geek Dude : I don’t think I finished my thought about joedf’s tutorial page. I meant to say about it, that it shows some cool tools but doesn’t make them easy to use. His examples show crazy hacks with ComObjConnect, invalid URLs, and other techniques that add confusion and aren’t really needed anymore because of updates to AHK_L’s COM support–and the example GUIs he builds with them, for lack of a better phrase, aren’t “pretty”. If you’re a web dev you might know how to take his stuff and build on it to make a nice UI, but if you haven’t worked much with HTML+CSS you might miss out on the opportunity. Neutron aims to fill the space of 1) make it easy to build an HTML GUI, and 2) make it look fantastic by default.
17:01:43 From Mason G : I’ve never seen anyone type faster than input, but you can use BlockInput, Send
17:03:40 From Joe Glines : Thanks for the work & sharing on Neutron Geek Dude! Also your notes above on the Joe DF’s tutorial page


Level-up your programming by having a genius refactor your code!


While I’m making progress using objects in my code, I knew there was a more efficient way to write this but couldn’t put my finger on it. I asked Maestrith to take my code and “Maestrithize it”. (It’s humbling to watch someone do this. I feel like I had NASA do my science project) lol   You can help Maestrith out here.

Remember, we are all at different stages of our skills & abilities.  There’s nothing wrong to admit that someone is superior to you at something.  Just keep plugging-along and improve!

Level-up your programming by having a genius refactor your code!

Here’s the finished code from Level-up your programming by having a genius refactor your code!

SetBatchLines,-1 ;Set run w/o any sleeping between things
#MaxMem,4095 ;Increase the variable allowance to max just in case a massive file
;***********Get row count of file and display headers*******************
Path:= Explorer_GetSelected() ;Explorer Function that gets paths of selected files
If (Path="ERROR") ;Didn't get file, just stop moving forward
;~ Folder to use for examples "\Desktop\Header example file\"
SplitPath,Path,File_Name ;grab the file name w/o the path
Loop, read, % Path
last_line++ ;increment lines

rows:=RegExReplace(last_line,"(?:^[^1-9.]*[1-9]\d{0,2}|(?<=.)\G\d{3})(?=(?:\d{3})+(?:\D|$))", "$0,") ;Add commas to the number
MsgBox,4,, % rows " lines found in: " File_Name "`n`nDisplay headers?" ;Display rows and ask if want to see headers
IfMsgBox Yes
FileReadLine,Header, % Path, 1 ;read first row
;~ you have to wrap in () any Key in a Key/Value pair if it is a variable.
;~ other than that it's just creating a Key/Value pair on the Count and {Name:"Comma",Character:","}
Obj:={(StrSplit(Header,",").count() -1):{Name:"Comma",Character:","},(StrSplit(Header,"|").count() -1):{Name:"Pipe",Character:"|"},(StrSplit(Header,"`t").count() -1):{Name:"Tab",Character:"`t"}}
MsgBox,,% "The delimmiters are probaly a " Item.Name ,% StrReplace(Header,Item.Character,"`n" Item["Character"])