 Pulover's Macro Creator

Version: 5.4.1

www.macrocreator.com
Forum

Author: Pulover [Rodolfo U. Batista]
©2012-2021 Cloversoft Serviços de Informática Ltda

Software License: GNU General Public License

AutoHotkey Online Documentation

Support Open Source software: Donate

Table of Contents

  • Quick Tutorial & Examples
  • FAQ - Frequently Asked Questions
  • Main Window
  • Record
  • Playback
  • Command Windows
  • Variables & Arrays/Objects
  • Functions
  • Export Window
  • Preview Window
  • Settings
  • About & Changes


Quick Tutorial & Examples

Quick Tutorial

The simplest way to get started with Pulover's Macro Creator is using the recorder. Follow these steps record a macro:

  1. Start Pulover's Macro Creator.
  2. Click on the Record button on the toolbar or press Ctrl+R.
  3. Press the record hotkey (default is F9).
  4. Make mouse and keyboard actions.
  5. Press the record hotkey again to stop.
  6. Press the playback hotkey (default is F3) to reproduce your actions.

You can change record and playback options clicking the arrows beside those buttons in the toolbar, or going to Settings.

Although the recorder is a good choice for quick tasks, Pulover's Macro Creator can do many other things if you take the time to learn its commands. You can add loops, conditions, create variables and arrays, send text on a background window, search for an image or pixel and much more.

Download Examples

  • PMC Demonstration File
  • Arrays
  • Compare Variables
  • Control Commands
  • Dynamic Variables
  • Functions
  • Loop Types
  • Random Function
  • User-Defined Functions
  • Variables
  • Save PNG screenshots

Check out the video tutorials at www.macrocreator.com/help to learn more.


FAQ - Frequently Asked Questions

FAQ - "Frequently asked", "Not so frequently asked" and "Just in case you're wondering..." questions.

Tip: Right-click on an empty area of a Command Window to display links to AutoHotkey online documentation and related contents.

  • How do I start Recording / Playback?
  • Can I import AHK scripts to Macro Creator and edit them?
  • How do create a random number/command?
  • Can I create Graphic User Interface/Gui with Macro Creator?
  • Can Macro Creator automate Firefox or Chrome as it does with Internet Explorer?
  • Where is the backup file located?
  • Can I make playback go faster/slower?
  • Can I execute a custom action based on Pixel/Image search result?
  • Can I run a Macro in a timed interval?
  • Can I run a Macro in a background window?
  • Can I schedule a Macro to run when I want?
  • How do I increment/add a value in a variable on every loop iteration?
  • How can I make an exported script auto-execute without a hotkey?
  • Is Macro Creator Portable?
  • Which command line parameters are supported?
  • Can I execute an action every time a certain event occurs?
  • Can I play other Macros while Timer is running?
  • Can I save my Macros as EXE to run on any computer?
  • How can I avoid/bypass error messages during playback?
  • How can I use an active Internet Explorer window without editing the command every time I start PMC?
  • What is COM and how do I use it?
  • Can I take Screenshots during playback?
  • When I take a screenshot of a window area it cuts part of the boarders
  • Can I record keys when pressed down and released separately?
  • Why won't the mouse stay where I recorded it when I play a Macro?
  • Can I keep all Hotkeys always active?
  • Can I use another AHK script to record / play Macros in PMC?
  • Can I use Functions from my own AutoHotkey Scripts?
  • Can I make the Playback Hotkeys work on a certain windown only?
  • Why am I getting wrong mouse coordinates?
  • I can run the program but Macros won't work / cannot take screenshots
  • I'm getting "Error: Invalid hotkey" when I try to launch the program

How do I start Recording / Playback?

  • To start recording you need to press the Record button and then press the recording hotkey (default is F9). For more details see Record.
  • To play a Macro you have to press the Play Button to activate the Hotkeys and use them to play each Macro. For more details see Playback.

Can I import AHK scripts to Macro Creator and edit them?

No. AHK scripts are too complex to be parsed and the conversion would never be perfect. You can, however, include the original PMC code into the exported scripts by checking this option in the Export Window.

How do create a random number/command?

Use the Random command in the Run / File / String / Misc. window to generate a random number. The command will save the number inside a variable of your choice. Use this variable inside commands like Sleep enclosed in percent signs, e.g. %Rand% and directly inside functions and expressions, e.g. MyArray[Rand].

Download Example: Call array element using a random function

Can I create Graphic User Interface/Gui with Macro Creator?

No, creating Guis is not in the scope of this project. But you can find some nice tools to design Gui in the AHK forum. You can use the generated script along with exported scripts from PMC (the Gui's gLabel must point to a Label in the script).

Can Macro Creator automate Firefox or Chrome as it does with Internet Explorer?

No. Macro Creator can connect to IE because its controls are exposed via COM, but that type of interaction is not possible with other browsers in the same way. Control Commands won't work either, so you might have more luck with mouse, keystrokes and Image Search.

Where is the backup file located?

It's located at %AppData%\MacroCreator\~ActiveProject.pmc or at the application's own folder in case it's running as portable (when MacroCreator.ini is in the same folder as MacroCreator.exe).

Can I make playback go faster/slower?

You can use the Speed Up and Slow Down keys (defaults are Insert and Pause at 2x). To change the keys and speed multiplier see Playback Options.

Can I execute a custom action based on Pixel/Image search result?

Follow these steps to execute an action for Pixel/Image search based on a condition:

  1. Add the Pixel or Image Search. Use the Make Screenshot button or Search for the file and set the area to search.
  2. Leave the "If found" option set to "Continue".
  3. Add the If Statement right below the ImageSearch.
  4. In the If Statements window select "If Image/Pixel Found" and click OK. It will add an 'If' and 'End If'.
  5. Click on the 'End If' line to select it so that the actions will be added right above it.
  6. Any actions you add between the 'If' and 'End If' lines will only be executed if the image/pixel was found.

Can I run a Macro in a timed interval?

Yes, use the Timer or the SetTimer command.

Can I run a Macro in a background window?

If the window is a Win32 application with exposed controls you might be able to use Control commands to interact with it without needing to have it active in the foreground. For more info check the video tutorial for control commands.

Can I schedule a Macro to run when I want?

You can use Window's Task Scheduler to run Macro Creator from a command line using the AutoPlay parameter:

MacroCreator.exe SavedFile.pmc -a

You can also export the Macro to an AutoHotkey script and run it using Window's Task Scheduler (you must have AutoHotkey installed).

How do I increment/add a value in a variable on every loop iteration?

You can use the Variables window and the += operator o the := operator and the Expression option if you need to sum it to another value like the built-in variable A_Index, which contains the number of the current loop iteration.
The code below is a PMC file (you can copy and save it using any text editor).

[PMC Code v5.0.0]|F3||1|Window,2,Fast,0,1|1|Macro1
Groups=
1|[Assign Variable]|Var := 0|1|0|Variable|||||
2|[LoopStart]|LoopStart|10|0|Loop|||||
3|[Assign Variable]|Var += 1|1|0|Variable|||||
4|[MsgBox]|%Var%|1|0|MsgBox|262208||||
5|[LoopEnd]|LoopEnd|1|0|Loop|||||
6|[LoopStart]|LoopStart|10|0|Loop|||||
7|[Assign Variable]|Var := 100 + A_Index|1|0|Variable|Expression||||
8|[MsgBox]|%Var%|1|0|MsgBox|262208||||
9|[LoopEnd]|LoopEnd|1|0|Loop|||||

A_Index is only valid inside a Loop, but in PMC all macros are considered loops since you can set the number of repetitions for the whole macro.

How can I make an exported script auto-execute without a hotkey?

To make the first macro auto-execute when running an exported script, remove the hotkey associated with it in the Export Window "Macros" section.

Is Macro Creator Portable?

All settings are saved to MacroCreator.ini and User Global Variables are saved to UserGlobalVars.ini, both files are located inside AppData\MacroCreator by default. To make Macro Creator portable you can copy those files to the same directory of MacroCreator.exe and it will use its own folder instead of AppData.

Which command line parameters are supported?

Command line parameters

Can I execute an action every time a certain event occurs?

It's possible using the Timer and some If Statements.

Can I play other Macros while Timer is running?

Although the Timer is limited to run one Macro at a time, you can still activate the other Hotkeys by checking the Always Active option or right-clicking the TrayMenu icon and selecting Play. The SetTimer command is more flexible.

Can I save my Macros as EXE to run on any computer?

Macro Creator has an option to convert exported scripts to EXE using Ahk2Exe that is installed with AutoHotkey:
1. Download and install AutoHotkey.
2. Go to Export in PMC and check Create EXE File option.
3. Click the Export button.

The EXE file will be saved to the same directory as the script file.

How can I avoid/bypass error messages during playback?

To bypass error messages go to Options > Settings > Playback and check the "Do not display errors" option.

How can I use an active Internet Explorer window without editing the command every time I start PMC?

There are two methods:

  • Open the Export window and change the option COM Objects to ComObjActive. This is used for convenience and works in Playback only. ComObjActive doesn't really work with Internet Explorer but you can use external functions to connect to existing IE windows such as IEGet and WBGet found in the links below.
  • Open the Functions window and type ie in the Output Variable field and WBGet in the Function Name field. WBGet is used internally by PMC and o_ie is the internal handle for IE commands.

What is COM and how do I use it?

COM stands for Component Object Model and it's a method to allow interaction of a script with other programs. The Internet Explorer command window offers a basic simplified interface to add COM commands to IE. If you want to use the advanced features you'll need to know about the COM methods and properties for the program you want to interact with. You can find some useful tutorials in the AutoHotkey Forum.

  • Basic Webpage Controls with JavaScript / COM
  • Basic Ahk_L COM Tutorial for Excel
  • COM Object Reference
  • Mickers Outlook COM MSDN for Ahk_L

Can I take Screenshots during playback?

Macro Creator has the GDI+ Library integrated so you can make use of its functions.

The example file below allows you to save a png from the clipboard in your Documents folder. The first macro sends PrintScreen, the second sends Alt+PrintScreen, the third are the functions to save the file (you can change the destination folder in the 3rd line).

Download Example: Save PNG screenshots

There is also an an internal function that uses GDI+ functions to make a screenshot of part of the screen.

  • Go to Functions and type any name for the OutputVar and type Screenshot in the Function Name.
  • The first parameter is the name of the file which can be an absolute or relative path and a file with a png extension. You can use variables to have them dynamically named, e.g.: Screen_%A_Now%.png
  • The second parameter are the pipe-separated coordinates in the screen, e.g. 100|200|50|100 (where the 1st is the X position, 2nd is Y position, 3rd is width and 4th is the height, all in pixels).

Example of PMC file:

 1|Screenshot|_null := A_MyDocuments "\Screen_" A_Now ".png", "100¢200¢50¢100"|1|0|Function||||

The ¢ symbol replaces the | in .pmc files and is converted when loaded.

When I take a screenshot of a window area it cuts part of the boarders

The visible area of a window can be affected by your current Theme, but you can adjust the selection to fit the correct area:

  • Go to Settings > Screenshots (you can use the Options button in the Image/Pixel Search command window).
  • Check the option Press Enter to capture. Now when you draw a rectangle it will remain visible in the screen until you press Enter.
  • Use the hotkeys Ctrl + Arrow keys to move the selection area and Shift + Arrow keys to resize it.

Can I record keys when pressed down and released separately?

Yes. To activate recording Key down/up for all keys go to Options > Recording.

Why won't the mouse stay where I recorded it when I play a Macro?

Go to Settings > Playback and make sure that the option Return Mouse to initial position after playback is unchecked.

Can I keep all Hotkeys always active?

Yes, just check the Always Active option in the main window.

Can I use another AHK script to record / play Macros in PMC?

Your script must use the Send command with a higher level to execute the Hotkeys in PMC. Put these two lines on top of it.

#InputLevel, 1
SendLevel, 1

\#InputLevel makes it possible to use Send command from a hotkey in another script and SendLevel allows to use Send command from a subroutine such as a gLabel.

Can I use Functions from my own AutoHotkey Scripts?

Yes. You can load an external .ahk file in the Functions command window to run functions from it and save the results to the Output Variable. You can set a Standard Library File containing your functions in Settings > Misc., this file will be automatically selected when you enter the Function command window.

This feature is limited and can only return 1 string/number value. It's recommended to use User-Defined Functions instead.

Can I make the Playback Hotkeys work on a certain windown only?

Yes, use the Context Sensitive Hotkeys button in the main window.

Why am I getting wrong mouse coordinates?

The default settings for mouse coords are relative to the active window to make clicks point correctly even when the window is in a different position of when Macro was created. When working with multiple windows it may be best to adjust or maximize all windows and change CoordMode to screen (Settings > Defaults).

I can run the program but Macros won't work / cannot take screenshots

Jn some systems Macro Creator requires administrator privileges in order to work properly. Enter the program or shortcut's Properties, select the Compatibility tab (click the Advanced button, if it's a shortcut) and check the "Run as administrator" option.

I'm getting "Error: Invalid hotkey" when I try to launch the program

This is a keyboard language issue. Change the default keyboard layout of your system (global settings) to English and open MacroCreator.


Main Window

Tip: Right-click on an empty area of a Command Window to display links to AutoHotkey online documentation and related contents.

Table of Contents

  • File Menu
  • Macro Menu
  • Commands Menu
  • Function Menu
  • Edit Menu
  • Select Menu
  • View Menu
  • Options Menu
  • Macro List
  • Command Search Bar
  • Insert / Modify
  • Command Line Parameters

File Menu

New

Starts a new Project.

Open

Opens a Project (it can be a PMC file or an AHK file containing a PMC Code).

Save / Save As

Saves current Project in a PMC file including all non-empty Macros.

Recent Files

List of recent PMC files from the windows Recent directory.

Export

Opens the Export Window to save Macros in AHK Script Format.

Preview Script

Opens the Preview Window which shows the current Macro in AHK Script.

Edit Script

Exports the current preview to a script in the Temp folder and opens it in the default editor.
Note: This feature is only meant as a quick export function. PMC is not designed to be an AHK script editor.

Schedule Macros

In this window you can schedule a macro on Windows Task Scheduler. You can select the time to start and how frequent it will run. When select to target the PMC file, it will launch Macro Creator with the selected file and run it automatically in Silent Mode (you can select the target macro to run from your project). When you select to target the AHK file, it will write an ahk script with the current project in the same directory of the pmc file, this script will have no hotkeys which means it will run the first macro automatically (you can run other macros in the same project using Goto/Gosub).

List Variables

Displays user-defined variables and their current contents.

Exit

Closes the application (same effect as the window's Close Button).

Macro Menu

Record

Activates Recording Hotkeys. You can change the hotkeys in the Recording options

Recording options

See Record.

Activate Macros

Activates Playback Hotkeys. You can change the hotkeys for Play, Manual for each macro, as well as Stop and Pause, in the Hotkey Toolbars.

Playback options

See Playback.

Play Current Macro

Runs currently selected Macro immediately without Hotkeys.

Note: An AutoPlay feature is available via command line with the -a parameter: add -a or -aN (where N is the number of the Macro to run) as a parameter to run a Macro on program start-up. The example below would execute the second Macro in the project file.

MacroCreator.exe SavedFile.pmc -a2

Timer

In this window you can run the currently selected Macro repeatedly in a timed interval.

Play once: Runs currently selected Macro one time after the specified time.

Play every X (mili)seconds: Runs it automatically and repeatedly at the specified time interval.

Run immediately: Runs the first time immediately instead of waiting the specified time to start.

The Abort Hotkey can be used to turn the Timer off.
To have other Macros active during Timer check the Always Active option or right-click the TrayMenu icon and select Play.

Deactivate Macros

Disables all hotkeys.

Play From Selected Row

If checked Playback will run each Macro from the first selected row in its list. Valid for all Playback commands.

Play Until Selected Row

If checked Playback will stop each Macro when the first selected row in its list is reached. Valid for all Playback commands.

Play Selected Rows

If checked Playback will only execute selected rows in each Macro. Valid for all Playback commands.

Context Sensitve Hotkeys

Opens the Context Sensitive Hotkeys window. See Playback.

Add Macro

Creates a new Macro tab.

Close Macro

Closes the currently selected Macro tab.

Duplicate Macro

Copies all commands from currently selected Macro to a new tab.

Edit Macros

Opens the Edit Macros window where you can reorder and rename macros. Double click an item to change hotkeys and loops as well. Here you can set hotkeys not supported by the control in the main window, including mouse buttons, for the Play hotkey.

Import Macro

Imports a Project without erasing the current one. All found Macros will be appended to the tab list.

Save Current Macro

Saves the currently selected Macro to a PMC file.

Commands Menu

Opens the Command Windows to insert commands, functions and statements.

Function Menu

Used for User-Defined Functions.

Create Function

Creates a new Function tab.

Add Parameter

Adds a new Function Parameter to the currently selected Function tab. Function parameters can only be added above the [FunctionStart] row.

Add Return

Adds a Function Return to the currently selected Function tab. Function returns can only be added below the [FunctionStart] row.

Convert Macro To Function

Converts the currently selected Macro tab into a Function tab. The selected Macro must not contain any Label, Goto or Gosub commands.

Edit Menu

This menu can also be open by right-clicking on the Macro List.

Edit

When only one row is selected it has tha same behavior as a double-click on a row to enter the command's window for editing. If more then one or no row is selected it opens the Multi-Edit window where you change the target Control and Window, Repeat Loops or Delay for selected rows, and if no row is selected, it applies to all rows. If all checkboxes in the Multi-Edit window are left unchecked it will remove Control and Window from selected (or all) rows. Control and Window will only affect commands that use this column.

Cut Rows

Cut selected Rows.

Copy Rows

Copy selected Rows.

Paste Rows

Paste copied Rows on top of selected rows. Notice that if more than one row is selected, copied content will be pasted on top of each selected row.

Delete Rows

Deletes selected Rows.

Duplicate

Duplicates selected rows in the same list.

Select All

Selects all rows in the current list.

Copy to...

Copies selected rows to a different Macro tab.

Groups

Enables, disables, add and removes groups in Macro lists. To add a new group, select a row, click Add group (you can use the small arrow beside the Groups button in the Edit toolbar), enter a name for the group and press OK. The new group will be added above the first selected row. To rename a group, select the row immediately below it and repeat the same steps.

Move Up

Moves selected rows up.

Move Down

Moves selected rows down.

Undo

Undo one step in History of current Macro.

Redo

Redo one step in History of current Macro.

Find / Replace

This window helps finding and replacing parts of the commands in the Macro List columns. Replacing can be performed in Details, Repeat, Delay, Control, Window, Comment and Color columns only.
To select similar Command Types use the Select Menu.
You can also select rows with the same content in a certain column: select a row and click on the Column Header of the column you want to search and all rows with the same text in it will be selected.
Note: Changing parameters of certain commands may cause misbehavior in Playback. Replace should be used only when and where necessary.

Go to...

Go directly to any macro in the project optionally selecting a line in the list.

Edit Comment

Adds / Changes the comment to be displayed to the right of the line in Exported AHK Scripts on selected rows. Click Insert to add a Comment Block.

Edit Color Mark

Opens a Color-Pick dialog to add or change a custom color mark in the first column cell of selected rows. Customized colors can be saved as a custom palette. To remove a color mark, select White (#FFFFFF).

Insert from Box

See Insert / Modify below.

Insert Keystroke

See Insert / Modify below.

Select Menu

Select All

Selects all rows in the current list.

Select None

Deselects all rows in the current list.

Invert Selection

Switches selected rows with not selected.

Check Selected

Checks (activates) selected rows.

Uncheck Selected

Unchecks (deactivates) selected rows.

Invert Checks

Switches checked rows with unchecked in the selection.

Move Selection Up

Moves the selection of rows up (without moving the rows).

Move Selection Down

Moves the selection of rows down (without moving the rows).

Selected Type

Selects every row with the same Type of the first selected row in the current list.

Command type

Selects every row with a specific Type in the current list.

View Menu

Always On Top

Sets the main window to stay always on top.

Highlight Rows

Enables or disables highlighting for loops and statements. See Macro List below for more information.

Indentation

Double-Click on the Action Column Header or use the View menu to turn this option On/Off. When activated Actions inside Loops or Statements will be shown with indentation.
You can change the default colors in Settings > Misc.

Controls Toolbar

Shows or hides the Controls Toolbar.

Preview Script

Preview panel options.

Toolbars

Shows or hides and customizes Toolbars.

Hotkeys

Shows or hides the Hotkey controls.

Search Bar

Shows or hides the Command Search Bar.

Font Size

Selects the size of the font for the Macros Listviews only.

Reset Columns Size

Resets default column sizes (default sizes are different for maximized and window mode).

Icons Size

Selects the size of the icons on the toolbar. Requires restarting the application.

Reset Layout

Selects/resets one of the standard toolbar layouts.

Options Menu

Settings

Opens the Settings Window where it's possible to configure various options.

Minimize to Tray

If checked will hide the main window when Record or Play button is pressed. You can show the window again from the Tray Menu or the button in the Controls Bar.

Display controls toolbar

If checked will display the Controls Toolbar window when Record or Play button is pressed. It's a smaller window with Playback and Record buttons allow these commands using the mouse. You can also open it from the Macro Menu and TrayIcon.

Capture key presses in this window

Enables or disables capturing of key presses on currently selected Macro List on the Main Window (this option does not affect Recording).

Hotkeys Always Active

Keeps all valid Hotkeys always activated (including Record & Playback).

Shutdown options

Selects an optional action to execute when Playback finishes.

Add the Windows key to *Play* hotkey

If checked adds the Windows Key as modifier to the Play Hotkey. This means that if the Play hotkey is G the actual hotkey will be Win + G.

Joystick

Sets a joystick button to run the Macro. When activated the Play Hotkey box will switch to accept only joystick buttons. Only buttons are detected (axis, pov and others are not). The number before "Joy" is the joystick number and the number after it is the button number, so 2Joy1 is the second joystick's first button.

Set as Default Hotkeys

Sets the currently selected Play hotkeys as default for new projects. You can view the hotkeys in Settings > Playback.

Set as Default File

Sets the currently open project as the file to be opened when the program starts. You can select the file manually in Settings > Defaults.

Remove Default File

Removes the default file currently set (if any).

Default Hotkeys

Resets all Play hotkeys in the current project to default, which are F3|F4|F5|F6|F7.

Default Settings

Resets all settings to default (cannot be undone).

Macro List

All commands of the Macros are displayed in the Macro List (ListView).
They can be added using the Command Windows, by recording your actions or by duplicating items.
To edit an item double-click on it or select the ones you want and press the Edit button at the bottom of the window.
Use the buttons on the edit toolbar (or their shortcuts) to move, delete, duplicate the selected items.
Uncheck the checkboxes in the first column to disable specific actions during playback (they will also be ignored in Preview and Export).

ListView Columns:

  • Index: Position of command in the list.
  • Action: Description or name of the command.
  • Details: Parameters or details of the command.
  • Repeat: Number of times to execute the command.
  • Delay: Time of pause in miliseconds before the next command or repetition.
  • Type: Actual name of the command.
  • Control: Name of the control to where the command will be sent.
  • Window: Name of the window which will be affected by the command.
  • Comment: Optional comment line to display in front of the command when the script is exported to AHK.
  • Color: Saves the color for the Color Mark set to the row (if any).
  • Code line: Line of code in the Preview Window.

Note: The content of each column may vary on certain type of commands.

Quick Select

This feature allows you to select similar rows based on any column from Action to Color. Select any row (if more then one row is selected the first one will be used) and click on a column header to select similar rows based on the cell's text from that column.

Highlight Loops and Statements

Click on the Index Column Header or use the View menu to turn this option On/Off.
When activated, rows inside Loops and text of rows inside Statements will be shown in colors. Also > and * will be placed in front of command's index as representation to help visualize which rows are nested.
> represents Loops and * represents If Statements, so for example N *>*> is equivalent to:

[If]
{
    [Loop]
    {
        [If]
        {
            [Loop]
            {
                [...]
            }
        }
    }
}

You can change the default colors in Settings > General.

Macro Tabs

Pulover's Macro Creator supports multiple Macros / Hotkeys. To create a new Macro, click the + button (Add Macro / Ctrl+T).

When you add or select a Macro in the tab list, the current Hotkeys and Repeat counter for it are displayed on the top-right part of the window.

Macros which have no Hotkey or no line of command will not be activated for Playback.

You can edit the names and order of the tabs in Macro Menu > Edit Macros (Ctrl+Shift+M). You can also drag-and-drop the tab buttons.

Main Loop

The Loop counter at the top-right of the main window sets the number of loops to execute the currently selected Macro. If set to 0, the loop continues indefinitely until a break or return is encountered, or the Stop Key is pressed.

Command Search Bar

Use the search bar to look for a command, function or description. Press Enter to go to result.
If you select one of the entries in the list the corresponding window will be shown. If more than one result or no specific command/function is found the Find a Command window will be show with the results.

Insert / Modify

The edit controls at the bottom of the main window can be used to make quick changes to the rows in the Macro List.

Repeat

This field is used as a quick-edit to set the Repeat number to selected rows using the Apply buttons on the right.

Delay (ms)

Default delay between commands. The number set in this box will be automatically applied to a new added command (except for Mouse and Window commands which have individual default values that can be set in the Settings Window and commands that ignore this parameter).
This field is also used as a quick-edit to set the Delay to selected rows using the Apply buttons on the right.

Insert Box

This box can be used to add key (Send) commands to the list. Click in the box and press the keys or combinations then press the Insert button to add them to the list. You can also use the Insert key as a shortcut when the focus is on the ListView or Insert from Box in the Edit menu. Use Backspace to clear the hotkeys. Press it twice to set Backspace as the hotkey.

Insert Keystroke

Alternative to the Insert Box. Opens a window where you can choose a keyboard key from a list. Double-click or click Insert to insert the key into the selected position. You can also choose to hold (Down) or release (Up) the key.

General Remarks

When you click the Delete or Apply button (for Repeat or Delay) it will affect all selected rows, and if no row is selected it will apply to all rows in the current list.

When adding a new command either by Command Window, Capturing keys or the Insert button if no row is selected they will be added to the end of the list, if one row is selected they will be added on top of that row, and if more then one row is selected a new copy of the command will be added on top of each selected row, except for Loop, and If Statements which will add a Start on top of the first selected row and an End below the last selected row, and for Goto, Label, Break, Continue, Variable Assignment and Functions, which will add only one row on top of the first selected.

Command Line Parameters

Macro Creator supports command line parameters. The format is:

MacroCreator.exe [Filenames] [Parameters]

Parameters:

-p -- Play: Activate Playback Hotkeys on program start-up.

MacroCreator.exe SavedFile.pmc -p

-a or -aN -- AutoPlay: Runs a Macro on program start-up. N is the number of the Macro to run. The example below would execute the second Macro in the project file.

MacroCreator.exe SavedFile.pmc -a2

-t or -tN -- Timer: Runs a Macro automatically and repeatedly at the specified time interval. N is the interval in miliseconds, if not present defaults to 250ms. This paramter may be combined with the -aN to select which Macro to run.

MacroCreator.exe SavedFile.pmc -t -a4

To run the first iteration immediately append an ! to the interval value, e.g. -t5000!.

-c -- Close: Exits the program after the first Macro is executed (normally used with the -a option).

MacroCreator.exe SavedFile.pmc -a -c

-h -- Hide: Hide Main Window on program start-up (right-click the tray icon to show it).

MacroCreator.exe SavedFile.pmc -h

-s or -sN -- Silent: Combines -a, -h and -c parameters.

MacroCreator.exe SavedFile.pmc -s3

-r -- Record: Starts PMC in Recording Mode with current settings.

MacroCreator.exe -b

-b -- Toolbar: Shows Controls Toolbar on start-up.

MacroCreator.exe -b

You can load multiple files with multiple parameters.

MacroCreator.exe File1.pmc File2.pmc File3.pmc -h -p -a3


Record

Table of Contents

  • Introduction
  • Hotkeys
  • Controls Toolbar
  • Recording Options

Introduction

To activate the Recording Hotkeys you have to press the Record Button (unless the "Always Active" option is on, which will activate all hotkeys when the program window is not active). Recording will not start immediately after pressing the Record Button, it will start when you press one of the Hotkeys. This behavior is intended to allow the user to select the desired starting window/control/mouse position before start recording.
You can also activate Recording Hotkeys by right-clicking on the TrayIcon and selecting Record.

Hotkeys

Hotkeys are sometimes referred to as shortcut keys and are used to run/play the macros. Recording Hotkeys are set in the Options > Settings > Recording.

Use Backspace to clear the hotkeys. Press it twice to set Backspace as the hotkey.

Start/Stop Record

Starts recording a Macro using the selected settings (the tray icon will change to) recording state). While recording press this Hotkey again to stop (the tray icon will change to normal state). You can resume and stop recording anytime while the Hotkey is active. The default Hotkey is F9, it can be changed in the Settings Window.
You can also stop Recording by double-clicking the TrayIcon or right-clicking on it and selecting Stop. You can pause/unpause Recording by Middle-Clicking the TrayIcon.

Record New Macro

Creates a new tab on the current project and start a new recording there. If a Macro was being recorded it will be interrupted and started in the new one (without erasing the previously recorded actions). If the Clear List option is on it will clear the current list and start over recording in the same Macro. The default Hotkey is F10, it can be changed in the Settings Window.

Clear List

Sets Record New Macro key to clear the current list instead of creating a new Macro tab.

Controls Toolbar

This small window allows you to control Playback and Recording using an interface in addition to the Hotkeys. It will be displayed when the Playback or Record button is pressed and the Show Controls option is checked or you can open it manually from the Macro Menu, Tray Menu and pressing Ctrl+B on the main window.

Recording Options

To change options click the Options button on the main window or select Options Menu > Settings. Some of the options can also be accessible from the Record Options button on the Controls Toolbar.

Keystrokes

Records Keyboard presses.
Note: You can add or remove the keys (except A-Z) that will be captured in the Misc. tab > Virtual Keys.

Capture key state (Down / Up)

If enabled will capture Key Down and Key Up for every key, instead of only the keystroke, so if you hold the key it will record only one stroke. Control, Shift, Alt and Windows key are recorded as Down/Up regardless of this option.

Record ControlSend

Attempts to record ControlSend instead of normal strokes. This should be tested before making large recordings for it cannot always detect when focus has changed, for example when you use Alt key to access a window's menu.
Note: Recording Control is useful to reproduce actions in the background without moving mouse or losing focus, but it might not work on some windows.

Mouse Clicks

Records Mouse Clicks for Left, Right, Middle, X1 and X2 buttons.

Mouse Wheel

Records Mouse Wheel Up/Down.

Mouse Moves

Records Mouse movements. The Minimum delay sets the amount of idle time (ms) of the mouse to wait before recording the last move (this option should not me changed in most cases).
Note: Recorded Mouse Actions are affected by Mouse Coordinates Settings.

Record ControlClick

Attempts to record ControlClick instead of normal clicks. If a control is found on the click position of the active window it will record the Control and the position relative to the control. If no control is found it will record ControlClick relative to the window.

Relative Record Key

When the selected key is held (or on if the Toggle option is selected) mouse movements and clicks will be recorded relative to initial position. This is useful to reproduce actions based on mouse current position on a window or screen like moving a file or drawing.

Timed Intervals

Records idle time between user actions. This is useful to recreate precise mouse movements and keystrokes. The Minimum delay sets the minimum time (ms) to wait before recording the sleep (this option should not me changed in most cases).
Note: If this option is unchecked the default delay between recorded actions will be set by Delay (ms) box in the main window for Keystrokes and by the Default Settings in Options for Mouse and Windows.

Window Classes

Records the Class of the active window.

Window Titles

Records the Title of the active window.


Playback

Table of Contents

  • Introduction
  • Hotkeys
  • Controls Toolbar
  • Context Sensitive Hotkeys
  • Playback Options

Introduction

To activate the Playback Hotkeys you have to press the Play Button (unless the Always Active option is on, which will activate all hotkeys when the program window is not active). Playback will not start immediately after pressing the Play Button, it will start when you press one of the Active Hotkeys. This behavior is intended to allow the user to select the desired starting window/control/mouse position before start playing.
You can also activate Playback Hotkeys by double-clicking the TrayIcon or right-clicking on it and selecting Play.
Unchecked rows will be ignored during playback. The Play Current Macro button will run the active Macro immediately without activating Hotkeys.

Hotkeys

Hotkeys are sometimes referred to as shortcut keys and are used to run/play the macros. Playback Hotkeys are set in the hotkey toolbars in the main window or in the Edit Macros window (Ctrl+Shift+M).

Use Backspace to clear the hotkeys. Press it twice to set Backspace as the hotkey.

Play

Selects the Play Hotkey to execute the currently selected Macro.
You can make combinations with modifiers such as Ctrl + X.

Note: If you want to use a hotkey that's not supported by this control, you can go to Edit Macros window (Ctrl+Shift+M) and enter a valid hotkey manually. In there you can use any supported AHK hotkey, including mouse buttons and hotstrings.

Hotstrings: Hotstrings may be configured to be used for playback in the Edit Macros window (Ctrl+Shift+M). To define a hotstring, the triggering abbreviation must start pairs of colons as in this example:

::btw

The X option is necessary and will be inserted automatically if not present, so the resulting hotstring would be :X:btw in this case. You can add other options between the colons.

Windows Key: To make combination with the Windows key, check the option Add the Windows key to "Play" hotkey in the Options menu or in the Options toolbar.

Joystick Buttons: To use a Joystick button as the Play Hotkey, check the option Use a joystick button as hotkey in the Options menu or in the Options toolbar.

Manual

Selects the Manual Hotkey to execute the currently selected Macro step-by-step. This is usually used to debug the Macro. If Show Info option is on a tooltip show the last and next steps will be shown next to the mouse pointer. This hotkey cannot be a combination with modifiers.

Stop

Selects the Hotkey to stop execution and return it to start. You can also stop Playback by double-clicking the TrayIcon or right-clicking on it and selecting Stop. You can make combinations with modifiers such as Ctrl + X.

Pause

Selects the Hotkey to pause execution. Press the hotkey again to resume playback. You can also pause/unpause Playback by Middle-Clicking the TrayIcon. You can make combinations with modifiers such as Ctrl + X.

Controls Toolbar

This small window allows you to control Playback and Recording using an interface in addition to the Hotkeys. It will be displayed when the Playback or Record button is pressed and the Show Controls option is checked or you can open it manually from the Macro Menu, Tray Menu and pressing Ctrl+B on the main window.

Multiple Macros

Macro Creator supports multiple Macros / Hotkeys. Each Macro will have its own Auto and Manual Hotkey that are shown when you add/select a Macro tab.

When you press the Play Button (or when the main window is not active if "Always Active" option is on) all valid Hotkeys will be activated for all non-empty Macros. A traytip will be displayed (if Show Info is on) showing how many Play Hotkeys were activated. If any duplicate is found NO Hotkey will be activated.

Debugging Macros

In addition to the Manual Hotkey you can select one of these options from the Macro menu:

Play From Selected Row

If checked Playback will run each Macro from the first selected row in its list. Valid for all Playback commands.

Play Until Selected Row

If checked Playback will stop each Macro when the first selected row in its list is reached. Valid for all Playback commands.

Play Selected Rows

If checked Playback will only execute selected rows in each Macro. Valid for all Playback commands.

You can also view the list of variables and contents from the File menu and Tray Icon menu.

Context Sensitive Hotkeys

Global option will makes all Hotkeys context-sensitive. It can also be set individually for each macro in the Edit Macros window. Macro context takes precedence.

Such hotkeys will only work depending on the type of window that is active or exists, or if an expression is evaluated to true.

Select the type of condition and enter the identification of the window, or use the "Get Window" button to retrieve it.

For the #If Expression option you can provide any valid expression.

#If MyVar ; Hotkeys will only work when MyVar evaluates to True
#If GetKeyState("ScrollLock", "T") ; Hotkeys will only work when the ScrollLock key is on
#If Var1 = "A" || Var1 = "B"

For an expression to be true it must be a number other than 0 or a non-empty string.

You can also use User-defined functions with the #If Expression option.

Global option affects ALL Play Hotkeys.

Both Global and Macro options are saved to the project file (.pmc).

There's a text tip at the bottom-left of the main window to show if it's active globally or for the current macro. To deactivate this option select None in the list.

For more information see AutoHotkey documentation: #IfWinActive and #If.

Playback Options

To change options click the Options button on the main window or select Options Menu > Settings. Some of the options can also be accessible from the Playback Options button on the Controls Toolbar.

Title Match Mode

Sets the matching behavior of the WinTitle parameter in commands such as WinWait.

1: A window's title must start with the specified WinTitle to be a match.
2: A window's title can contain WinTitle anywhere inside it to be a match.
3: A window's title must exactly match WinTitle to be a match.
RegEx: Changes WinTitle, WinText, ExcludeTitle, and ExcludeText to be regular expressions. Do not enclose such expressions in quotes when using them with commands. For example: WinActivate Untitled.*Notepad. RegEx also applies to ahk_class.

Fast: This is the default behavior. Performance may be substantially better than Slow, but certain WinText elements for some types of windows may not be "seen" by the various window commands.
Slow: Can be much slower, but all possible WinText is retrieved from every window as a windowing command searches through them for a match. Window Spy reveals which parts of a Window's text (if any) require the slow mode.

For more information see AutoHotkey documentation.

Detect Hidden Windows

Determines whether invisible windows are "seen" by the program.

For more information see AutoHotkey documentation.

Detect Hidden Text

Determines whether invisible text in a window is "seen" for the purpose of finding the window. This affects commands such as IfWinExist and WinActivate.

For more information see AutoHotkey documentation.

Key send mode

Sets the default method for Keyboard and Mouse actions. You can change this mid-run using the SendMode command available in the Run command window (this will not change the default setting).

For more information see AutoHotkey documentation.

Key delay

Sets the delay that will occur after each keystroke sent by Send and ControlSend. You can change this mid-run using the SetKeyDelay command available in the Run command window (this will not change the default setting).

For more information see AutoHotkey documentation.

Mouse delay

Sets the delay that will occur after each mouse movement or click. You can change this mid-run using the SetMouseDelay command available in the Run command window (this will not change the default setting).

For more information see AutoHotkey documentation.

Control delay

Sets the delay that will occur after each control-modifying command. You can change this mid-run using the SetControlDelay command available in the Run command window (this will not change the default setting).

For more information see AutoHotkey documentation.

Playback Speed Hotkeys

Speed Up: Selects the hotkey to toggle playback speed Up/Normal. When this function is activated, delay values will be cut by value set. Does not work when Random Sleeps is activated.

Slow Down: Selects the hotkey to toggle playback speed Down/Normal. When this function is activated, delay values will be multiplied by value set. Does not work when Random Sleeps is activated.

Display balloon tips

Enables displaying of tooltips and traytips during Recording/Playback.

Do not display errors

Hides error messages from commands, assignments, functions and expressions.

Return Mouse after playback

If checked will return the mouse to the initial position after each Macro Playback that uses mouse movement. This will not work for Manual Playback.

Auto Hide Controls Toolbar

If checked the Controls Toolbar will be automatically shown when a Playback hotkey is pressed and hidden when execution finishes.

Random Sleeps

If checked all delays during playback will be a random value of more or less of the defined percentage, e.g.: if percentage is set to 50, a command with a delay of 300ms will be set to any value between 150ms and 450ms. Percentage can be set in the counter.


Command Windows

Tip: Right-click on an empty area of a Command Window to display links to AutoHotkey online documentation and related contents.

Table of Contents

  • Find a Command
  • Common Fields
  • Mouse
  • Text
  • Control
  • Pause
  • Message Box
  • KeyWait
  • Window
  • Image Search
  • Pixel Search
  • Image to Text (OCR)
  • Run / File / String / Misc.
  • Loop
  • Loop FilePattern
  • Loop Parse
  • Loop Read
  • Loop Registry
  • While-Loop
  • For Loop
  • Until
  • Goto / GoSub
  • Label
  • Set Timer
  • If Statements
  • Variables / Arrays
  • Functions / Array Methods
  • Send Email
  • Download Files
  • Zip/Unzip Files
  • Internet Explorer
  • Expression / COM Interface
  • PostMessage / SendMessage

Find a Command

This window allows you to easily search for a command or function. Simply type a keyword and the results will be displayed in the box below. Double-Click an item or press Enter to open the target window. You can also use the search bar in the main window toolbar.

Common Fields

The following fields appear on some of the Command Windows and will behave the same for all, therefore will be omitted from their parameters.

Repeat

How many times to execute the command. This field is ignored in some commands. This field accepts Variables & Expressions.

Delay

Time to wait before the next command line, except for the Message box and KeyWait command it sets the Timeout, for the Set Timer command it sets the Period. This field is ignored in some of the commands. This field accepts Variables & Expressions.

Control

Selects the target control to send the command. Use the Get button (...) to easily find a control's name: Point the mouse to its location and Right-Click on it. To operate upon a control's HWND (unique ID), leave the Control parameter blank and specify ahk_id %ControlHwnd% for the WinTitle parameter. This field accepts Variables & Expressions.
The Get button automatically fills the Window field as well, using the selected items in WinTitle.

Window

Title, partial title or identifier of a target window. The first parameter is WinTitle, you can add one or more extra parameters separating them by commas: WinTitle, WinText, ExcludeTitle, ExcludeText. You can omit any of those parameters, including WinTitle. This field accepts Variables & Expressions.

WinTitle matching behavior is determined by Title Match Mode and Detect Hidden Windows settings.

The WinTitle button selects what informations to retrieve from a target window (Title/Class/Process/ID/ProcessID) with the Get tool for the WinTitle parameter. Check one or more items in the list and use the Get button (...) to copy the available information from the window.
Note: The options checked only determine what the Get tool will retrieve, it does not affect the command.

Additionally to WinTitle you can also add the following parameters separated by commas:

  • WinText: If present, this parameter must be a substring from a single text element of the target window (as revealed by the included Window Spy utility). Hidden text elements are detected if DetectHiddenText is ON.
  • ExcludeTitle: Windows whose titles include this value will not be considered.
  • ExcludeText: Windows whose text include this value will not be considered.


Break

Exits (terminates) a loop.

Break (F8, F9)

Parameters

LoopNumber
If specified, identifies which loop this statement should apply to by numeric nesting level. If omitted or 1, this statement applies to the innermost loop in which it is enclosed.
This parameter is available when editing the command or adding it from the Run command window. Labels are not yet supported.

Related

Break


Continue

Skips the rest of the current loop iteration and begins a new one.

Continue (F8, F9)

Parameters

LoopNumber
If specified, identifies which loop this statement should apply to by numeric nesting level. If omitted or 1, this statement applies to the innermost loop in which it is enclosed.
This parameter is available when editing the command or adding it from the Run command window. Labels are not yet supported.

Related

Continue


Control

Gathers various control commands. Please refer to AutoHotkey documentation for details on each one.

Control (F4)

Parameters

Value
Second parameter of a Control Command when available. This field accepts Variables & Expressions.
Output Variable
The name of the variable in which to store the result of Cmd. For ControlGetPos the variable you choose will be a prefix to the 4 outputvars. E.g. if you type a variable named "Pos_" the output will be saved to Pos_X, Pos_Y, Pos_W and Pos_H.
Position/Size
Coordinates and sizes to move a control with ControlMove.

Related

Control, ControlFocus, ControlGet, ControlGetFocus, ControlGetPos, ControlGetText, ControlMove, ControlSetText

Download Example

Using Control Commands to Read and Set Text


Download Files

Downloads one or more files from the Internet. All fields accept variables.

Download Files (Shift+F11)

Parameters

Destination folder
The name of the destination folder, which is assumed to be in %A_WorkingDir% if an absolute path isn't specified.
Download links
A list of download links to be downloaded. Separate links by semicolon, comma or line.

Remarks

This function is not guaranteed to work with any Url.

To bypass error messages go to Options > Settings > Playback and check the "Do not display errors" option.

Related

COM, WinHttpRequest object (Microsoft)


Else

Specifies the command(s) to perform if an IF-statement evaluates to FALSE. When more than one command is present, enclose them in a block (braces). For more information see Comparing Variables.

Else (F10)

Remarks

Every use of ELSE must belong to (be associated with) an IF-statement above it. An ELSE always belongs to the nearest unclaimed IF-statement above it unless a block is used to change that behavior.

An ELSE can be followed immediately by any other single command on the same line. This is most often used for "else if" ladders.

An Else If statement must be inside another If block and does not have an EndIf of its own. The pseudo-code below shows the basic If structure in PMC.

[If]
[...]
[Else If]
[...]
[Else]
[...]
[EndIf]

Related

Else

Download example

Comparing Variables in Playback


Expression

Performs one or more operations upon a series of variables, literal strings, and/or literal numbers. For more information see Expressions.

Expression (Shift+F12)

Parameters

Automatically create COM object
Check this option let PMC create (if not yet created) a COM object using the defined CLSID.
Handle
Name of a Handle that will point to the object. You still need to use this Handle in the script to access methods and properties.
CLSID
CLSID or human-readable Prog ID of the COM object to create.
Connect
Attempts to connect the selected Handle with an existing instance of the selected CLSID.
Expression / COM Script
One or more expressions to be executed. You can make assingments, function and object calls, etc. You can enter multiple expressions separated by lines or commas. For details see AHK documentation.
Page Element / Index
Searches for a page element and index on an IE window.
Wait for page to load
Check this option when you expect the page to change after the command when running IE COM scripts. This will execute a function after it to wait for the new page to be completely loaded before continuing, avoiding errors.

Remarks

You can enter multiple expressions separated by line or commas.

You can make math operations, variables and object assignments, as well as function and object calls.

Nearly all operators are supported, including ternary.

The syntax for COM/object calls is the same as in AutoHotkey scripts:

  • Variables must NOT be enclosed in percent signs.
  • Strings MUST be enclosed in quotes.

When you close the application, all references to Active Objects will be lost. To continue working using saved project files you must reconnect to the application by either editing one of the lines containing each handle and use the Connect button to re-create all references, or assigning the Handle to a ComObj function, usually ComObjActive(), though it will not work on all applications.

To bypass error messages go to Options > Settings > Playback and check the "Do not display errors" option.

Related

Expressions, Operators in Expressions, COM, Basic Webpage COM Tutorial, IWebBrowser2 Interface (Microsoft))


For Loop

Repeats a series of commands once for each key-value pair in an object.

For Loop (F9)

Parameters

Key
Name of the variable in which to store the key at the beginning of each iteration.
Value
Name of the variable in which to store the value associated with the current key.
Array Object
An object which contains an array.

Remarks

The Key and Value variables can be named to any others. Both variables will exist inside the loop (and inner loops), showing each of the values on every iteration.

Related

For Loop

Download example

Examples of Loop commands Assigning and retrieving an Array inside Command Parameters


Functions

Executes a Function and assigns the result to a Variable. You can also call object methods in this window.

Functions (Ctrl+F10)

Parameters

Output Variable (Optional)
Name of the Variable in which to store the contents.
Array Object
If checked, the name of an Array/Object on which to call the method.
Use Function from External File
Check this option to select an AutoHotkey Script File (.ahk) containing one or more functions to be used. This feature requires AutoHotkey installed.
See Remarks below for more information.
Function Name
A valid AHK Built-in Function, an existing User-Defined function or one in the selected external .ahk file.
Comma separated parameters

The list of parameters for the function. Notes:

  • Input only the parameters values, without parenthesis.
  • Use Expression format.
  • Do NOT enclose variables in percent signs.
  • Strings MUST be enclosed in quotes.
  • Omitted optional parameters will use their default values.
InStr("AutoHotkey", "o", , , 2)

The function above have 5 possible parameters. In this example parameters 3 and 4 will use the default values.

Remarks

AutoHotkey's Built-in Functions are supported by default. You can also define your own functions inside PMC in User-Defined functions](Functions.html#user-defined-functions) window and run functions from external AutoHotkey Script Files, if you have [AutoHotkey installed.

External Functions

If a Standard Library File is configured it will be automatically loaded when a new command is added.

When you load an external file the program will try to detect possible function names and list them in Function Name field. If the function you want doesn't appear in the list you can still type it manually.

When this feature is used in Playback it will create a temporary .ahk file in the same directory where Macro Creator is installed and run it using AutoHotkey. The result will be copied to the Output Variable and the script will be closed.

If the ahk file containing the function have #include directives they must contain the absolute path for the included files (e.g.: #include c:\lib\myfunction.ahk).

Since those functions are not loaded with Macro Creator they may take longer to execute.

Note: This feature is limited and can only return 1 string/number value. It's recommended to use User-Defined Functions instead.


Goto and Gosub

Jump to a Label or Macro.

Goto and Gosub (Shift+F9)

Parameters

Go to Label
Name of a label (you can select one in the list) to jump to. This field accepts Variables & Expressions.
To use a Macro as label, select the corresponding Macro name in the list.
Goto / Gosub
Sets the command to be used.
Goto jumps to the specified label and continues execution.
Gosub jumps to the specified label and continues execution until Return is encountered or the end of a Macro is reached.

Related

Goto, Gosub


If Statements

Creates a Control of Flow block. The commands enclosed within the If Statement and EndIf will only be executed if the evaluated statement returns TRUE, which can be a number different than 0 or a non-empty string.

If Statements (F10)

Parameters

Options DropdownList

Selects the statement to evaluate. If the statement resolves to true the commands inside below the If Statement will be executed, otherwise they will be skipped until EndIf or an Else is reached.
For Compare Variables the Variable (left of the operator) should NOT be enclosed in percent signs. The Value (right of operator) can be any valid expression when the operator is one of the ones below:

=, ==, <>, !=, >, <, >=, <=.

Strings must be enclosed in quotes.
For the other operators you can use variables enclosed in percent signs or literal strings without quotes.
Evaluate Expression can evaluate any valid expression as true or false. Variables must NOT be enclosed in percent signs. For more information see Expressions.

Add Else
Add an Else Statement. If the If Statement above it resolves to false the commands below it will be executed instead, otherwise they will be skipped until EndIf is reached. This should be placed before the EndIf.
Else If
Creates an Else If statement, which means that the statement must be inside another If block and will be evaluated only if the If before it evaluates to false. When this option is checked the EndIf row will not be created.

Remarks

To evaluate two or more statements you can use the Evaluate Expression option as it supports multiple statements (e.g. Var > 10 && Var < 20) or you can add them in sequence in the list, each one with a corresponding EndIf.

For more details on usage with other commands see Variables.

Related

IfWinActive / IfWinNotActive, IfWinExist / IfWinNotExist, IfExist / IfNotExist, IfInString / IfNotInString, IfMsgBox, If Statements


Image Search

Searches a region of the screen for an image.

Image Search (F7)

Parameters

Start X/Y / End X/Y
Defines the Search area of the screen/window.
Make Screenshot
Use this tool to take a screenshot of an area of the screen (see Instructions for details on usage).
File
Path for the image file, which is assumed to be in the same folder as MacroCreator.exe if an absolute path isn't specified. This field accepts Variables & Expressions.
Search
Opens the File Select dialog to select an Image File.
If found
Selects an action to execute when an image/pixel is found.
To execute a different action Select 'Continue' (or 'Break' to exit the command's loop) and use the 'If Image/Pixel Found' option in the If Statements window.
If not found / Error
Selects an action to execute when an image/pixel is not found or if the command finds an error.
To execute a different action Select 'Continue' (or 'Break' to exit the command's loop) and use the 'If Image/Pixel Not Found' option in the If Statements window.
Add "If Statement"
Automatically adds an If Image/Pixel Found statement below the command. You may select a range of rows to be wrapped by the statement block.
Preview
Previews the selected image.
Double-Click an image to open the file with the associated application.
Variables
Names of the Output variables where to store the X and Y coordinates when found.
Adjust coordinates to the center of the image
Check this option to automatically correct the coordinates in the output variables to the center of the image, instead of the upper-left corner.
Coord
Sets coordinate mode for the search to be relative to either the active window or the screen.
Variations
Specify for n a number between 0 and 255 (inclusive) to indicate the allowed number of shades of variation in either direction for the intensity of the red, green, and blue components of each pixel's color.
Icon
Specify for n a number between 0 and 255 (inclusive) to indicate the allowed number of shades of variation in either direction for the intensity of the red, green, and blue components of each pixel's color.
Transparent
Specify one color within the image that will match any color on the screen.
Scale
Width and height to which to scale the image (this width and height also determines which icon to load from a multi-icon .ICO file).
Repeat until
Loops the command until the image is found or not found, according to the option selected.
When this option is checked you can use the Repeat counter to define the maximum number of times to search. If Repeat is 1, it will loop indefinitely until the image is found/not found or the user stops execution. And if it's a number higher than 1 or a variable, it will loop until the image is found/not found but no more than that number.

Remarks

You may use the variables %FoundX% and %FoundY% (or the ones defined by you) in other commands like Mouse Move & Click when the image/pixel is found. To save the values to a different variable or increment the values, use the Variables window.

Related

ImageSearch

Make Screenshot Tool Instructions

Make Screenshot

  • Click and hold the Draw Button (button can be changed in options) and drag to create a rectangle of the area.
  • Release (or press Enter if set in options) to make the screenshot.

Make Screenshot of a Control

  • Point the mouse to the control area (the control's name should be showing in the tooltip).
  • Click and release the button without moving.

Make Screenshot of Window

  • Point the mouse to an area where no control name is shown.
  • Click and release the button without moving.

Adjust the area of the Screenshot

  • Go to Settings > Screenshots (you can use the Options button in the Image/Pixel Search command window) and check the option Press Enter to capture.
  • Follow on of the instructions above. Now when you draw a rectangle it will remain visible in the screen until you press Enter.
  • Use the hotkeys Ctrl + Arrow keys to move the selection area and Shift + Arrow keys to resize it.

Set Region to the same area of the Screenshot

  • Hold the Alt key in the keyboard right before releasing the mouse button, or pressing Enter, to automatically set the Region area to the same as the area of the screenshot taken.


Image To Text

Convert images on screen, image files, or an image URL to text. This feature relies on tesseract.exe and leptonica_util.exe which are bundled with PMC. The installer is also bundled with English OCR language, and you can download more languages from this command window by clicking the [...] button while this command is selected.

Image To Text (F7)

Parameters

Start X/Y / End X/Y
Defines the Search area of the screen/window.
Output Variable
Name of the Variable in which to store the contents. This field accepts Object references such as Array[1] or Obj.Name.
Languages
Selects the languages to be used in OCR among the available ones. You can also download more languages here.

Remarks

You can also call this function - OCR() - from the Function command window.

Related

Vis2


Internet Explorer

Creates an Internet Explorer COM Object and adds automation commands for it. All fields accept variables, except Commands.

Internet Explorer (F12)

Parameters

Commands
The dropdown list contains some of the most used IE Methods and Properties. Select the correct one to manipulate the browser window or page elements.
Set / Get
Chooses whether to set a value to the object or to copy the element's value to a variable.
Method / Property
If you type a command that is not recognized by the program you have to select whether it's a Method or a Property.
Value
Value to be used by a Method or to be set to a Property. This field accepts Variables & Expressions.
Output Variable
The name of the variable in which to store the value of a Property.
Page Element / Index
Sets the page element and index on which to perform the action. The dropdown list selects the method to be used to identify the element. Use the Get button to easily identify elements of the page.
Wait for page to load
Check this option when you expect the page to change after the command. This will execute a function after it to wait for the new page to be completely loaded before continuing, avoiding errors.

Remarks

When you close the application, all references to Active Windows will be lost, to continue working using saved project files edit one of the lines and use the dropdown list to select the window you'll work with.

Related

COM, Basic Webpage COM Tutorial, IWebBrowser2 Interface (Microsoft))


KeyWait

Waits for a key pressed down.

KeyWait (Ctrl+F5)

Parameters

Wait for Key
Single key to wait for. Macro will remain in sleep state until the selected key is pressed.
Select from list
List of keyboard keys.
Wait Timeout
Defines the limit of time to wait for the input.

Related

KeyWait


Label

A label identifies a line of code, and can be used as a Goto target or to form a subroutine.

Label (Shift+F9)

Parameters

Add Label
A valid name for the new label.
You can use Goto and Gosub to jump directly to this line from any Macro.

Related

Labels


Loop

Loops a section of the Macro enclosed within LoopStart and LoopEnd. Nested Loops are accepted.

Loop (F9)

Parameters

Repeat
How many times to execute the loop section. If set to 0, the loop continues indefinitely until a break or return is encountered, or the Stop Key is pressed. This field accepts Variables & Expressions.

Remarks

The built-in variable A_Index contains the number of the current loop iteration. It contains 1 the first time the loop's body is executed. For the second time, it contains 2; and so on. If an inner loop is enclosed by an outer loop, the inner loop takes precedence.

A Loop command in Playback may perform different then an exported script duo to the method used internally by Macro Creator.

Related

Loop


Loop FilePattern

Retrieves the specified files or folders, one at a time.

Loop FilePattern (F9)

Parameters

File Pattern
The name of a single file or folder, or a wildcard pattern such as C:\Temp*.tmp.
Files
If checked will include files.
Directories
If checked will include directories (folders).
Recurse
If checked will recurse into subdirectories (subfolders).

Remarks

The following variables exist within any file-loop. If an inner file-loop is enclosed by an outer file-loop, the innermost loop's file will take precedence:

  • A_LoopFileName, A_LoopFileExt, A_LoopFileFullPath, A_LoopFileLongPath, A_LoopFileShortPath, A_LoopFileShortName, A_LoopFileDir, A_LoopFileTimeModified, A_LoopFileTimeCreated, A_LoopFileTimeAccessed, A_LoopFileAttrib, A_LoopFileSize, A_LoopFileSizeKB, A_LoopFileSizeMB

For a description of each variable follow the link in the Related section below.

Related

Loop FilePattern

Download Example

Examples of Loop commands


Loop Parse

Retrieves substrings (fields) from a string, one at a time.

Loop Parse (F9)

Parameters

Input Variable
The name of the variable whose contents will be analyzed. Do not enclose the name in percent signs.
Delimiters
If this parameter is blank or omitted, each character of InputVar will be treated as a separate substring.
If this parameter is CSV, InputVar will be parsed in standard comma separated value format.
Otherwise, Delimiters contains one or more characters (case sensitive), each of which is used to determine where the boundaries between substrings occur in InputVar.
Omit Characters
An optional list of characters (case sensitive) to exclude from the beginning and end of each substring.
For example, if OmitChars is %A_Space%%A_Tab%, spaces and tabs will be removed from the beginning and end (but not the middle) of every retrieved substring.

Remarks

The built-in variable A_LoopField exists within any parsing loop. It contains the contents of the current substring (field) from InputVar. If an inner parsing loop is enclosed by an outer parsing loop, the innermost loop's field will take precedence.

A Loop command in Playback may perform different then an exported script duo to the method used internally by Macro Creator.

In Playback all iterations will be performed prior to any commands in the Loop section.

Related

Loop Parse

Download Example

Examples of Loop commands


Loop Read

Retrieves the lines in a text file, one at a time.

Loop Read (F9)

Parameters

Input File
The name of the text file whose contents will be read by the loop.

Remarks

The built-in variable A_LoopReadLine exists within any file-reading loop. It contains the contents of the current line excluding the carriage return and linefeed (rn) that marks the end of the line. If an inner file-reading loop is enclosed by an outer file-reading loop, the innermost loop's file-line will take precedence.

A Loop command in Playback may perform different then an exported script duo to the method used internally by Macro Creator.

In Playback all iterations will be performed prior to any commands in the Loop section.

Related

Loop Read File

Download Example

Examples of Loop commands


Loop Registry

Retrieves the contents of the specified registry subkey, one item at a time. Key must be separated from RootKey by a slash instead of a comma, and both can be contained within a single variable. For example, Loop, Reg, HKLM\Software or Loop, Reg, %FullPathOfKey%.

Loop Registry (F9)

Parameters

Root Key
Must be either HKEY_LOCAL_MACHINE (or HKLM), HKEY_USERS (or HKU), HKEY_CURRENT_USER (or HKCU), HKEY_CLASSES_ROOT (or HKCR), or HKEY_CURRENT_CONFIG (or HKCC).
To access a remote registry, prepend the computer name and a colon, as in this example: \workstation01:HKEY_LOCAL_MACHINE
Key
The name of the key (e.g. Software\SomeApplication). If blank or omitted, the contents of RootKey will be retrieved.
Values
If checked will include Values.
Keys
If checked will include keys.
Recurse
If checked will recurse into subkeys.

Remarks

The following variables exist within any registry-loop. If an inner registry-loop is enclosed by an outer registry-loop, the innermost loop's registry item will take precedence:

  • A_LoopRegName, A_LoopRegType, A_LoopRegKey, A_LoopRegSubKey, A_LoopRegTimeModified

For a description of each variable follow the link in the Related section below.

Related

Loop Registry


Message Box

Displays the specified text in a small window containing two default buttons (OK and Cancel).

Message Box (Shift+F5)

Parameters

Message
Text to display in the message. If the Cancel button is pressed, execution will stop. This field accepts Variables & Expressions.
Title
The title of the message box window. This field accepts Variables & Expressions.
Icon
Sets the icon to be shown on the Message Box.
Buttons
Sets which buttons will be shown on the message box.
Default
Sets the default button.
Always On Top
Sets the message to stay on top of other windows.
Right justified
Make the text right-justified.
Right to Left
Right-to-left reading order for Hebrew/Arabic.
Timeout
Timeout in seconds.
Add "If Statement"
Automatically adds an If Message Box statement below the command. You may select a range of rows to be wrapped by the statement block.

Related

MsgBox


Mouse

Clicks a mouse button at the specified coordinates. It can also hold down a mouse button, turn the mouse wheel, or move the mouse.

Mouse (F2)

Parameters

Action
Selects the Mouse action to execute.
Coordinates
Defines the coordinates of the window or screen where the action will be executed. This field accepts Variables, functions and expressions are not supported.
Note: Mouse Actions are affected by Mouse Coordinates Settings.
Click
Uses the Click. This usually works for most cases.
Send
Uses SendEvent. Use this in case the Click Command doesn't work.
Random coordinates
If checked coordinates of X and Y during playback will be a random value of more or less of the defined offset in pixels.
Offset
Set the offset for the random coordinates in pixels.
Relative
If not used with Control: Coordinates will be treated as an offset from mouse current position.
If used with Control: Unchecked: Click coordinates relative to the target window. Checked: Click coordinates relative to Control's position.
Button
Selects the Mouse Button to send and the event type.
Normal: Sends a normal click.
Hold: Clicks and holds the button.
Release: Releases the button.
Click Count
The number of times to click the mouse. This is not affected by Delay. This field accepts Variables.

Related

Click, ControlClick, MouseClickDrag


Pause

Waits the specified amount of time before continuing.

Pause (F5)

Parameters

Add Pause
The amount of time to pause (choose format in the options below). This field accepts Variables & Expressions.
Miliseconds / Seconds / Minutes
Sets format of time (seconds and minutes will be converted to miliseconds when the command is added).
Random delay
Sets the command use a random value between Minimum and Maximum instead of a predefined value.
Disable random delays for this command
If the global option for *Random delays" is active the command won't be affected.

Related

Sleep


Pixel Search

Searches a region of the screen for a pixel color.

Pixel Search (F7)

Parameters

Start X/Y / End X/Y
Defines the Search area of the screen/window.
Color Picker
Opens the Color Picker Tool. Point the mouse to the desired location and Right-Click to get the pixel code (in RGB format).
ColorID
The decimal or hexadecimal color ID to search for, in Blue-Green-Red (BGR) format. This field accepts Variables & Expressions.
Search
Opens the Windows Color Pick dialog to select a pixel color.
If found
Selects an action to execute when an image/pixel is found.
To execute a different action Select 'Continue' (or 'Break' to exit the command's loop) and use the 'If Image/Pixel Found' option in the If Statements window.
If not found / Error
Selects an action to execute when an image/pixel is not found or if the command finds an error.
To execute a different action Select 'Continue' (or 'Break' to exit the command's loop) and use the 'If Image/Pixel Not Found' option in the If Statements window.
Add "If Statement"
Automatically adds an If Image/Pixel Found statement below the command. You may select a range of rows to be wrapped by the statement block.
Preview
Previews the selected pixel to search.
Variables
Names of the Output variables where to store the X and Y coordinates when found.
Adjust coordinates to the center of the image
Check this option to automatically correct the coordinates in the output variables to the center of the image, instead of the upper-left corner.
Coord
Sets coordinate mode for the search to be relative to either the active window or the screen.
Variations
Specify for n a number between 0 and 255 (inclusive) to indicate the allowed number of shades of variation in either direction for the intensity of the red, green, and blue components of each pixel's color.
Fast
Uses a faster searching method that in most cases dramatically reduces the amount of CPU time used by the search.
RGB
Causes ColorID to be interpreted as an RGB value instead of BGR. This option affects the Color Picker Tool but the retrieved color will be reversed in preview and Color Pick Dialog.
Repeat until
Loops the command until the image is found or not found, according to the option selected.
When this option is checked you can use the Repeat counter to define the maximum number of times to search. If Repeat is 1, it will loop indefinitely until the image is found/not found or the user stops execution. And if it's a number higher than 1 or a variable, it will loop until the image is found/not found but no more than that number.

Remarks

You may use the variables %FoundX% and %FoundY% (or the ones defined by you) in other commands like Mouse Move & Click when the image/pixel is found. To save the values to a different variable or increment the values, use the Variables window.

Related

PixelSearch


PostMessage and SendMessage

Sends a message to a window or control (SendMessage additionally waits for acknowledgement). All fields accept variables.

PostMessage and SendMessage (Ctrl+F12)

Parameters

Message Number
The message number to send.
wParam
The first component of the message.
lParam
The second component of the message.

Related

PostMessage / SendMessage, Message List, Microsoft Docs


Return

Returns from a subroutine to which execution had previously jumped via Gosub.

Return (F8, Shift+F9)

Related

Continue


Run

Gathers various AutoHotkey commands to execute different types of tasks. To get help on each command right-click anywhere on the window and select the corresponding link. For a complete list of commands refer to AutoHotkey documentation.

Run (F8)

Parameters

Parameters Fields
Parameters will vary according to the selected command. All fields should accept Variables & Expressions except for InputVar and OutputVar.

Remarks

Don't use percent signs (%) for variables when the fields name is OutputVar or InputVar, for they should expect a variable already.

Related

Command and Function Index


Send Email

Sends emails using an user-defined account. All fields accept variables.

Send Email (F11)

Parameters

Message
Body of the message. It can be text or HTML.
HTML
Check this option to use HTML format in the email body.
Headers
Standard Email fields.
Attachments
Add and edit file attachments. Add one file per line with the full path. You can drop files in here.

Remarks

You can add and edit accounts clicking on the Email accounts link or in the Settings window.

Accounts informations are saved to UserEmailAccounts.ini located at %AppData%\MacroCreator or at the application folder when in Portable mode.

To use a Gmail account it's necessary to activate allow "Less secure apps access".

Warning: Scripts exported (even if compiled) with the send email function (CDO) will have visible informations of email accounts used, including the password. The PMC project file does not have this information.

To bypass error messages go to Options > Settings > Playback and check the "Do not display errors" option.

Related

COM, CDO (Microsoft))


Set Timer

Causes a subroutine to be launched automatically and repeatedly at a specified time interval.

Set Timer (Ctrl+F9)

Parameters

Label
The name of the label or hotkey label to which to jump. This field accepts Variables & Expressions.
Period
Creates or updates a timer using the absolute value of this parameter as the approximate number of milliseconds that must pass before the timer is executed.
Options
Select the operation to perform with the timer.

Remarks

PMC can execute up to 10 simultaneous timers. Every timer started will be registered in the current session so it can be disabled and re-enabled. To free more slots use the Delete option or Delete all timers link in the Set Timer window.

Related

Labels


Text

Sends simulated keystrokes to a window. It may be used to send raw text or commands. This field accepts Variables & Expressions.

Text (F3)

Parameters

Plain Text (Raw)
Uses SendRaw. The SendRaw command interprets all characters literally rather than translating {Enter} to an ENTER keystroke, ^c to Control-C, etc.
Text with commands
Uses SendInput. When not in raw mode, the following characters are treated as modifiers (these modifiers affect only the very next key): !, +, ^, #.
Set key delay
Uses SendEvent. The rate at which keystrokes are sent is determined by Key Delay.
Paste from Clipboard
Temporarily uses Clipboard to send the text. When the operation is completed, the script restores the original clipboard contents.
Paste on Control
Uses Control, EditPaste. Pastes String at the caret/insert position in an Edit control (this does not affect the contents of the clipboard).
SetText
Uses ControlSetText. Changes the text of a control.
Key delay
Sets the delay that will occur after each keystroke sent in Text with commands mode.
Insert KeyStroke
Opens the Insert Keystroke window where you can choose a keyboard key from a list. Double-click or click Insert to insert the key in the current cursor postion. The key will be inserted in AutoHotkey Send format, only valid for Text with commands option.

Related

Send / SendRaw, ControlSend, ControlSetText, Clipboard


Until

Applies a condition to the continuation of a Loop or For-loop.

Until (F9)

Parameters

Expression
Any valid expression.

Remarks

The expression is evaluated once after each iteration, and is evaluated even if continue was used. If the expression evaluates to false (which is an empty string or the number 0), the loop continues; otherwise, the loop is broken and execution continues at the line following Until.

Related

For Loop

Download example

Examples of Loop commands


Variables

Assigns a value to a Variable using the chosen operator. You can also assign expressions and linear/associative arrays using the "Expression" option. For more information see Variables & Arrays/Objects.

Variables (Shift+F10)

Parameters

Output Variable
Name of the Variable in which to store the contents. This field accepts Object references such as Array[1] or Obj.Name.
Operator
Operator to use in the assignment.
Value

If Expression is not checked, this field accepts strings, numbers and variables enclosed in percent signs. When using Expression, you can enter any valid expression.

X := A string value ; If "Expression" is not checked, you don't need to use quotes for strings.
X := Today is %A_DD%. ; And it's necessary to enclose variables in percent signs.
Expression

If checked, the value will be considered an expression. You can enter any valid expression, which may contain strings enclosed in quotes, variables (not enclosed in percent signs), numbers, math operations, functions and object references, including creating arrays.

X := FoundX + 100 ; Assigns X to the value of FoundX + 100.
X := InStr("AutoHotkey", "y") + 4 ; Assigns X to 14.
X := [10, 20, 30, "String", Variable] ; Creates an array.
X := Array(1, 2, 3) ; Creates an array with the Array function.
Y := X[1] ; Assigns Y to the first value in the X array.
Y += 1 ; Increments Y by 1.
X := {Name: "John", Age: 25}) ; Creates an associative array.
X[Name] := "George" ; Sets the "Name" element of X to "George".
X.Age += 2 ; Adds 2 to the "Age" element of X.

Note: To keep this option enabled by default go to Settings > General and check the option.

Copy
Copies the variable's contents to the Clipboard.
Reset
Erases the variable's contents.

Related

Variables


While Loop

Performs a series of commands repeatedly until the specified expression evaluates to false.

While Loop (F9)

Parameters

Expression
Any valid expression. For example: while x < y.

Remarks

The expression is evaluated once before each iteration. If the expression evaluates to true (which is any result other than an empty string or the number 0), the body of the loop is executed; otherwise, execution jumps to the line following the loop's body.

Related

While Loop

Download example

Examples of Loop commands


Window

Gathers various Window commands. Please refer to AutoHotkey documentation for details on each one.

Window (F6)

Parameters

Value
Second parameter of a Window Command when available. This field accepts Variables & Expressions.
Seconds
Seconds to wait for a Window Command when available. This field accepts Variables & Expressions.
Output Variable
The name of the variable in which to store the result of Cmd. For WinGetPos the variable you choose will be a prefix to the 4 outputvars. E.g. if you type a variable named "Pos_" the output will be saved to Pos_X, Pos_Y, Pos_W and Pos_H.
Position/Size
Coordinates and sizes to move a control with WinMove.

Related

WinActivate, WinActivateBottom, WinClose, WinGet, WinGetClass, WinGetText, WinGetTitle, WinGetPos, WinHide, WinKill, WinMaximize, WinMinimize, WinMinimizeAll / WinMinimizeAllUndo, WinMove, WinRestore, WinSet, WinShow, WinWait, WinWaitActive / WinWaitNotActive, WinWaitClose


Zip Files

Compress or uncompress one or more zip files. All fields accept variables.

Zip Files (Ctrl+F11)

Parameters

Zip files / Unzip files
Select the desired operation.
Destination file/folder
The name of the destination, which is assumed to be in %A_WorkingDir% if an absolute path isn't specified.
Files
A list of files or patterns to be compressed or uncompressed. Separate files by semicolon, comma or line. You can drop files in here.
Compress/Extract each file to different archive/folder
Check this option to have each file/folder compressed or extracted to an individual file/folder.

Remarks

For Zip command you can use file patterns in Files, e.g.: C:\File*.*.

You can extract multiple zip files in the same command.

This function does not support other types of compressed files. For other formats, use the Run command to execute an adequate application.

To bypass error messages go to Options > Settings > Playback and check the "Do not display errors" option.

Related

COM, Shell object (Microsoft)


Variables & Arrays/Objects

Table of Contents

  • Introduction
  • Using Variables
  • Assigning Variables
  • Expressions
  • Comparing Variables
  • Assigning And Retrieving Arrays
  • Built-in Variables
  • Expressions in command parameters

Introduction

Variables are used to hold data. Whether it's a text, number or any other, you can assign a value to a variable and use it with commands and functions. Most commands and functions will output a value as the result of its operation into a variable of your choice, for example the OutputVar of the Random command will be used to hold the randomly gererated number.

Random, Rand, 10, 50 ; The Rand variable will have a number between 10 and 50 after the command executes.

You can use this variable inside another command by enclosing it in percent signs.

Click, 300, %Rand% Left, 1 ; The Y coordinate will be a random number.

To use a variable inside a function parameter or expression, do not enclose it in percent signs.

MyVar := "AutoHotkey"
HK := SubStr(MyVar, 6)

A detailed explanation about Variables can be found at the AHK documentation.

Remarks

Pulover's Macro Creator is written in AutoHotkey language, and so it has internal variables in the same environment as user-defined variables. Therefore if you choose a variable name that's used internally by PMC you may run into inconsistencies and even crash the program.
PMC will warn you with a traytip if it notices you are using some of its reserved words, but it's impossible to monitor every single situation and variable to avoid such conflicts, so it's recommended to follow these guidelines when choosing a variable name:

  • Do not use very short words, such as "a" or "vr". Use variable names that are at least 3 characters long.
  • Do not use variable names starting with numbers or symbols like "_" or "$".
  • Avoid commonly used words like "var", "par", "func", etc.

Using Variables

Any single word enclosed in percent signs (e.g. %MyVar%) inside a string will be converted to the variable's contents during playback. That means you can use variables in Text or MsgBox and other commands. For example you can copy a text and send it using ControlSend or ControlSetText directly from the clipboard.

Today is %A_DDDD% and it's %A_Hour%:%A_Min%.
Clipboard's contents are: %Clipboard%

Download Example: Using Variables inside Command Parameters

Assigning Variables

Most commands and functions outputs variables with the result of its operation. You can also create and modify variables in the Variables window. Type a valid variable name, select one of the operators and input a value.

MyVar := "Some Text"
Counter += 1
NewVar := MyVar " and some text."

Note: This is the correct syntax in AHK, but if you don't have the Expression option checked you can enter values without quotes and use percent signs for variables, e.g.: %MyVar% and some text, and it will be converted for preview and export.

Expressions

Expressions are used to perform one or more operations upon a series of variables, literal strings, and/or literal numbers. With expressions you can execute math operations, functions, assignments and object calls.

In PMC you can execute expressions in the following ways:

  • Entering them in the Expression Window. You can enter multiple expressions separated by lines or commas.
ie := ComObjCreate("InternetExplorer.Application"), ie.Visible := true, ie.Navigate("macrocreator.com") ; This would create an InternetExplorer COM object and navigate to "macrocreator.com"
  • Checking the option Expression in the Variables Window.
MyVar := 30 * 100 / 200 ; This would assign 15 to MyVar
MyVar := Number + 100 ; This would assign the value from variable Number + 100 to MyVar
  • Forcing expression in a command parameter by preceding it with a % and one or more spaces.
% StrLen("Some string") ; This would show 11 in a command parameter

In expressions variables must not be enclosed in percent signs (except to deference) and literal strings must be enclosed in quotes. A complete explanation can be found at AHK documentation.

Remarks

Since version 5.0.0, AutoHotkey Expression format must be used for Function parameters and COM expressions.

PMC files from previous versions are automatically converted, however there might be errors in the converted syntax that will need to be fixed manually.

Some short variable names should be avoided in expressions as they are used internally and will not be correctly evaluated. The names are a, e, i, o, r, s, t, ac, eo, lf, lp, tt and numbered variations of them like a1, a2... tt1, tt2....

Boolean Assignment

To switch a variable's value True <> False use an exclamation in from of the value. This option is only available with the "Expression" option checked.

MyVar := !MyVar

Expressions in command parameters

From AutoHotkey Help File:
Force an expression: An expression can be used in a parameter that does not directly support it (except an OutputVar or InputVar parameter such as those of StringLen) by preceding the expression with a percent sign and a space or tab. If a variable is enclosed in percent signs within an expression (e.g. %Var*), whatever that variable contains is assumed to be the name or partial name of another variable (if there is no such variable, %Var% resolves to a blank string). This is most commonly used to reference pseudo-array elements such as the following example:

FileAppend, % MyArray%i%, My File.txt

Download Example: Accessing a Pseudo-Array inside Command Parameters

Remarks

You can assign User Global Variables with pre-defined contents that will be always available in Playback and for exporting in Settings.

Comparing Variables

To compare variables click the If Statements button, you may select Evaluate Expression to test any valid expresssion or select Compare Variables in the dropdown list. In the edit box you can enter a valid syntax to create the If Statement for comparing such as:

MyVar = 5
Clipboard > %MyVar%

If the result is blank or 0 it's evaluated as false. Any other value, number or string, is evaluated as true.

In the Compare Variables option the Variable field must be a single variable word (not in percent signs) and the Value field you can enter any literal value and variables enclosed in percent signs.

The operators accepted are:

= == <> != > < >= <=

In the Evaluate Expression option you can enter any valid expression, including multiple statements.

MyVar > 10 && MyVar < 20

In expressions variables must not be enclosed in percent signs (except to deference) and literal strings must be enclosed in quotes. A complete explanation can be found at AHK documentation

An Else statement may be used inside the If block and you can create an Else If by checking the option at the bottom of the If Statements window. An Else If statement must be inside another If block and does not have an EndIf of its own. The pseudo-code below shows the basic If structure in PMC.

[If]
[...]
[Else If]
[...]
[Else]
[...]
[EndIf]

Download Example: Comparing Variables in Playback

Assigning And Retrieving Arrays

Pulover's Macro Creator supports objects/arrays. To assign an array you can either go the Variables window, check "Expression" option and add comma separated values inside brackets:

MyArray := [10, 20, aVariable, "aString"])  ; Inside the Variables Assignment window

Or use the Array function in the Functions window. More information about objects can be found at the AHK Documentaion.

You can also assign Associative arrays in the Variables window. With the "Expression" option checked, enter keys and values in the following format:

{key1: "string value", key2: varValue}

To retrieve an array inside a command use the same method as Dynamic Variable Reference by preceding the parameter with a percent sign and the following syntaxes:

% MyArray[1]
% MyArray[X] ; For arrays it's not necessary to enclose variables in percent signs.
% MyArray[Var] ; The key/index can be a variable, number, string or expression.
% MyArray["Type"]
% MyArray.Name ; Dotted syntax is also supported, and you can mix both brackets and dots too.

You can access the number of items inside the array using the Length() method in the Variables Assignment window when the "Expression" option is checked:

MyArray := [10, 20, 30] ; Assign an array inside
ArrayCount := MyArray.Length() ; Returns 3
ArrayCount := MyArray.Length() + 1 ; Returns 4

The Output Variable field in Variables and Functions window, and the Object Array field in Functions window also accept array elements:

MyArray[1] := "New value"
Family.Father.Name := "John"

You can also get a reference to Length inside a Dynamic References:

% MyArray.Length() ; Inside any command.

A For-Loop can be used to retrieve the values one by one (an example is included in the link below).

Download Example: Assigning and retrieving Arrays

Built-in Variables

Built-in Variables can be used inside the program to reference dynamic information. A list of these Variables with their description can be found in the AutoHotkey documentation.
You can also insert Built-in Variables into command window fields by right-clicking on any empty area and selecting the Built-in Variables submenu where you'll find them divided in categories. Select one of them it will be inserted in the Carater-Insert position (already enclosed in percent signs).


Functions

Table of Contents

  • Introduction
  • Calling Functions
  • Function parameters
  • Array/Object Methods
  • User-Defined Functions
  • Run Function from External AHK File

Introduction

Similarly to Variables it's also possible to do function calls and use their outputs in Playback. A function is similar to a subroutine (like calling a macro tab with Gosub) except that it can accept parameters (inputs) from its caller. In addition, a function may optionally return a value to its caller. PMC supports most every AHK built-in function and, just like in AHK scripts, you can define your own functions, with return values, ByRef parameters, local/global/static variables. Even recursive calls are supported. A detailed explanation can be found at AHK documentation

Calling Functions

To call a function, you can go to the Functions command window and select the name of the function to be called in the combobox. Type the parameters (if any) in the last field separated by commas in AHK Expressions syntax (do not enclose variables in percent signs and enclose literal strings in quotes). You can optionally type in a variable to receive the functions return value.

To call a Function inside a command's parameter you have to use the same method as Dynamic Variables, preceding the parameter with a percent sign and a space or tab:

% StrLen("Some Text")
% SubStr(MyVar, 3, 7)
% "Result is: " RegExReplace(Variable, "_", A_Space)

Download Example: Using Functions inside Command Parameters

Function parameters

A Function parameter can be a variable, a number, a string enclosed in quotes or an expression. In expressions variables must not be enclosed in percent signs (except to deference) and literal strings must be enclosed in quotes. You can even use another function call as a function parameter. A complete explanation can be found at AHK documentation

Array/Object Methods

Default object methods are supported, To call a method for an array object, go to Functions window and check the Array Object option. In that field, enter the name of an object. Select the method and enter the parameters (if any). You can enter an output variable for the returned value.

You can also call object methods inside a command's parameter:

% MyArray.Length()
% MyArray.Push(Var1, Var2)

User-Defined Functions

You can create your own functions inside PMC. They should work consistent with user-defined functions in AHK in most cases. That means you can execute commands inside them, create and change variables and objects and, most important, return values from it to be used in your scripts. ByRef parameters are supported, as well as local/global/static variables and recursive calls.

To create a function, click the Create Function button on the toolbar. You'll be prompted to choose a name for your function. In the same you window you can define the scope (local or global), a few parameters with optional default values for them and global/local and static variables. After pressing OK a new tab will be created as a function, where you can add more parameters using the Add Parameter button and the commands below the Function line. You can also go to Function menu > Convert Macro To Function (the selected macro must not contain any Label, Goto or Gosub commands).

Remarks

In PMC default values of local and static variables must be one of the following: True, False, a string or a number (integer or float). Variables and objects are not supported.

Parameters

In the Add Parameters window you can insert more parameters with default values. Adding a default value to a parameter makes it optional, which means it can be skipped in the call and the default value will be used.
If one parameter is made optional, all following parameters must be optional too.
A parameter default value must be one of the following: True, False, a string or a number (integer or float). To set a blank string as the default value, select _blank in the list.
No need to quote strings. Variables are not allowed as default values.
Check the ByRef option to make the parameter behave as an alias for the variable passed in from the caller.

Function parameters can only be added above the [FunctionStart] row.

Return

Use the Add Return button to define return values for the function.
The return value must be an expression.
To return more than one value, use ByRef parameters or an Array/Object.

Function return can only be added below the [FunctionStart] row.

Download Example: User-Defined Functions
Download Example: Display random array element from a function call

Remarks

In AutoHotkey scripts it's possible to use Labels, Goto and Gosub inside functions, however in Macro Creator those commands are simulated within the playback internal function, so to avoid loss of information those commands are not allowed inside functions.

Run Function from External AHK File

If you have AutoHotkey installed, you can call a function from an external .ahk file. Go to Funtions window and check the Use Function from External File option. Choose the file containing the funtions and select the name of the function, its parameters and a variable to receive the return value.

Note: This feature is very limited as it can only receive one return value and it does not support objects or ByRef parameters. It's recommended to rewrite the function using an User-Defined function whenever possible.


Export Window

Export

Table of Contents

  • Introduction
  • Macros
  • Context Sensitive Hotkeys
  • Destination File
  • Options

Introduction

Exports selected Macros to a working AutoHotkey Script file (*.ahk), optionally converting the script to an executable (EXE) file (requires the latest version of AutoHotkey installed).

Macros

Select Macros to be exported. Empty Macros and unchecked rows will be ignored. You can click and drag items and double-click to open the edit window.

Macro

Name of the label used for the macro (leave blank to remove it from the exported script).

Hotkey

Selects the Hotkey (AutoHotkey format) to execute the Macro. Here you can use Hotkeys that are not allowed for playback like RButton. You also edit the Hotkey directly in the list by either selecting the row and pressing F2 or you can click a row once to select it, wait at least half a second, then click the same row again to edit it.

Loop

Number of times to execute this Macro.

Block Mouse

AddslockInput, MouseMove`. The mouse cursor will not move in response to the user's physical movement of the mouse during execution.

Stop

Adds a Hotkey with the ÈxitApp`command.

Pause

Adds a Hotkey with the Pausecommand.

Destination File

Export to

Selects the destination file to export selected Macros.

Indentation

Use Tab-Indentation for Loops and If Statements.

Comment out unchecked rows

Keeps unchecked rows in the macro as commented out script, instead of not exporting them.

Do not concatenate Send commands

Exports sequences of Send commands in one line each and uses Loop for repeats.

Convert line breaks

Converts line break symbols (`n) in command parameters to real line breaks.

Include PMC Code

Includes a copy of the PMC code for each selected Macro at the end of the exported script to allow them to be loaded in Macro Creator by opening the ahk file from it. This will not affect the exported script execution.

Create EXE File

Runs Ahk2Exe Compiler after exporting the script to create an Executable File. The EXE file will be saved to the same folder as the script.
Once a script is compiled, it becomes a standalone executable; that is, it can be used even on machines where AutoHotkey is not installed (and such EXEs can be distributed or sold with no restrictions).
Note: This feature requires the latest version of AutoHotkey installed. The Ahk2Exe file must be present in the Compiler folder inside AutoHotkey installation folder, if the file is not found the EXE will not be created (no error will be shown).

Custom icon

Optional *.ico file to be used as the exported EXE file custom icon.

Context Sensitive Hotkeys

Makes hotkeys and hotstrings work depending on the type of window that is active or exists, or if an expression evaluates to true. For more information see Playback.

Related

#IfWinActive, #If

Options

Changes various options for the exported script's Auto-Execute Section. For more information see AutoHotkey documentation.

#Include

Includes in the script files with external functions using the #Include directive, when they are present in one of the exported macros.

Global Variables

If you have defined User Global Variables you can select which of them will be included in the exported file. They will be added to the Auto-execute section.

Speed

Increases or decreases the delay of Sleep (Pause) commands in exported scripts.

COM Objects

Default behavior for the Automatically create COM object option in Expression window. ComObjCreate will create a new COM object based with the given CLSID, while ComObjActive will try to connect to an existing instance of the application.

Related

Hotkeys, Hotstrings, List of Keys, ComObjCreate, ComObjActive, Auto-execute Section, #IfWinActive / #IfWinExist, #If


Preview Window

Preview

Table of Contents

  • Introduction
  • Buttons & Options

Introduction

Displays a preview of the Macro in AutoHotkey Script format.
You can copy the code from this window to use on your AutoHotkey Scripts without the need to export.
Unchecked rows will be removed from preview script or commented out, if this option is checked.

Buttons & Options

Copy

Copies the entire currently displaying content of Preview Window to Clipboard.

Refresh

Updates the content of Preview Window to the active Macro.

Auto-Refresh

Automatically refreshes the code whenever the active Macro is changed (except during recording or key capture).

Go to selected line

Selects the portion of the code corresponding to the selected row(s) in the list.

Auto-select code

Automatically selects the portion of the code corresponding to the selected row(s) in the list.

Indentation

Uses Tab-Indentation for Loops and If Statements.

Convert Line Breaks

Converts line break symbols (`n) in command parameters to real line breaks.

Comment out unchecked rows

Keeps unchecked rows in the macro as commented out script, instead of not exporting them.

Show groups as comments

Adds group names as single-line comments in the preview/exported script.

Line Wrap

Automatically add a line break to long lines.

Font Size

Selects the size of the font.

Always On Top

Keeps this window on top. This may be used to watch code creation during Recording.

Edit Script

Exports the current preview to a script in the Temp folder and opens it in the default editor.
Note: This feature is only meant as a quick export function. PMC is not designed to be an AHK script editor.

Dock/Undock

Docks/undocks the Preview window to/from the Main window.


Settings

Table of Contents

  • Introduction
  • General
  • Recording
  • Playback
  • Defaults
  • Screenshots
  • Email accounts
  • Language
  • Language Editor
  • User Global Variables

Introduction

All settings are saved to MacroCreator.ini, User Global Variables are saved to UserGlobalVars.ini and Email accounts are saved to UserEmailAccounts.ini. Those files are located inside AppData\MacroCreator by default. To make Macro Creator portable you can copy those files to the same directory of MacroCreator.exe and it will use its own folder instead of AppData.

General

Create backups automatically

If enabled the program will automatically create a backup file of the active project everytime the a change is made to one of the Macro Lists.

Display Controls Bar on start-up

If checked will display the Controls bar upon every start.

Allow Multiple Instances

Determines whether Macro Creator is allowed to run concurrent instances.

Remove Theme from Toolbars

Removes the current theme colors from the main window toolbars (you must restart the application to apply the changes).

Use Expression by default for Variables Assignment

Determines whether the Expression option will be enabled by default for new Variable Assignments.

Display confirmation when closing a macro

Enables / Disables prompt before closing a macro.

Action of main window's close button

Determines whether to close the application or minimize it to tray when the close button on the title bar is clicked or Alt+F4 is pressed.

Hightlight Loops and Statements

Click on the Index Column Header or use the View menu to turn this option On/Off.
When activated, rows inside Loops and text of rows inside Statements will be shown in colors. Also > and * will be placed in front of command's index as representation to help visualize which rows are nested.
> represents Loops and * represents If Statements, so for example N *>*> is equivalent to:

[If]
{
    [Loop]
    {
        [If]
        {
            [Loop]
            {
                [...]
            }
        }
    }
}

You can change the default colors clicking on the color shown here and picking a new one from the selector.

Show Indentation for Loops and Statements

When activated Actions inside Loops or Statements will be shown with indentation.
You can also double-click on the Action Column Header to turn this option On/Off.

Virtual Keys

System keys and Modifiers that will be recognized during Recording and when Capture keys is enabled. If your keyboard layout has a key that is not being captured, press it once and click the Key History button to see its VK and SC codes. You can add them to the list as {VKnn}, {SCnn} or {VKnnSCnn}.

Recording

See Record Page.

Playback

See Playback Page.

Defaults

Mouse Coordinates

Sets coordinate mode for Mouse commands and records to be relative to either the active window, screen or client area. This option is global and will affect both Recording and Playback so it should be set before adding any commands for the project.
Note: This setting will be saved to the PMC file.

Default Mouse Delay

Sets the default delay added for each new Mouse Command. This affects new commands added from the Mouse Command window and will only affect the recorder if 'Timed Intervals' is disabled.

Default Window Delay

Sets the default delay added for each new Window (Set) Command. This affects new commands added from the Window Command window and the recorder.

Max History per Macro

Sets the maximum History steps to keep for each macro. Changing this might have little impact in performance. It's recommended to restart Macro Creator after changing this setting.

Clear History

Clears and resets History for all Macros.

Default Script Editor

Sets a default editor to open Script with the Edit Script button in the Preview window.

Default Macro File

If a valid file with a PMC code is set it will be loaded on program start up.

Standard Library File

Sets an AutoHotkey script file to be loaded automatically in the Functions window to be used as External File Function.

Screenshots

Draw Button

Selects the Draw Button to be used for Screenshots tool and Get Area in Image Search.

Line Width (Px)

Defines the pixel width of the rectangle when using the Image/Pixel Search are and Screenshots tool.

Color

Selects the color of the rectangle used to define Image/Pixel Search area and Screenshots.

Capture on release

Captures Screenshots when the Draw button is released.

Press Enter to capture

Waits for the user to press Enter to confirm the rectangle area of the Screenshot. Enabling this option allows you to adjust the search/capture area using hotkeys (Ctrl + Arrow keys to move the selection area and Shift + Arrow keys to resize it).

Screenshots Directory

Selects the default folder for Screenshots taken.

Email accounts

Here you can add and test email accounts to be used with the Send Email feature. The information will be saved to the file UserEmailAccounts.ini in AppData folder, or the application folder in Portable Mode. The fields are standard email client fields so they won't be detailed here.

You can add, edit, remove and reorder the accounts here, as well as send a test message.

Remarks

Accounts informations are saved to UserEmailAccounts.ini located at %AppData%\MacroCreator or at the application folder when in Portable mode.

To use a Gmail account it's necessary to activate allow "Less secure apps access".

Warning: Scripts exported (even if compiled) with the send email function (CDO) will have visible informations of email accounts used, including the password. The PMC project file does not have this information.

Language

Here you can choose the interface language.

Language Editor

Here you can make corrections to the translations (or even create a new one) and submit your revisions.
A new version of the language files may be released at any time independent of application releases, so feel free to submit any number of corrections as many times as you want. Credits will be given on the official website. If don't wish to be credited, just say it in the message.

User Global Variables

Here you can define global variables that will be available during Playback. They may be used as constants so you can always call them from inside a command.

The variables defined here will always be available inside User-Defined Functions, even when scope is Local.

User defined variables are saved to an INI file in the AppData\MacroCreator folder (it can also be edited in external text editors).

Format is the same used for non-expression assignments in AutoHotkey or the one found in standard INI files.

They can also be included in exported scripts by checking Global Variables option in the Export Window.

You can separate your variables in groups using INI format Sections with title enclosed in brocks. Use the button in the Export Window to select which Variables or Sections will be exported.

Example of User Global Variables list:

[Section1]
aVar1 = Value1
aVar2 = Value3
aVar3 = Value2
[Section2]
bVar1 = Value1
bVar2 = Value3
bVar3 = Value2


About & Changes

Pulover's Macro Creator

The Complete Automation Tool

www.macrocreator.com
Forum

Author: Pulover [Rodolfo U. Batista]
Copyright © 2012-2021 Cloversoft Serviços de Informática Ltda

Version: 5.4.1
Release Date: September, 2021
AutoHotkey Version: 1.1.33.09

Software License: GNU General Public License

Thanks to

Chris and Lexikos for AutoHotkey.
tic (Tariq Porter) for his GDI+ Library.
tkoi & majkinetor for the ILButton function.
just me for LV_Colors Class, LV_EX/IL_EX libraries and for updating ILButton to 64bit.
Micahs for the base code of the Drag-Rows function.
jaco0646 for the function to make hotkey controls detect other keys.
Uberi for the ExprEval function to solve expressions.
Jethrow for the IEGet & WBGet functions.
RaptorX for the Scintilla Wrapper for AHK.
majkinetor for the Dlg_Color function.
rbrtryn for the ChooseColor function.
PhiLho and skwire for the function to Get/Set the order of columns.
fincs for GenDocs and SciLexer.dll custom builds.
tmplinshi for the CreateFormData function.
iseahound (Edison Hua) for the Vis2 function used for OCR.
Coco for JSON class.
Thiago Talma for some improvements to the code, debugging and many suggestions.
chosen1ft for suggestions and testing.
Translation revisions.

Change Log

Version 5.4.1

  • Added a sleep when collecting data to save project to improve reliability.
  • Fixed bug with escaped characters in expressions.
  • Fixed Until option unchecked when editting a loop command.
  • Fixed bug when selecting some options in the Speed Up/Down menus.

Version 5.4.0

  • Fixed missing or mixed rows when importing files.
  • Automatically adding escape char in delimiter em omit chars in Loop window.

Version 5.3.9

  • Fixed bug in Get-Area button in Image/Pixel Search window.

Version 5.3.8

  • Fixed bug with named operators.
  • Fixed scroll bug during operations with groups enabled.

Version 5.3.7

  • Fixed A_ variables not accessible in nested Loop commands.
  • Fixed bugs with quotes in expressions.

Version 5.3.6

  • Fixed bug with multiple compare operators.
  • Fixed issue with variables and strings in expressions.
  • Fixed other groups expanding when inserting new group.
  • Small bug fixes.

Version 5.3.5

  • Updated max value for Pause (Sleep) command.
  • Project's exe custom icon path is now saved to PMC file.
  • Fixed bugs with objects and strings inside objects.
  • Fixed small bugs.

Version 5.3.4

  • Fixed strings being evaluated as math operations in expressions.

Version 5.3.3

  • Fixed bug in Else If statements nested in other statements.
  • Fixed empty return value from Object/Array method call from Function window.

Version 5.3.2

  • Fixed bug in Function Return.

Version 5.3.1

  • Added Random coordinates option in Mouse command window.
  • Added Custom icon option for exported EXE in Export window.
  • Fixed bug in Compare variables of If Statements window with built-in variables.
  • Fixed bugs in subtraction operations in expressions.
  • Fixed bug in scoped variables in functions.
  • Fixed ListVars not showing local variables inside functions.
  • Fixed OutputVars of MouseGetPos not showing in ListVars.

Version 5.3.0

  • Fixed bug in Compare variables of If Statements window.

Version 5.2.9

  • Updated Compare variables in If Statements window to use expressions with symbols operators only.
  • Fixed bugs in duplicate and paste in groups.
  • Fixed mixed history when adding slots after using undo.
  • Fixed escaped percent signs in strings (`%) being wrongly converted to variables during playback.

Version 5.2.8

  • Added option to show Group names as comments in View menu > Preview Script and Preview toolbar.
  • Fixed A_ variables not working as InputVar parameter for commands.
  • Fixed Expand all groups not working.
  • Fixed some hotkeys not updating the Play hotkey.
  • Fixed problem with subtraction in expressions.
  • Fixed global context condition being set to macro context.

Version 5.2.7

  • Added support for &, *, ~ and Up as modifier symbols for Play hotkey.
  • Added support for setting Hotstrings to execute macros in Edit Macros window.
  • Added support for Image to Text from image file in Image Search command window.
  • Fixed blank ListViews after adding a macro with groups enabled.
  • Fixed groups not showing in duplicated macros.
  • Fixed mixing content when editing macros after duplicating a list.
  • Fixed bug with commas in WinTitle (must be escaped).
  • Fixed small bugs.

Version 5.2.6

  • Fixed error when exporting to exe.
  • Fixed hotkeys not being activated.

Version 5.2.3

  • Updated exported Compare variables from If Statements window to use expression.
  • Global Context Hotkey is now saved in project file instead of ini file.
  • Fixed Function Return ignoring if statements.
  • Fixed bug with similar numeric Play hotkeys.
  • Fixed bugs in Expressions.
  • Fixed various bugs.

Version 5.2.1

  • Fixed inconsistency in exported OCR() function from Image To Text.
  • Fixed bug when using Apply button in command windows.

Version 5.2.0

  • Added new feature: Image to Text (OCR) in Image Search command window.
  • Added support for defining any hotkey for Play manually in Edit Macros window.
  • Added Go to command in edit menu.
  • Added font size setting for macro list in view menu.
  • Added font size setting for preview panel.
  • Fixed bug when closing macro tab.
  • Fixed bugs.

Version 5.1.3

  • Fixed bugs in Capture key presses feature.
  • Fixed bugs when recording keystrokes.

Version 5.1.2

  • Added Go to selected line button and Auto-select code on Preview window.
  • Added per-macro Context Sensitve Hotkeys.
  • Added support for OutputVar in Function window for RegExMatch, RegExReplace and StrReplace.
  • Improved performance of Text::Paste from Clipboard.
  • Fixed INI and REG commands not working when omitting optional parameters.
  • Fixed bug in Adjust coordinates to the center of the image option in Image Search.
  • Fixed mixing rows bug when saving a project (thanks to chosen1ft).
  • Fixed reordered macros exported in the wrong order.
  • Fixed bug when closing macro tab.
  • Fixed bugs and crashes.

Version 5.0.5

  • Fixed bug in expressions when assigning a variable to a ternary operation.

Version 5.0.4

  • Fixed wrong options set for Message Box when editing the command.

Version 5.0.3

  • Fixed wrong rows executed in loops after gosub or goto.
  • Fixed missing value field in exported Control and ControlGet commands.
  • Fixed hidden Main Loop band reappearing after gui resize or minimizing/maximizing.
  • Fixed bug in Copy to... feature.
  • Fixed Delete key not working as hotkey.

Version 5.0.2

  • Improved performance when Groups are enabled.
  • Changed behavior of Repeat Until option in Image/Pixel Search to allow max repeat number.
  • Fixed global variables cleared after user-defined function calls inside expressions.
  • Fixed local function variables not restored to global scope after call.
  • Fixed expressions being executed twice in commands.
  • Fixed identical function or object calls in expressions being executed only once.
  • Fixed mixed rows data after closing a Macro tab.
  • Fixed some fields of Send Email, Download Files and Zip/Unzip Files not working with variables.
  • Fixed Macro Lists being cleared after reordering function tabs by drag-and-drop or from the Edit Macros window.
  • Fixed hotkeys sometimes not activated.
  • Fixed some rows eventually not executed due to thread issue.
  • Fixed collapsed groups expanded after editing the Macro list.
  • Fixed error message when submitting translation revisions.
  • Boolean assignment is only supported with Expression option now.
  • Reverted SciLexer.dll to previous version due to crashes.

Version 5.0.1

  • Improved performance of Macro List operations.
  • Increased max Speed settings for playback and export to 256x.
  • Added Incremental option to delay in the Multi-Edit window.
  • Fixed application not responsive when loading large project files.
  • Fixed If string [not] contains statement not working with A_Loop variables.
  • Fixed context menus not showing in main window after drag-and-drop operation.
  • Fixed Recording Options menu not updating.
  • Fixed problems saving projects with large macros.
  • Fixed Save as not working.
  • Fixed Target Label not found error.
  • Fixed Goto, Gosub and Set Timer commands not accepting force expression syntax.
  • Fixed Speed settings not corrected exported when using Indentation.

Version 5.0.0

  • New feature: User Defined Functions.
  • New feature: SetTimer command.
  • New feature: While-Loop in Loop Command window.
  • New feature: For-Loop in Loop Command window.
  • New feature: Until in Loop Command window.
  • New feature: Send Email function.
  • New feature: Download Files function.
  • New feature: Zip / Unzip Files function.
  • New feature: Listview Groups (+WinVista).
  • Implemented real AutoHotkey format expressions in Functions, Methods, Variable Assignment, Evaluate Expression, COM Interface and command parameters started with % .
  • Multiple If Statements are now supported in Evaluate Expression (e.g.: var = 5 || var = "a").
  • Function parameter can now be another function, array, array element or expression.
  • Added Else If Statement option.
  • Loops now work in Manual Playback.
  • Added support for array assignment.
  • Added support for Associative Arrays assignment.
  • Added support for array methods in Functions window.
  • Added support for Multi-Dimensional Arrays.
  • Added support for named keys in arrays (e.g.: N["key"] or N.key, MyArray.1 := OtherArray.Name).
  • Added support for array methods.
  • Added support for #If Expression in Context Sensitive Hotkeys.
  • Added GetElementsByClassName option in InternetExplorer/COM Get Element Tool.
  • Added var [not] in, var [not] contains, var [not] between and var is in Compare Variables If Statement.
  • Added WinTitle, WinText, ExcludeTitle and ExcludeText to If Window... statements.
  • Added options to set TitleMatchMode, DetectHiddenWindows and DetectHiddenText.
  • Added options to set SendMode, KeyDelay, MouseDelay and ControlDelay.
  • Added Client mode for Mouse and Pixel/Image Search coordinates.
  • Added option to center coordinates of ImageSearch results.
  • Added option to change color of the rectangle of Image/Pixel Search area and Screenshots tool.
  • Added Insert Comment Block to "Edit Comment" window.
  • Added option to comment out unchecked rows in Preview/Exported scripts.
  • Added new translations.
  • Added Language editor in Settings window with submit form.
  • Languages files are now kept in the Lang folder and can be added, modified or removed.
  • Updated Loop, File and Loop, Reg to new format with Mode parameter.
  • Changed List Variables to display User-Defined variables only.
  • Extended Backup system to update backup file with every change.
  • Fixed corrupted pmc files saved on exit.
  • Fixed hotkeys not being automatically disabled when changed.
  • Fixed bug with recording of mouse buttons.
  • Fixed bug with WinWait timeout.
  • Fixed bugs with IE/COM Interface.
  • Fixed bugs with commas in command parameters.
  • Fixed issues with Schedule Macros.
  • Fixed default editor not set correctly on first run.

Version 4.1.3

  • Fixed Macro List redrawing issue.
  • Fixed wrong Invalid address message on export.

Version 4.1.2

  • Added Options toolbar items to Options Menu.
  • Added support for WinHttp.WinHttpRequest.5.1 object methods in COM Interface.
  • Added debugging messages for missing "End Loop" and "End If" statements (highlighting must be enabled).
  • Added Deactivate Macros command to Macro, Play Button and Tray Icon menus.
  • Changed commands, except Send and Click, to not stop playback when main window is active.
  • Fixed bug with Pause button of Controls Toolbar.
  • Fixed bug with Gosub command inside loops.
  • Fixed bug with A_Loop variables in Compare Variables statement.
  • Fixed bug with A_Space variable in Functions.
  • Fixed escaped comma bug in Assign Variable command.
  • Fixed Get Coordinates tool in Image/Pixel Search window not getting correct values in Window Coord mode.
  • Fixed Copy to command not copying Comment and Color fields.
  • Fixed some minor bugs.

Version 4.1.1

  • Detects default AHK editor on first run.
  • Fixed command line parameters not working for MacroCreatorPortable.exe.
  • Fixed bugs.

Version 4.1.0

  • Added tool to schedule macros in Windows Task Scheduler.
  • Added shortcuts to insert built-in variables in command windows context-menu.
  • Added Filter by type button in Run command window.
  • Added Right-Click-Drag Move/Copy menu.
  • Added Play Sound option to Image/Pixel Search result actions.
  • Added Launcher to portable version (automatically updates INI and selects between x86 and x64 based on Windows version).
  • Fixed issues with command line parameters.
  • Fixed bugs.

Version 4.0.0

  • New Interface with customizable toolbars.
  • New Preview window with syntax highlighting.
  • Added Find a command window.
  • Added tips in command windows.
  • Added more options to Message window.
  • Added Edit Macros window.
  • Added Drag-Macros feature.
  • Added Close and Edit menu when clicking over a Macro tab.
  • Added Close with Mouse Middle click over a Macro tab.
  • Added Loop until option in Image/Pixel Search (replaces "Break if found").
  • Added individual Pause hotkey.
  • Added Multiple Column search in Find/Replace window.
  • Added Set key delay option in Text command window.
  • Added Random delays and Disable random delays options to Pause command window.
  • Added Edit Script button in Preview window.
  • Added support for basic Arrays using the built-in function Array.
  • Added support for functions in Assign Variable window when using the Expression option.
  • Added automatic backups.
  • Added translations to Malay and Vietnamese.
  • Added Portable Install option in installer.
  • Paste command now works on mutiple selections.
  • Main window size, position and columns order are remembered.
  • Removed MsgBox command from Run command window.
  • Removed automatic Cancel button handling for MsgBox for compatibility with new options.
  • Fixed ErrorLevel variable results for commands in playback.
  • Fixed automatic comma escaping in Run command window.
  • Fixed Media keys not being recorded/captured.
  • Fixed various bugs and issues.

Version 3.8.4

  • Switched functionality of Color Picker and Search buttons in PixelSearch for a more intuitive behavior.
  • Removed Special Keys window. Replaced by Insert Keystroke.
  • Fixed some minor issues.

Version 3.8.3

  • Added translations to Indonesian, Slovak and Slovenian.
  • Added portable settings support by copying INI files to installation folder.
  • Fixed Text window toolbar buttons not working.
  • Fixed incorrect "Duplicate Keys" error message when exporting Macros without hotkeys.
  • Fixed incorrect "Expressions" error message when using variables inside Mouse commands.

Version 3.8.2

  • Fixed Break option of Image/Pixel Search command not working for loops.
  • Fixed Duplicate Macro not updating Loop counter.
  • Fixed wrong repeat value when editing Loop commands with variable in delay.

Version 3.8.1

  • Added exclamation as parameter to run Timer immediately in command line (e.g.: -t5000!).
  • Fixed issues with higher DPI settings.
  • Fixed an issue with Timer command line parameter.

Version 3.8.0

  • Added Insert Keystroke command.
  • Added Run immediately option in Timer.
  • Added Random delays option for Playback in Options window.
  • Added shortcuts to paint selected rows with custom colors (Shift+1 to 0).
  • Fixed some issues with main window controls sizes.
  • Fixed color dialog not saving custom colors when canceled.
  • Fixed comments and colors not copied with Duplicate Macro command.
  • Made InputVar parameters in Run window mandatory.
  • Made OutputVar parameters of SplitPath and MouseGetPos in Run window optional.

Version 3.7.9

  • Working Directory is now automatically set to the path of currently open file.
  • Fixed Goto command not working in Timer.
  • Fixed wrong controls position when window started maximized.

Version 3.7.8

  • Fixed bug: Controls not showing when selecting Macros.

Version 3.7.7

  • Fixed wrong global Mouse Coordinates after Image/Pixel Search.
  • Fixed wrong controls position in monitors with DPI different from 100%.

Version 3.7.6

  • Added more search options to ImageSearch command.
  • Added Add "If Statement" option to ImageSearch and PixelSearch commands.
  • Added Color Mark feature for rows.
  • Fixed memory leak in Timer.

Version 3.7.5

  • Added Run Scriptlet command for VBScript and JScript in IE command window.
  • Added Controls Toolbar Right-Click menu.
  • Drag Controls Toolbar clicking in an empty area.
  • Included Shutdown options in PMC files.
  • Fixed problems with ScriptControl in COM Interface.

Version 3.7.4

  • Added Shutdown options in Main Window.
  • Added Speed Control for exported scripts.
  • Improved Drag-Rows function.
  • Fixed crash by stack overflow in Goto-based loops.
  • Fixed escaped commas not showing in command parameters of the Run window.
  • Fixed Controls Toolbar Play button not switching when using Hotkeys.

Version 3.7.3

  • Added support for Joystick Hotkeys in Playback.
  • Added Tips on Start-up.
  • Fixed bug with Break command.
  • Fixed bug with Continue, LoopNumber command.
  • Fixed bug with String commands with A_Loop variables as InputVar.
  • Fixed commas not being escaped in exported MsgBox command.

Version 3.7.2

  • Added option to define User Global Variables in Settings.
  • Added support to set an infinite loop in Loop Command.
  • Added support for Loop Number parameter in Break and Continue.
  • Added handler for COM errors in Playback.
  • Added support for self-references inside parameters in COM Interface.
  • Added Toolbar command line parameter: -b (Shows Controls Toolbar on start-up).
  • Added support for escaping percent signs (`%).
  • Fixed error on start-up on Windows Vista.
  • Fixed Screenshots not working in 64-bit version.
  • Fixed WinWait Timeout parameter not working in Playback.
  • Fixed issues with If Statements.

Version 3.7.1

  • Added selected Macro hotkey to Preview Window status bar.
  • Fixed error on start-up on Windows XP.
  • Fixed missing/wrong icons on Windows 8.
  • Fixed wrong default values set to Export Options on first run.
  • Fixed Save Macro dialog being displayed for unchanged projects.
  • Fixed Progress Bar displaying wrong Range during playback.
  • Fixed Auto-Hotkey not loading correctly when Win option was selected.
  • Fixed translation errors.

Version 3.7.0

  • Added new Loop commands: FilePattern, Parse, Read and Registry.
  • Added Break to Image/Pixel Search options.
  • Added Break loop if image is found option to Image/Pixel Search.
  • Added support to set an infinite Loop for Macros.
  • Added Controls Toolbar.
  • Added Clear List option for Record New Macro to restart the current Macro.
  • Added Play Selected Rows option.
  • Added Apply button to command windows.
  • Added Icon, Always On Top and Cancel options to Message command.
  • Added Check for updates feature.
  • Added Help button and F1 Help to Command windows.
  • Added Quick Select to Action column (double-click for indentation).
  • Added option to choose between 64-bit and 32-bit versions during setup.
  • Added more icons and shortcuts.
  • Added translations to Croatian, Catalan, Greek, Serbian, Ukrainian and Traditional Chinese.
  • Fixed bug: Goto command not working inside Loops.
  • Fixed an error with A_Index variable inside loops.
  • Fixed some translation errors.
  • Macro Loop counter is now independent of Quick-Edit Repeat counter in the Main Window.
  • Corrected Version format to comply with software standards.
  • Improved Help File.

Version 3.6.3

  • Added Dragging Rows with mouse.
  • Added hotkeys (Ctrl/Shift + Arrow keys) to adjust search/screenshot area when Press Enter to capture option is selected.
  • Added Screenshot Options button to Image/Pixel Search command window.
  • Added Recent Files submenu in File Menu.
  • Repeat and Delay fields now accept variables and functions for all commands.
  • Improved handling of associated files.
  • Fixed a bug with GetElementByID method of Internet Explorer.
  • Fixed an issue with wrong coordinates recorded in background windows clicks.
  • Fixed an issue with Set as Default Hotkeys option.
  • Fixed External Functions not working inside loops.
  • Fixed syntax errors in Expressions and Functions.
  • Fixed some redrawing issues with listviews.
  • Fixed various glitches and issues.
  • Changed location of settings file (MacroCreator.ini) to AppData folder.
  • Changed default location of Screenshots folder to AppData folder.
  • Removed auto-escape commas for Mouse actions due to incompatibility with expressions.

Version 3.6.2

  • Added Gosub command to Loop command Window.
  • Added ExitApp and SendLevel commands to Run command Window.
  • Added Copy button to Preview window.
  • Added Create EXE File option in Export window (requires AutoHotkey installed).
  • Label and Goto/Gosub are now editable.
  • Repeat field of Loop commands now accept variables and functions.
  • Commas are now automatically escaped inside all commands.
  • Restored Windows Messages button to Main Window.
  • Reduced Memory Usage.
  • Fixed a bug when adding If Statements on multiple rows.
  • Fixed a bug when capturing Up Keys in Main Window.
  • Fixed a bug when editing multiple commands.
  • Fixed some issues with Functions inside commands.

Version 3.6.1

  • Added Quick Select: Select a row and click a column header to select similar rows.
  • Fixed Pixel Search button not working for languages other then English.
  • Fixed an issue when editing comments.
  • Fixed some issues with Hotkeys.
  • Fixed some issues with exported scripts.
  • Fixed some gui issues.

Version 3.6.0

  • Added support to use Functions from external files (requires AutoHotkey installed).
  • Added Play From and Play Until Selected Row options in Macro menu.
  • Added support for WinText, ExcludeTitle and ExcludeText in the Window field.
  • Added WinSetTitle command.
  • Added Timer command line parameter: -tN (N = Time Interval in miliseconds).
  • Pause Key can now be used to Pause/Resume Recording.
  • Editing the Window of multiple commands now affects Win commands.
  • Fixed a syntax error of WinSet command in exported scripts.
  • Fixed syntax errors of Functions in exported scripts.
  • Fixed issues with command line parameters.
  • Fixed Change History not updating after adding commands to selected rows.
  • Fixed an issue when recording accents.
  • Removed accents from default Virtual Keys to prevent recording issues.

Version 3.5.3

  • Added Indentation option to the Action column in the Main Window.
  • Added option in Settings to display a Progress Bar during Playback.
  • Added Env commands to the Run command window.
  • Added Close command line parameter: -c (Exits program after Macro execution).
  • Added Silent command line parameter: -s (Combines -a, -h and -c parameters).
  • Save Macro dialog will no longer prompt for unchanged projects.
  • Fixed Change History not updating after editing an existing command.

Version 3.5.2

  • Added Play command line parameter: -p (Activate Hotkeys on start-up).
  • Added AutoPlay command line parameter: -aN (N = Number of the Macro to run on start-up).
  • Added Hide command line parameter: -h (Hide Main Window on start-up).
  • Fixed an issue when resizing columns.
  • Fixed a syntax error in recorded Click commands.

Version 3.5.1

  • Fixed bug: Variables not working.
  • Fixed an issue with Wait for page to load function.
  • Fixed some glitches in GUI's.

Version 3.5.0

  • Added unverified translations to Spanish, German, French, Italian, Russian, Polish, Dutch, Danish, Norwegian, Finnish, Swedish, Czech, Turkish, Hungarian, Bulgarian, Chinese, Japanese and Korean.
  • Updated Internet Explorer COM functions to allow JavaScript calls via Navigate Method.
  • Stop, Speed Up and Slow Down keys are now activated when using Play Current Macro.

Version 3.4.2

  • Fixed a bug with Apply buttons in the Main Window.
  • Fixed a bug with Duplicate Rows function.

Version 3.4.1

  • Added Colors to Loops and Statements rows when Help Marks are activated.
  • Added a list to select target window in Internet Explorer command window.
  • Improved performance of the Recorder.

Version 3.4.0

  • Added Play Current Macro button to Main Window (run w/o hotkey).
  • Added Timer button to Main Window (run current macro in a repeated interval).
  • Added Hide/Show Window in TrayIcon Menu.
  • Added Regular Expression option to Find/Replace window.
  • Changed behavior of Connect button in COM Interface (Advanced) to allow user to select IE or Excel window to connect to.
  • Get Button of Internet Explorer command window can now fetch elements and return the script for COM Interface (Advanced) as well.
  • Added a help button to the list of functions in Functions.
  • Fixed some issues with commas inside commands.
  • Fixed switched order of Pause and Control buttons in the main window.
  • Added a FAQ to the Help file.

Version 3.3.4

  • Added Evaluate Expression to If Statements list (uses Eval()).
  • Improved performance of Duplicate command.
  • Fixed some minor issues.
  • Revised and reorganized Language files.

Version 3.3.3

  • Fixed Hotkeys not being deactivated when main window was active.
  • Fixed a bug with Comments column during saving and paste.

Version 3.3.2

  • Added Undo/Redo commands with individual history per Macro.
  • Added more options to Find/Replace window.
  • Added more options to Multi-Edit window.
  • Added option to show Loop and If Statement Help Marks in row index.
  • Added a message warning about Record/Playback Hotkeys.
  • Fixed a bug when closing Macros.
  • Fixed an issue with Break command inside loops.

Version 3.3.1

  • Added buttons for Cut/Copy/Paste in main window.
  • Fixed Manual Key stop working when Auto Key was pressed.
  • Fixed an issue with Break command not working in the main loop.
  • Fixed A_Index variable returning wrong value in nested loops.

Version 3.3.0

  • Added checkboxes to Macros rows to disable/enable specific actions.
  • Added Labels and Goto command to Loop command Window.
  • Added new edit commands: Copy, Cut and Paste.
  • Added new Select menu.
  • Fixed an issue with the InputBox command stopping execution.

Version 3.2.6

  • Fixed an issue that was causing the main window to freeze randomly.
  • Added a PayPal Donation link in the menu bar.

Version 3.2.5

  • Added support for Multi-Line commands in COM Interface (Advanced). You can enter a sequence of COM commands in a single Action.
  • Fixed an issue with Variables Assignment.

Version 3.2.4

  • Fixed an issue with exported scripts when parsing parameters from COM commands.

Version 3.2.3

  • Added Connect button to COM Interface (Advanced): Tries to connect to an Active COM Object.
  • Fixed an issue when recording RAlt key in some keyboards.

Version 3.2.2

  • Fixed a bug with COM Interface in playback.
  • Get Button in Internet Explorer Command window will try to connect to the last IE window instead of creating a new instance.

Version 3.2.1

  • Added more properties to Internet Explorer COM list.
  • Fixed error when using IE Elements without index in Internet Explorer commands.
  • Fixed some bugs.

Version 3.2.0

  • Added COM Interface support for any application in dotted syntax (IE command window).
  • Fixed font size to avoid overlapping on different DPI sizes.
  • Fixed some bugs with Variables.

Version 3.1.0

  • Added Internet Explorer command window with IE COM automation commands.
  • Words enclosed in percent signs inside variables are no longer dereferenced.
  • Changed some icons for better compatibility.
  • Fixed some bugs.

Version 3.0.5

  • Added Pause and Set[Caps/Num/Scroll]LockState commands to Run Command Window.
  • Fixed bug when editing Hotkeys in Export Window.

Version 3.0.4

  • Added Input and KeyWait commands to Run Command Window.

Version 3.0.3

  • Fixed an issue when saving project during Playback.

Version 3.0.2

  • Fixed problem with Always Active option.
  • Added function to Pause Execution/Recording by Middle-Clicking the TrayIcon.

Version 3.0.1

  • Fixed problem with Set As Default Hotkeys option.
  • Fixed unpausing when TrayIcon was clicked.

Version 3.0.0

  • Added support for multiple Macros & HotKeys.
  • Added support for Functions Assignment.
  • Added support for Functions inside command parameters (e.g.: % SubStr(AHK, 2)).
  • Added support for Math Expressions in Variables Assignment using Eval().
  • Added Button to make Hotkeys Window Sensitive (optionally).
  • Added option to Keep Hotkeys Active.
  • Added Hotkey to Start New Record on a different Tab.
  • Added more commands to the Run Window.
  • Added option to keep Default Hotkeys.
  • Added option to set Default Project File.
  • Added option to Pause script with the StopKey.
  • StopKey no longer deactivates Hotkeys.
  • Playback Speed Buttons will now toggle On/Off.
  • New Import command in File Menu.
  • Fixed some issues with Loop, Break and Continue.
  • Added an optional installer for download.
  • Help File is now available for download and included in installer.

Version 2.5.4

  • Fixed Settings not being saved on exit.

Version 2.5.3

  • Fixed: Variables not working on some commands.
  • Fixed and improved DynamicVars references.
  • Fixed some issues with capture/record of Alt keys.

Version 2.5.2

  • Added option record/capture Down & Up state for all keys (it must be activated in options window).
  • Fixed some parameters for better working of variables.

Version 2.5.1

  • Added support for Nested Loops in Playback.
  • Added support for Dynamic Variables references in Playback (e.g. % Var%counter%). Field must start with "% " and must contain only ONE reference.
  • Fixed some minor issues.

Version 2.5.0

  • Added new commands to Run Window. It now features also 20 File Commands.
  • Added ProcessID (ahk_PID) identifier for Window selections.
  • Fixed missing parameters for some commands in exported script.

Version 2.4.0

  • Added new commands: ControlGetPos, Break, Continue & more Window Commands.
  • Added shortcuts to Command Windows (F2-F12).
  • Added option to include PMC code in exported scripts (import them by opening the ahk file).
  • Added option to disable shortcuts in Options (Misc. tab).

Version 2.3.4

  • Fixed: Pressing RButton while recording would send a Left Click down.

Version 2.3.3

  • Fixed: Playback Speed Controls not working for Sleep Commands.

Version 2.3.2

  • Added option to define line width for screenshots.
  • Fixed some issues adding Mouse Commands.

Version 2.3.1

  • Added Indentation Option for Preview and Export.
  • Fixed/improved some minor things in the script.

Version 2.3.0

  • Fixed and Improved Mouse Recording.
  • Modified Wait commands to allow abort waiting in Playback.
  • Added option to change Draw Button (to define search/screenshot area).
  • Added option to press Enter to take screenshot.
  • Added ConrolSetText, ControlGet, ControlGetText and ControlGetFocus to Control Commands window
  • Moved ControlGetText from Variables window to Control Commands window.
  • Changed Start Record & Stop Record keys to Start/Stop Record key.

Version 2.2.2

  • Fixed: Sleep commands taking twice the specified time.

Version 2.2.1

  • Fixed some issues with Mouse Recording.

Version 2.2.0

  • Added New Command Window: Control Commands with Control, ControlFocus and ControlMove.
  • Added ControlGetText to If / Variables window.
  • Fixed Control, EditPaste playback error.
  • Fixed a bug when setting up a Control Command with a blank control.
  • Fixed some other bugs.

Version 2.1.5

  • Added Control, EditPaste to send options in Text command window.
  • Fixed and Improved Variables Translation in Playback.

Version 2.1.4

  • Changed error message when using ControlSend/Click without the control name to a warning to allow use of control's HWND in window's title.

Version 2.1.3

  • Fixed: Program's hotkeys being triggered when window is not active.
  • Fixed: Duplicate hotkey not working properly.

Version 2.1.2

  • Fixed: Playback not matching variables names with less than 4 characters.
  • Remove input limits for some edit controls to allow variables.
  • Get Control Button now auto gets window's class.

Version 2.1.1

  • Added support for Boolean Assignment. Variable must be enclosed in percent signs (e.g. MyVar := !%MyVar%).
  • Extended the use of variables to the Control and Window columns.
  • Fixed: Trying to compare built-in variables would show an error.
  • Added more shortcuts (see help window).

Version 2.1.0

  • Added Make Screenshot button to ImageSearch.
  • Assign Variables: The If button can be used to assign and compare variables.
  • Send Variables: Use percent signs in Text command to send variables.
  • Show Variables: Use percent signs in MsgBox Prompt option of the Pause menu to show variables values.
  • Changed the Post/SendMessage command window to allow the use of any message number.
  • Added shortcut to ListVars command in File menu.
  • Fixed: Wrong window activated when marking search area.
  • Fixed: Last window not activated after selection target window for control commands.
  • Fixed: No line feed in MsgBox prompt of Pause menu.

Version 2.0.5

  • Fixed syntax problems in Image/Pixel search.

Version 2.0.4

  • Made some minor changes in gui.

Version 2.0.3

  • Updated Graphic Buttons function to work with AHK_L 64bit (thanks to just me)
  • Added Auto-execute Section to context help of Export Window.

Version 2.0.2

  • Added NoActivate (NA) option to ControlClick relative to window.
  • Fixed PostMessage/SendMessage syntax error in exported scripts.

Version 2.0.1

  • Fixed some issues.

Version 2.0.0

  • Added SearchImage and SearchPixel commands.
  • Added some If Statements commands.
  • Added SendMessage and PostMessage commands.
  • Added KeyWait option in Pause.
  • Added Window-Sensitive Hotkey option in Export Menu.
  • Added Clipboard Send in Text Command (removed Script option).
  • Added option to return Mouse to initial position after playback.
  • Added Context-Menu Help: Right-Click on a button or window to show links to AHK Online Help.
  • ControlClick can now be used with position in window.
  • Improved Mouse and Key Recording reliability.
  • Loop now works for Playblack (Nested Loops won't work).
  • Control Records can now record Window Title and Classes.
  • Fixed: Control Record issues.
  • Fixed: Up Keys not being recorded sometimes.
  • Fixed: Program consuming too much CPU.
  • Fixed some other issues.

Version 1.6.4

  • Added option to create Step-By-Step Macros: Each command of the list will be executed in sequence everytime you press the Hotkey (as in manual playback).

Version 1.6.3

  • Added option to select between Relative and Screen Mouse CoordMode.
  • Fixed various issues.

Version 1.6.2

  • Corrected Sintax error in ControlClick.

Version 1.6.1

  • Added some tooltips with help from documentation.
  • Added RunWait option in Run Command.

Version 1.6.0

  • Fixed not recording accurate mouse movements and intervals.
  • Removed WinWaitActive from Window Recording.

Version 1.5.3

  • Fixed minor issues.

Version 1.5.2

  • Added option to use hotstrings in Export menu.
  • Changed exported scripts to normal hotkeys (::) instead of the Hotkey command.
  • Added option to select Speed Multiplier.
  • Added Process (ahk_exe) identifier for Window selections.

Version 1.5.1

  • Added Playback Speed Control: Fast Forward & Slow Down keys.
  • Added WinMove command.
  • Fixed WinSet Top not working.

Version 1.5.0

  • Added Join option in Export window: it can append the current macro to another with different hotkeys.
  • Added Record Controls Options.
  • Added Find/Replace function in Edit Menu (Ctrl+F will open it too if Capture is off).
  • Added Hotkeys to move rows: PageUp/PageDown can be used to move rows when Capture is off.
  • Fixed an issue with the Hotkey insert box.
  • Fixed: Tooltip not showing Previous Step in Manual Playback.
  • Changed Duplicate behavior: Selected rows will now be duplicated right after the last selected row.

Version 1.4.2

  • Fixed line breaks in exported scripts with Text/Script lines.

Version 1.4.1

  • Fixed an issue with Run command.
  • Fixed an issue with delete key when Capture is off.
  • Changed AborKey command in export from Reload to ExitApp.

Version 1.4.0

  • Added Ini Support: Current Settings will be saved on exit.
  • Added Click Down/Up record option: It allows movement recording while holding a button (useful for Hand-Drawing).
  • Added option to use Key Toggle State to set Relative Recording On/Off.
  • Added Timed Interval Recording.
  • Fixed: Minimum interval for mouse movement recording.

Version 1.3.0

  • Added Relative Mouse Clicks Recording (Hold CapsLock to record clicks and drags relative to the initial position).
  • Added Window Class and Title recording.
  • Added Window default delay (can be changed in Options Menu).
  • Fixed: Record Mouse Movement bug.

Version 1.2.1

  • Fixed: Modification Keys not updating list correctly.

Version 1.2.0

  • Added Beta Recording Function (settings can be changed in Options Menu).
  • Made Mouse Actions editable.
  • Changed Loop function behavior. It will now automatically create the loop start and end around selected rows.
  • Added Icons to ListView.
  • Changed default Delay value back to 0 and created a separate value for Mouse Delay. It can be changed in Options Menu.
  • Fixed: Holding a modification key would cause a false input.
  • Changed Column name Command to Action.
  • Changed File Extension to pmc to allow future association with the Macro Creator.

Version 1.1.0

  • Fixed delay for entering combinations with Ctrl, Shift and Alt. Direct input no longer depends on the hotkey box but it can still be used with the Insert button.

Version 1.0.1

  • Changed default AbortKey to F9 because pressing the Ctrl key during execution would interfere with macro.
  • Changed default Delay value to 1 for mouse performance reasons.
  • Corrected some minor mistakes in guis.


License

Software License

License for Pulover's Macro Creator

Copyright 2012-2021 by Cloversoft Serviços de Informática Ltda

I specifically grant Michael Wong (user guest3456 on AHK forums) use of this code
under the terms of the UNLICENSE here: <http://unlicense.org/UNLICENSE>
For everyone else, the GPL below applies.

GNU GENERAL PUBLIC LICENSE

Version 3, 29 June 2007

Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The GNU General Public License is a free, copyleft license for software and other kinds of works.

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.

For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.

Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS

0. Definitions.

"This License" refers to version 3 of the GNU General Public License.

"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.

"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.

To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work.

A "covered work" means either the unmodified Program or a work based on the Program.

To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

1. Source Code.

The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.

A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

The Corresponding Source for a work in source code form is that same work.

2. Basic Permissions.

All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

3. Protecting Users' Legal Rights From Anti-Circumvention Law.

No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.

When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.

4. Conveying Verbatim Copies.

You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

5. Conveying Modified Source Versions.

You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

a) The work must carry prominent notices stating that you modified it, and giving a relevant date.

b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices".

c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.

d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.

A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

6. Conveying Non-Source Forms.

You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:

a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.

b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.

c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.

d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.

e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.

A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.

A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.

"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

7. Additional Terms.

"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.

When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or

b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or

c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or

d) Limiting the use for publicity purposes of names of licensors or authors of the material; or

e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or

f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.

All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.

Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

8. Termination.

You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

9. Acceptance Not Required for Having Copies.

You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

10. Automatic Licensing of Downstream Recipients.

Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.

An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

11. Patents.

A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".

A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.

Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.

If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.

If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.

A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.

Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

12. No Surrender of Others' Freedom.

If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.

13. Use with the GNU Affero General Public License.

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

14. Revised Versions of this License.

The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

15. Disclaimer of Warranty.

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

16. Limitation of Liability.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

17. Interpretation of Sections 15 and 16.

If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.

END OF TERMS AND CONDITIONS

License for Scintilla and SciTE

Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>

All Rights Reserved

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation.

NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.