Mighty Desktop

ProcessBot

 

 

Share

 

Overview
Suspend-Resume
Permanent Apps
Quick Items
Installed Programs
Desktop
Toolbox
Devices
Intranet
File Copier
File Renamer
File Comparer
Duplicate Cleaner
File Scanner
Folder Analyzer
File Splitter
File Concatenator
Drive Speed
Dictionary Merge
File Stamper
Duplicate Truncator
String Hunter™
Watchdog
Calcuverter
DualTypeCalc™
Unit Converter
DateTime Calculator
Currency Converter
Scheduler
Actions
Text Expert
Text Converter
Clipboard Recorder
Window List
WindowBot™
Process List
ProcessBot
Open Files
Process Variations
Process Functions
System Safety Functions
Seed Enigma™
Verify Integrity
File Monitor
Binary File Viewer
File Protector
Backup
Data Refresher
Windows™ Extensions
Environment Variables
Command Shell
Locate Command
Error Codes
Diagnose Start Problems
Desktop Shortcut
Hotkeys
Process Queue
Explorer Integration
Settings
About
General Features
Download
Buy License
Help
3rd Party Reviews
 

 

 

 

 

ProcessBot (of the tab Process Automation) can execute some actions whenever a certain process of interest appears on your system.

ProcessBot can be used for:

  • Automatically opening work folders when an application is started

  • Modifying the priority of a process as soon as it appears. For example you could want to always run a tool that you use in the background with 'Low' priority.

  • Up to your imagination.

If ProcessBot detects that the specified application is running it will execute the Action you configured. You can specify the trigger resp. interval when the checks should be made.

A list of arguments in the form "Name:Value" will be handed over to the executed action. ProcessBot will hand over at least the following arguments and you can add your own ones:

  • Text = Status message like "Executing ProcessBot Entry ..."
  • Title = Title you gave the entry in the list
  • ProcessName = Name of the process that matched, eg. 'notepad++.exe'
  • ProcessDescription = Description of the process that matched, eg. 'Notepad++'
  • PID = Process ID number
  • ProcessPathName = Pathname of the matching process
  • ProcessPathNameOrName = This is usually 'ProcessPathName' but if that is invisible (empty or filled with whitespace) it is 'ProcessName'
  • LastModification = The stamp of the last change of the process's file
  • ProcessArguments = The arguments that were given when the process was started
  • MatchArguments = Boolean from the entry in the list
  • ProcessIsElevated = Whether the process runs in admin mode
  • CommandLine = The command line that was used to start the process
  • WindowHandle = Hex representation of the handle of the main window of the process
  • WindowTitle = Title text of the main window
  • WindowClass = Class name of the main window
  • WindowStyle = The style (minimized, maximized, restored) of the main window, always in english words (untranslated)
  • ParentId = Process ID of the parent process of 'PID'
  • Priority = Either the process's priority or empty if not queryable
  • LastExecution: The DateTime this action was executed the last time
  • LogInfos: Boolean which tells whether the action should log some informations what it's doing (similar to 'Verbose')
  • ... = The field 'Action Arguments' in the grid will be parsed and all the arguments will be added to the list. The syntax is the same as for command line arguments. Example: Point:10,20 MyArgument:30" will add two arguments 'Point' and 'MyArgument' to the list. To figure out the syntax switch to the Actions tab and try out your action there first.

A special paste operation is supported: You can paste a list of ProcessBot entries from a textual XML structured definition. This is the same format that you will see when you drag or copy some entries into your text editor. If an entry is already existing it will be skipped. This allows to easily exchange ProcessBot entries with your friends or import some from websites. In the future there is planned to have a page on our Website that lists some new cool ProcessBot entries. Please send us your cool stuff by the feedback function in the About tab. We will then place it on that web page.

Identifying Processes

It is generally important to understand, how processes can be identified by Mighty Desktop. These are the basic facts:

  • The same executable can be running in multiple instances just with different arguments, and it will look like a completely different application (for example Windows Services, WhatsApp, Signal).

  • The same executable can be running in admin mode and also without

  • When Mighty Desktop runs in user mode and asks admin-mode applications for their name, pathname or arguments they can refuse. This is a security feature. These fields will just stay empty which will make it more difficult to match them, especially because they can be there or not there at each run of Mighty Desktop. You can avoid such problems by running Mighty Desktop in admin mode.

  • Be warned that the returned Name is sometimes not the same as the filename of the executable.

In the case the pathname is not returned by the system, Mighty Desktop will try to find an executable with the given 'Name' in the Windows system directory. If found it will assume that this is the one, but this is only a heuristic which can fail in rare cases.

As a result Mighty Desktop needs a quadruple <Name, PathName, Arguments, AdminMode> to precisely identify a process. To address the missing Name, PathName and Arguments there is a built in logic that if you for example look for a Name and a PathName and later for a comparison the Name matches but the PathName of the tested process is empty, it will still match.

For matching the PathName the comparison supports the pattern characters '*' and '?', and in addition a placeholder '{Version}' for a version number of up to 4 parts.

Arguments must exactly match by default. But because some programs are specifying version numbers or time indices as arguments there is a special notation available:

  • Insert "§any§" at the start to match any arguments

  • Insert "§regex§......§regex§" at the start to specify a Regular Expression which is not case sensitive.

  • Insert "§regexcs§......§regexcs§" at the start to specify a Regular Expression which is case sensitive.

This allows practically any matching criteria. The pattern characters '*' and '?' can't be used here because arguments can be potentially any string. The remaining part right of these notations can be used to specify the exact arguments that will later be used for starting the program if needed.

In case these properties change in more complicated ways, Mighty Desktop provides the ultimate solution: There is the tab Process Variations where you can specify a Regular Expression for each property. If no process matched exactly in a second step this list will be consulted and if both your given properties and all those of a target process match it will also be considered a match.

In the case nothing matches you can use the button '=> Process'. This one does an elaborate analysis which one of the properties doesn't match and reports it in the 'Log' panel.

Notes:

  • ProcessBot is not designed not distinguish between instances of the same executable which produce different windows (while having the same command line). If you want to do this you will have to use the WindowBot tab and trigger on window characteristics.

  • If an action doesn't get executed, select it in the grid and try the button "Go to Process". If that fails some properties of the process could have changed. The buttons contain some extended logic to find the cause and report it.

  • Processes can fail to be found if Mighty Desktop doesn't have enough privileges. For example the pathnames or other properties of some admin processes can stay empty. To mitigate this problem a special comparison is built in: If 'Name' is filled and 'Name' matches but the process's 'PathName' is empty, this will be taxed as a match. In other cases it can help to start Mighty Desktop in administrator mode. There is a button in the About tab that simplifies this.

 

 

   
Go to Homepage