This is a repost from 2006.
One of the best ways to learn to use a software product fully is to try to automate it. Testers and automators have to learn the software’s interface really well, possibly better than the people who wrote it. Ok, the developers know the algorithms better than anyone else, but it is the person automating it who knows the ins and outs, pitfalls and quirks of the interface.
We all know how badly designed some Windows programs are. And in these days of fancy hi-res graphics and snazzy toolbar buttons it’s easy for the designers to forget about shortcut keys and keyboard navigation. The most productive way to use a PC is to forget the mouse and learn the keyboard shortcuts. You can get things done much more quickly. Yet even the most experienced Windows users don’t know half the keyboard shortcuts that exist in Windows (tips for keyboard navigation in Windows could be a post for another day).
Knowing these shortcuts makes automation so much easier and more reliable. Automating an application by sending mouse events and mouse clicks is unreliable and depends on the screen resolution never changing. Although you can use relative mouse coordinates, sooner or later something is going to change and the button you want to click is not in the place it was when the script was created.
The automation/test engineer is the one who figures out the keyboard shortcuts and finds the simplest, most reliable way of navigating an application. People who automate applications regularly have a good understanding of the different ways to move around Windows and Windows applications. Automated Software Testing can help find issues in the interface just from the process of building the automated test, even before the test script has been run. Building an automation routine for an application will help you find those missing or duplicated shortcut keys and other objects that can’t be driven by the keyboard.
Automators spend so much time fiddling with the software’s interface that they will often become more knowledgeable than the “power-users”. Testers also have the great advantage of being allowed to try unusual scenarios that developers never think about or are too busy to try. They are allowed to break things!
So it goes both ways. Find out the windows keyboard shortcuts and the hot-keys for the application you’re scripting and you can create a better script. Build an application with good keyboard support and your application can be automated more easily. If it can be automated easily it will be easy to use!
We have today released Macro Scheduler 14.3. This version has had a UI refresh with new, larger toolbar buttons.
It has also had a lot of behind the scenes work done to make it more usable and look better on Windows 8 and Windows 10 when using high DPI scaling, which is now the default setting when using modern high definition monitors.
There are no functional changes in this release as we wanted to concentrate on the UI changes and DPI scaling issues first, and get this out as soon as possible. The next update will include script engine enhancements and work on that is already underway.
I thought it was about time for an update.
We are currently working on improving Macro Scheduler’s UI appearance under 4k UHD monitors. These screens are becoming more common, especially since the launch of Windows 10 which includes improved scaling features.
Macro Scheduler needs to be DPI aware in order to perform image recognition on modern high definition screens. The problem is that when you make an app DPI aware, Windows then doesn’t automatically scale it for you. The upshot of this is that the 16×16 toolbar icons amongst other things are then almost too small to see. Some older visual components also don’t cope well.
So we are working hard creating new 32×32 icons and making tweaks to some of the forms and components to ensure Macro Scheduler looks good and is usable on this new breed of high-res monitors.
We also continue to work on script engine improvements and feature suggestions. However, right now we are prioritising the UI improvements and since more and more people are using new 4k screens we plan to release an update with only these UI changes before releasing other changes. This will allow us to get this out more quickly.
Watch this space.
Every now and then someone asks something like “How do I change the font in a modal dialog box?” or “Can I make an Input box multi-line?”.
Well, no, you can’t do those things to the standard Message/MessageModal or Input box functions. But, don’t forget that with Macro Scheduler you have the ability to create your own dialogs and make them act and feel pretty much any way you like. So the answer to the above questions, is “Create your own versions”.
As an example, let’s say you want a modal dialog that looks and acts much like the standard modal message box created by MessageModal. Only you want the text to be green in an italicized aerial font. Here you go:
//this would go at the top - customize as you wish Dialog>CustomMsgBox object CustomMsgBox: TForm Left = 493 Top = 208 HelpContext = 5000 BorderIcons = [biSystemMenu] BorderStyle = bsSingle Caption = 'My Message' ClientHeight = 170 ClientWidth = 319 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style =  OldCreateOrder = True ShowHint = True OnTaskBar = False PixelsPerInch = 96 TextHeight = 13 object MSMemo1: tMSMemo Left = 0 Top = 0 Width = 321 Height = 137 Font.Charset = ANSI_CHARSET Font.Color = clGreen Font.Height = -11 Font.Name = 'Arial' Font.Style = [fsBold, fsItalic] ParentFont = False TabOrder = 0 end object MSButton1: tMSButton Left = 121 Top = 143 Width = 75 Height = 25 Caption = 'OK' DoubleBuffered = True ModalResult = 2 ParentDoubleBuffered = False TabOrder = 1 DoBrowse = False BrowseStyle = fbOpen end end EndDialog>CustomMsgBox SRT>ShowMsg SetDialogProperty>CustomMsgBox,,Position,poScreenCenter SetDialogProperty>CustomMsgBox,MSMemo1,Text,ShowMsg_Var_1 Show>CustomMsgBox,r END>ShowMsg //do this to call your message Let>MyMsg=Hello world, this is a lovely custom message box GoSub>ShowMsg,MyMsg
And don’t forget that once created you can call the dialog any time you like. And if you want to use it in lots of scripts then put the dialog block and subroutine into an include file and use Include> at the top of each script you want to use it in.
I’ve only just discovered that our newsletter subscriptions system has been broken since last January! New customers and anyone signing up to our newsletter since 15th January 2015 were not correctly subscribed to our newsletter. Luckily we have the email addresses in our database, they just weren’t allocated to the correct list. I’ve now fixed this and moved affected email addresses to the correct list. So those affected will now start receiving our newsletters. Hopefully you won’t be too surprised when you start receiving newsletters from us.