VoiceMacro Changelog

What's new in VoiceMacro 1.4

Oct 3, 2020
  • Fixed issue with REPLACE command when using internal variables
  • Added more variable support for move/resize window action
  • Added option to only save the data in the Profiles/Macros window without closing the window (hold CTRL key)
  • Fixed "Synch" setting from SendToPlugin action was not saved correctly
  • Moved to alternative method to start VoiceMacro with Windows with Administrator rights (using Task Scheduler), Note: you can just toggle "Start with Windows" off and on again to switch to new method
  • Added timed delay to allow manually activating of target window when testing the Window Resize/Move and Change DisplayStyle action (if target window is set to active window)
  • Fixed lag while populating list when opening the Add/Edit Profiles window
  • Added new placeholder tag "/VMALLGROUPS" for htmlExport templates and new sample template "SampleTabs"
  • Fixed issue with controller buttons not working if another button is pressed
  • Fixed issue when trying to assign a controller button when using a controller with one or more buttons reporting a "down" state when acquiring the controller
  • Added ability and selection for audio output device for SpeakText action (TTS)
  • Added new internal variable {AudioDeviceName#} to get device name from device ID
  • Moved to NAudio sound engine (allows selection of sound card to play audio files)
  • Fixed a potential crash with speech API when waking up from standby
  • Fixed hints not showing hints for all active profiles
  • Fixed Speech to Text not resolving placeholders
  • Added "server" speech recognizer API support for speech to text action
  • Added support for alternative "server" speech recognizer API
  • Improved issue with UI hang if a large number of commands is passed to the recognizer API
  • Added textual feedback while speech recognition is recognizing
  • Fixed RunOtherMacro only if not already running
  • Added "Copy profile/macro GUID's to clipboard" to profiles window context menu
  • Improved Keyboard/Mouse recording feature stability
  • Added new feature: Export Profiles to HTML (supports external templates)
  • Added 3 templates for HTML export
  • Added dark variant for default HTML export templates
  • Added new feature: Remote Control - allows to control VoiceMacro from any device/app/tool/script that can access a website
  • Added samples to use with Remote Control for Powershell, remote Command Line tool, Webinteface
  • Added Command Line tool VMRemote.exe to use with Remote Control feature (including a .net3.5 version)
  • Added Command Line / Remote Control option /VoiceCommand="My Voice Command" and /ExecuteMacro=ProfileName/MacroName
  • Added Command Line / Remote Control option /SetVariable:ProfileGUID,MyVariable_p="Profile Variable set with ProfileGUID"
  • Added Remote Control option /GetVariable=ProfileGUID,MyVariable_p
  • Added option to export only selected macros for profile export (use shift + click on Export button)
  • Fixed issue when installing with Setup file (.msi) and using different folder than C:Program Files (x86)
  • Fixed Group affixes number range not working anymore if generated numbers exceed 99
  • Added 25ms delay in mouse action between move and click
  • Fixed an issue with scheduler not schedule next event correctly after a year has passed from creation time
  • Added import dialog window with extended import options
  • Removed red warning background when using short 1-word voice commands
  • Fixed checkboxes display in dark mode
  • Added new feature to add one or multiple target profiles to a profile (profile is included and activated when the target profile gets active)
  • Added error message if multiple voice commands contain empty command (added ; at end etc.)
  • Improved execution speed of WindowToFront action
  • Improved initialization speed when starting macros that have complex voice commands with lots of variations
  • Improved import of profiles if same profile already exists
  • Fixed display of indent and text of inactive loop actions
  • Fixed missing hotkey Alt+C to toggle Controller in Main Window
  • Fixed importing profiles did not import target process name(s) and active/inactive state
  • Fixes reported by crashhandler:
  • Fixed crash when using CTRL in "Get pixel from screenshot" window and no image is present
  • Fixed potential crash in Run other macro window
  • Fixed crash if VoiceMacroData.xml file can not be created
  • Fixed possible crash when switching profiles
  • Fixed 1 crash reported by crash reporter:
  • Fixed crash if syntax of Number range is incorrect (missing closing bracket)
  • Fixed crash if a log entry is double clicked and no profile is present
  • Fixed crash and added feedback if number range syntax is invalid in groups or macros
  • Fixed possible crash when using previous/next macro button
  • Fixed a handle leak
  • Fixed exception when opening DataDirectory and directory is access denied
  • Fixed exception when hint can't be generated for any reason
  • Fixed a crash if certain actions (e.g.: Rotate) are used within conditions (If/EndIf)
  • Fixed potential crash in ResizeMoveWindow action

New in VoiceMacro 1.3.1 (Jul 29, 2019)

  • Added pre-compiled XMLSerializer 'VoiceMacro.XmlSerializers.dll' to avoid potential problems when having to create it on runtime
  • Double-click on a value in a ListBox from the ShowUI action window or pressing enter now closes the window
  • Added Radius option to WaitForPixel action
  • Various improvements for Get pixel from screenshot window
  • Fixed Hotkeys not working after session lock/unlock
  • Added Joystick/Gamepad Controller support!
  • Added new action to toggle Joystick/Gamepad Controllers
  • Changed vmAPI GetVariable now returns "ERR!" if a variable does not exists
  • Changed vmAPI SetVariable to blank requires using of 2x Chr(34), null/nothing to delete
  • Updated search function to add all used actions and enabled to search for actions, also added recent newly added actions
  • Improved SendToPlugin action, if the selected plugin is not installed or renamed or no plugins installed
  • Added fade in/out effect for OSD
  • Fixed exception if plugin runs and there are no profiles
  • Automatically uncheck sending crash report if a plugin crashes
  • Added variable Start/End option to PlaySound action
  • Improved text rendering of ShowOSD action (now has outlined text)
  • Raised hard limit for voice command variants per macro to 5000 and warning for total commands to 20k
  • Added some more log entry types which can be double clicked to edit macro
  • Added new major feature: ShowUI action with UI designer!
  • Added ShowUI sample to the VoiceMacro Demo Profile
  • Optimized saving of Profiles xml file (approx. 35% smaller size)
  • Fixed moving of multiple selected macros (now keeps selection)
  • Fixed insert of comment or label now always goes to edit cell mode
  • Added search feature for variables
  • Fixed crash if switching to a profile when no profile was selected (reported by crash reporter)
  • Fixed some UI glitches in windows after resizing
  • Added number range feature (like the one from group affixes) to voice commands
  • Added GETNUM[variable(, n)] to extract the first or n'th number from a variable (excluding any text)
  • Added optional 'Dark Mode' setting
  • Added variable blocks feature for voice commands (Special thanks to "Shadow Doctor K" for contributing code for variable blocks feature)
  • Added variable blocks feature for group affixes
  • Added new separator for multiple groups prefixes+suffixes
  • Number ranges in groups are now much more flexible
  • Added option to ignore group affixes for commands
  • Added warning in log if voice commands exceed 10k
  • Increased log performance if log is spammed excessively
  • Fixed duplication of macro GUID's if user pasted the same copied macro(s) more than 1 time
  • Fixed crash with RunOtherMacro action if variable was not containing expected content
  • Added new feature to use the profile/macro GUID (as text or in a variable) in RunOtherMacro action
  • Added new internal variable "ProfileMacroGUID"
  • Added SendVirtualKeys action
  • Fixed crash if dependent files are marked as blocked by Windows
  • Switched to .net Framework 4.6.1
  • Fixed crashes reported by crashhandler:
  • Fixed exception if audio file path can't be resolved when testing PlaySound action
  • Fixed exception if SetState action is added without a selection (no macros present) and pressing Ok button
  • Fixed possible exception when updating or editing target window text with no profile active
  • Fixed possible exception with Keycodes list in Keyboard or Mouse Hoteky window
  • Fixed exception with SpeechToText action if user clears any of the Exit, Confirm, Delete and Abort strings
  • Fixed exception if IgnoreCommands action is used while listening is disabled
  • Fixed exception while adding a HideOSD action and no OSD actions are present
  • Fixed crash if user deletes numbers while editing in Scheduler
  • Fixed possible crash with recognizer
  • Fixed possible crash when using Target dropdown list in Main menu
  • Fixed possible crash when using context menu in action list of Add/Edit Macro window
  • Fixed crash if clipboard can't be read when using Clipboard variable
  • Fixed crash if pressing ctrl-v in the Macros action list with nothing to paste
  • Fixed crash on right click on column headers in Add Macro window
  • Fixed possible(?) crash if macro repeat count exceeds max long value

New in VoiceMacro 1.2.7 (Jan 16, 2019)

  • Note: This is the last version using .net 3.5, future versions will use 4.6.1 (that means no more XP support)
  • Fixed exception if Variable is not numeric for move mouse action
  • Auto and AutoEx now checks if macro is active or inactive
  • Fixed a Scheduler issue after wakeup from standby
  • Added menu key (context menu key) to open context menu in lists
  • Implemented unhook detection and auto-restart for GlobalHook
  • Fixed too low row height in datagridviews when using high DPI font settings
  • Double click in Main window's log when window was not active now opens correct target
  • Added OS Version to crashhandler report
  • Improved error handling if XML files can't be deserialized on some systems
  • Added "UserIdleTime" internal variable to get time since last user interaction in seconds
  • You can no longer import a profile if it is already existing (to prevent duplicate GUID's)
  • Improved Scheduler with events set to repeat every x hour
  • Improved profile variables are no longer using current active profile but specific profile from which the macro was started
  • Added PROPERCASE[variable] converts first letter of each word to upper case
  • Selected text in description of SetVariable can now be copied to clipboard using CTRL+C
  • Added option to play sound when recognized phrase is under the defined threshold
  • Improved Add/Edit WaitForPixel action window
  • Fixed not being able to get correct color in "Get pixel from screenshot" window when using high DPI scaling
  • Fixed issue with scheduler
  • Added column for macro's description
  • Added new menu "Windows speech recognizer" with 3 menu items to access Windows speech settings, dictionary, and speech training
  • Added new action to abort all macros from a profile
  • Added "WinTransparency" variable to get current window's transparency
  • Fixed crash-reporter fails to submit when containing certain characters
  • Improved startup behavior
  • Improved audio signal status reporting
  • Added new easy method to report crashes, now VoiceMacro can send them directly to the new crash report collector script on the VoiceMacro website (no interaction required)
  • Fixed crash when adding Toggle ON in empty macros
  • Improved speed of mouse hook in GlobalHook.dll (goes through lot less code if mouse only was moved, and movement is not used)
  • Fixed possible run in parallel and crash when checking active windows (for auto profile switching)
  • Improved internal method to get process names from windows, now works with Windows 10 Universal apps!
  • Toggle OFF is now added to actions when adding Toggle ON
  • Added new action to add a log entry
  • Added new vmTranslator tool to Externals/vmTranslator folder
  • Added SetVariable variable names are now parsed for variables (use {})
  • Added option to set profiles active or inactive
  • Added workaround for moving windows issue in Windows 10 (7 pixel difference)
  • Synchronous SpeakText action now can be aborted anywhere if the macro is aborted
  • Added {"E} as placeholder for quotes (")
  • Fixed exception when deleting last profile
  • Added audio information to status bar when recognizing (TooLoud, TooNoisy, TooFast, TooSlow, etc.)
  • Improved main window log
  • Fixed thread gets stuck if using RunOtherMacro synchronous and the other macro is not started for some reason
  • Added check for changes when clicking on < > buttons in Add/Edit macro window
  • Added DialogGetFolder, DialogGetFile and DialogSaveFile internal variable
  • Added HEXTODEC[variable] and DECTOHEX[variable]
  • Fixed hidden Dialog buttons in ShowDialog action when previous dialog in the same macro had less than 3 buttons
  • Added the first iteration of Plugins architecture! (No public documentation/samples yet, only for dedicated beta testers)
  • Logsize increased from 100 to 2000
  • Fixed Prefixes+Suffixes not working correctly when using multiples
  • Added TOLOWER[variable] and TOUPPER[variable]
  • Added alternative method for simulate keyboard typing in InsertText action
  • Added click on "flash" icon in Main window's status bar now opens a list of currently running macros (clicking on an item will abort the macro)
  • Reduced "Next event" logging to only when new next event is generated
  • Added executable name(s) of profile to work with "Only when target window active" and "activate window" function
  • Added logging of profile switching
  • Increased log size from 20 to 100 items
  • Fixed Toggle On/Off and Rotate state was changed although the macro was prevented from executing by "Allow only 1 running thread"
  • Clicking on ToolStrip menu buttons now works even if VoiceMacro is not in focus
  • Wildcards now can be multiple and mixed, also including ? for single characters
  • Fixed "Change DisplayStyle" action (is now case-insensitive)
  • Internal matching of process names is now done case-insensitive
  • Process names for profile target window(s) now support multiple names, separated with a semicolon
  • Add Add/Edit Profiles window now saves window pos and size
  • Polished and improved keyboard/mouse hotkey window
  • - "Ignore modifier keys" now also works with mouse button/wheel input
  • Added Mouse wheel scroll up/down/left/right as trigger
  • Fixed "numeric" typos, some variable names changed (old names will still work)
  • Fixed Add/Edit Profile window resize issue
  • Volume of PlaySound can now be a variable
  • Fixed aborting macros not triggering crash handler anymore
  • Stop listening now also works if there is no Voice Command active in the profile
  • Added custom crash handler for easy crash reporting
  • Implemented workaround for some voice packs changing a macros default path environment when used
  • Added Cut (Ctrl-X) for actions
  • Paste actions now selects the pasted actions
  • Added new feature "AutoEx", now you can define a macro to auto run when switched away from profile
  • Fixed exception when trying to start new created empty macros
  • Syntax for using single Pointed Brackets placeholder (ignored by parser) changed from "/{" and "/}" to "'{'" and "'}'"
  • Replaced duplicate shortcut error message box with info text (visible under shortcut if found)
  • Added "Executable names" to context menu (of green input fields) that contains a list of current executables names
  • All green input fields context menus now refresh content on (re)opening
  • Added new major feature to define one profile as a global profile
  • Added hotkey (W and S) to move items in Add/Edit macros window
  • Fixed bug with parsing multiple quoted text if equal quoted content is present more than once
  • Added "Abort all macros" to context menu of log
  • Added infinite repeat option to scheduler (use 0)
  • Fixed {Hour00} was using 12h format, now using 24h format
  • Fixed auto profile switching with "[Active window]"
  • Added "*" as possible target window placeholder for any window
  • Added [INACTIVE] to description of inactive macros
  • Added apply change to a pause action now applies to all selected pause actions
  • Fixed ElseIf not working correctly with deeper nestings
  • Added logging of Auto macro start when profile is switching
  • Reverted changes to app.manifest: set "requestedExecutionLevel" from "highestAvailable" back to "asInvoker"
  • Fix for InsertText action (via clipboard)
  • Added variables support for OSD x and y position
  • Added new internal variable "CurrentWinProc" to get current window's process name
  • Further improvements for conditional code parsing with variables containing text that matches syntax of VoiceMacro
  • Fixed possible exception when profiles are switched very fast, removed unnecessary update of target window dropdown list
  • Added hotkeys to move/delete profiles in Profile window
  • Added hotkeys to move macros in Profiles/Macros window
  • Fixed Default Profile checked checkbox not updating correctly when moving profiles up/down
  • Added workaround for un-muting microphone bug in recognizer API, will still un-mute on program exit
  • Changed "Profiles and Macros" window design, enabled delete button with multi-select
  • Fixed exception when trying to test "WaitForPixel" action using variables, added info dialog
  • Added new option to set a process name for a profile in addition to a target window
  • Added new action "BlockInput" to disable/re-enable User Mouse/Keyboard interaction
  • Added [Active window] as target window to Change Display Style-, Close Window- and Resize/Move Window action, "*" can also be used now
  • Added option to toggle macros active/inactive (using context menu or SPACE)
  • Fixed some windows to support more than 150% dpi scaling
  • Fixed hotkeys not always disabled when switching to empty profile
  • Fixed GetKeyState not updating selected key when editing action
  • Added Support for windows with empty title for "Find Window and activate" action and Profile Target Window
  • Added Option to specify executable name as variable (WindowExeName) for all actions with the option to select a target Window
  • Fixed loss of Default Profile when editing macro from the Main Window log or "Add macro" button
  • Default Profile can now be toggled from the list too
  • Fixed Keyboard/Mouse hook not being removed when switching to an empty profile from a profile using shortcuts
  • Some small code parsing optimizations
  • Added error handling if no Text to Speech (TTS) is installed
  • Added "Clear log" to log context menu
  • Added check clipboard content before sending ctrl-V for InsertText action (avoid inserting empty or last value if CPU load is high), delete clipboard after use

New in VoiceMacro 1.2.6.3 (Sep 8, 2017)

  • Fixed some windows to support more than 150% dpi scaling
  • Fixed hotkeys not always disabled when switching to empty profile

New in VoiceMacro 1.2.6 (May 16, 2017)

  • Added Sorting for macros
  • Fixed exception when deleting last macro that was in a group and adding a new macro
  • Fixed exception when running "WaitForWindow" multiple times in parallel
  • Added "Minimize instead close" option (minimizes to tray instead of closing when clicking on "X", also only minimizes to taskbar when using "_")
  • Fixed Search Bar appearance with high DPI font scaling
  • Fixed bug that prevented profiles from being activated on first start after fresh installation of VoiceMacro
  • Fixed bug causing exception with "RunOtherMacro"
  • Fixed Scheduler bug not calculating next active weekday correctly
  • Added automatic adding of "EndIf" and "Loop End" when adding "If" and "Loop Start"
  • Added StopSound action
  • Improved Search feature: Suggestions (when typing) now contain every single words found in phrases
  • Added Timeout option for Dialog action
  • Fixed parsing of certain code removing CR/LF etc., e.g. "FIND[MyVariable, {&CR}]" did not work

New in VoiceMacro 1.2.5 (Mar 22, 2017)

  • Added:
  • Buttons to go to next/previous macro in Edit Macro window
  • New string function REPLACE[variable, old string, new string]
  • Double click in log to use unrecognized word(s) as Voice command in a new macro
  • Crash when trying to play sound file with empty filename string
  • Syntax check for multiple voice commands
  • Creating a new macro now uses group of selected macro/group
  • Search feature for "Profiles and Macros" window (activate with context menu or Ctrl+F)
  • Open macros directly from log for editing now also works with error messages
  • New math function SQRT (Square Root)
  • New feature: Change the Recognizer Engine (language) with a action
  • Fixed:
  • WindowFront action not working with placeholders (*) anymore (after adding multiple target windows feature in 1.2.2.1)
  • Exception when selecting a group entry instead of a macro and hit Ok in "Run Macro from other profile" window
  • Improved and fixed display of Shortcut texts
  • Application crash when MouseAction variable contains a value higher than possible max/min integer
  • Group Prefixes+Suffixes feature now resolves syntax correctly

New in VoiceMacro 1.2.4 (Oct 24, 2016)

  • Added "@" as prefix in Profiles and macros window to highlight macros that have activated scheduler
  • Fixed: SetVariable from file {File://...} no longer temporarily locks the file
  • Fixed: Shortcut bug (when using e.g. Shift+F7 as shortcut and you released Shift before releasing F7, next time you pressed Shift+F7 did not trigger the action)
  • Execute/Open file action file dialog no longer resolves .lnk files
  • Added multiple target windows support for Mouse and WaitForPixel edit window
  • Added more variants to "Date + Time" internal variables (leading 0)
  • Added special characters (TAB, CR, LF, CRLF) to internal variables
  • Added FIND[variable, "stringtofind"(, startindex)] to get index of an expression in a value
  • Added Error output to log for SUBSTR[] and FIND[]
  • SUBSTR[] and STRLEN[] are now more flexible
  • Fixed possible crash when misplacing "Else" conditional action where it should not belong (e.g. after "EndIf")
  • Added option to set a profile as default profile (used together with auto profile
  • switching)

New in VoiceMacro 1.2.3.3 Test (Sep 28, 2016)

  • Fixed: Shortcut bug (when using e.g. Shift+F7 as shortcut and you released Shift before releasing F7, next time you pressed Shift+F7 did not trigger the action)

New in VoiceMacro 1.2.3.2 Test (Aug 26, 2016)

  • Execute/Open file action file dialog no longer resolves .lnk files
  • Added multiple target windows support for Mouse and WaitForPixel edit window
  • Added more variants to "Date + Time" internal variables (leading 0)
  • Added special characters (TAB, CR, LF, CRLF) to internal variables
  • Added FIND[variable, "stringtofind"(, startindex)] to get index of an expression in a value
  • Added Error output to log for SUBSTR[] and FIND[]
  • SUBSTR[] and STRLEN[] are now more flexible

New in VoiceMacro 1.2.3.1 Test (Aug 26, 2016)

  • Fixed possible crash when misplacing "Else" conditional action where it should not belong (e.g. after "EndIf")
  • Added option to set a profile as default profile (used together with auto profile switching)

New in VoiceMacro 1.2.3 (Jul 6, 2016)

  • Added new feature: SetVariable from file or URL, e.g.: SetVariable testFILE = {File://c:test.txt} or testURL = {http://www.test.com}
  • "Only when target window active" and "Activate Window" now work with multiple target windows
  • Additional target windows now can be added by holding SHIFT in Add/Edit profiles window
  • Fixed possible exception when deleting multiselected macros
  • Corrected some spelling errors
  • Added "Clone" feature for Profiles
  • Improved Copy/Paste in "Profiles and Macros" window: now inserts macro(s) under selected macro/group, dialog asks if you want to keep groups
  • Miscellaneous UI improvements
  • No more "Next event: None"-spam in log

New in VoiceMacro 1.2.2.3 Test (Jun 27, 2016)

  • Global mouse/keyboard hook is now restarted after unlocking a windows session, resolves lost hotkeys on some windows versions
  • Added warning message when adding more than one "Toggle ON" or "Toggle OFF" action in a macro

New in VoiceMacro 1.2.2.1 Test (May 31, 2016)

  • Added new feature SetVariable from file or URL, e.g.: SetVariable testFILE = {File://c:\test.txt} or testURL = {http://www.test.com}
  • "Only when target window active" and "Activate Window" now work with multiple target windows
  • Additional target windows now can be added by holding SHIFT in Add/Edit profiles Window
  • Fixed possible exception when deleting multiselected macros
  • Corrected some spelling errors

New in VoiceMacro 1.2.1 / 1.2.1.2 Test (Apr 29, 2016)

  • Added string function "STRLEN[]" and "SUBSTR[]" to get the length or a section of a string
  • Added new action "Continue", to skip to the end of the current loop body (also works with repeat)
  • "Exit Loop" action now ignores other nested loops and skips to the correct position
  • If the Main window is open (from an existing instance) it no longer goes to front and focus when using command line arguments
  • Fixed broken sound playback

New in VoiceMacro 1.2.1.2 Test (Apr 5, 2016)

  • Added string function "STRLEN[]" and "SUBSTR[]" to get the length or a section of a string
  • Added new action "Continue", to skip to the end of the current loop body (also works with repeat)
  • "Exit Loop" action now ignores other nested loops and skips to the correct position

New in VoiceMacro 1.2.1.1 Test (Mar 26, 2016)

  • If the Main window is open (from an existing instance) it no longer goes to front and focus when using command line arguments
  • Fixen broken sound play

New in VoiceMacro 1.2.1 (Mar 9, 2016)

  • Fixed exception when opening edit macro window or click add macro via Tray Menu when it is already open
  • Fixed 2 issues with math: wrong formatting caused an exception (space after bracket), same operator used twice or more in a row caused ignoring the rest e.g. 10 * 10 * 10 resulted in 100 instead 1000
  • Fixed bug with nested conditions ("Else" action did not ignore other nested "Else's")
  • Another pass over all windows to support extreme font scaling
  • Fixed small display issue with 24h format in Scheduler window
  • Fixed exception when starting a Remote Desktop session
  • Added registry key that allows VoiceMacro to run in "Protected Mode", no access to Main window or tray icon context menu (see Sample-Profiles folder)
  • Improved behavior when audio input source (microphone) is unplugged
  • Corrected help text in WaitForPixel Window
  • Internal variables RepeatCounter and LoopCounter are now read- and writeable
  • Improved Keyboard/Mousebutton hook handling (has its own separate thread now)

New in VoiceMacro 1.2.0.4 Test (Feb 9, 2016)

  • Fixed bug with nested conditions ("Else" action did not ignore other nested "Else's")
  • Another pass over all windows to support extreme font scaling

New in VoiceMacro 1.2.0.3 Test (Feb 9, 2016)

  • Fixed small display issue with 24h format in Scheduler window
  • Fixed exception when starting a Remote Desktop session
  • Added registry key that allows VoiceMacro to run in "Protected Mode", no access to Main window or tray icon context menu (see Sample-Profiles folder)
  • Improved behavior when audio input source (microphone) is unplugged
  • Corrected help text in WaitForPixel Window
  • Internal variables RepeatCounter and LoopCounter are now read- and writeable
  • Improved Keyboard/Mousebutton hook handling (has its own separate thread now)

New in VoiceMacro 1.2 (Jan 7, 2016)

  • Added "SetGamma.exe" command line utility to change gamma value of display adapter, demo-group included in sample-profile
  • Fixed: Window position is now restored correctly after a restart if main window log was hidden and "attached" to taskbar
  • Added Multiselection in "Profiles and Macros" window (copy/paste multiple macros at once)
  • Scheduler icon now updating correctly in Tray Icon Menu
  • Added new internal variable "MicLevel" - contains the current microphone audio input level (0-100)
  • Added scheduling system as another method to activate macros
  • Added start/stop/toggle scheduler action
  • InserText action "Simulate keyboard typing" now supports unicode characters (cyrillic etc.)
  • Fixed NotifyIcon text length exception
  • Added new option for Hotkeys to "Ignore modifier keys" (CTRL, ALT, SHIFT etc.) when pressing a hotkey
  • Fixed: Keyboard action now sending only the keys as extended keys that has to be sent as extended keys (this was from changes in version 1.0.0.16)
  • Lowered Max. Timeout values to 99'999'999'999 seconds (=3171 years) as higher values caused exception (date gets out of range)
  • Fixed OpenFile action: files that previously could be started without providing a path throwed error "not found" (e.g. system command files, or notepad.exe)
  • Fixed global code to get all visible windows (was only acquiring main windows)
  • Reworked "Get Pixel from Screenshot" UI
  • Added displaying of Group name too in Add/Edit Macro Window title
  • Mouse button hotkeys without modifier keys are now ignored if any modifier key is pressed, a possible following macro with the same mouse button hotkey (but with modifier key) is no longer ignored
  • You can now both get and set the "Clipboard" variable (text)
  • Fixed issue with recognizer dictionary swapping causing UI lag and loss of mouse/keyboard hooks
  • "SetVariable" dropdown list now correctly collects _p variables (NOT from other profiles anymore)
  • Fixed exception when copying macros
  • Added SSML support for "Speak Text" action (TTS), control speed, voice, pitch etc. within the text
  • Complete rework of all UI's for Windows DPI font scaling support!
  • Rework of Add/Edit Profile window, order of profiles can be changed now
  • Added better Random number generator
  • Fixed floating zoom preview in WaitForPixel->Get pixel from ScreenShot window

New in VoiceMacro 1.1.0.10 Test Build (Dec 2, 2015)

  • Added new internal variable "MicLevel" - contains the current microphone audio input level (0-100)
  • Added scheduling system as another method to activate macros
  • Added start/stop/toggle scheduler action
  • InserText action "Simulate keyboard typing" now supports unicode characters (cyrillic etc.)

New in VoiceMacro 1.1.0.8 Test Build (Oct 6, 2015)

  • Fixed: Keyboard action now sending only the keys as extended keys that has to be sent as extended keys (this was from changes in version 1.0.0.16) - a big thanks to Traveler for reporting!

New in VoiceMacro 1.1.0.7 Test Build (Oct 6, 2015)

  • Lowered Max. Timeout values to 99'999'999'999 seconds (=3171 years) as higher values caused exception (date gets out of range)
  • Fixed OpenFile action: files that previously could be started without providing a path throwed error "not found" (e.g. system command files, or notepad.exe)

New in VoiceMacro 1.1.0.6 Test Build (Oct 6, 2015)

  • Fixed global code to get all visible windows (was only acquiring main windows)

New in VoiceMacro 1.1.0.5 Test Build (Oct 6, 2015)

  • Reworked "Get Pixel from Screenshot" UI
  • Added displaying of Group name too in Add/Edit Macro Window title
  • Mouse button hotkeys without modifier keys are now ignored if any modifier key is pressed, a possible following macro with the same mouse button hotkey (but with modifier key) is no longer ignored

New in VoiceMacro 1.1.0.4 Test Build (Oct 6, 2015)

  • You can now both get and set the "Clipboard" variable (text)

New in VoiceMacro 1.1.0.3 Test Build (Oct 6, 2015)

  • Testing fix for issue with recognizer dictionary swapping causing UI freeze
  • "SetVariable" dropdown list now correctly collects _p variables (NOT from other profiles anymore)
  • Fixed exception when copying macros
  • Added SSML support for "Speak Text" action (TTS), control speed, voice, pitch etc. within the text

New in VoiceMacro 1.1.0.2 Test Build (Oct 6, 2015)

  • Added support for Windows DPI font scaling for some windows - rest will follow
  • Added registry fix file "Sample-Profiles/Win7+8+10_GlobalHook_timeout_fix.reg" as a workaround for those who suffer globalhook timeouts (loss of keyboard/mouse hotkeys)

New in VoiceMacro 1.1.0.1 Test Build (Oct 6, 2015)

  • Complete rework of all UI's for Windows DPI font scaling support!
  • Added better Random number generator
  • Fixed floating zoom preview in WaitForPixel->Get pixel from ScreenShot window

New in VoiceMacro 1.1 (Aug 21, 2015)

  • Disabling recognizer while recognizing now resets notify icon + other recognizer related optimizations
  • Fixed issue with resizing windows causing "lag"
  • Added variable support for WindowToFront, WaitForWindow, CloseWindow, Change Display Style, Resize/Move Window and Change Target Window actions
  • "ShowDialog" action dialog is now showing up in taskbar and is sent to top of all other windows
  • Pointed Brackets "{}" can now be used in variables by using double brackets "{{}}""
  • Round Brackets () are only removed if content changed
  • Various performance improvements (e.g. async recognizer grammar loading/unloading)
  • Added new variable "IgnoreExceptions" that can be set with a string for command exception(s) when using "Start/stop ignore voice commands"
  • "Abort all macros" no longer aborts the macro that has started the action
  • Added "Conversation sample" to Sample-Profiles folder
  • Further improved recognizer engine handling while switching profile
  • Fixed hotkey not recognized bug, if another command use the same hotkey with modifier
  • Abort all macros hotkey (SHIFT+ESC) is no longer a system hotkey, it is now triggered from keybord hook (no more 'WndProc' spamming main thread)
  • Improved Add/Edit profiles window, added list-view (profiles can now be rearranged)
  • Updated "JoyStick Demo" AutoHotKey script, now polls the first 8 buttons from the first 3 JoySticks/JoyPads
  • Added download link in _README!.txt for compiled (executable) version of "Joystick_to_VM.ahk"
  • Lots of profile switching improvements (this also reduced the short mouse cursor lock while switching a profile)
  • Copy and pasting commands with groups from one profile to another now also copies the group affixes (if the group did not exist)
  • Added README's in sub-directories, new sample profiles that can be imported ("JoyStick Demo" and "Alarm Clock")
  • Moved "Notice.mp3" sound to new "Sounds" directory, moved "ErrorLevelTest.bat" and "AvancedErrorLevel.bat" to 'Externals' folder
  • Fixed exception in Edit/Add Macros window when adding a comment with no action selected
  • "Open file" action can now handle relative paths better
  • Added "Stop" option and timeout counter display for testing WaitForPixel action with longer timeout settings
  • Added better feedback when testing WaitForPixel action ("appear" or "dissapear" option is now properly displayed while testing)
  • Fixed exception when adding OSD in a new created empty profile
  • Fixed bug with command line /SetVariable only working with all lower case variables and converting values to lowercase
  • Fixed issue with hotkey press not recognizing "key up" when using key press + modifiers AND modifier was released BEFORE the key, resulting in not recognizing the hotkey the next time it was pressed
  • Added small zoom window to WaitForPixel's "take from screenshot" feature and assigned arrow keys to move the mouse cursor in all directions by 1 pixel
  • Optimized recognition status and recognition volume update (switched from timer driven to event driven)
  • Small bugfix for inserting variables via context menu with {} while pressing shift
  • Improved profile switching (e.g. switching many profiles very fast via keyboard resulted in program instability and multiplying of "target window" value)
  • Optimized background thread code: now only reports back current macro position to main thread if edit macro window was open on start
  • Fixed edit Set Hotkey (did not set the checkboxes for rShift, rCtrl, rAlt, rWin), changed key name display now uses the same key descriptions as other displays
  • OSD: selection of OSD Name now only contains OSD's from current profile, not from all profiles
  • Added "Synchronous" option to RunOtherMacro action (macro will wait until other macro is finished)
  • Added GetKeyState action, to wait for a key press or toggle state / or set a variable with current key state
  • Added check and error display if the variable name in "SetVariable" action already used by internal variable names
  • Edit macros window: ctrl-c & ctrl-v is not interfering anymore with context menu hotkeys when directly editing a line (comment or label)
  • Switched from VS 2008 to VS 2015 (in case anyone wonders why VoiceMacro.exe got smaller)
  • Added exception handling when copying text to clipboard (can fail sometimes)
  • Sending extended Media keys (Volume up/down, Mute, Play/Pause, Stop, Next Track, Previous Track, Browser Back, Media, App1+2 etc.) now working
  • Added new command line feature to set a variable E.g.: /SetVariable:varname_g="this is a test"
  • Added 3 (string) comparers: contains (>

New in VoiceMacro 1.0.0.29 Test Build (Aug 14, 2015)

  • Minor bug fixes
  • Introducing a new Action: "Wait for Pixel" - which can speed up things alot!

New in VoiceMacro 1.0.0.27 Test Build (Aug 13, 2015)

  • Various performance improvements (e.g. async recognizer grammar loading/unloading)

New in VoiceMacro 1.0.0.26 Test Build (Aug 13, 2015)

  • Added new variable "IgnoreExceptions" that can be set with a string for command exception(s) when using "Start/stop ignore voice commands"
  • "Abort all macros" no longer aborts the macro that has started the action
  • Added "Conversation sample" to Sample-Profiles folder
  • Further improved recognizer engine handling while switching profile
  • Fixed hotkey not recognized bug, if another command use the same hotkey with modifier

New in VoiceMacro 1.0.0.25 Test Build (Aug 10, 2015)

  • Abort all macros hotkey (SHIFT+ESC) is no longer a system hotkey, it is now triggered from keybord hook (no more 'WndProc' spamming main thread)
  • Improved Add/Edit profiles window, added list-view (profiles can now be rearranged)
  • Updated "JoyStick Demo" AutoHotKey script, now polls the first 8 buttons from the first 3 JoySticks/JoyPads
  • Added download link in _README!.txt for compiled (executable) version of "Joystick_to_VM.ahk

New in VoiceMacro 1.0.0.24 Test Build (Aug 10, 2015)

  • Lots of profile switching improvements (this also reduced the short mouse cursor lock while switching a profile)
  • Copy and pasting commands with groups from one profile to another now also copies the group affixes (if the group did not exist)
  • Added README's in sub-directories, new sample profiles that can be imported ("JoyStick Demo" and "Alarm Clock")
  • Moved "Notice.mp3" sound to new "Sounds" directory, moved "ErrorLevelTest.bat" and "AvancedErrorLevel.bat" to 'Externals' folder
  • Fixed exception in Edit/Add Macros window when adding a comment with no action selected
  • "Open file" action can now handle relative paths better

New in VoiceMacro 1.0.0.23 Test Build (Aug 8, 2015)

  • Added "Stop" option and timeout counter display for testing WaitForPixel action with longer timeout settings
  • Added better feedback when testing WaitForPixel action ("appear" or "dissapear" option is now properly displayed while testing)
  • Fixed exception when adding OSD in a new created empty profile
  • Fixed bug with command line /SetVariable only working with all lower case variables and converting values to lowercase

New in VoiceMacro 1.0.0.22 Test Build (Aug 5, 2015)

  • Fixed issue with hotkey press not recognizing "key up" when using key press + modifiers AND modifier was released BEFORE the key, resulting in not recognizing the hotkey the next time it was pressed
  • Added small zoom window to WaitForPixel's "take from screenshot" feature and assigned arrow keys to move the mouse cursor in all directions by 1 pixel
  • Optimized recognition status and recognition volume update (switched from timer driven to event driven)

New in VoiceMacro 1.0.0.21 Test Build (Aug 1, 2015)

  • Small bugfix for inserting variables via context menu with {} while pressing shift
  • Improved profile switching (e.g. switching many profiles very fast via keyboard resulted in program instability and multiplying of "target window" value)

New in VoiceMacro 1.0.0.20 Test Build (Jul 30, 2015)

  • Optimized background thread code: now only reports back current macro position to main thread if edit macro window was open on start
  • Fixed edit Set Hotkey (did not set the checkboxes for rShift, rCtrl, rAlt, rWin), changed key name display now uses the same key descriptions as other displays

New in VoiceMacro 1.0.0.19 Test Build (Jul 28, 2015)

  • OSD: selection of OSD Name now only contains OSD's from current profile, not from all profiles
  • Added "Synchronous" option to RunOtherMacro action (macro will wait until other macro is finished)

New in VoiceMacro 1.0.0.18 Test Build (Jul 28, 2015)

  • Added GetKeyState action, to wait for a key press or toggle state / or set a variable with current key state

New in VoiceMacro 1.0.0.17 Test Build (Jul 28, 2015)

  • Added check and error display if the variable name in "SetVariable" action already used by internal variable names
  • Edit macros window: ctrl-c & ctrl-v is not interfering anymore with context menu hotkeys when directly editing a line (comment or label)
  • Switched from VS 2008 to VS 2015 (in case anyone wonders why VoiceMacro.exe got smaller)

New in VoiceMacro 1.0.0.16 Test Build (Jul 28, 2015)

  • Added exception handling when copying text to clipboard (can fail sometimes)
  • Sending extended Media keys (Volume up/down, Mute, Play/Pause, Stop, Next Track, Previous Track, Browser Back, Media, App1+2 etc.) now working
  • Added new command line feature to set a variable E.g.: /SetVariable:varname_g="this is a test"

New in VoiceMacro 1.0.0.15 Test Build (Jul 28, 2015)

  • Added 3 (string) comparers: contains (>

New in VoiceMacro 1.0.0.14 Test Build (Jul 28, 2015)

  • HotFixed new bug from 1.0.0.13 causing exception when processing a recognized command that has no affixes

New in VoiceMacro 1.0.0.13 Test Build (Jul 28, 2015)

  • Added 3 new internal variables: "OnlyCommand", "CommandPrefix", "CommandSuffix"
  • Added number range function to group affixes
  • Fixed exception when trying to edit a macro that has no actions
  • Fixed: variables menu not adding more and more brackets to clicked menu entries anymore

New in VoiceMacro 1.0.0.12 Test Build (Jul 28, 2015)

  • Added search function and groups in "RunOtherMacro" action window

New in VoiceMacro 1.0.0.11 Test Build (Jul 28, 2015)

  • Fixed: group sorting now sorts correctly

New in VoiceMacro 1.0.0.1 Test Build (Jul 28, 2015)

  • Added group sorting
  • Fixed: Main Status Bar added up text when something started by command line several times
  • Fixed bug when restoring Main window size on loading causing it to always return to default 300x200 size

New in VoiceMacro 1.0 (Jul 7, 2015)

  • Fixed hotkey mouse XButton down was triggered down and up!
  • OSD: added "GDICharset" information for fonts ("Symbol"-type fonts like "windings" and "webdings now working)
  • Improved recording function alot
  • Added recording in realtime feature and option to only record keyboard input (ignoring mouse)
  • Fixed adding new macros now jumps to and select the correct macro when groups are present
  • Added "Highlight macros using coordinates" to context menu in Profiles and Macros window
  • Added self-recovery if speech recognizer engine stopped listening for any reason (e.g. unplugged microphone)
  • Optimized default path when browsing for a file in "PlaySound" and "OpenFile" Window now uses either path from (first) file or application startup path as default path
  • Changed volume selection for TTS voice from nummeric up/down input box to trackbar
  • Changed "Move mouse relative to last set" and added "(relative to) current position" (also provides/uses alternative method to move mouse)
  • Changed "PlaySound" volume setting is now independent from VM's main volume (mixer), though for consistency reasons volume setting for midi files had to be dropped
  • New action: "SetState": Change toggle/rotate state from (another) macro
  • Fixed app settings saving on app exit (could possibly generate error and result in empty file on windows shutdown)
  • Changed button text "Save" to "Ok" in macros and profiles window
  • Set window position to 0,0 if saved position is not visible (2nd monitor detached)
  • Added full multiselect support for actions datagrid
  • Added warning / error message if path of audio file exceeds max. length of 127 chars (MCISendString limitation)
  • Fixed: if target window is "[Active window]", all active windows are valid if "Only when target window active" is set
  • Changed datagrid row heights (smaller in Profiles and Macros and Add/Edit Macros window and higher in Main window)
  • Fixed: labels in "HideOSD" action did not update when editing (only when adding)
  • New variable: Clipboard, contains current Clipboard (text)
  • Improved: PlaySound now plays overlapping sounds concurrently
  • Fixed double shortcuts in Add/Edit Macros window
  • Added RANDOM x-x function
  • Fixed macros started with "Run Other Macro" have correct internal command index now (action "abort this macro" did not work)
  • Changed profile auto switching disabled while editing macros
  • Changed inserting variables with context menu no longer uses (and overwrites) clipboard
  • Fixed exception when closing OSD with "X" in window title and reopen
  • Fixed selecting another line in OSD, then editing text no longer selects all text
  • Added Line x/x display in Macros editor
  • Fixed rCtrl not working in keyboard action
  • Changed click duration in keyboard action is now also applied to modifier key (alt/ctrl/shift...) before pressing and after releasing key if using keyboard keys combination
  • Fixed language settings related problem with decimal separator ("," or ".")
  • Fixed hotkeys stop working after editing certain macros by double click in log
  • Added .wma audio file support
  • Fixed possible exception when saving profile containing profile (_p) variables
  • Fixed math bug in case variable was set to blank or trying to calculate with only one value
  • Fixed issue with "If" jumping to wrong position when condition was not met and another If/EndIf was inbetween
  • Fixed variable MilliSeconds mixed with Seconds when resolving
  • Fixed Settting a variable to blank with two quotes not working
  • Fixed issue with "If": variable (with no brackets) was not resolved when starting with "("
  • Added 2 new options to Change display style (of a Window) action: Set transparency and Set/Unset TopMost
  • Added variable "RecCommand" containing recognized command (useful if you have multiple commands for the same macro)
  • Added lots of "live" tooltips to variables context menu (e.g. time variables now showing what they provide)
  • Added 4 new variables for current window position x/y and width/height
  • Improved ShowDialog: empty buttons are now hidden, if only one button is visible it gets centered
  • Added 2 new actions "ShowOSD" and "HideOSD", supports multiple OSD's, with multiple texts, each can have variable fonts/font sizes/colors, auto position at center / center on screen borders / screen corners or manual position, displaytime can be absolute or per char or until HideOSD used, multiple screens are supported
  • Added copy paste feature for actions (context menu or ctrl+c / ctrl+v)

New in VoiceMacro 0.9.9.8 Beta (Apr 9, 2015)

  • Text in main window status bar no longer shifts to left when too long to be displayed
  • Fixed exeption when trying to start recognition engine on systems with unsupported engines
  • Added new action to show a dialog (MsgBox) to the user and get feedback in new "DialogResult" variable
  • Added 2 command line options to start a macro from profile and show VoiceMacro main window
  • Added new action to start/stop/toggle ignoring commands (less ressource intensive than start/stop listen)
  • New variable "CurrentWinTitle" contains current active window title
  • New variable "ActivatedBy": 0 = Voice, 1 = Key/Mouse button, 2 = Other macro, 3 = Testing, 4 = Auto (profile switch), 5 = Command line
  • Added F2 hotkey to edit macros / actions
  • Improved ESC/Enter key handling (not closing all windows anymore and not closing window if editing a cell)
  • Added WaitForPixel x/y coordinates can now be variables
  • Removed confusing "%" from WaitForPixel tolerance and increased tolerance max value to 300
  • Added: action(s) can now be copied to clipboard as formated text too
  • Added hints and ask user to load demo configuration with lots of samples and documentatiuon at first startup
  • Changed PlaySound and SpeakText action can now be synchron (macro continues AFTER playing/speak done)
  • Changed "Insert Text" action can now simulate keyboard typing at various speeds
  • Added new variable "ErrorLevel", contains exit code from last execute/open file action
  • Added 2 new context menu items in "Profiles and macros" window: Copy all or selected macros to clipboard as formated text
  • Added "Current Profile" to RunOtherMacro action
  • Fixed some german buttons (Abbrechen)
  • Renamed "Edit profiles" button in main menu to "Edit..." and window it opens to "Profiles and macros"
  • Fixed import of profiles
  • Fixed "allowing only one running thread" feature has not always detected already running thread
  • Added option to execute macro with hotkey on button press, button down (NOT ignoring keyboard repeat) or button up
  • Changed loop start action value can now be a variable
  • Fixed: current playing macro will not change selected row when user is editing or moving a action in macros window
  • Improved: all input boxes that can have variables/placeholders are now colored light green
  • Added move mouse relative to last set mouse position
  • Added "End OnTimeOut" action: Actions between OnTimeOut and EndOnTimeOut are executed if a timeout occured, otherwise they are skipped
  • Added "cheat" to get window to front even when Windows would not allow it
  • Improved "first start" experience with hints what to do next to create first profile/macro
  • Removed not so much useful popup of recognizer config at first start
  • Improved: messages from running macro threads (shown in status bar) are now added to log
  • Added "Default" as option to voice selection in "speak text action"
  • Fixed keyboard action keys: lWin, rWin and context menu
  • Added check for duplicate name when adding new label
  • Added more math functions: SIN, SINH, COS, COSH, TAN, TANH, LOG, LOG10, EXP, ROUND0-3
  • Improved context menu and insert placeholder handling in all textboxes that can have placeholders/variables
  • Added mouse action x and y coordinates can be variables
  • Added button to set actions inactive / active (optional with right mouse button or space key)
  • Added handling for "GlobalHook.dll" missing (exe directly started out of the zip archive...)
  • Added handling if application directory is not accessible on application start
  • Fixed direct edit macro via log now opens macro for editing regardless of current active profile
  • Changed {LoopCounter} variable now returns loop index from last active loop if variable is get outside of any loop
  • Improved moving and deleting actions in macros window and moving groups in profiles window + some other tiny changes for a better behaviour
  • Added macro edit window can now show actual position of current action of the macro while running it
  • Fixed issue with saving/loading profiles changing "CrLf" to "Lf" only (in string values)
  • Added math functions (+ * / MOD) with comparison (= > < >=

New in VoiceMacro 0.9.9.6 Beta (Feb 4, 2015)

  • Fixed: Sending Keyboard-Action of extended keys (rAlt, rCtrl, Arrow Keys, Insert, Delete, Home, End, PgUp, PgDown, Pause, PrtScr, ScrLck) now finally working!