Jump to content

Recommended Posts

Runner is general purpose event trigger system structured for expandability

- Triggers

  • - (Almost) any keyboard or mouse button combinations pressed from (almost) anywhere during a Windows session
  • - Macros can sample variables from Windows, or file system then react to comparison. So if a macro is running, it can also be an event trigger.
- Events
  • - Run/open a file path or command line

  • drag and drop (browse on 64bit operating systems)

  • music/picture/any folders, or programs
[*]- Launch a url in default browser

[*]- The basic media functions can be assigned as hotkey functions

  • media back, forward
  • play, pause, stop
  • system volume -, +
  • Runner can be set to play music files internally

  • meaning no external app will be launched and interrupt your computer experience
  • internally playing music:
  • controlled by play, pause, and stop Runner media options
  • playlists are not yet built into the internal Runner media player
  • there is no gui for the player
[*]- Computer voice

  • output custom data with fully customizable voice narrator
  • speak the time of day
[*]- Start your custom macros

- Macros, a list of (almost) unlimited commands

  • create your custom macros with 39 command types (expandable)
  • commands are configurable with variable and constant data programmable by the user
  • Command types include:

  • sending keystrokes to focused application, or window title control_id
  • move/click the mouse, or window title control_id
  • run file paths or command line strings
  • save specified screen area to incrementing file
  • call other saved macros
  • target, move, set window mode, of window titles
  • acquire variables, return values to udv (User Defined Variable)

  • return mouse_x and y
  • return pixel colors, int, hex, r, g, b
  • return a window title’s position (x, y)
  • return contents of clipboard
  • return a specified file line or whole file
  • variables can be used in almost any logical macro command
I could be here for the next week. I’m pretty sure this is useful, and easy enough for anyone to use.

Runner is looking for users.

I will always offer free keys to forum members joining before 2012.

Tell me the user_number songersoft has assigned you and I will send back a key code that will enable Runner forever.

(use the forum mail)

If Runner doesn't detect a valid license key (at startup). It requests you to submit some hardware information to songersoft.com. This information is required to log your 30 trail and provide you with a unique key. songersoft.com does not collect any personal information about you or what you do with the software. Basically this is all traceable back to me, I have Songersoft LLC and website. My goal was to write useful software that the world could use. In order to put time into it, I need a return profit. That means I need to maintain a reputable reputation as a trustworthy software provider and not goto jail for doing shady things. All clear?

If you have a license key. Runner operates without an internet connection.

I am a programmer and I like this forum very much. If you're in bad standing with this forum or compromise my member status I cannot help you.

If you are thinking about making a post read the forum rules, if your post violates the rules you will not get help from me if you post it.

More about Runner on the download page:


‘toggel audio device win_XP', macro create and edit example

Posted Image

preview (video coming soon)

Posted Image

This post has been modified for completeness

Edited by Xandy
Link to post
Share on other sites

How are we to give it a whirl if you don't post the program? Personally, doesn't make sense to post this here as this is an example posts forum and the location where the download is shown on the about link shows a download link and is not working.

Edited by toddcbrf2

“Anyone who has never made a mistake has never tried anything new.”― Albert Einstein

Link to post
Share on other sites

The download page:


It's a 6.2MB zip file. It's on my server because of it's size.

The zip file includes:

- Runner.exe

- and all of it's dependencies

- about 100 .txt files used as Runner dialog windows (see ')

- A 'Examine Screenshot' folder - A program used to save screenshot clips and masks for pixel detection

- I wrote 'Examine Screenshot' in C++ using SDL. 'Examine Screenshot' is provided with all of the source files and is open source

For best results do not use the Runner x64.exe.

Drag and drop will only work on 32bit operating systems. Use the browse option instead if your running Runner on a 64bit operating system.

IMPORTANT Make sure to select XP compatibility mode for (Windows Vista and 7)

- before running Runner, Right click the Runner.exe, select properties, compatibility tab, select Run this application in compatibility mode, Windows XP service pack (2 or 3)

- ignore this step if using Windows XP

There used to be an error on the download page because of an error when I updated from my google docs.

It is working for me at the moment, please try again.

Look this is a work in progress, I would develop, test, and fret; Until I had the desired general purpose functionality. Then I would work on a user interface

to bring that functionality to life for a user. (undoubtedly the hardest part, I'm going to venture to say programmers love a good interface, but despise writing one for the general computer user). My interface requires an understanding of what the program tries to do. (Trigger system, assign hotkeys to processes or process lists) is the general idea. I worked on this thing, almost every, the developing parts of this project are always in my mind. I began development on this project probably more than a year and a half ago. Threw things up, torn code down, and there seems to be no limit to the amount of polish that can be applied.

I'm just starting to share this online. This program has been my life, it's extremely useful and just about all of it's primary goals have been achieved. It's scary for me to try and present this online (there's allot of shit to do, and verify). Please assist me by reporting any problems here. Once Runner assigns you a user_number I can generate a key for your computer. Once you have a key, Runner stops doing the online validation at Runner startup. Thus increasing the usefulness of the tool and it's yours forever.

Runner's opening cost is $9.99 + the sale tax in my state. Comes out to $10.69. Runner is currently free if you mail me your Runner user_number, i'll return you a license. The paypal is setup too, but you can get it for free here.

(I've seen programs that have some of the functionality of Runner with prices from FREE to $900)

I would love to give back to the forum, but I really don't have anything to give. If this project has a return profit. I will give back to AutoIt 10% of monetary gains. I may increase that percent in the future, but $10 out of $100 is low enough for me to give back before startup costs are reimbursed.

If you'd like to sell your software online I can offer the methods I used to get you started, purely as advice and speculation. I don't have much time for that right now, but you can let me know if you are interested.

I did use other people's code and UDF files. Nothing I used compromised any copy write, agreements, or author's consent. I will document contributor's if they agree that I should do so. This step isn't going to happen over night. Contributor's can also be a part of the profits.

Edited by Xandy
Link to post
Share on other sites

I had a tenant with young daughter, I must have manually changed my audio device from headphone to stereo 200 times. With a Runner macro, I can switch the audio device by holding HOME and pressing END. The macro takes less than 2 seconds to complete, and it looks like it's 6 lines of macro code (see first picture in first post) with some error checking. I was very happy to use my macro.

Now HOME was being used as a modifier, so Runner cannot set a 'system level' hotkey. Resulting in HOME and END being sent to application with focus. Runner can only set 'system level' hotkeys using modifiers SHIFT, CTRL, ALT, or no modifier. You can still choose not to set the key to system level. When hotkey is 'system level' triggering key presses are not sent to application with focus.

Runner wrote 900 dynamic functions for hotkeyset.

Runner can store more hotkeys, but only 900 system level. Fully customizable.

I'd like to make a video of Runner banging out 900 unique functions while I eat a sandwich. (I'm too excited for videos right now.)

2 of my friends use this program everyday to:

Narrate time of day with custom computer voice, no need to view the desktop

and soft mute (lower the system volume during commercials, walk away, then restore previous volume.

I don't know what hotkeys they set,

Macros can do allot of things, even launch your own custom programs, or launch them via hotkeys without a macro.

Every time I typed 'Runner' in this message all I had to do was press SHIFT+CTRL+r. Macros can go much deeper than that. How far will you take Runner?

Edited by Xandy
Link to post
Share on other sites
  • 2 months later...

Runner 4.1 fixes (updated July 30 2012): (Runner_about_page)

  • Fixed macro group colors for nested IF / END_IFs across macro command pages.
  • Added parent handle to file dialogs so they don't get lost behind windows
  • Improved macro condition ELSE logic
  • Added a macro command to return window handle to udv (macro variable)
  • - - - usefull for storing the occurrence of a window title
  • Running macros can now respond to up 4 keysdown/mouse per macro command
  • Added constant and variable x and y to control click macro command
  • Drag and drop should now work on win_7 and Vista
  • - - - (thanks Holger, ProgAndy, trancexx, leomoon, guinness, ect )
  • (drag and drop uses Melba23's and it's awesome)
  • Fixed bug with value not being stored when edited macro command lost focus to another window
  • (unfixed bug) Changing the amount of macro commands displayed per page causes an error in the macro command list gui. Restart Runner and the new amount of commands per page is displayed. Sorry I'll get to it, even faster if you request it.
Runner uses very little memory to use or set hotkeys (less then 5mb). Slow computers and computers with low memory may preform badly when creating or editing macros.

There are tons of controls and it was acceptiable to me at this point to require tons of memory during this part of the program.

If anyone knows how to populate a combo or list box, then create many instanstances of that box. Instead of filling 120 combo boxs with the same data, that could speed things up and save memory.

Edited by Xandy
Link to post
Share on other sites

I goofed added a quick fix to solve controls losing their value, and begin incorrectly reading combo box indexs, ruining all my user defined variables among other controls.

Also I state that ELSE was working better, however it was released broken. I have fixed these issues.

Sometimes I spend a few days resolving issues, before you know it I feel a release is ready and bam I didn't test the last things I threw in there. On the good note improvements were made, I found things that did not stand, and I corrected them; hopefully. And that's how it is.

Runner_v4.2 up at Runner_about_page July 31 2012.

This concept totally works, I just broke a few things in haste. Re download, re install, I appreciate your input.

The install source is now included in the download. It's not written well, it's written to perform a task. (my SDL c++ program doesn't know how to get mydocuments path, but AutoIt it does. Also if running a macro saved on my machine, the pathes are going to need converted to run on yours. Those are the purposes of the installer.

Edited by Xandy
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Synaps3
      This script will make it so you can press Alt + "+" in Windows Explorer to select all files with the current file extension. This is something that I wanted for a long time and it should be a feature in Windows, but it's not. The only way to get close is to use the search thing (but then it shows the results excluding everything else) or to group by that type, but I don't want it grouped.
      You can press Alt + Enter right after to open properties on those files or you can press delete to delete only files of that type.
      You need the "Automating Windows Explorer" pack here: https://www.autoitscript.com/forum/topic/162905-automating-windows-explorer/
      #include "Includes\AutomatingWindowsExplorer.au3" #include <Array.au3> Opt( "MustDeclareVars", 1 ) HotKeySet("!=", "SelectTypes") Func SelectTypes() ; Windows Explorer on XP, Vista, 7, 8 Local $hExplorer = WinGetHandle("[REGEXPCLASS:^(Cabinet|Explore)WClass$]") If Not $hExplorer Then MsgBox(0, "Explorer", "Could not find Windows Explorer.") Return EndIf $hExplorer = WinActive("[REGEXPCLASS:^(Cabinet|Explore)WClass$]") If Not $hExplorer Then MsgBox(0, "Explorer", "Windows Explorer is not in focus.") Return EndIf ; Get an IShellBrowser interface GetIShellBrowser($hExplorer) If Not IsObj($oIShellBrowser) Then MsgBox(0, "Explorer", "Could not get an IShellBrowser interface.") Return EndIf ; Get other interfaces GetShellInterfaces() ; Get selected files with full path ;GetFiles( $fSelected = False, $fFullPath = False, $fPidl = False, $iMax = 0 ) Local $aAllFiles = GetItems(False, False) Local $aFiles = GetItems(True, False) Local $sExt Local $i If UBound($aFiles) = 1 Then ;MsgBox(0, "Selected", $aFiles[0]) $sExt = StringRight($aFiles[0], StringLen($aFiles[0]) - StringInStr($aFiles[0], ".", 0, -1)) ;MsgBox(0, "Selected", $sExt) For $i = 0 To UBound($aAllFiles) - 1 If StringInStr($aAllFiles[$i], ".") > 0 Then If StringRight($aAllFiles[$i], StringLen($aAllFiles[$i]) - StringInStr($aAllFiles[$i], ".", 0, -1)) = $sExt Then SetSelectedItem($i) EndIf EndIf Next Else MsgBox($MB_ICONWARNING, "Error", "None or multiple items selected!") EndIf EndFunc While 1 GUIGetMsg() Wend  
    • By asiawatcher
      hi below i got one script i made which runs audacity starts a recording and ends it at specific times
      when i run the script even if it isn't the time to start audacity and sits idle on taskbar the pc fan gets very loud, when i close the script it comes back to normal 
      why this happens ? anything wrong with my code ?? cheers
      #include <INet.au3> #include <Array.au3> #include <WinAPIFiles.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <string.au3> #include <FTPEx.au3> #include <ClipBoard.au3> #include <date.au3> #include <ProgressConstants.au3> #include <IE.au3> #Include <Constants.au3> #Include <INET.au3> #include <SendMessage.au3> #include <File.au3> #include <String.au3> #include <MsgBoxConstants.au3> #include <StringConstants.au3> #include <Misc.au3> #include <FileConstants.au3> #include <WinAPI.au3> while 1 if @HOUR = '11' And @MIN = '00' Then  Run("C:\Program Files (x86)\Audacity\audacity.exe", "", @SW_MAXIMIZE) SLEEP(2000) if ProcessExists("audacity.exe") Then winactivate("Audacity") EndIf      Send("r") ;;KREVATI Sleep(1000 * 60) endif if @HOUR = '23' And @MIN = '00' Then  if ProcessExists("audacity.exe") Then winactivate("Audacity") EndIf Send("s") Sleep(1000 * 60) EndIf wend  
    • By generic-username
      I've been trying to use the hotkey but it doesn't seem to work. The console log says "AU3 Check ended" thing everytime I run the script, it annoys the hell out of me. I'm quite new to AutoIt. Any help would be greatly appreciated.
      HotKeySet("a", "notepad") HotKeySet("b", "notepad") HotKeySet("c", "notepad") HotKeySet("d", "notepad") HotKeySet("e", "notepad") HotKeySet("f", "notepad") HotKeySet("g", "notepad") HotKeySet("h", "notepad") HotKeySet("i", "notepad") HotKeySet("j", "notepad") HotKeySet("k", "notepad") HotKeySet("l", "notepad") HotKeySet("m", "notepad") HotKeySet("n", "notepad") HotKeySet("o", "notepad") HotKeySet("p", "notepad") HotKeySet("q", "notepad") HotKeySet("r", "notepad") HotKeySet("s", "notepad") HotKeySet("t", "notepad") HotKeySet("u", "notepad") HotKeySet("v", "notepad") HotKeySet("w", "notepad") HotKeySet("x", "notepad") HotKeySet("y", "notepad") HotKeySet("z", "notepad") HotKeySet("{[}", "notepad") HotKeySet("{]}", "notepad") HotKeySet("{'}", "notepad") HotKeySet("{;}", "notepad") HotKeySet("{,}", "notepad") HotKeySet("{/}", "notepad") HotKeySet("{?}", "notepad") HotKeySet("{.}", "notepad") HotKeySet("{<}", "notepad") HotKeySet("{>}", "notepad") HotKeySet("{}}", "notepad") HotKeySet("{\}", "notepad") HotKeySet("{{}", "notepad") HotKeySet("{|}", "notepad") HotKeySet("{=}", "notepad") HotKeySet("{+}", "notepad") HotKeySet("{-}", "notepad") HotKeySet("{_}", "notepad") HotKeySet("{(}", "notepad") HotKeySet("{)}", "notepad") HotKeySet("{*}", "notepad") HotKeySet("{&}", "notepad") HotKeySet("{^}", "notepad") HotKeySet("{%}", "notepad") HotKeySet("{$}", "notepad") HotKeySet("{#}", "notepad") HotKeySet("{@}", "notepad") HotKeySet("{!}", "notepad") HotKeySet("{`}", "notepad") HotKeySet("{~}", "notepad") HotKeySet("{1}", "notepad") HotKeySet("{2}", "notepad") HotKeySet("{3}", "notepad") HotKeySet("{4}", "notepad") HotKeySet("{5}", "notepad") HotKeySet("{6}", "notepad") HotKeySet("{7}", "notepad") HotKeySet("{8}", "notepad") HotKeySet("{9}", "notepad") HotKeySet("{0}", "notepad") Func notepad() Run("notepad.exe") EndFunc  
    • By Dan_555
      here is a configurable HotKey Gui script, which i wrote for my current Project:
      #include <Array.au3> #include <ComboConstants.au3> #include <GuiComboBox.au3> #include <GUIConstantsEx.au3> #include <String.au3> #include <WindowsConstants.au3> #include <Array.au3> Global $snip_inifile = @ScriptDir & "\" & "hotkeygui.ini" ;If $HKSTRING is changed, make sure to adjust the $z number in the SetHotkeyKeys function. Local $HKSTRING = "[;][#;Win][!;Alt][+;Shift][^;Ctrl][0;0][1;1][2;2][3;3][4;4][5;5][6;6][7;7][8;8][9;9][a;a][b;b][c;c][d;d][e;e][f;f][g;g][h;h][i;i][j;j][k;k][l;l][m;m][n;n][o;o][p;p][q;q][r;r][s;s][t;t][u;u][v;v][w;w][x;x][y;y][z;z][{PAUSE};Pause][{BREAK};Break][{HOME};Home/Pos1][{END};END][{PGUP};Page UP][{PGDN};Page Down][{F1};F1][{F2};F2][{F3};F3][{F4};F4][{F5};F5][{F6};F6][{F7};F7][{F8};F8][{F9};F9][{F10};F10][{F11};F11][{F12};F12][{SPACE};Space]" Local $HKT = _StringBetween($HKSTRING, "[", "]") Global $HK, $HKS Global $h_HotkeyTestInput Dim $HK[0][2] ;Hotkey keys+names Dim $HKS[6] ;Hotkey (ini)settings 0-3 combo boxes, 4 = Redirect the hotkey test to the input box, 5=Current Hotkey Set. For $x = 0 To UBound($HKT) - 1 ;Make an array including the text from HKSTRING _ArrayAdd($HK, $HKT[$x], 0, ";") Next $HKT = "" $HKSTRING = "" SetHotkeyKeys(0) ;Set the initial hotkey SetHotkeyKeys(1) ;Open the config-gui while 1 ;Test the hotkey. Output is in the console. Exit through traymenue. sleep (10) WEnd Func SetHotkeyKeys($showgui = 0) ;$showgui 0 = Set the saved hotkeys, 1 = Show gui to change the settings Local $a, $b, $c, $z $z=4 ;$z of the text from $HK will go in to c1-c3, the rest goes to c4 $HKS[0] = IniRead($snip_inifile, "hotkey", "0", "4") $HKS[1] = IniRead($snip_inifile, "hotkey", "1", "0") $HKS[2] = IniRead($snip_inifile, "hotkey", "2", "0") $HKS[3] = IniRead($snip_inifile, "hotkey", "3", "12") $HKS[4] = 0 $HKS[5] = $HK[$HKS[0]][0] & $HK[$HKS[1]][0] & $HK[$HKS[2]][0] & $HK[$HKS[3] + $z + 1][0] If $showgui = 1 Then $HKS[4] = 1 #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Hotkey Config", 317, 79, -1, -1, $WS_POPUP + $WS_CAPTION) $C1 = GUICtrlCreateCombo("", 4, 50, 72, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) $C2 = GUICtrlCreateCombo("", 82, 50, 72, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) $C3 = GUICtrlCreateCombo("", 161, 50, 72, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) $C4 = GUICtrlCreateCombo("", 239, 50, 72, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL)) $Label1 = GUICtrlCreateLabel("Please set a hotkey to use. Note: Not all combos may work.", 4, 30, 300, 17) $Button1 = GUICtrlCreateButton("Set + Save", 4, 4, 70, 23) $h_HotkeyTestInput = GUICtrlCreateInput("Test", 82, 5, 150, 21) $Button2 = GUICtrlCreateButton("Exit", 239, 5, 72, 23) _GUICtrlComboBox_SetMinVisible($C4, 60) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### For $x = 0 To UBound($HK) - 1 If $x <= $z Then _GUICtrlComboBox_AddString($C1, $HK[$x][1]) _GUICtrlComboBox_AddString($C2, $HK[$x][1]) _GUICtrlComboBox_AddString($C3, $HK[$x][1]) Else _GUICtrlComboBox_AddString($C4, $HK[$x][1]) EndIf Next _GUICtrlComboBox_SetCurSel($C1, $HKS[0]) _GUICtrlComboBox_SetCurSel($C2, $HKS[1]) _GUICtrlComboBox_SetCurSel($C3, $HKS[2]) _GUICtrlComboBox_SetCurSel($C4, $HKS[3]) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $Button2 GUIDelete($Form1) ExitLoop Case $Button1 $HKS[0] = _GUICtrlComboBox_GetCurSel($C1) ;Read the combo - boxes $HKS[1] = _GUICtrlComboBox_GetCurSel($C2) $HKS[2] = _GUICtrlComboBox_GetCurSel($C3) $HKS[3] = _GUICtrlComboBox_GetCurSel($C4) HotKeySet($HKS[5]) ;Clear the Old Hotkey $HKS[5] = $HK[$HKS[0]][0] & $HK[$HKS[1]][0] & $HK[$HKS[2]][0] & $HK[$HKS[3] + $z +1][0] ;Assemble the hotkey string, use $z+1 ! If HotKeySet($HKS[5], "DoHotkey") = 0 Then MsgBox(0, "Hotkey", "Err: Could not set. " & $HKS[5]) ;Set the hotkey or display a message IniWrite($snip_inifile, "hotkey", "0", $HKS[0]) ;Save the hotkey to the ini file IniWrite($snip_inifile, "hotkey", "1", $HKS[1]) IniWrite($snip_inifile, "hotkey", "2", $HKS[2]) IniWrite($snip_inifile, "hotkey", "3", $HKS[3]) EndSwitch WEnd EndIf If $HKS[4] = 0 Then ;Function was called with 0 $HKS[5] = $HK[$HKS[0]][0] & $HK[$HKS[1]][0] & $HK[$HKS[2]][0] & $HK[$HKS[3] + $z + 1][0] If HotKeySet($HKS[5], "DoHotkey") = 0 Then MsgBox(0, "Hotkey", "Err: Could not set. " & $HKS[5]) Else $HKS[4] = 0 EndIf EndFunc ;==>SetHotkeyKeys Func DoHotkey() If $HKS[4] = 0 Then ;Main function ConsoleWrite("PRESS" & @CRLF) Else ;Gui test code: GUICtrlSetData($h_HotkeyTestInput, "Hotkey ! " & @hour & ":" & @min & ":" & @SEC) EndIf EndFunc ;==>DisplayActiveProcess This script uses only 1 hotkey, and saves it  into an ini file.
      To load and use the saved Hotkey from the ini use: SetHotkeyKeys(0) 
      And to open the configuration window, use SetHotkeyKeys(1). 
      Have fun.
    • By Bhooshan
      I need to mute an ongoing call on Microsoft teams without activating the window. Teams allows us to mute using shortcut key Ctrl+Shift+m but only when the window is active.
      # Used set option as ongoing call can be with any person which leads to change in Title Name.
      AutoItSetOption ( "WinTitleMatchMode", 2 ) 
      # I am not clear with the control ID which will be good to use here and also the key combination of ^M       
      ControlSend ( "Microsoft Teams", "", "[CLASS:Intermediate D3D Window; INSTANCE:1]", "{ctrl down}")
      Can anyone help...!!! 

  • Create New...