Jump to content
Macro Express Forums

acantor

Members
  • Posts

    1,534
  • Joined

  • Last visited

  • Days Won

    18

Everything posted by acantor

  1. Hi Cory, I tested your theory, but <ALTD> really is needed at the end. Since yesterday, I have been testing the macro -- there are two actually, one for moving "up" a list, the other for moving "down" -- and so far, I have observed no side effects. When I changed the activation from Alt + Up to Shift + Alt + Up, I added <SHIFTD> and <SHIFTU> to the script, but the macro became less reliable.
  2. Hey Cory, Your idea inspired to try something that works: LOCK KEYBOARD AND MOUSE TEXT TYPE ALTU TEXT TYPE CONTROL>1 TEXT TYPE ALTU TEXT TYPE ARROW DOWN TEXT TYPE ALTU TEXT TYPE ENTER TEXT TYPE ALTD UNLOCK KEYBOARD AND MOUSE
  3. By holding down the hotkey, it's essentially a single keystroke to perform the action. But if I am forced to press and release the hotkey, it could be five, ten, twenty, or in some cases, 100 actions.
  4. Is there a way to script a hotkey macro, set to "Activate as soon as the keys are pressed," that ignores the keys that have been pressed? For example, I want to assign Alt + Up to navigate "up" a list. The script looks something like this: Text Type Ctrl + 1 Text Type Up Text Type Enter It works perfectly when I disable "Activate as soon as the keys are pressed." But as soon as I enable the setting, the script effectively becomes this: Text Type Alt + Ctrl + 1 Text Type Alt + Up Text Type Alt + Enter At that point, it fails. Is there a way to force Macro Express to ignore the keys I press during hotkey activation? "Lock" and "Unlock Keyboard and Mouse" do not help.
  5. Hi Alexandra, If this is something that occurs infrequently, I would leave it alone. It shouldn't happen. But if it does occur, the first thing I would do is recreate both macros from scratch; or copy the code into two new macros, delete the old ones, and then assign activations to the two new macros. Alternatively, get rid of your application-specific macro, and modify the global macro: If Window = XYZ (and/or) Program = XYZ (and/or) Control = XYZ ; Application specific... Do something application specific Else ; Global... Do something globally... End if
  6. You do not give us much to go on, but my guess is that you want something like this: // Move mouse to position X, Y relative to either the screen or window... // Use "Mouse Locator" utility to discover the value of X and Y. Assume X=10, Y= 20 Mouse Move 10, 20 Mouse Right Click // Wait for context menu to appear Wait 200 milliseconds // Choose the menu item that begins with a "V" (or uses "V" as an accelerator)... Text Type v // Wait for dialog box to appear Wait 200 milliseconds // Activate the default OK button Text Type Enter
  7. I am not familiar with WPF, but there is usually more than one way to skin a cat with Macro Express. Here are other approaches that might work: 1. Move the cursor to (x,y), and test the shape of the mouse cursor. 2. Move the cursor to (x,y), move it along a straight line in 1 pixel increments, and test for changes in the shape of the mouse cursor. 3. If the mouse cursor changes shape when, for example, updating a screen, lock the cursor to a fixed position, and monitor changes in the shape. 4. Select text -- perhaps the entire screen -- and copy it to the clipboard. Test the content of the clipboard for key words. 5. If there is an address line that gives hints about the window, copy the address to the clipboard, and test it for key words.
  8. When I first saw the video, I thought that it might be a joke. But at one point "arekowczarek" scrolls through his code. I looked at it, and realized that maybe, just maybe, he pulled it off. What a talent to be able to use Macro Express that way! I hope "arekowczarek" makes the code available so that others can learn -- and draw inspiration -- from his expertise. In my work, I meet a lot of people with upper body disabilities who would like to be able to play computer games, but cannot because of speed and/or coordination issues. I wonder how difficult it would be to modify the code to make the game speed adjustable.
  9. This is the best news this macro geek has heard in a long time!
  10. Both are extremely useful. Suffix is good for typing shortcuts. Prefix is good for other tasks. I wish I could have one set of Prefix and another set of Suffix shortkeys. But since I have to choose, Prefix is best for my style of working. When I teach courses on Macro Express, I find that Suffix shortkeys are easier for most people to understand, maybe because they resemble the AutoCorrect feature in Office applications.
  11. For years I have used the comma as the ShortKey prefix. There are no words that start with a comma, it requires no shift key and only one key press, and the key is easy to find by touch and non-touch typists. I set up a one-handed typist with Macro Express, and we chose the letter "q" as the prefix, as it is on the left side of the keyboard. So we had macros triggered by QA, QV, QW, etc.
  12. Here is the solution I have been using. Firefox can be configured so that Backspace does not go back to the previous page. I use an Add-on called Keyconfig. It is not available on the Firefox add-on site, but it's findable with Google. I don't know how to do the same thing in other browsers.
  13. A technique I have used with Web applications is to identify a "neutral" column on the page -- a vertical zone where there are no links or controls anywhere on the page, and "click" there before doing anything else. (A few pixels to the right of the left edge of the screen is usually where I look for the neutral zone.) The scripts usually end up looking something like this: Mouse Move ( a, b ) // Move mouse pointer to neutral zone Left Click // Give the page focus. This is especially helpful if the last focused control was an edit box. Text Type HOME // Go to top of page (or END to go to bottom of page) Mouse Move ( c, d ) // Move mouse pointer to its target Left Click
  14. The more tabbing you need to do on a web page, the less reliable the scripts become, especially when a site uses JavaScript. I get the best results using these techniques: Repeat X times Text Type TAB End Repeat Repeat X times Text Type TAB Delay Y milliseconds End Repeat Sometimes you can get where you need to go faster and more reliably by sending SHIFT TAB instead of TAB. And this is also a possibility: Text Type CONTROL f ' Find Short delay Text Type Surname: ' Name of field you are searching for Text Type ENTER Short delay may be needed Text Type ESC Short delay may be needed Text Type TAB ' (or maybe SHIFT TAB to reach the target
  15. I received the following email today: "Issue [iSS7080] submitted by you has been resolved. The change will be available with the next release of Macro Express Pro". ISS sets the standard for dealing with bugs! Thank you!
  16. See if these articles help: Voice-enabling a Web-based Application: Lessons Learned http://www.cantoraccess.com/publications/s...e_web_app.shtml Two Methods for Triggering Macro Express Scripts with NaturallySpeaking http://www.cantoraccess.com/publications/s..._natspeak.shtml
  17. Try using a pop up menu instead of a floating menu, and see if it helps setting activation to "window gains focus."
  18. I am not surprised that it works that way. If I wanted to insert the text <CONTROL>a into a document, I would probably choose to use a series of text type commands: Text Type "<" Text Type "CONTROL>a" I haven't noticed issues with Clipboard commands, other than it I sometimes need to insert a time "shim" afterward, e.g., a 100 or 150 ms delay. I sometimes use Clipboard commands, and at other times, <CONTROL>c, x, or v. The two techniques appear to to yield identical results.
  19. Thanks for confirming. I have reported it as a bug. Alan
  20. I have written a handful of scripts in ME Pro that ignore scope "Global Except" when more than one exception is listed. For example, a script will work when Global Except is set to Window = "xxx," but not when set to Window = "xxx" and Program = "yyy." Can others confirm whether this is a bug?
  21. I think you may be able to trigger this kind of script using Process Event ("Process Starts Running"). It's worth a try.
  22. I think I have seen something similar when scripting for web applications that use JavaScript. I am not sure what the problem is, but it appears that once JavaScript is running, it needs to complete whatever it is doing. I know of no way to test whether JavaScript is running. I have always resorted to inserting delays. Does this help?
  23. I second that! Wait until Clipboard Is Empty Wait until Clipboard Is Not Empty
  24. I understand the appeal of running a check to ensure that the clipboard is empty before moving on. But from a practical standpoint, it may be as fast -- and maybe faster -- to add a fixed delay. Adding a delay is not as elegant as testing that an event has occurred, but in the end, I think it's OK if the script works reliably enough. A macro that has no ability to act upon programmatic information from the application or OS cannot be 100% reliable; but it can come close. This reminds me of a dilemma I faced recently. I was creating a virtual keyboard interface for a mouse-intensive, non-standard application. I strive to make macros that are fast, reliable, portable, intelligible, and inconspicuous. Sometimes a trade-off is necessary. To make these macros (almost) 100% reliable, I could send long series of keystrokes. But it made the screen very "flashy" and was a tad slow. In the end, I opted to cause the scripts to click on controls, which required two lines of code (move mouse, click mouse) rather than eight or ten (text type this... text type that...) It irritated me that these scripts were not portable and potentially unreliable, but in the end, speed, intelligibility, and non-conspicuousness won out.
  25. I also have difficulties wrapping my head around how to successfully pass Macro Express variables from one script to another in version 4. However, I have managed to get many of my scripts to work properly by (reluctantly) removing called macros that mess around with variable values. It means that my scripts are longer, more difficult to debug, and more awkward to modify... but at least they do exactly what I expect. I will continue to experiment with macros that pass variables from one macro to another, but for the moment, I will live with this inconvenience.
×
×
  • Create New...