Workload Template - Custom FindImage Function

Summary

This is a custom function to find an image on the screen that matches a reference image with the option to click, right click, or double click on an image when found. If the image is found, the function returns a Boolean value of true, which can be used in logic statements. 

Usage

Before the custom FindImage function can be used, you will need to specify the using directive for the namespace System and System.Runtime.InteropServices at the top of the script. You will also need to load the ImageSearchDLL64 library with Custom.LoadDll at the beginning of the Execute method. This will load the dll needed by the FindImage function later on in the script. The rest of the code for the Findimage function can be pasted below Execute()

mceclip1.png

 

FindImage

Syntax

FindImage(string image, byte tolerance = 10, bool click = false, bool resetMousePosition = false, bool log = false, int timeout = 30);
 Parameters  Type  Default Value Description
 image  string   reference image to find on screen
 tolerance  byte  10 value 0-255, lower = more strict when it comes to differences in the images, higher = less strict but more prone to errors. Setting the value to 10 has proved successful in most cases.
 click/doubleClick/rightClick  bool  false click, double click, or right click on an image if found
 resetMousePosition  bool  false reset the mouse/cursor position after an image is found
 log  bool  false show findimage attempts in the log output
 timeout    30 timeout value in seconds to perform findimage

Code Example

// find an image, click on it, and reset the mouse position.
FindImage(image:@"\\vsishare\image.png", click:true, resetMousePosition:true, timeout:60);

// FindImage wrapped around a timer
StartTimer("find_image");
var image = FindImage(image:@"\\vsishare\image.png", click:false);
// if image is found or true, stop the timer, else cancel the timer
if(image)
{
StopTimer("find_image");
}
else
{
CancelTimer("find_image");
}

 

Video Example

 

In this video example we have a workload that opens calculator, finds the numbers 1 to 6 button using findimage and clicks on them. There is a timer wrapped around each findimage function so we can measure how long it takes to find an image. As you can see, the findimage is very fast, taking only 40-60 milliseconds on average to find the reference images. This, of course, can vary depending on the size of the reference image and the screen resolution of the target environment. 

 

Disclaimer

This workload is provided as-is and might need further configuration and customization to work successfully in each unique environment. For further Professional Services-based customization please consult with the Login VSI Support and Services team. Please refer to the section "Application Customization" for further self-help information regarding workload crafting and implementation.