I recently played with this great AutoHotkey function FindText(). The program is similar to AutoHotkey’s built-in ImageSearch functionality however it works more reliably and does not need a local file/copy of the image. The name of the function is a bit misleading in that it really just helps you find and click images.
My first video below demonstrates most of the basic functionality of the tool. The second video shows the usage of the functions that I wrote to help clicking, sending text, etc.
Here is my version of the FindText function which includes the functions I demonstrate in the second video. If you’d like the hotstrings I used they are below also (mine are in my main AutoHotkey.ahk file)
Find and click image with FindText()
Demonstration of custom AutoHotkey functions to find image and click it.
HotStrings used for typing-aide for FindText
In this short tutorial I walk through how I configured SciTE to automatically close: brackets, parens, braces, and quotes with SciTE.
Here’s what you need to do to try this:1) Export these lua files into your SciTE home directory
2) Open your UserLuaScript.lua script and add the following lines (in this order)
EventClass:BeginEvents() -- Start up the events (Calls onstartup()).
-- ***AutoClose END
Then just restart SciTE and you’ll be able to have SciTE close brackets, parens, quotes on its own!
Video demonstrating the process so SciTE can close brackets, parens, etc.
In the first hour of our AutoHotkey webinar we demonstrated Quick Access Popup from our guest speaker Jean Lalonde. It is an amazingly customizable tool that allows you to have what you want at your fingertips!
Here is an abbreviated list of some of the great features:
- Create shortcuts to folders, programs, files, links, Snippets, special folders, etc.
- Easily create Hotkeys for above shortcuts
- Works with most Open/Save dialog boxes
- Integrated with most file managers (Windows Explorer, Directory Opus, Total Commander, etc.)
- The tool itself is highly customizable
- Have “shared” sections as well as individual ones
- Organize your menu into folders & sub-folders
- Customize Menu/GUI shortcut with an icon (that makes sense to you)
- Available in 10 languages
You can watch a short overview video here or get a deeper dive here. Jean was kind enough to walk me through his tool in this video.
We then talked about what a “text file” is and frequent sources of them (Export from programs, sever logs, emails, etc). We also briefly discussed what is File / Character Encoding & why are there frequent problems with it (this is a very deep topic which we could have spent days discussing!)
Also discussed what a “flat file” is and how they are different than:
- Multi-row files
- Relational files
- XML and JSON files
We then shared some of the frequently used built-in commands and functions for parsing text in AutoHotkey.
- File Object, FileOpen, FileRead, FileReadLine, Loop (read file contents), Loop Files & Folders– Opening / reading a text file
- FileAppend – Writes text to the end of a file (first creating the file, if necessary).
- FileEncoding – Sets the default encoding for FileRead, FileReadLine, Loop Read, FileAppend, and FileOpen
- IfInString/ InStr() – Checks if a variablecontains the specified string.
- Loop (parse a string) – Retrieves substrings (fields) from a string, one at a time. (CSV helpful option)
- RegExMatch() / ~= – Determines whether a string contains a pattern (regular expression). (Check out RegEx Webinar)
- RegExReplace() – Replaces occurrences of a pattern (regular expression) inside a string.
- SplitPath – Separates a file name or URL into its name, directory, extension, and drive.
- StringLen / StrLen() – Retrieves the count of how many characters are in a string.
- StringLeft, StringRight – Retrieves a number of characters from the left/right-hand side of a string.
- StringMid/ SubStr() – Retrieves one or more characters from the specified position in a string.
- StringSplit / StrSplit() – Separates a string into an array of substrings using the specified delimiters.
- Trim(), Ltrim(), Rtrim() AutoTrimm – Trims characters from the beginning and/or end of a string.
Then we got into various custom-built in libraries and functions
Then our guest speaker, Jean, took over walking us through some examples of common problems with AutoHotkey LoopParse command
The library is pretty cool and here are some of the main functions available:
- CSV2Collection() – Transfer the content of a CSV file to a collection of objects.
- Collection2CSV() – Transfer the selected fields from a collection of objects to a CSV file.
- Collection2Fixed() – Transfer the selected fields from a collection of objects to a fixed-width file.
- Collection2HTML() – Builds an HTML file based on a template where variables are replaced with content.
- Collection2XML() – Builds an XML file from the content of the collection.
- Collection2ListView() – Transfer the selected fields from a collection of objects to ListView.
- ListView2Collection() – Transfer the selected lines of the selected columns of a ListView to a collection of objects.
ObjCSV Examples: Here are the files Jean worked through.
- SIMPLE CSV FILE – COMA DELIMITED (TheBeatles-coma.txt)
- SIMPLE CSV FILE – TAB DELIMITED – ISSUE #1 (TheBeatles-tab.txt)
- MULTI-LINE CSV FILE – COMA DELIMITED – ISSUE #2 (TheBeatles-Lyrics.txt)
Jean then gave us a review of how to use his ObjCSV library
- Example using ObjCSV_CSV2Collection
- SIMPLE CSV FILE – COMA DELIMITED (TheBeatles-coma.txt)
- SIMPLE CSV FILE – TAB DELIMITED – ISSUE #1 SOLVED (TheBeatles-tab.txt)
- MULTI-LINE CSV FILE – COMA DELIMITED – ISSUE #2 SOLVED (TheBeatles-Lyrics.txt)
- PROGRESS BAR WITH LARGE CSV FILE – SEMI-COLON DELIMITED (LargeFile-semicolon.txt)
- CUSTOM HEADER – SIMPLE CSV FILE – COMA DELIMITED (TheBeatles-coma.txt)
- GUI Example using Collection2ListView
- SAVING WITH DIFFERENT DELIMITER using ObjCSV_Collection2CSV
- EXPORT HTML Example using ObjCSV_Collection2HTML
Wrapping up the first section we then saw a peak at CSVBuddy
- Reading large file with auto-detection
- Editing field names, re-order or select fields
- Saving options
- Saving file with multi-line content converted to single-line (Excel-ready)
- Reverting the single-line file to multi-line (for example, after manipulation in Excel)
In the second hour we discussed various issues working with text data as well as took a deeper look into Quick Access Popup.
Near the end of the time Capn Odin shared a Trie script he’s been working on. You can check out the script on the forum
I had wanted to be able to make a function where I pass Methods or Properties in COM. (this makes it much more flexible and eases updating / maintaining of code.) Unfortunately it was not as straight-forward as I’d hoped.
Thankfully maestrith, Author of AutoHotkey Studio, had already solved this problem and shared the solution with me! The code which shows how to pass Methods or Properties in COM is listed below. While in the video I demonstrate connecting to IE and perform web scraping, the solution is equally applicable to any COM object like Excel, etc.
pwb := WBGet()
MsgBox % ID_Var[Property]
;~ MsgBox % pwb.document.GetElementByID("site-description").OuterHTML
;~ MsgBox % pwb.document.GetElementByID("site-description").InnerHTML
pwb := WBGet()
MsgBox % WebScraping_Get(pwb,"class","widget_tag_cloud","0","")
MsgBox % WebScraping_Get(pwb,"id","tag_cloud-3",,"oh")
;***********Getting data from page*******************
;***********Set Methods and Properties to static so do not have to rebuild each time it is called*******************
if (method !="id")
return Doc[Methods[Method]](Thing)[Index][Properties[Property]] ;Arrays
return Doc[Methods[Method]](Thing)[Properties[Property]] ;Not an Array
Demonstration Video to pass Methods or Properties in COM