• Intro to AutoHotkey HotStrings with AutoHotkey Intermediate AutoHotkey GUIs are Easy with AutoHotkey Intro to DOS & AutoHotkey AutoHotkey FAQ AutoHotkey FAQ

How to create Dark Themed GUIs with AutoHotkey

We’ve had several calls discussing Dark Themed GUIs so I thought I’d create a page discussing them.

During the October 8th Live AutoHotkey Support, Dimitri Geertz showed us some of the cool work he’s done code he got that updates GUIs with a style.


I demonstrated in this video with the following download


In the second hour of the AutoHotkey webinar Dimitri showed some more work he’d done


Lastly I had the below call with Jean Lalonde, Dimitri Geerts, and Chad Wilson / Maestrith.  One example Dimitri cited was from this post.

The second half of this call Maestrith was demonstrating how easy it is to make highly customizable GUIs with this HTMLGui Class




How to create a Resizable GUI in AutoHotkey | Amazing AutoHotkey function for GUIs in 2021

Resizable GUI in AutoHotkeyHere’s a handy Resizable GUI in AutoHotkey Function in AutoHotkey that I used to use a lot more (before I had access to the Debug window in AHK Studio and Output Window in SciTE4AutoHotkey)

You can learn how to create simple AutoHotkey GUIs in our Intro to GUIs in AutoHotkey Udemy course

Code for Resizable AutoHotkey GUI Function in AutoHotkey

Resizable GUI in AutoHotkey


HotString to bring up a GUI with multiple text selections in AutoHotkey

I was helping someone in an AutoHotkey Facebook group this morning.  The original request was how to have a HotString without requiring an ending character (tab, space, return, etc.).  This is solved by simply putting an asterisk in between the first two colons.

i.e.  :*:jg::Joe@the-Automator.com

However someone else mentioned a function they use to display a list of items and select from them.  He didn’t share his function but I found something similar on the AutoHotkey forum.   The example used the “Loop” and StringSplit commands.  I decided to adapt it to use a for Loop and StrSplit function.

HotString to bring up a GUI with multiple text selections in AutoHotkey

Here’s the code to use a HotString to bring up a GUI with multiple text selections in AutoHotkey

#SingleInstance,Force ;make sure it only runs once
:*:jg::Joe@the-Automator.com ;This does solve initial request

:*:gg:: ;when I type gg bring up the menu (* means don't wait for an end charachter)
TextMenu("This is, cool¦But I like¦to do more¦with these¦But that's about`n`nit")
:*:ff:: ;when I type gg bring up the menu (* means don't wait for an end charachter)
TextMenu("this¦is from the ¦ff choice I typed¦Pretty cool¦huh")

for k, MenuItems in StrSplit(TextOptions,"¦") ;parse the data on the weird pipe charachter
Menu, MyMenu,Add,% MenuItems,Action ;Add each item to the Menu

Menu, MyMenu, Show ;Display the GUI and wait for action
Menu, MyMenu, DeleteAll ;Delete all the menu items

ClipboardBackup:=ClipboardAll ;backup clipboard
Clipboard:=A_ThisMenuItem ;Shove what was selected into the clipboard
Send, ^v ;paste the text
sleep, 50 ;Remember to sleep before restoring clipboard or it will fail
Clipboard:=ClipboardBackup ;Restore clipboard


Walk through of Maestrith’s Notify AutoHotkey class

In this walk through I demonstrate using Maestrith’s Notify class.  To me, it’s much simpler and easier to use than the notify function I demonstrated the other day from gwarble.

Walk through of Maestrith’s Notify AutoHotkey class

Walk through of Maestrith’s Notify AutoHotkey class

;Notify:=Notify() ;instantiate the object (make sure you do this once, not each time you press a hotkey)
Notify(60).AddWindow("First",{Animate:"Center",ShowDelay:1000,Icon:300,IconSize:15,Title:"Hello World",Color:"0x00FF00",TitleColor:"0xFF0000"})
;Notify().AddWindow("Second",{Animate:"Center",ShowDelay:1000,Icon:300,IconSize:50,Title:"Hello World",TitleSize:14,Size:12,Time:5000,Background:0x00FF00})
;Notify().AddWindow("Third",{Animate:"Center",ShowDelay:1000,Icon:300,IconSize:50,Title:"Hello World",TitleSize:14,Size:12,Time:6000,Background:0x0000FF})
;Notify.AddWindow("Your Text Here",{Icon:300,Background:"0xFF00AA",Title:"my Title",TitleSize:16,size:13,Time:3000,Hide:"Top,Left",ShowDelay:1500,sound:"C:\Windows\media\Alarm05.wav"})
;Notify.AddWindow("Your Text Here",{Icon:300,Background:"0x1100AA",Ident:"MyID",Title:"My first title",TitleSize:16,size:14,radius:50,buttons:"one,two,three or more"})
;Notify.AddWindow("Your Text Here",{Icon:300,Background:"0x1100AA",Ident:"MyID2",Title:"This is cool",TitleSize:16,size:14,radius:75})

;If you've defined a function called "click" with one parameter- then when you click the notification, info about the GUI will be stored in the parameter as an object
MsgBox % obj.button
MsgBox,% ("You clicked on the first")
MsgBox,% ("You clicked on the Second")