Prism.js Language Definition: mmm

Mini Mouse Macro Forum Threads

Table of contents

How to “Save individual settings for each macro”?

URL: Save individual settings for each macro
Date: November 30, 2024, 11:18:33 GMT


User: Hank

Date: November 30, 2024, 11:18:33 GMT

Hi,
I just bought the Pro version because I want to assign individual hotkeys to different macros.
How can I do this in practice? I do not find an option to save macro-specific settings.
Any help would be appreciated.

Thank you!


User: Zeak

Date: December 2, 2024, 4:54:17 GMT

Hi Hank,

I believe what you are looking for is the Quick Launch feature in the ribbon menu.

Quick Launch Menu
Quick Launch Example

Example:
Quick Launch Example

Hope this helps.

Cheers,
Zeak


Using MM with Finale music software

URL: https://minimousemacro.proboards.com/thread/767/using-mm-finale-music-software
Date: Nov 17, 2024 23:14:01 GMT

User: Laurie

Date: Nov 17, 2024 23:14:01 GMT

Greetings,

I want to create 3 macros to use in Finale music notation software. I want 3 shortcut keys to do 3 different settings. The Finale windows is NOT maximized. I don’t know how to make a macro run there. Can anyone help me?

Many thanks. Laurie

User: zeak

Date: Nov 19, 2024 23:51:17 GMT

Hi Laurie,

Unfortunately, without having this software myself I am unable to do any testing to help you. Does MMM work outside of the software?

Cheers, Zeak


Detect Changes

URL: https://minimousemacro.proboards.com/thread/766/detect-changes
Date: Nov 5, 2024 21:41:21 GMT

User: joseph

Date: Nov 5, 2024 21:41:21 GMT

I would like to create a macro that looks at a part of a website and waits for it to change.

If the changes stop within 10 seconds I want the macro to do A.

If the changes continue for more than 10 seconds I want the macro to do B.

Thanks

User: zeak

Date: Nov 12, 2024 6:25:47 GMT

Hi Joseph, See below code, hope this helps.

1 | IF | PIXEL RANGE | At Location [X:825 Y:813]::Size [W:100 H:100] | CHANGES::1::10::1 | GOTO MACRO LINE | Change
2 | RUN ACTION | GOTO MACRO LINE | NoChange
* | Change
3 | RUN ACTION | MESSAGE PROMPT | Change::::0::OK
* | NoChange
4 | RUN ACTION | MESSAGE PROMPT | No Change::::0::OK

You can also find lots of great information on the Conditions page. <www.turnssoft.com/conditions.html#pixelrange> Cheers, Zeak

User: zeak

Date: Nov 12, 2024 6:47:10 GMT

I couldn’t get the IF NOT working correctly, and I think this is missing the NOT CHANGE option for Operator. Hey Steve , could we look at adding this as an option.


Define decimal variable, divide it by 2, and then paste it

URL: https://minimousemacro.proboards.com/thread/764/define-decimal-variable-divide-paste
Date: Oct 27, 2024 22:22:33 GMT

User: joseph

Date: Oct 27, 2024 22:22:33 GMT

Hello, I created the below macro that copies a number that has eight decimal places to the right. Then the macro defines the decimal as %btc%, divides it by 2, and then paste the number somewhere else on the same website. The problem that I’m having is when the answer doesn’t conform to the eight decimal place format. For example, if the macro copied the number 0.00000249 the answer it would give me is 0.000001245 which is too long. Is it possible to make the macro round down to eight decimal places? So instead of 0.000001245 it would give me 0.00000124. Below is the macro in question:

1 | RUN ACTION | WAIT MILLISECONDS | 500
* | btc balance
2 | RUN ACTION | MOUSE CLICK | Left click at 1460 108 2 times with 77 ms delay
3 | 1460 | 108 | 500 | Keypress Ctrl+ | c
4 | RUN ACTION | WAIT MILLISECONDS | 500
* | define contents of cell a2
5 | RUN ACTION | DEFINE DECIMAL VARIABLE | %btc%::%clipboard%
6 | RUN ACTION | WAIT MILLISECONDS | 500
* | do maths
7 | RUN ACTION | DEFINE DECIMAL VARIABLE | %btc%::/2
* | paste results into cell b2
8 | RUN ACTION | MOUSE CLICK | Left click at 645 844 1 times with 0 ms delay
9 | RUN ACTION | KEYPRESS | %btc%

Thanks for your help!

User: zeak

Date: Oct 30, 2024 6:20:42 GMT

Hi Joseph, First of all, welcome to the forum. I don’t know of any MMM function to TRUNC a DECIMAL variable available. The only thing I can think of doing is using maths and the INTEGER variable to do a truncate. get your decimal variable divide it by 2 and multiple it by 100,000,000 then store it in an integer variable that will cut the .5 put your integer variable back into a decimal variable and divide by 100,000,000. It adds two extra lines to your code, and it throws an object error because it doesn’t like putting a decimal into a whole number object, but it works. Example.

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::0.00000249 <- Not needed for calculation.
2 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::/2::*100000000
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%DECIMAL%::
4 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL2%::%INTEGER%::/100000000
5 | RUN ACTION | MESSAGE PROMPT | %DECIMAL2%::Number::0::OK <- Not needed for calculation.

User: joseph

Date: Nov 8, 2024 6:16:49 GMT

Thank you for your help Zeak!


How to get Minimouse to retain a specific macro?

URL: https://minimousemacro.proboards.com/thread/765/get-minimouse-retain-specific-macro
Date: Oct 28, 2024 19:33:56 GMT

User: flycaster99

Date: Oct 28, 2024 19:33:56 GMT

I have the minimouse on my HP TE01-1022 that is running W11. I am able to make my macro and save it in Documents. However, when I activate Mini’s shortcut from the taskbar, I still have to load the saved macro onto the maximized Mini. How can I get the wanted macro to always open within the opening Mini? I know this can be done as I had it on the PC before it got its motherboard replaced by HP. Thanks

User: zeak

Date: Oct 30, 2024 22:42:37 GMT

Hi Flycaster99, I believe something similar to this one has come up before. Do you have the MMM program opening on startup? you could try turning off opening on startup and put your .mmmacro file into the windows startup folder. otherwise, you could always run it from a batch file as seen in the below thread. minimousemacro.proboards.com/thread/145/command-line-load-macro-running Cheers, Zeak


Detect image doesnt work for me

URL: https://minimousemacro.proboards.com/thread/616/detect-image-work-me
Date: Aug 5, 2022 12:19:31 GMT

User: mrclicker

Date: Aug 5, 2022 12:19:31 GMT

i am trying to automate the process of brave rewards on the brave browser. a few times an hour when using the brave browser a windows notification will come on the screen - something like this: (link to a sample image i am trying to capture) prnt.sc/ztIJEVIH7Ifd

and i want the MMM to click it when it does. i created an image file from the notification, to make sure its always the same: (link to the image i am trying to detect usinng MMM) prnt.sc/c8D-jokTlAMA and then tried to use MMM to find it and click it. i tried a few variations and nothing seems to work..this is the macro for the two options i tried, both fail to find it:

1 | IF | DETECT IMAGE | image path C:\Tools\brave.png::match quick::move mouse yes::save to vars X Y | IMAGE FOUND | MOUSE CLICK | Left click at %X% %Y%
2 | IF | DETECT IMAGE | image path C:\Tools\brave.bmp::match quick::move mouse yes | IMAGE FOUND | MOUSE CLICK | Left click at 1717 961 1 times with 0 ms delay

i tried both bmp and png both failed the same way MMM version 8.4.0 any ideas on what i am doing wrong? and what i can do to fix it ? thanks

User: philranger

Date: Aug 8, 2022 12:47:03 GMT

Hello, I’m not very knowledgeable about detect image, but did you screen capture on the same screen and with the same settings as where you are trying to detect? If not, a difference in resolution, color depth, etc. could be an issue.

User: mrclicker

Date: Aug 8, 2022 13:16:45 GMT

USoWV0dWXmFkYDAjTGiw.jpg Aug 8, 2022 12:47:03 GMT

philranger said: Hello, I’m not very knowledgeable about detect image, but did you screen capture on the same screen and with the same settings as where you are trying to detect? If not, a difference in resolution, color depth, etc. could be an issue. I did its using the WIN+SHFT+S screen capture in to clip board then saved in paint to .BMP

User: Steve

Date: Aug 10, 2022 22:33:32 GMT

Hi mrclicker

Try capture the image using the screen capture from within MMM. minimousemacro_detectimage_face.gif

User: Cat

Date: Sept 18, 2024 7:54:21 GMT

On my computer , what i see in the OCR image from MMM is what it is on the screen about an inch on the left, and also garbled


Key down and release

URL: https://minimousemacro.proboards.com/thread/763/key-release
Date: Sept 14, 2024 12:40:05 GMT

User: PLV

Date: Sept 14, 2024 12:40:05 GMT

I new to MMM and i cant figure out how to make the macro output for exemple: “aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa” Ive tried delaying the key release but it still only outputs one “a”. Can someone help me figure this out?


Keypress not detected but clicks are

URL: https://minimousemacro.proboards.com/thread/762/keypress-detected-clicks
Date: Sept 8, 2024 20:38:43 GMT

User: basseken

Date: Sept 8, 2024 20:38:43 GMT

Hello, I created a simple macro (which I loop) to use in a fan-made in-browser Unity game. The character has to move around and then some clicks in case a fight gets triggered. The game doesn’t detect ultra-short keystrokes and I want the character to move far enough, so the keypresses must be long:

1 | 592 | 480 | 269 | Keypress left | Key Down
2 | 592 | 480 | 4000 | Keypress left | Key Release
3 | 592 | 480 | 956 | Keypress right | Key Down
4 | 592 | 480 | 4000 | Keypress right | Key Release
5 | 637 | 591 | 1802 | Left Click Down
6 | 637 | 591 | 85 | Left Click Release
7 | 637 | 591 | 764 | Left Click Down
8 | 637 | 591 | 100 | Left Click Release

Whenever I play the macro, the game registers the clicking, but ignores the keypresses, no matter which ‘key down capture’ option I use. I tested keypressing arrow keys and keypressing letters in an in-browser text document and there it does detect it, according to the different ‘key down capture’ options I used. I also tried to switch ‘keypress left’ with ‘keypress a’ as the game also uses wasd to move and mixed it up with ‘wait seconds’:

1 | 640 | 590 | 100 | Keypress q | Key Down
2 | RUN ACTION | WAIT SECONDS | 4
3 | 640 | 590 | 100 | Keypress q | Key Release
4 | 640 | 590 | 100 | Keypress d | Key Down
5 | RUN ACTION | WAIT SECONDS | 4
6 | 640 | 590 | 100 | Keypress d | Key Release
7 | 640 | 590 | 435 | Left Click Down
8 | 640 | 590 | 78 | Left Click Release
9 | 640 | 590 | 435 | Left Click Down
10 | 640 | 590 | 78 | Left Click Release

Still nothing. Am I doing something wrong, did I forget to turn an option on, is it a Unity specific problem or…?

User: zeak

Date: Sept 9, 2024 6:18:58 GMT

Hi Basseken, First of all, welcome to the forum. Have you tried increasing the time of the keypress entries. k2sii0s.png Other only other reason for Keystrokes being ignored is if the Unity game in the browser is using a game engine that MMM isn’t sending the commands for. Cheers, Zeak

User: basseken

Date: Sept 10, 2024 12:01:07 GMT

Hello Zeak, Nice to meet you and thank you for your reply. I have edited all time lengths to check if it would change anything, but it doesn’t. Meanwhile I have checked with TinyTask and the game does register its keypresses. Any idea what the difference between the two programs’ keypress input might be?

User: zeak

Date: Sept 11, 2024 6:41:16 GMT

Hey Basseken, While I haven’t used TinyTask myself and I’m not fully versed with how MMM sends its commands. I believe MMM uses .Net where the TinyTask might be based in JavaScript or Python which would send command in different ways. Cheers, Zeak


detect image not working

URL: https://minimousemacro.proboards.com/thread/753/detect-image-working
Date: Aug 1, 2024 18:05:39 GMT

User: MMMnovice

Date: Aug 1, 2024 18:05:39 GMT

Hello! Im running into an issue with using the detect image/move mouse to image conditions. what ive done is try using win+sh+s and ive tried getting the image through MMM. Ive done full screen and in a range. when i click test, nothing happens.

User: MMMnovice

Date: Aug 21, 2024 15:07:37 GMT

im facing the same issue, no matter what i puts around with i cant get my mouse to an image.


How to create a macro that detects an image and clicks on it

URL: https://minimousemacro.proboards.com/thread/756/create-macro-detects-image-clicks
Date: Aug 15, 2024 23:42:47 GMT

User: canderson

Date: Aug 15, 2024 23:42:47 GMT

I am well aware of the DETECT IMAGE function but the problem i have encountered is when i am faced with 3 different images and i need the program to determine which image is present and then click on it, the code that i have is pasted below. So in short i am trying to create an OR statement( ). This is java which i am familiar with but MMM is new to me.
1 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\full.png::at 199 209 177 174::match quick::move mouse yes | IMAGE FOUND | CONTINUE
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay
3 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\tap.png::match quick::move
4 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay
5 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\plant.png::at 3 171 372 256::match quick::move mouse yes | IMAGE FOUND | CONTINUE | ELSE | 5 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\plant0.png::at 3 171 372 256::match quick::move mouse yes | IMAGE FOUND | CONTINUE | ELSE | 5 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\plant1.png::at 3 171 372 256::match quick::move mouse yes | IMAGE FOUND | CONTINUE
6 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay

I know line 5 is a mess but I’ve been pulling my hair out trying to find a way to make it work and i thought else statements would help, but then realized else statements only run when the previous line is false so it definitely won’t work but I am hoping that line 5 will give somewhat of an idea of what I’m trying to achieve. As always any insight will be much appreciated smiley.png

User: zeak

Date: Aug 19, 2024 3:35:28 GMT

Hi Canderson, First of all, welcome to the forum. Give the below code a try.

* | VARIABLES
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %IMG1%::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %IMG2%::0
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %IMG3%::0
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %IMG4%::0
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %IMG5%::0
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %XPOS%::0
7 | RUN ACTION | DEFINE INTEGER VARIABLE | %YPOS%::0
* | LOOP
8 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\full.png::at 199 209 177 174::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | DEFINE INTEGER VARIABLE | IMG1:1
9 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\tap.png::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | DEFINE INTEGER VARIABLE | IMG2:1
10 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\plant.png::at 3 171 372 256::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | DEFINE INTEGER VARIABLE | IMG3:1
11 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\plant0.png::at 3 171 372 256::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | DEFINE INTEGER VARIABLE | IMG4:1
12 | IF | DETECT IMAGE | image path C:\Users\conno\Desktop\res\plant1.png::at 3 171 372 256::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | DEFINE INTEGER VARIABLE | IMG5:1
* | LOOP CHECK
13 | IF | INTEGER VARIABLE | %IMG1%+%IMG2%+%IMG3%+%IMG4%+%IMG5% | GREATER THAN | 0 | GOTO MACRO LINE | ACTION
14 | RUN ACTION | GOTO MACRO LINE | VARIABLES
* | ACTION
15 | RUN ACTION | MOUSE CLICK | Left click at %XPOS% %YPOS% 1 times with 0 ms delay
16 | RUN ACTION | GOTO MACRO LINE | VARIABLES

You could add on to this by giving each XPOS YPOS a number for each image and clicking on each of them if IMG true. Cheers, Zeak


Pixel Color not detecting

URL: https://minimousemacro.proboards.com/thread/754/pixel-color-detecting
Date: Aug 5, 2024 14:59:19 GMT

User: alecsal

Date: Aug 5, 2024 14:59:19 GMT

When I want to use a pixel color condition, it does not detect the correct color when I hover over it with my mouse. I saw that in a forum from 2015 to change the resolution to 1280x720. I did that and it worked but on my work computer (using a different computer in this case), it picks up the pixel color perfectly and the resolution is 1920x1080. Why does it not work on my home laptop when it works fine on my work laptop and how do I fix it. work laptop is lenova thinkpad and home computer is microsoft surface.

User: Lacccci2

Date: Aug 6, 2024 7:24:12 GMT

Hi, Changing the display’s scaling to 100% from 125/150% fixed this issue for me, the display’s resolution was not important when I was dealing with this issue.

User: alecsal

Date: Aug 6, 2024 23:03:16 GMT

That worked, thank you so much


DEFINE STRING VARIABLE condition from clipboard

URL: https://minimousemacro.proboards.com/thread/755/define-string-variable-condition-clipboard
Date: Aug 5, 2024 15:02:06 GMT

User: alecsal

Date: Aug 5, 2024 15:02:06 GMT

I am trying to define a string from the clipboard but it is not consistently assigning to the correct string. How do I fix this?


Security Issues

URL: https://minimousemacro.proboards.com/thread/751/security-issues
Date: Jul 26, 2024 17:28:06 GMT

User: sands

Date: Jul 26, 2024 17:28:06 GMT

  1. Virus Total shows this application is malware:

<www.virustotal.com/gui/file/e1fb84e097471c15f7e99e9e5cfc20624ea68db5c87da523fbc38f8f919542a2>

  • (Crowdsourced, AliCloud, and VirIT) detected it.
  • The threat graph shows the application talks to an entire family of trojans and malware

<www.virustotal.com/graph/e1fb84e097471c15f7e99e9e5cfc20624ea68db5c87da523fbc38f8f919542a2>

  1. Any.Run Shows this application creates/modifies system certificates. Is there any valid reason why this application would be detected by the above?

Quicklaunch doesn’t work

URL: https://minimousemacro.proboards.com/thread/146/quicklaunch-work
Date: Feb 20, 2019 21:06:43 GMT

User: skeptic23

Date: Feb 20, 2019 21:06:43 GMT

I want to run a simple 3-line macro while working in a text editor. I created the macro, saved it, and assigned CTRL-m as its hotkey in the /Settings/Quicklaunch window. Then I saved it. I have Mini Mouse running, highlight a word in the text editor, hit CTRL-m, and nothing happens. If I use my mouse pointer to click on the playback button, of course, focus is moved to Mini Mouse and the macro plays, but not in the text editor where I need the keystrokes to run. I’m stuck, please help! smiley.png

User: Johnc

Date: Feb 21, 2019 4:20:53 GMT

1) try to add a line at the beginning to switch focus to your text editor:

11 | RUN ACTION | SELECT WINDOW BY NAME | Notepad

Just replace the name Notepad by the name of your editor. 2) try to use a more simple quick launch key e.g. F9 to test if it is working.

User: Steve

Date: Feb 22, 2019 5:56:10 GMT

Macro’s assigned to the quick launch can be enabled and disabled. Often people forget to enable the quick launch by turning the item ‘On’ . Check out the FAQ page here for a demo on quick launch ( <www.turnssoft.com/faq2.html#how%20do%20i%20run%20a%20saved%20macro%20at%20windows%20startup> ) macroqueue_orig.jpg

User: skeptic23

Date: Feb 24, 2019 1:33:45 GMT

Hey guys, thanks for the info. At this point my needs are extremely simple. Mini Mouse is quite powerful, but that involves a learning curve I’ve decided is a bit much for my needs. Thanks though, and I’ll definitely be back if I get into more complicated stuff. smiley.png

User: Noobie-noob

Date: Jul 17, 2024 17:46:17 GMT

defaultavatar.png Feb 24, 2019 1:33:45 GMT

skeptic23 said: Hey guys, thanks for the info. At this point my needs are extremely simple. Mini Mouse is quite powerful, but that involves a learning curve I’ve decided is a bit much for my needs. Thanks though, and I’ll definitely be back if I get into more complicated stuff. smiley.png Thanks, Steve.  I don’t think you get what he’s saying.  For some reason, the macro doesn’t run if we’re working in certain programs, at least not until we click on the Mini Mouse window.  This happens all the time when working in a remote environment, like a remote desktop.  You have to essentially have to toggle out of the Virtual Desk Environment (VDI) to get the Mini Mouse program to respond to the hotkey.  If you have a fix for that it would be great.


How to autostop and start the macro

URL: https://minimousemacro.proboards.com/thread/750/autostop-start-macro
Date: Jul 4, 2024 12:25:08 GMT

User: minifren

Date: Jul 4, 2024 12:25:08 GMT

Hey together i am completely new to MMM and it is quite a bit overwhelming^^ So i want to create an easy macro to do simple click actions, but with slight time delays of about 1-3 seconds and if possible with diffrent click allocations so they could variate. with a break inbetween the Loops of 35-45 Minutes how exactly can i get this done ?


Saving macros in EXE format

URL: https://minimousemacro.proboards.com/thread/117/saving-macros-exe-format
Date: Dec 12, 2018 13:45:53 GMT

User: Mike

Date: Dec 12, 2018 13:45:53 GMT

Is it available to save macros as EXE? Or do you have any plans to add this option to the program?

User: Steve

Date: Dec 12, 2018 21:36:51 GMT

Hi Mike, No it’s not a feature and most likely will not be. Saying that though enabling file association (faq link) for MMM saved files will allow for the .mmmacro file to be played like an exe. MMMFile-Ass.png

User: Mike

Date: Dec 14, 2018 15:48:33 GMT

Thank you, file association just works for me like EXE.

User: hartsa

Date: Jun 4, 2024 13:01:12 GMT

Is there any way to get file association working without admin access? Enabling it seems to require admin rights to write to registry. I work for a global multinational, which has this idiotic animated IM security lock-screen app running and displaying stupid instructions like “beware of tailgating”, stopping the monitors from going to sleep. First thing I do each morning is disable it from settings, but I’d like to automate that. Without admin settings.


Mouse Movement Not Registering in 3D Space

URL: https://minimousemacro.proboards.com/thread/192/mouse-movement-registering-3d-space
Date: Sept 4, 2019 1:36:23 GMT

User: Blodia

Date: Sept 4, 2019 1:36:23 GMT

Hi, First of all, I’d liek to say, fantastic app. It does everything I need it to do, except one thing.. Mouse within a game makes my character turn left/right/up/down (this is an FPS), however, although I see “Mouse Movements” being captured in the recording, during playback, nothing happens. If I’m recording within the game and am at a menu with a cursor visible, the cursor moves. It’s only my character that will not turn. Any ideas?

User: zeak

Date: Sept 4, 2019 3:00:18 GMT

Sept 4, 2019 1:36:23 GMT Blodia said: Hi, First of all, I’d liek to say, fantastic app. It does everything I need it to do, except one thing.. Mouse within a game makes my character turn left/right/up/down (this is an FPS), however, although I see “Mouse Movements” being captured in the recording, during playback, nothing happens. If I’m recording within the game and am at a menu with a cursor visible, the cursor moves. It’s only my character that will not turn. Any ideas? Hi Blodia, Welcome to the Forum, May I ask what game it is. As I’ve tried something like this myself, Believe it has to do with which engine the game is using also whether or not the game is full screen mode.

User: Blodia

Date: Sept 4, 2019 6:10:45 GMT

Hi Zeak, Thanks for the reply. Game in question is Destiny 2, in full screen mode.

User: Blodia

Date: Sept 4, 2019 6:13:50 GMT

Should also add, the movements in question, if I play the macro on my desktop, or within the game inside a menu, I do see the cursor moving. Perhaps it has to do with mouse positioning? Ie relative positioning vs absolute positioning…?

User: Steve

Date: Sept 4, 2019 7:01:31 GMT

Hi Blodia, Zeak hit the mark here. It is completely up to the game engine. Some games depending on the game engine just dont register mouse movement or clicks from macro playback. If the macro runs outside of the game but not inside of the game then it’s a safe bet to say that it’s the game engine.

User: Blodia

Date: Sept 4, 2019 15:05:26 GMT

Hi Steve, Thanks for getting back to me. I should note that other macro players do register movements in game, like Pulovers macro creator, or TinyTask. However MMM is the best one out of all of them, so I was hoping it was a config issue I had or something that prevented the movement.

User: Cam

Date: Apr 19, 2023 2:21:34 GMT

Hi, I’ve downloaded tinytask for a macro I want to use when im “afk” farming during school, when I start and press the record button only records my mouse movements it doesn’t recording any keyboard press or anything, can you help me please?

User: philranger

Date: Apr 20, 2023 18:57:24 GMT

Hello, Please try in a standard application such as the notepad. If it works there, it’s probably because the game tou are using doesn’t use standard windows methods for keyboard management.

User: Ryan

Date: May 18, 2024 19:48:08 GMT

USoWV0dWXmFkYDAjTGiw.jpg Apr 20, 2023 18:57:24 GMT

philranger said: Hello, Please try in a standard application such as the notepad. If it works there, it’s probably because the game tou are using doesn’t use standard windows methods for keyboard management. What if it was previously working before?


moving mouse down

URL: https://minimousemacro.proboards.com/thread/749/moving-mouse
Date: Mar 27, 2024 19:10:18 GMT

User: ik

Date: Mar 27, 2024 19:10:18 GMT

I am trying to copy a cell in excel, then do some stuff, and then come back to excel and move the mouse down to the next cell and copy it. Rinse and repeat. How do I tell the mouse to move down x amount from the previous loop


MMM is not cleaning up correctly when software is ended

URL: https://minimousemacro.proboards.com/thread/748/mmm-cleaning-correctly-when-software
Date: Mar 9, 2024 10:16:27 GMT

User: Archie

Date: Mar 9, 2024 10:16:27 GMT

When closing down the software after use, either X in top right corner of window or Alt+F4 when window is focused, will leave some unwanted and definitly uneeded rests behind in Windows 10 at least. I have not checked with other versions of Windows. MMM will leave its icon among the services running shown in the “Show hidden icons” part of the Windows toolbar. This is located usually in the down right corner closed to the clock and contains Icons for all the little helper softwares and services currently active on the computer. MMM will leave a Icon here for each and every use of MMM until you open up this icon showing area and hover the mouse pointer over the MMM icon. So if you open and close MMM 10 times you will have 10 MMM icons there cluttering up the system because all resources where not let go and MMM did not clean up after itself when closed down.


How do I install Pro?

URL: https://minimousemacro.proboards.com/thread/747/install-pro
Date: Mar 3, 2024 9:14:46 GMT

User: Matt

Date: Mar 3, 2024 9:14:46 GMT

Hi there, I’ve paid for pro version but haven’t received any kind if confirmation that my version has been upgraded to pro. Is it automatic or should I have been sent a link?

User: zeak

Date: Mar 4, 2024 6:33:20 GMT

Hi Matt, When you sign up for Pro, you will be sent an email that has the pro version. Cheers, Zeak

User: Matt

Date: Mar 4, 2024 13:54:31 GMT

Hey Zeek, Thabks for the reply. I haven’t received an email yet, should I have gotten it by now or does it usually take a little while? I purchased it 24 hours agthabks, Matt

User: zeak

Date: Mar 5, 2024 3:28:05 GMT

Hi Matt, I believe you should have received it by now, I know this is a typical IT thing to say but have you checked your junk folder. I will ping Steve here but you could also send an email to Steve@Turnssoft.com Cheers, Zeak

User: Matt

Date: Mar 5, 2024 5:09:31 GMT

Yeah mate been checking both inbox and junk but nothing yet. Thanks for the help, I’ll email Steve and see how we go smiley.png Cheers


RANDOM with boundaries set by variables possible ?

URL: https://minimousemacro.proboards.com/thread/746/random-boundaries-set-variables
Date: Mar 3, 2024 2:17:07 GMT

User: tom

Date: Mar 3, 2024 2:17:07 GMT

Hi , is it possible to feed variables into a random number generation, so instead of %RANDOM_100-200% ( a random number between 100 and 200 ) something like %RANDOM_%FROMNUM%-%TONUM%% ( a random number between FROMNUM and TONUM ) (appreciate that syntax wont work, its just to illustrate the question) Thanks for your help Tom

User: zeak

Date: Mar 4, 2024 6:29:59 GMT

Hi Tom, First of all, Welcome to the Forum. With the latest updates to MMM, yes that syntax would work. But it looks like the %Random% function cannot handle variable integers; we might have to ask Steve to add this to the ideas for improvements. Cheers, Zeak

User: tom

Date: Mar 4, 2024 23:59:27 GMT

Thank you Zeak


A way to use “IF | TIME” as a timer?

URL: https://minimousemacro.proboards.com/thread/745/use-time-timer
Date: Feb 29, 2024 16:44:45 GMT

User: snowday

Date: Feb 29, 2024 16:44:45 GMT

So, I’m looking for a way to make a macro wait X amount of time, but without the macro halting all activity until that time occurs.

I have multiple events that need to occur during a thirty minute window, and these events are dynamic in length and frequency, so I can’t just put a counter into a loop to approximate 30 minutes. What I would like to do is apply math to variable TIME to project what time it will be in thirty minutes, and then use that as a trigger.

In simpler terms, what I want is code that would do the same as the following, if TIME had a bit of extra functionality.

1 | IF | TIME | 2:04:09 PM | IS 30 MINUTES BEFORE CURRENT TIME | GOTO MACRO LINE | 1

To do ANYTHING like this, it seems I would need to be able to store the current time in a variable, and then regularly compare the current time to the time stored in the variable, to determine if 30 minutes have passed.

Is there any way to do this?

User: zeak

Date: Mar 4, 2024 6:08:21 GMT

Hi Snowday,

I have an idea, just wondering how you would determine your X time, would it be a prompt box at the start of the macro or based on what time the macro started.

And if you could give more examples of what you want done in lieu time that would be very helpful.

Cheers,

Zeak


No skipping numbers with lines of code?

URL: https://minimousemacro.proboards.com/thread/721/skipping-numbers-lines-code
Date: Oct 27, 2023 19:27:29 GMT

User: snowday

Date: Oct 27, 2023 19:27:29 GMT

I keep thinking I’m doing something wrong, because this is a trick I’ve used since the 1980s with any software that uses line numbering. When I’ve written code, I always skip to nice round numbers at important moments. So… 10 If this 20 Do some stuff 30 End if 100 If that 101 Do some other stuff 102 End if But I CANNOT make this work with MMM. I’m finding that if I ever skip numbers, the script will not run properly. The moment I changed the line numbers to all be sequential (1,2,3,4,5), it worked. This is particularly annoying because when I want to add some additional complexity or fine-tune something by adding a line, I have to manually change EVERY SINGLE number that comes after the change, as well as update EVERY SINGLE GOTO command. I had hoped the new GOTO Headers would have remedied this problem, but not using sequential numbers ALSO seems to prevent those from working properly. Is this accurate, or is there something I’m overlooking?

User: drybsmt

Date: Oct 27, 2023 21:57:23 GMT

Hello SnowDay, I can’t answer regarding the GoTo command but I can comment on renumbering the lines automatically. If you edit or write your macro in the editor,

wxmceYnTJgglriobbwyT.png there is a button, [123], that will renumber your lines of code automatically based on their position in the code.  hTZWVyneJX0jYBaMfutc.png Note: It does not reorder the lines based on modifying the line number but only renumbers the lines based on their position in the list. Attachments: wxmceYnTJgglriobbwyT.png

User: zeak

Date: Oct 30, 2023 3:59:37 GMT

Hi All, To add further to Drybsmt comment, The line numbers are an important part of the sequencing in the macro, particularly in referring to GOTO line. The easiest way to re-sequence the lines is to:

select a single line, right click on the line, select the Relist Rows option. gm9g68R.png

User: snowday

Date: Dec 13, 2023 16:32:42 GMT

Unfortunately this has no impact on the GOTO commands that reference certain line numbers. This still forces me to change EVERY LINE containing a GOTO that comes after a new line that has been added, which is a ridiculous undertaking in a complex program. I’m practically forced to debug everything all over again. This is why programming languages that use line numbers, are traditionally capable of skipping numbers without causing errors. If the program finds line 10 and doesn’t find 11, it simply moves on until it finds the next number. If there is a need to add more complexity later, you can do so without worrying about mucking up what you’ve already done.

User: DB

Date: Dec 23, 2023 3:14:23 GMT

You can change your GOTO to use a comment/remark label instead of line number so you don’t have to change anything when you renumber. <www.turnssoft.com/conditions.html#gotomacroline>

User: zeak

Date: Dec 27, 2023 0:19:40 GMT

Hi Snowday, As DB said in his post. Using line remarks as you seen in the snippet in my previous post. I have a line saying, “CLEAR VARIABLES”. I then use the condition GOTO | CLEAR VARIABLES, to jump back to that point in the macro. Hope this helps. Cheers, Zeak

User: snowday

Date: Feb 29, 2024 16:31:56 GMT

Dec 23, 2023 3:14:23 GMT DB said: You can change your GOTO to use a comment/remark label instead of line number so you don’t have to change anything when you renumber. ovqiSZMQkcHXJsgduMbm.jpg Dec 27, 2023 0:19:40 GMT

zeak said: Hi Snowday, As DB said in his post. Using line remarks as you seen in the snippet in my previous post. I have a line saying, “CLEAR VARIABLES”. I then use the condition GOTO | CLEAR VARIABLES, to jump back to that point in the macro. Ohhhhh. Derp. So simple I didn’t see it. Thank you!


Counting number of characters in a string

URL: https://minimousemacro.proboards.com/thread/744/counting-number-characters-string
Date: Feb 5, 2024 19:36:31 GMT

User: jcojr721

Date: Feb 5, 2024 19:36:31 GMT

Hi Steve, Hope all is well! I have a string that has names separated by commas.  I am trying to find a way to count the number of names in the string….I figured the simplest way might be counting the number of commas + 1. Is this possible, or do I need to send this to excel? Thank you!


Roblox issues

URL: https://minimousemacro.proboards.com/thread/706/roblox-issues
Date: Jun 29, 2023 10:52:04 GMT

User: madrn

Date: Jun 29, 2023 10:52:04 GMT

MMM does not input key presses to roblox(mouse inputs do work tough). Is there any way to fix it, or is does roblox just not allow it to work?

User: Steve

Date: Jul 3, 2023 8:30:10 GMT

Hi madrn If playback works with mouse movements but not key press then you can try running MMM as admin. Some applications may not allow MMM to trigger events into them. Have a search through this forum there are a few posts on this one.

User: whitey

Date: Jul 19, 2023 23:40:19 GMT

Can confirm I have the same issue The issue relates to the Microsoft Store verssion of the Roblox App The recording of the macro works and the items within the Roblox App are clicked and registered. The issue is only on playback. The Roblox window gets activated on the first click but no of the following macro clicks are registered. Tried running as admin but still no luck It appears the Microsoft Store migth emulate the Roblox game and this could be what causes the issue. Other auto/macro clickers appear to work

User: jack

Date: Feb 3, 2024 0:42:08 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jul 3, 2023 8:30:10 GMT

Steve said: Hi madrn

If playback works with mouse movements but not key press then you can try running MMM as admin. Some applications may not allow MMM to trigger events into them. Have a search through this forum there are a few posts on this one. this worked for me on a specific stock trading related software. I ran MMM as admin and it started working. thanks for posting.


Checking for a Specific Condition Throughout the Macro

URL: https://minimousemacro.proboards.com/thread/743/checking-specific-condition-macro
Date: Jan 20, 2024 13:56:09 GMT

User: bravesado

Date: Jan 20, 2024 13:56:09 GMT

Is there a possibility to check for a specific condition throughout the entire process when using a Macro? For instance, if a particular image appears at a specific time (nobody knows wenn) while the Macro is running, is there a way to pause the Macro? Or Is there a way to restart the entire process if the Macro unexpectedly gets stuck at any point? For instance, in case the Macro encounters an unforeseen issue, can it be set to initiate the entire operation anew? I would greatly appreciate any assistance on this matter. Thank you in advance.


Random Mouse Click on Img Area ?

URL: https://minimousemacro.proboards.com/thread/742/random-mouse-click-img-area
Date: Jan 2, 2024 12:46:55 GMT

User: bravesado

Date: Jan 2, 2024 12:46:55 GMT

Hello, I have another question. I am new to this, so please bear with me. I am attempting to perform a random click within a detected image area. Currently, when I click, it consistently targets the center of the image. Here is the code I’m using:

1 | IF | DETECT IMAGE | Image path: C:\x.bmp::At 548 762 855 280::Match full::Move mouse yes | IMAGE FOUND | CONTINUE
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 time with 0 ms delay

I tried this code, unfortuaniliyt it did not work too.

2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X%::+%RANDOM_1-20% %MOUSE_Y% 1 time with 0 ms delay

Could someone assist me in modifying this code so that the mouse click occurs at a random location within the identified image area? Thanks.

User: zeak

Date: Jan 3, 2024 23:15:26 GMT

Hi Bravesado, If you are trying to do a single mouse-click, then I would recommend using Entry instead of a condition (RUN ACTION).

Because the variables for %MOUSE_X% and %MOUSE_Y%, are dynamic variables based on the mouses current position, I believe they supersede any action to influence.

What I have done in the past is break that part of the code into a separate line that creates a static variable.

please see example code.

1 | IF | DETECT IMAGE | Image path: C:\x.bmp::At 548 762 855 280::Match full::Move mouse yes | IMAGE FOUND | CONTINUE
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%MOUSE_X%::+%RANDOM_0-40%::-20 | AND | 2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::%MOUSE_Y%::+%RANDOM_0-40%::-20
* | 3 | %INTEGER1% | %INTEGER2% | 0 | Left Click
3 | RUN ACTION | MESSAGE PROMPT | Mouse X = %INTEGER1%'\n'Mouse Y = %INTEGER2%::::0::OK

P.S. you can also minus an amount at the end of a random number to get it to go into the negative and I always find testing my X Y coordinates with MESSAGE PROMPT first to be handy.

Just remark out the mouse click line.

Cheers,

Zeak

User: bravesado

Date: Jan 4, 2024 1:09:09 GMT

ovqiSZMQkcHXJsgduMbm.jpg Jan 3, 2024 23:15:26 GMT

zeak said: Hi Bravesado, If you are trying to do a single mouse-click, then I would recommend using Entry instead of a condition (RUN ACTION).

Because the variables for %MOUSE_X% and %MOUSE_Y%, are dynamic variables based on the mouses current position, I believe they supersede any action to influence.

What I have done in the past is break that part of the code into a separate line that creates a static variable.

please see example code.

1 | IF | DETECT IMAGE | Image path: C:\x.bmp::At 548 762 855 280::Match full::Move mouse yes | IMAGE FOUND | CONTINUE
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%MOUSE_X%::+%RANDOM_0-40%::-20 | AND | 2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::%MOUSE_Y%::+%RANDOM_0-40%::-20
* | 3 | %INTEGER1% | %INTEGER2% | 0 | Left Click
3 | RUN ACTION | MESSAGE PROMPT | Mouse X = %INTEGER1%'\n'Mouse Y = %INTEGER2%::::0::OK

P.S. you can also minus an amount at the end of a random number to get it to go into the negative and I always find testing my X Y coordinates with MESSAGE PROMPT first to be handy.

Just remark out the mouse click line.

Cheers, Zeak

It works perfekt!

Thank you Zeak once again for sharing your expertise and helping me overcome the challenge. Your contribution has been immensely valuable, and I truly appreciate it.


How to use one of 3 different conditions?

URL: https://minimousemacro.proboards.com/thread/741/use-3-different-conditions
Date: Dec 30, 2023 19:59:56 GMT

User: bravesado

Date: Dec 30, 2023 19:59:56 GMT

Hello everbody, I want to check 3 different conditions and if one of them succesfull then i want to let macro continue. How can I do that. Can someone give me an example with pixel color? Thanks

User: zeak

Date: Jan 1, 2024 22:59:54 GMT

Hi Bravesado, First of all, welcome to the forum. Please see my example below and let me know if you have any questions.

* | Variables
1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::NO
* | Test
2 | IF | PIXEL COLOR | Color [R=50, G=50, B=50::At Location [X:1208 Y:527] | IS THE SAME | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::YES
3 | IF | PIXEL COLOR | Color [R=18, G=18, B=18]::At Location [X:1208 Y:527] | IS THE SAME | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::YES
4 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1208 Y:527] | IS THE SAME | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::YES
5 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS FALSE | GOTO MACRO LINE | Test
* | Continue

Cheers, Zeak

User: bravesado

Date: Jan 2, 2024 11:01:20 GMT

ovqiSZMQkcHXJsgduMbm.jpg Jan 1, 2024 22:59:54 GMT

zeak said: Hi Bravesado, First of all, welcome to the forum. Please see my example below and let me know if you have any questions.

* | Variables
1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::NO
* | Test
2 | IF | PIXEL COLOR | Color [R=50, G=50, B=50::At Location [X:1208 Y:527] | IS THE SAME | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::YES
3 | IF | PIXEL COLOR | Color [R=18, G=18, B=18]::At Location [X:1208 Y:527] | IS THE SAME | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::YES
4 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1208 Y:527] | IS THE SAME | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::YES
5 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS FALSE | GOTO MACRO LINE | Test
* | Continue

Cheers, Zeak Hi, and thanks for your help. I did it like that and it works too.

7 | RUN ACTION | WAIT SECONDS | 3
8 | IF | DETECT IMAGE | image path X1::match quick::move mouse yes | IMAGE FOUND | GOTO MACRO LINE | 11 | ELSE | 2 | IF | DETECT IMAGE | image path X1::match quick::move mouse yes | IMAGE NOT FOUND | GOTO MACRO LINE | 9
9 | IF | DETECT IMAGE | image path X2::match quick::move mouse yes | IMAGE FOUND | GOTO MACRO LINE | 11 | ELSE | 2 | IF | DETECT IMAGE | image path X2::match quick::move mouse yes | IMAGE NOT FOUND | GOTO MACRO LINE | 10
10 | IF | DETECT IMAGE | image path X3::match quick::move mouse yes | IMAGE FOUND | GOTO MACRO LINE | 11 | ELSE | 2 | IF | DETECT IMAGE | image path X3::match full::move mouse yes | IMAGE NOT FOUND | GOTO MACRO LINE | 7
11 | RUN ACTION | WAIT SECONDS | 3

Only Familiar with Rsync

URL: https://minimousemacro.proboards.com/thread/740/familiar-rsync
Date: Dec 28, 2023 18:17:39 GMT

User: halimzhz

Date: Dec 28, 2023 18:17:39 GMT

Dear all I’m new with robocopy, on linux i’m always use below command to copy between partiton or drive: rsync -avPhz –delete –exclude=virtfs –exclude=cache –exclude=tmp /home/ /mnt/new/ That command will copy from /home/ partition to new disk partition /mnt/new/ May i know what command i should use in Robocopy for Windows tht similar to my rsync above ? My D: drive is having bad sector so i going to opy to E: Drive, Please help


String manipulation?

URL: https://minimousemacro.proboards.com/thread/734/string-manipulation
Date: Dec 23, 2023 3:01:43 GMT

User: DB

Date: Dec 23, 2023 3:01:43 GMT

Is there a way to do any string manipulation other than combining strings? Can I get the length of a string? Can I get grab part of a string (substring) or even get one character? Can I do any kind of string padding? For example, I’d like to remove everything from the clipboard after the first period. MMM has been fun and useful. Thank you.

User: zeak

Date: Dec 27, 2023 0:05:11 GMT

Hi DB, Currently there is not many string functions, particularly the ones you are after. but Steve is currently working on adding this functionality to the next update. minimousemacro.proboards.com/thread/608/update-8-4-1-development Cheers, Zeak

User: DB

Date: Dec 28, 2023 17:02:15 GMT

Thanks Zeak! Those string functions would be really useful for me.


make macro run at a specific time?

URL: https://minimousemacro.proboards.com/thread/737/make-macro-run-specific-time
Date: Dec 24, 2023 23:12:29 GMT

User: foxyonfireYT

Date: Dec 24, 2023 23:12:29 GMT

I want the macro to run at a specific time, such as 8:00 on the dot. How can I make the macro play at a specific time if I already have recorded the macro? I also could find some way to activate it with python, since I know how to use Python to do something at a certain time. I just want the macro to play once at an incredibly fast speed, then stop. Is there any possible way to do this?

User: zeak

Date: Dec 27, 2023 0:45:48 GMT

Hi Foxy, If you are using Windows, the best result I have had with doing this is by using Task Scheduler app that is standard on Windows. If you are using MacOS, I believe python would be your best bet, but I am unfamiliar with what MacOS has to offer that is similar to Task Scheduler. Cheers, Zeak


function Ctrl+Alt

URL: https://minimousemacro.proboards.com/thread/732/function-ctrl-alt
Date: Dec 15, 2023 13:34:14 GMT

User: yehudamo

Date: Dec 15, 2023 13:34:14 GMT

מדוע אני לא מצליח להקליט את הפונקציה הקש Ctrl+Alt+ | r אבל למשל הפונקציה הקש Ctrl+Shift+ | v כן, זה עובד

User: zeak

Date: Dec 27, 2023 0:00:47 GMT

English to Hebrew using Google Translate. אנגלית לעברית באמצעות גוגל תרגום defaultavatar.png Dec 15, 2023 13:34:14 GMT

yehudamo said: מדוע אני לא מצליח להקליט את הפונקציה הקש Ctrl+Alt+ | r אבל למשל הפונקציה הקש Ctrl+Shift+ | v כן, זה עובד

Yehudamo said:

“Why can’t I record the function press Ctrl+Alt+ | But for example the function press Ctrl+Shift+ | Yes, it works” Hi Yehudamo, הי Yehudamo,     When I record the Ctrl+Alt+, This works for me, check your options settings. Ensure, Multi-Key Capture is turned on, under Record Options.

כשאני מקליט את Ctrl+Alt+, זה עובד בשבילי, בדוק את הגדרות האפשרויות שלך. ודא ש-Multi-Key Capture מופעל, תחת אפשרויות הקלטה.

If this is still issue, you could manually type the key command in to use the Ctrl+Alt+.

אם זו עדיין בעיה, תוכל להקליד ידנית את פקודת המפתח כדי להשתמש ב-Ctrl+Alt+.

I believe this might be in issue due the keyboard language your using might not be fully understood by Mini Mouse Macro.

אני מאמין שזה עשוי להיות בבעיה בגלל שפת המקלדת שבה אתה משתמש לא מובנת במלואה על ידי מאקרו של מיני עכבר. Cheers, לחיים, Zeak


How to set key press time

URL: https://minimousemacro.proboards.com/thread/733/set-key-press-time
Date: Dec 18, 2023 18:42:01 GMT

User: hduff

Date: Dec 18, 2023 18:42:01 GMT

hi guys i need a help. I’m confused smiley.png If you explain simply. please give an example I want to hold down the T key for 2 seconds and then release it. maybe 3 seconds. maybe 5 second. (will vary depending on the situation) how can i do it ?

User: zeak

Date: Dec 26, 2023 23:37:23 GMT

Hi Hduff, First of all, welcome to forum. I am going to move this Thread to the “Questions and Help” segment. To enable the recording of holding keys down. go into Options -> Record Options -> Key Capture and tick the box for “Enable key down capture”. Then either record pressing the T Key or enter the below code.

1 | X | X | 500 | Keypress t | Key Down
2 | X | X | 2000 | Keypress t | Key Release

This has a 2 second delay for the key release. alternativity, you could put a wait seconds condition in-between.

1 | X | X | 100 | Keypress t | Key Down
2 | RUN ACTION | WAIT SECONDS | 2
3 | X | X | 100 | Keypress t | Key Release

Hope this helps, Cheers, Zeak


Custom random numbers exclude the first number.

URL: https://minimousemacro.proboards.com/thread/736/custom-random-numbers-exclude-number
Date: Dec 23, 2023 20:05:02 GMT

User: DB

Date: Dec 23, 2023 20:05:02 GMT

It looks like custom random numbers like %RANDOM_11-20% never generate the first number, but do generate the last number. If this is correct, does it make sense to update the function to potentially generate the first number as well? Thank you.


Is %RANDOM% really random?

URL: https://minimousemacro.proboards.com/thread/735/random
Date: Dec 23, 2023 19:52:09 GMT

User: DB

Date: Dec 23, 2023 19:52:09 GMT

In my use of %RANDOM% it only generates numbers that are even and all divide evenly by 4. For example: 706727936 629907968 2003463680 261559808


Copy lines from list (for printing reports one by one)

URL: https://minimousemacro.proboards.com/thread/731/copy-lines-list-printing-reports
Date: Dec 15, 2023 10:25:27 GMT

User: Mehmet(Beginner)

Date: Dec 15, 2023 10:25:27 GMT

I want to print reports one by one at my hospital those I previously wrote at home. I need to copy the protocol number one by one from a list in order to paste and retrieve the report from hospital software. (I need to paste it database form and print case by case) I can make simple mouse and keyboard macros. But I don’t have enough knowledge about complex commands.  Thank you in advance for your help smiley.png .


conditions keypress enter

URL: https://minimousemacro.proboards.com/thread/728/conditions-keypress-enter
Date: Dec 2, 2023 21:19:40 GMT

User: simial

Date: Dec 2, 2023 21:19:40 GMT

Hey so ive made a macro that detects an image and pushes enter. Really simple stuff. However after it detects it i just cant find a way to press enter. It always just types it out so im looking for help. Here is the code:

1 | IF | DETECT IMAGE | image path C:\Users\devei\Downloads\vilius.png::at 429 918 100 80::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | KEYPRESS | ENTER
2 | IF | DETECT IMAGE | image path C:\Users\devei\Downloads\julius.png::at 429 918 100 80::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | KEYPRESS | ENTER
3 | IF | DETECT IMAGE | image path C:\Users\devei\Downloads\akex.png::at 429 918 100 80::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | KEYPRESS | ENTER

User: zeak

Date: Dec 12, 2023 1:00:11 GMT

Hi Simial, Try removing the pipe symbol between KEYPREES and ENTER. Cheers, Zeak


Macro won’t end

URL: https://minimousemacro.proboards.com/thread/730/macro-won-end
Date: Dec 4, 2023 0:40:31 GMT

User: Joseph Moretto

Date: Dec 4, 2023 0:40:31 GMT

Hello, I planned on using my macro as an auto clicker meant to run for a long time, and planned to end it using a hornet but my hot key won’t work and due to the macro being a clicker that won’t move, I cannot get to the end button.


OCR condition issue

URL: https://minimousemacro.proboards.com/thread/727/ocr-condition-issue
Date: Dec 1, 2023 23:52:45 GMT

User: lacccci

Date: Dec 1, 2023 23:52:45 GMT

Hi everyone, I’m trying to make an OCR condition which checks whether a part of the screen has something written on it or not, but it doesn’t work as intended, what is wrong with it? Currently the macro gives the same result for texts and blank area, and I’m trying to make it stop or jump to another macro line at the end of the code.

261 | IF NOT | OCR | At location [X:1032 Y:620 W:171 H:22]::Lang eng - English::To string OCR  | TRUE | STOP | ELSE | 1 | RUN ACTION | CONTINUE
262 | 1122 | 632 | 100 | Left Click Down
263 | 1122 | 632 | 100 | Left Click Release
264 | 1000 | 500 | 50 | Mouse Movement
265 | 1122 | 632 | 3000 | Keypress Ctrl+ | a
266 | 1122 | 632 | 20 | Keypress Ctrl+ | c
267 | IF | CLIPBOARD | VALUE | TEXT IS | 56.4700 | KEYPRESS | 55.43 | ELSE | 265 | IF | CLIPBOARD | VALUE | TEXT IS | 39.8400 | KEYPRESS | 39.16 | ELSE | 265 | RUN ACTION | STOP
268 | IF NOT | OCR | At location [X:1026 Y:645 W:171 H:22]::Lang eng - English::To string OCR  | TRUE | STOP | ELSE | 1 | RUN ACTION | CONTINUE
269 | 1110 | 656 | 100 | Left Click Down
270 | 1110 | 656 | 100 | Left Click Release
271 | 1000 | 500 | 50 | Mouse Movement
272 | 1122 | 632 | 3000 | Keypress Ctrl+ | a
273 | 1122 | 632 | 20 | Keypress Ctrl+ | c
274 | IF | CLIPBOARD | VALUE | TEXT IS | 56.4700 | KEYPRESS | 55.43 | ELSE | 265 | IF | CLIPBOARD | VALUE | TEXT IS | 39.8400 | KEYPRESS | 39.16 | ELSE | 265 | RUN ACTION | STOP
275 | IF NOT | OCR | At location [X:1030 Y:671 W:171 H:22]::Lang eng - English::To string OCR | TRUE | STOP | ELSE | 1 | RUN ACTION | CONTINUE
276 | 1056 | 684 | 100 | Left Click Down
277 | 1056 | 684 | 100 | Left Click Release
278 | 1000 | 500 | 50 | Mouse Movement
279 | 1122 | 632 | 3000 | Keypress Ctrl+ | a
280 | 1122 | 632 | 20 | Keypress Ctrl+ | c
281 | IF | CLIPBOARD | VALUE | TEXT IS | 56.4700 | KEYPRESS | 55.43 | ELSE | 265 | IF | CLIPBOARD | VALUE | TEXT IS | 39.8400 | KEYPRESS | 39.16 | ELSE | 265 | RUN ACTION | STOP
282 | IF NOT | OCR | At location [X:1030 Y:671 W:171 H:22]::Lang eng - English::To string OCR  | TRUE | STOP | ELSE | 1 | RUN ACTION | CONTINUE
283 | 1126 | 709 | 100 | Left Click Down
284 | 1126 | 709 | 100 | Left Click Release
285 | 1000 | 500 | 50 | Mouse Movement
286 | 1122 | 632 | 3000 | Keypress Ctrl+ | a
287 | 1122 | 632 | 20 | Keypress Ctrl+ | c
288 | IF | CLIPBOARD | VALUE | TEXT IS | 56.4700 | KEYPRESS | 55.43 | ELSE | 265 | IF | CLIPBOARD | VALUE | TEXT IS | 39.8400 | KEYPRESS | 39.16 | ELSE | 265 | RUN ACTION | STOP
289 | IF NOT | OCR | At location [X:1027 Y:693 W:171 H:22]::Lang eng - English::To string OCR  | TRUE | STOP | ELSE | 1 | RUN ACTION | CONTINUE
290 | 1090 | 735 | 100 | Left Click Down
291 | 1090 | 735 | 100 | Left Click Release
292 | 1000 | 500 | 50 | Mouse Movement
293 | 1122 | 632 | 3000 | Keypress Ctrl+ | a
294 | 1122 | 632 | 20 | Keypress Ctrl+ | c
295 | IF | CLIPBOARD | VALUE | TEXT IS | 56.4700 | KEYPRESS | 55.43 | ELSE | 265 | IF | CLIPBOARD | VALUE | TEXT IS | 39.8400 | KEYPRESS | 39.16 | ELSE | 265 | RUN ACTION | STOP
296 | RUN ACTION | STOP

I tried using GOTO MACRO LINE, the condition shows this error message:

12-02-2023 08:56:14.89 PM : OCR - No text or characters where found from the input
12-02-2023 08:56:14.93 PM : FAILED TO DETECT TEXT OR CHARACTERS
12-02-2023 08:56:14.97 PM : Macro condition - Condition TRUE
12-02-2023 08:56:15.01 PM : Macro action - Running ACTION: GOTO MACRO LINE - Macro line(296)
12-02-2023 08:56:15.05 PM : Playback error: 261 | IF NOT | OCR | At location [X:963 Y:616 W:237 H:29]::Lang eng - English::To string OCR::Throw error Failed to detect text or characters | TRUE | GOTO MACRO LINE | 296 | ELSE | 263 | RUN ACTION |  |  |  |  | CONTINUE

Macro line 296 is:

296 | RUN ACTION | STOP

Hi! Need help.

URL: https://minimousemacro.proboards.com/thread/725/hi-help
Date: Nov 25, 2023 14:12:25 GMT

User: greyskies

Date: Nov 25, 2023 14:12:25 GMT

Hello friends! I’m looking for admin to help me. I recently purchased the pro edition and I changed the storage out on my PC and I can’t seem to find the download link in my email anywhere. I can provide the receipt and any information needed to verify. Thanks for you time.

User: zeak

Date: Nov 28, 2023 2:16:50 GMT

Hi Greyskies, First of all, welcome to the forum. Unfortunately, Steve is the only one that can help you out here as he is the owner and operator that controls all purchases and accounting. Steve can get a bit busy at times, as you can imagine we all do. but I am sure he will get to you as soon as possible. Cheers, Zeak.

User: greyskies

Date: Nov 30, 2023 20:23:51 GMT

Thanks for the reply Zeak! I understand and look forward to his reply. I appreciate your time.


Detect Image Zoom Bug

URL: https://minimousemacro.proboards.com/thread/726/detect-image-zoom-bug
Date: Nov 28, 2023 3:24:55 GMT

User: victorm1

Date: Nov 28, 2023 3:24:55 GMT

Hello guys, long time user testing out stuff. I happened to notice Detect Image, Mouse to Image and Pixel Color and so on do not work when the PC is not on 100% zoom. Is there a plan to make it work that way? Is there a work around to avoid setting the screen zoom to 100%? It’s highly annoying on big screens, stuff sometimes is way too little to even read, and changing to 100% zoom only to use the macro is an extra step that could maybe be avoided if someone happened to know a trick that I don’t, asking questions creates knowledge. Thanks!


File hash variable

URL: https://minimousemacro.proboards.com/thread/724/file-hash-variable
Date: Nov 16, 2023 12:31:49 GMT

User: Peter

Date: Nov 16, 2023 12:31:49 GMT

Hi, I’m using software (Mini Mouse Macro Pro) to evaluate the MD5 value of some files. I would have to do this recursively, so I was thinking of using a variable for the name of the file to evaluate.

Example:

1 | RUN ACTION | FILE HASH | C:\Folder test\%STRING1%.pdf::MD5::%HASH%

The problem is that any variable inserted in the hash evaluation string leads to a program error and I don’t know how to solve this problem Thanks


Numpad

URL: https://minimousemacro.proboards.com/thread/723/numpad
Date: Nov 13, 2023 12:39:32 GMT

User: johan

Date: Nov 13, 2023 12:39:32 GMT

Hi, new here smiley.png Trying out a wireless numpad which works exactly as the built in one. I cannot use the numpad keys either wireless or via the keyboard. It should work with the current version. /John


How to run specific time of different macro

URL: https://minimousemacro.proboards.com/thread/722/run-specific-time-different-macro
Date: Nov 10, 2023 13:39:08 GMT

User: kc1

Date: Nov 10, 2023 13:39:08 GMT

Hi all, Would you please let me know how to run specific times of two different Marco? Like run 10 times Marco A then run 30 times Marco B. Thank you very much.


TIMER

URL: https://minimousemacro.proboards.com/thread/720/timer
Date: Oct 21, 2023 12:32:00 GMT

User: selim

Date: Oct 21, 2023 12:32:00 GMT

Hello, I want this application to run 1 hour apart. I couldn’t find enough resources for this. How can I solve it? In other words, I want it to run 1 hour after performing a transaction in a loop way.

User: zeak

Date: Oct 26, 2023 6:00:48 GMT

Hi Selim, First of all, welcome to the forum. This can be achieved by using the WAIT condition, see example below. After which you can do the program loop with the check box in the top right or by using the GOTO condition. With the WAIT condition normally, I would recommend using the MILLISECONDS option but, in your case, the WAIT HOURS would work better. Ignore the first two lines, they are just mock code.

1 | 144 | 144 | 1000 | Keypress Edit_Me
2 | 1042 | 360 | 1000 | Keypress Edit_Me
3 | RUN ACTION | WAIT HOURS | 1
4 | RUN ACTION | GOTO MACRO LINE | 1

Cheers, Zeak P.S. List of available conditions => <www.turnssoft.com/conditions.html#wait>


click help

URL: https://minimousemacro.proboards.com/thread/87/click-help
Date: Oct 6, 2018 0:16:57 GMT

User: dielusi

Date: Oct 6, 2018 0:16:57 GMT

Might be dumb to ask but why does the MMM not record if im on a game application or another program that isnt my browser or my background? this used to work…until a couple days ago i think (after i reset my laptop and downloaded the application again)

User: Johnc

Date: Oct 6, 2018 2:03:59 GMT

If a simple reboot didn’t work, you can try to clean the registry entries according to Steve’s instructions: “Mini Mouse Macro writes to the registry to store its settings, settings like Variables. It’s doesn’t ‘install’ but it does read and write to the local registry (HKEY_CURRENT_USER\Software\Turnssoft\MiniMouseMacroPro). Give the uninstall registry settings a try. In the Options page - select the uninstall tab. Check remove registry entries, remove files and click the rubbish bin. Also after that check the ‘Delete registry on program close’ check box. Then exit Mini Mouse Macro. This will reset all the settings and wipe MMM from the registry giving a ‘clean’ install. This will rule out any setting related issues.”

User: Steve

Date: Oct 6, 2018 3:31:18 GMT

Hi Dielusi, No it’s not a dumb question, it has been the most consistent question I have been asked over the last three years with MMM. It could be a couple of reasons why MMM is not recording in game but most of the time it’s because the game is ‘locking away’, for lack of a better term, the local desktop environment where MMM is running.  This prevents it from executing in the game.  This also can happen with embedded web content like Java apps.  Here is the answer I gave in a thread about MMM and gaming: JFoc0jEJzNqTrrLxeLBk.jpg Jul 29, 2018 22:46:13 GMT

Steve said: Hi, What game are you having issues with?
I ask because typically this issue is specific to your local environment; the application you are currently in whilst launching the macro. Macro’s that are started within locked ‘container’ style environments, such being Java based application or full screen ‘Game Like’ environments, can and some do often ‘lock’ and prevent a program like minimousemacro from interacting with the outside desktop environment. Technically, this is due to the way minimousemacro makes calls to the operating system keyboard (and mouse) event handlers. Simply put, the full screen application is ‘locking’ interaction with the desktop environment. MiniMouseMacro needs this desktop environment in order to process and reply to events. I think this is most likely the issue. Regards, Steve.

User: araisininhell

Date: Oct 7, 2023 3:52:22 GMT

defaultavatar.png Oct 6, 2018 0:16:57 GMT

dielusi said: Might be dumb to ask but why does the MMM not record if im on a game application or another program that isnt my browser or my background? this used to work…until a couple days ago i think (after i reset my laptop and downloaded the application again)


Move mouse to position bevor macro start

URL: https://minimousemacro.proboards.com/thread/719/mouse-position-bevor-macro-start
Date: Sept 29, 2023 9:04:55 GMT

User: justin

Date: Sept 29, 2023 9:04:55 GMT

Hi, can I readout the position of the mouse at start and move there at a spacific line in the macro? Best wishes, Justin

User: zeak

Date: Oct 3, 2023 23:38:17 GMT

Hi Justin, First of all, welcome to the Forum. Yes, this is absolutely possible. Please see my exmaple below.

* | Recording mouse location
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%MOUSE_X%
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::%MOUSE_Y%
* | Calling mouse location
3 | %INTEGER1% | %INTEGER2% | 100 | Mouse Movement

Cheers, Zeak

User: philranger

Date: Oct 5, 2023 17:38:20 GMT

Hi Zeak,   On my machine, it works the first time, but the second time and following ones it goes to a random position.  MMM 8.4.0.0, Windows 2011.


URL not found or not reachable

URL: https://minimousemacro.proboards.com/thread/718/url-reachable
Date: Sept 6, 2023 9:14:57 GMT

User: benjsammy

Date: Sept 6, 2023 9:14:57 GMT

Hello, I upload macros to the website’s folder so that my colleagues can use macros with real-time updates or modifications applied to them. My link displays the macro correctly, but in the software, the link is not found. How can I resolve this issue? Thank you. ftp.deafiline.net/automation/odr/mmmp/macro/touche/f1.mmmacro Wjzis0gGrzxZuBhXtSDG.png


Wait for a %VARIABLE% amount of time?

URL: https://minimousemacro.proboards.com/thread/715/wait-variable-amount-time
Date: Aug 16, 2023 3:01:32 GMT

User: Matt

Date: Aug 16, 2023 3:01:32 GMT

Hey all, First of all, thanks for this amazing software, it’s a huge time saver and so are these forums. I’ve been working on a macro that’s supposed to wait a number of minutes determined by a variable, which gets changed along the macro execution. However, for some reason MMM won’t read my variable correctly for this purpose, I’ll attach the code below.

181 | IF | INTEGER VARIABLE | %TAVERNRUNS%::>=::12 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::30
182 | IF | INTEGER VARIABLE | %TAVERNRUNS%::>=::16 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::60
183 | IF | INTEGER VARIABLE | %TAVERNRUNS%::>=::18 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::10
184 | RUN ACTION | WAIT MINUTES | INTEGER VARIABLE | %TAVERNWAIT%
185 | RUN ACTION | DEFINE INTEGER VARIABLE | %WAIT%::+%TAVERNWAIT%

And at execution, MMM throws this error:

 08/15/2023 10:48:17.14  Playback error:  181 | IF | INTEGER VARIABLE | %TAVERNRUNS%::&gt;=::12 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::30 - Condition operation invalid: RUN ACTION. Visit
turnssoft.com/conditions
 for valid condition syntax.
 08/15/2023 10:48:17.27  Macro condition: 182 | IF | INTEGER VARIABLE | %TAVERNRUNS%::&gt;=::16 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::60
 08/15/2023 10:48:17.41  Macro condition - Condition FALSE
 08/15/2023 10:48:17.55  Playback error:  182 | IF | INTEGER VARIABLE | %TAVERNRUNS%::&gt;=::16 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::60 - Condition operation invalid: RUN ACTION. Visit
turnssoft.com/conditions
 for valid condition syntax.
 08/15/2023 10:48:17.69  Macro condition: 183 | IF | INTEGER VARIABLE | %TAVERNRUNS%::&gt;=::18 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::10
 08/15/2023 10:48:17.82  Macro condition - Condition FALSE
 08/15/2023 10:48:17.96  Playback error:  183 | IF | INTEGER VARIABLE | %TAVERNRUNS%::&gt;=::18 | RUN ACTION | DEFINE INTEGER VARIABLE | %TAVERNWAIT%::10 - Condition operation invalid: RUN ACTION. Visit
turnssoft.com/conditions
 for valid condition syntax.
 08/15/2023 10:48:18.11  Macro condition: 184 | RUN ACTION | WAIT MINUTES | INTEGER VARIABLE | %TAVERNWAIT%
 08/15/2023 10:48:18.24  Playback error:  184 | RUN ACTION | WAIT MINUTES | INTEGER VARIABLE | %TAVERNWAIT% - Condition execution error [Unexpected Internal Error]: O índice estava fora dos limites da matriz. [translation: index out of matrix boundaries/range]
Nonetheless, the variable currently holds the value of 10 and gets assigned and read correctly elsewhere:
 08/15/2023 10:48:18.38  Macro condition: 185 | RUN ACTION | DEFINE INTEGER VARIABLE | %WAIT%::+%TAVERNWAIT%
 08/15/2023 10:48:18.52  Macro condition - Condition TRUE
 08/15/2023 10:48:18.66  Macro condition: 10 to +10 = 20
 08/15/2023 10:48:18.80  Macro action - Variable (%WAIT% = +%TAVERNWAIT%)

|\

  1. Why can’t I directly modify my variable inside the IF condition?
  2. Why won’t it read my variable when passing it to the WAIT MINUTES function? Thanks in advance! ~ Matt

User: Matt

Date: Aug 23, 2023 4:32:12 GMT

Hey guys, In case someone else stumbles upon the same problem, I’ve figured out my own syntax errors, as follows:

  1. After a conditional IF there’s no need to call RUN ACTION, you can just DEFINE your variable directly.
  2. Any function that takes a variable as input foregoes telling the script it’s a variable, therefore stating INTEGER VARIABLE after calling the WAIT function throws an error, one should just call the variable directly as if it were the integer itself.

A question on if else statement

URL: https://minimousemacro.proboards.com/thread/717/question-on-statement
Date: Aug 22, 2023 12:29:06 GMT

User: redwed

Date: Aug 22, 2023 12:29:06 GMT

Can we use if else statement more than once? For example, i have 5 conditions to watch out for. If condition 1 is not true, it will be passed to condition 2, and will be passed to condition 3 if condition is not true. And it will continue until 5. Can we use if else statement like that?


Find character on screen and click on it

URL: https://minimousemacro.proboards.com/thread/716/find-character-on-screen-click
Date: Aug 19, 2023 17:02:04 GMT

User: Bluetooth

Date: Aug 19, 2023 17:02:04 GMT

I want to automate money collection in a browser game. I need basically to find the character $ and click on it. How can I achive this?


end the macro in excel clipboard

URL: https://minimousemacro.proboards.com/thread/712/end-macro-excel-clipboard
Date: Aug 3, 2023 13:23:15 GMT

User: hunguy

Date: Aug 3, 2023 13:23:15 GMT

Hi guys i have a little bit of problem again. I would like to finish my macro with an IF condition

1 | X | X | 500 | Keypress Ctrl+ | c
2 | IF | CLIPBOARD | VALUE | TEXT IS |  | STOP | AND | 2 | RUN ACTION | MESSAGE PROMPT | Mission Completed , nothing left.::End::0::OK
3 | X | X | 500 | Keypress Alt+ | tab
4 | X | X | 500 | Keypress Ctrl+ | v

It is a little part of my macro what i want to do is the macro stop when the clipboard is empty but whit this condition it can not make difference between empty and full cells. I saw an option about go to the cell with F2 Ctrl Home and so on but my cells values got from equation form so this is not an option for me. And I also saw the notepad option but that will make very difficult my work , there is not any option to solve this?

User: zeak

Date: Aug 7, 2023 5:56:30 GMT

Hi Hunguy, As of current, the notepad method is the most reliable way I know of interacting with Excel. Steve does have in the works and on his list some improvements of string handling. See: minimousemacro.proboards.com/thread/608/update-8-4-1-development Cheers, Zeak

User: philranger

Date: Aug 11, 2023 3:00:38 GMT

Hello, I had similar issues with copies from Excel. I first pre-fill the clipboard with a known value, go in Excel, F2, ctrl-a, ctrl-c, check against my known value because copying something empty just keeps whatever already was in the clipboard.


Input Box - changing initial position?

URL: https://minimousemacro.proboards.com/thread/714/input-box-changing-initial-position
Date: Aug 4, 2023 16:33:33 GMT

User: JimS

Date: Aug 4, 2023 16:33:33 GMT

Is there any way to set the absolute position (in x,y coordinates) where the INPUT BOX is displayed on the screen?

User: zeak

Date: Aug 7, 2023 5:53:49 GMT

Hi JimS, Not that I am aware of, maybe put it in the Idea’s for improvements area. Cheers, Zeak


Macro Not Working With Roblox

URL: https://minimousemacro.proboards.com/thread/713/macro-working-roblox
Date: Aug 4, 2023 14:22:16 GMT

User: Fodzilla

Date: Aug 4, 2023 14:22:16 GMT

I am trying to set up a macro involving the game ROBLOX. Everytime I start the macro and let it run on ROBLOX the macro starts but the inputs aren’t actually going into the game itself. The macro works in other places like google and my desktop but for some reason just not ROBLOX. Anyone know a fix for this?

User: zeak

Date: Aug 7, 2023 5:51:39 GMT

Hi Fodzilla, ROBLOX, like a lot of game’s use game engines to perform actions and calculations. These actions that are called by the engine, are not the usual Windows call handles and therefore MMM cannot interact with them. MMM can only use standard Windows call handles, as to program it to handle each game engine currently out there plus any new game engines would be too much work for a single person to look after. Not saying Steve it’s that good.  tongue.png

Cheers, Zeak


Macros Program Runs Old Macros vs Revised

URL: https://minimousemacro.proboards.com/thread/711/macros-program-runs-old-revised
Date: Aug 1, 2023 20:05:02 GMT

User: CHUA

Date: Aug 1, 2023 20:05:02 GMT

Hi there, Need some major assistance with mini mouse macros program. An older macro file was created years ago and I recreated a revised version, however when I run the new file the program is somehow grabbing the older version somewhere else. I cannot seem to figure out where it is grabbing it from. I tried multiple ways to run the new file: load screen, quick launch screen. All the files have been updated in the folder paths. Can someone help guide me, its driving me crazy Thanks

User: zeak

Date: Aug 2, 2023 6:26:21 GMT

Hi CHUA, Are you able to paste the code that you have in MMM, as well as the complete log file when you try running the code. Cheers, Zeak

User: philranger

Date: Aug 2, 2023 11:07:21 GMT

Hello, I had a similar issue once but then realized I had 2 instances of Mini Mouse Macro opened, and the wrong one was called. Closing other Mini Mouse Macros solved it.

User: CHUA

Date: Aug 3, 2023 17:58:58 GMT

ovqiSZMQkcHXJsgduMbm.jpg Aug 2, 2023 6:26:21 GMT

zeak said: Hi CHUA, Are you able to paste the code that you have in MMM, as well as the complete log file when you try running the code. Cheers, Zeak Where can I find the complete log file?

User: CHUA

Date: Aug 3, 2023 18:16:46 GMT

USoWV0dWXmFkYDAjTGiw.jpg Aug 2, 2023 11:07:21 GMT

philranger said: Hello, I had a similar issue once but then realized I had 2 instances of Mini Mouse Macro opened, and the wrong one was called. Closing other Mini Mouse Macros solved it.  I only have one instance opened, but your point would make sense. I tried to download another version and tried to run the macros, however same issue persists.

User: zeak

Date: Aug 7, 2023 5:43:05 GMT

Aug 3, 2023 17:58:58 GMT CHUA said: Where can I find the complete log file? Hi CHUA, to get the log file, in settings, go to the Event Log tab and enable this option by clicking on the toggle. Take note of the icon on the tab for Event log and find it on MMM main screen. Clicking this should open up the Event log window that will populate while the macro runs. Make sure to turn off the Event log when not needed as it can use extra resources if it gets too full. Zeak.


excel formula form to value

URL: https://minimousemacro.proboards.com/thread/710/excel-formula-form-value
Date: Jul 31, 2023 6:58:25 GMT

User: Mate

Date: Jul 31, 2023 6:58:25 GMT

Hello! The problem i am  facing is that when i copy cells with formulas in Excel using Ctrl + C, it treats it as a picture, and when i navigate to the cell using F2 and then copy, it copies the formula. i would like a solution to copy the cell’s value to the clipboard so that i can use it in an ‘if’ statement in a command line. Thanks in advance.

User: zeak

Date: Aug 1, 2023 3:44:54 GMT

Hi Mate, The only method I know if doing this so far, is to Ctrl C on the Cell and Ctrl V into notepad, as notepad doesn’t allow pictures and will only paste the value. Then do Ctrl A to select all and Ctrl C or X to copy the value to clipboard as a value. Cheers, Zeak

User: zeak

Date: Aug 1, 2023 3:57:06 GMT

Here is a little bit of code you could put into your main code to help,

1 | X | X | 1000 | Keypress Ctrl+ | c
2 | RUN ACTION | RUN PROGRAM | C:\Windows\System32\notepad.exe
3 | X | X | 1000 | Keypress Ctrl+ | v
4 | X | X | 1000 | Keypress Ctrl+ | a
5 | X | X | 1000 | Keypress Ctrl+ | c
6 | RUN ACTION | KILL PROCESS NAME | notepad

User: Mate

Date: Aug 1, 2023 6:52:02 GMT

Thank you very much Zeak it is working! Thanks for your help again.


Macro Edit tool or formating standard?

URL: https://minimousemacro.proboards.com/thread/709/macro-edit-tool-formating-standard
Date: Jul 25, 2023 23:33:56 GMT

User: rdob

Date: Jul 25, 2023 23:33:56 GMT

Ive built out a few macros already and im having issues with the syntax changing after making modifications wile using MMM. Is there a code tool anyone suggests using outside of MMM ? Or a template for a tool such as notepad++ that i could test my macro against? 

User: philranger

Date: Jul 26, 2023 4:31:03 GMT

Hello, You can edit in notepad or notepad++ and paste in MMM. I usually have to ask to relist everytime I copy/paste in MMM.


Too many clicks in Detect image

URL: https://minimousemacro.proboards.com/thread/708/clicks-detect-image
Date: Jul 17, 2023 22:56:28 GMT

User: rdob

Date: Jul 17, 2023 22:56:28 GMT

The macro I have below seems to work ok but it appears to click its current location then move and click again at a new location. How can i fix this?

1 | IF | DETECT IMAGE | image path C:\my-dir\accept.bmp::at 778 125 475 918::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | MOUSE CLICK | Left click at %XPOS% %YPOS% 1 times with 0 ms delay
2 | IF | DETECT IMAGE | image path C:\my-dir\move.bmp::at 1168 328 53 40::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | MOUSE CLICK | Left click at %XPOS% %YPOS% 1 times with 0 ms delay
3 | IF | DETECT IMAGE | image path C:\my-dir\left.bmp::at 773 119 352 803::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | MOUSE CLICK | Left click at %XPOS% %YPOS% 1 times with 0 ms delay
4 | IF | DETECT IMAGE | image path C:\my-dir\right.bmp::at 775 40 484 1001::match quick::move mouse no::save to vars XPOS YPOS | IMAGE FOUND | MOUSE CLICK | Left click at %XPOS% %YPOS% 1 times with 0 ms delay

User: rdob

Date: Jul 19, 2023 22:00:44 GMT

So I think what is happening is that as it loops the condition remains true until another condition is true. So if line 1 was true it will click until another becomes true even though condition one is no longer true. Any ideas on how to fix this? Steve Thoughts??

User: philranger

Date: Jul 23, 2023 18:24:28 GMT

Hello, Maybe add a delay at the end so the picture has time to disappear?

User: rdob

Date: Jul 25, 2023 22:37:19 GMT

I found the issue. But have run into new ones. I had more lines like this and one was IMAGE NOT FOUND rather than IMAGE FOUND so that was running all the time, creating my problem. Ill make another post about the current issue.


Hold a key for a random amount of seconds?

URL: https://minimousemacro.proboards.com/thread/428/hold-key-random-amount-seconds
Date: Jun 9, 2021 17:29:28 GMT

User: Victor

Date: Jun 9, 2021 17:29:28 GMT

Is there a way to force my macro to HOLD a key for a random amount of seconds? I’m new to coding macros so i’m not really sure how’d that work.

User: Steve

Date: Jun 11, 2021 5:49:07 GMT

Hi Victor, Yep. Like this:

1 | 2207 | 720 | 0 | Left Click
2 | RUN ACTION | SELECT WINDOW BY NAME | Untitled - Notepad
3 | 471 | 587 | 0 | Keypress a | Key Down
4 | RUN ACTION | WAIT SECONDS | %random_1-5%
5 | 471 | 587 | 0 | Keypress a | Key Release
6 | 471 | 587 | 0 | Keypress b | Key Down
7 | RUN ACTION | WAIT SECONDS | %random_3-7%
8 | 471 | 587 | 0 | Keypress b | Key Release
9 | 471 | 587 | 0 | Keypress c | Key Down
10 | RUN ACTION | WAIT SECONDS | %random_2-6%
11 | 471 | 587 | 0 | Keypress c | Key Release
12 | 2207 | 720 | 50 | Left Click

Here we use the RANDOM variable (https://www.turnssoft.com/conditions.html#random_integer_variable) to wait a random amount of time between our key release. This example holds down the ‘a’ key for a random time between 1 and 5 seconds, ‘b’ random time between 3 and 7 seconds, and ‘c’ random time between 2 and 6 seconds. It looks like this: minimousemacro_randomkeyheld.gif Here we use the RANDOM variable ( <www.turnssoft.com/conditions.html#random_integer_variable> ) to wait a random amount of time between our key release. This example holds down the ‘a’ key for a random time between 1 and 5 seconds, ‘b’ random time between 3 and 7 seconds, and ‘c’ random time between 2 and 6 seconds. Here is another post with something similar minimousemacro.proboards.com/thread/321/make-macro-random-number-seconds . Here is some random image creation with Mini Mouse Macro minimousemacro.proboards.com/thread/177/string-loop . Hope this helps.

User: Victor

Date: Jun 23, 2021 20:35:11 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jun 11, 2021 5:49:07 GMT

Steve said: Hi Victor, Yep. Like this:

1 | 2207 | 720 | 0 | Left Click
2 | RUN ACTION | SELECT WINDOW BY NAME | Untitled - Notepad
3 | 471 | 587 | 0 | Keypress a | Key Down
4 | RUN ACTION | WAIT SECONDS | %random_1-5%
5 | 471 | 587 | 0 | Keypress a | Key Release
6 | 471 | 587 | 0 | Keypress b | Key Down
7 | RUN ACTION | WAIT SECONDS | %random_3-7%
8 | 471 | 587 | 0 | Keypress b | Key Release
9 | 471 | 587 | 0 | Keypress c | Key Down
10 | RUN ACTION | WAIT SECONDS | %random_2-6%
11 | 471 | 587 | 0 | Keypress c | Key Release
12 | 2207 | 720 | 50 | Left Click

Here we use the RANDOM variable (https://www.turnssoft.com/conditions.html#random_integer_variable) to wait a random amount of time between our key release. This example holds down the ‘a’ key for a random time between 1 and 5 seconds, ‘b’ random time between 3 and 7 seconds, and ‘c’ random time between 2 and 6 seconds. It looks like this: minimousemacro_randomkeyheld.gif Here we use the RANDOM variable ( <www.turnssoft.com/conditions.html#random_integer_variable> ) to wait a random amount of time between our key release. This example holds down the ‘a’ key for a random time between 1 and 5 seconds, ‘b’ random time between 3 and 7 seconds, and ‘c’ random time between 2 and 6 seconds. Here is another post with something similar minimousemacro.proboards.com/thread/321/make-macro-random-number-seconds . Here is some random image creation with Mini Mouse Macro minimousemacro.proboards.com/thread/177/string-loop . Hope this helps. Hi Steve, i just stumbled back to this as i tried to do it again, again, it just waits the amount of seconds before releasing the key, but it doesn’t hold the key itself. For example, using your code mentioned above:

3 | 471 | 587 | 0 | Keypress a | Key Down
4 | RUN ACTION | WAIT SECONDS | %random_1-5%
5 | 471 | 587 | 0 | Keypress a | Key Release

What i would intend it to do is actually hold “a” so it should do this: “aaaaaaaaaaaa” Hope i explained correctly

User: Victor

Date: Jun 23, 2021 20:40:56 GMT

Some action pressing the key for a random amount of times (like on the waiting seconds option, press the key a random amount of times between 5 and 100 or something like that) would help too now that i think about it

User: Steve

Date: Jun 24, 2021 7:31:08 GMT

We can do that by using the loop option with %random% on individual lines. Like this:

1 | RUN ACTION | SELECT WINDOW BY NAME | random test.txt - Notepad
2 | 577 | 610 | 100 | Keypress ENTER
3 | 577 | 610 | 100 | Keypress t | loop %random_1-10%::0
4 | 577 | 610 | 100 | Keypress ENTER
5 | 577 | 610 | 100 | Keypress e | loop %random_1-10%::0
6 | 577 | 610 | 100 | Keypress ENTER
7 | 577 | 610 | 100 | Keypress s | loop %random_1-10%::0
8 | 577 | 610 | 100 | Keypress ENTER
9 | 577 | 610 | 100 | Keypress t | loop %random_1-10%::0

minimousemacro_randomkeyloop.gif

User: zeak

Date: Jun 25, 2021 4:11:08 GMT

Hi Steve, I there a way to get MMM to behave the same as holding down a key. when using MMM key down, it will only press the key once in notepad, unlike if you held down the key it will be pressed multiple times. qPZuQDT.gif

User: Steve

Date: Jun 25, 2021 5:20:11 GMT

ovqiSZMQkcHXJsgduMbm.jpg Jun 25, 2021 4:11:08 GMT

zeak said: Hi Steve, I there a way to get MMM to behave the same as holding down a key. when using MMM key down, it will only press the key once in notepad, unlike if you held down the key it will be pressed multiple times. Yes I’ve noticed it doesn’t behave like that.  I need to revisit the function I use to handle the KEY DOWN and KEY RELEASE events.  It works ok for holding key modifiers like ctrl but maybe it’s a little off for standard keys.  I’ve found it hard to test a good use case for holding single keys down.  The keys down and up are handled by keybd_event dwFlag.  With a key down event we send a depress event and a key release we send a keyup event: Public Declare Sub keybd_event Lib “user32” Alias “keybd_event” (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) If e.ToLower = “key down” Then    If ConvertKeytoInt(d) = 9999 Then        EventArrayAdd(“2|evt|Could not convert the key ‘” & d & “’ to a valid key for the Key Down press.  Key Down is expecting a single key|evt|1”, “war”)        strErrorBack = “ - Key Down can not accept ‘” & d & “’ as a value”        boolRunErrors = True    Else        keybd_event(ConvertKeytoInt(d), 0, 0, 0)        boolKeyDownIsHeld = True        strOut = “{“ & d & “}”    End If ElseIf e.ToLower = “key release” Then    If Not ConvertKeytoInt(d) = 9999 Then        keybd_event(ConvertKeytoInt(d), 0, 2, 0)        boolKeyDownIsHeld = False    Else        EventArrayAdd(“2|evt|Could not convert the key ‘” & d & “’ to a valid key for the Key Release press.  Skipping…|evt|1”, “war”)    End If End If

User: Victor

Date: Jun 25, 2021 20:39:21 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jun 24, 2021 7:31:08 GMT

Steve said: We can do that by using the loop option with %random% on individual lines. Like this:

1 | RUN ACTION | SELECT WINDOW BY NAME | random test.txt - Notepad
2 | 577 | 610 | 100 | Keypress ENTER
3 | 577 | 610 | 100 | Keypress t | loop %random_1-10%::0
4 | 577 | 610 | 100 | Keypress ENTER
5 | 577 | 610 | 100 | Keypress e | loop %random_1-10%::0
6 | 577 | 610 | 100 | Keypress ENTER
7 | 577 | 610 | 100 | Keypress s | loop %random_1-10%::0
8 | 577 | 610 | 100 | Keypress ENTER
9 | 577 | 610 | 100 | Keypress t | loop %random_1-10%::0

minimousemacro_randomkeyloop.gif Everyday i’m more impressed by coding, thanks Steve.

User: Blackvolfpl

Date: Jul 10, 2023 14:24:56 GMT

Hi Guys, I wonder if I can program such a macro with this tool Example; time X1;x2 is time press/time when release launch with ALT+X shortcut or something in a specific window Name X delay 3 seconds START 0.00 press up nad hold to  example 11.40 3.75-3.89 press left (from start 0.00) 4.28-8.28 press right 4.59-8.22 press down 6.25-6.45 press left 8.23-8.70 press left 9.10-9.25 press right 9.61-9.66 press left


Chromebook?

URL: https://minimousemacro.proboards.com/thread/707/chromebook
Date: Jul 6, 2023 1:38:04 GMT

User: joe

Date: Jul 6, 2023 1:38:04 GMT

Does MMM work on google chromebooks?


Increase date’s Day by 7 at end of the month

URL: https://minimousemacro.proboards.com/thread/699/increase-dates-day-end-month
Date: May 23, 2023 19:00:56 GMT

User: Brian

Date: May 23, 2023 19:00:56 GMT

Hello, I’m trying to get the %DATE% variable to increase the dates DAY by 7. I can do that part no problem but the problem being if the date’s day is 27 for example and there are only 28 days in the month….how Can I get this to increase the month as well as the date corresponding to each months variable days in the month. For example: I want 05/27/2023 to go to 06/03/2023

User: Steve

Date: May 26, 2023 19:57:01 GMT

Hi Brian, Mini Mouse Macro does not have date math so working with date can be tricky unfortunately.
Other than the %DATE% variable we also have:   - Year value %DATE_Y%   - Month value %DATE_M%   - Day value %DATE_D%   - Hour Value %TIME_H%   - Minute Value %TIME_M%   - Second Value %TIME_S%   - Millisecond Value %TIME_MS% The only thing I can think of right now is to use some logic to determine the current month with %DATE_M% and then using some further logic within MMM to define your math and new date accordingly. But…thank you for your post, you are right MMM should have date math and we shouldn’t have to write complex logic to so simple date math. I will add this into the next update. Thanks wink.png Cheers, Steve.

User: Brian

Date: Jun 26, 2023 17:34:56 GMT

Awesome to hear to that this is one of the greatest programs ever made it’s really quite amazing and I use it daily at work to batch certain program tasks saving me so much time!!


Exception has been thrown by the target of an invocation

URL: https://minimousemacro.proboards.com/thread/705/exception-thrown-target-invocation
Date: Jun 21, 2023 10:15:46 GMT

User: Nancy

Date: Jun 21, 2023 10:15:46 GMT

hello, When running a simple example to test OCR, I get the following error: “An unexpected error has occurred Exception has been thrown by the target of an invocation.” Any ideas what the problem is?  I’ve enabled OCR and downloaded the plugin. thanks for your help

User: Steve

Date: Jun 22, 2023 5:25:29 GMT

Hi Nancy, Can you pass on the command you were running please.

User: Nancy

Date: Jun 22, 2023 9:08:27 GMT

hi Steve, thanks for helping. I simply do “Add Condition”  Condition: IF Object: (OCR) At Location:  Then I select the region of interest and enable OCR.  Then it gives the error above.  When I try the same on my Windows 11 machine it works fine.  But on my Windows 10 machine it produces an error.

User: Steve

Date: Jun 22, 2023 19:12:16 GMT

Hi Nancy, I can’t seem to replicate your issue. Does the Windows exception give you a an error dump? If I could see that I could narrow down the issue a little further. Does OCR work outside of the tool? Can you build an run an OCR macro without the add condition page? Examples here <www.turnssoft.com/conditions.html#ocr> . Have a crack at running an OCR statement with the very verbose parameter set and check out the MMM local log. It will tell us if an issue exist in the macro, plugin, or maybe give us a clue where this exception you are experiencing is coming from. Good luck.

User: Nancy

Date: Jun 23, 2023 9:37:41 GMT

zU6vYj31YQoC.png

Here is the log:

06/23/2023 02:25:49.19 AM : Event Log Cleared
06/23/2023 02:25:49.20 AM : Loading settings - applying live settings to MMM
06/23/2023 02:25:56.11 AM : Loading settings - applying live settings to MMM
06/23/2023 02:27:23.88 AM : Loading settings - applying live settings to MMM
06/23/2023 02:27:43.37 AM : Loading settings - applying live settings to MMM
06/23/2023 02:29:28.44 AM : Starting macro playback
06/23/2023 02:29:28.50 AM : Macro condition: 1 | RUN ACTION | OCR | At location [X:1264 Y:534 W:422 H:189]::Lang eng - English::To string OCR
06/23/2023 02:29:28.63 AM : Macro condition - Condition TRUE
06/23/2023 02:29:28.74 AM : Macro action - Running ACTION: OCR
06/23/2023 02:29:28.85 AM : Playback error:  1 | RUN ACTION | OCR | At location [X:1264 Y:534 W:422 H:189]::Lang eng - English::To string OCR - an unexpected error has occured Exception has been thrown by the target of an invocation.
06/23/2023 02:29:28.88 AM : Macro playback finished

Clean up a string to be inserted into a variable?

URL: https://minimousemacro.proboards.com/thread/701/clean-string-inserted-variable
Date: May 30, 2023 22:56:14 GMT

User: snowday

Date: May 30, 2023 22:56:14 GMT

Due to the varying size of the numbers and the way the table is setup, there’s no way I can use click/drag to send JUST numbers to the clipboard. I had hoped that sending it to an integer variable would clean it uo automatically, but this is not the case.

What I have in the clipboard is basically “\(\)$$___138,264.” Integer will remove the commas but that’s all. I was unable to find a command(tbh it would probably take more than one) that would allow me to manipulate a string to get rid of the alpha-characters and spaces that precede the numbers.

User: philranger

Date: May 31, 2023 0:18:43 GMT

Hello, MMM isn’t the greatest for string manipulation. I typically pre-clean my data with either Excel or Notepad++

User: Steve

Date: May 31, 2023 11:18:01 GMT

Hi snowday

At the moment working with string manipulation within MMM is pretty much non-existent however it’s coming soon. Some inbuilt string manipulation exists within MMM at the moment however, has done for a couple of versions, it’s not polished though and clunky so I haven’t announced it yet. Are the contents that you bring in from the clipboard predictable in their length and structure?

If they are this would work:

1 | RUN ACTION | DEFINE STRING VARIABLE | %MyInput%::$$$$$$_______138,264
2 | RUN ACTION | DEFINE STRING VARIABLE | %FirstList%::%MyInput%::DELIM=_::LIMIT=0
3 | RUN ACTION | DEFINE STRING VARIABLE | %Number%::%FirstList7%::DELIM=,::LIMIT=0
4 | RUN ACTION | MESSAGE PROMPT | %NUMBER% and %NUMBER1%::My Numbers::0::OK
  • At line 1 we define the custom variable. For you this would be input from the clipboard %MyInput%::%CLIPBOARD%
  • At line 2 we create a list variable %FirstList% with the contents of %MyInput% split by the _ delimiter. This will give us 8 list items. %FirstList% through to %FirstList7%.
  • At line 3 we create another list called %Number% with the contents of %FirstList7% (123,264) split with the , delimiter. This gives us two list items, %number% and %number1%.
  • At line 4 we output these two vars with a message prompt.

Regards, Steve.

User: snowday

Date: Jun 13, 2023 18:25:56 GMT

Is DELIM and LIMIT part of that hidden functionality that you haven’t really made public yet? I saw no mention of it in turnssoft.com/conditions. What does LIMIT do? Control the maximum number of items in the list?

User: Steve

Date: Jun 22, 2023 5:27:41 GMT

The limit and delim apply to the list vars and yeah they are in there.


Keypress

URL: https://minimousemacro.proboards.com/thread/704/keypress
Date: Jun 10, 2023 3:03:53 GMT

User: Skoopy

Date: Jun 10, 2023 3:03:53 GMT

Whenever I do a “keypress w” it will only work if it is typing into a search bar or typing bar. I am only trying to make my character move forward by pressing w in a video game. Please help and Thank you.

User: Steve

Date: Jun 10, 2023 4:53:40 GMT

Some video games don’t allow calls to made outside of the game. Do other macro actions launch when you run them from within the game?


How to add comments/notes between command lines?

URL: https://minimousemacro.proboards.com/thread/703/add-comments-notes-command-lines
Date: Jun 9, 2023 15:47:42 GMT

User: sk0rpi0n

Date: Jun 9, 2023 15:47:42 GMT

Hi everybody, I spent half an hour on the forum trying to understand if there is the possibility to add comments/notes between the command lines in the .mmmacro file (and keeping the file working!).

Honestly I wasn’t able to find anything; these notes between the command lines could be very useful, specially in long script macros, for future editing.

Thank you. skorpi0n

User: philranger

Date: Jun 9, 2023 19:15:16 GMT

Hello Right-click in the instruction list, then select « Add Remark »

User: sk0rpi0n

Date: Jun 9, 2023 21:57:01 GMT

Hi, thank you for the answer; what do you mean with “Right-click in the instruction list, then select « Add Remark »”?

I usually edit directly the .mmmacro files as a txt file with the notepad; what srting should I add to set a note?

Thank you.

sk0rpi0n

User: sk0rpi0n

Date: Jun 9, 2023 22:18:26 GMT

Ok, I saw the instruction opening the macro with the program.

Can you tell me the exact syntax?

In example, if I would like to add a note that contains the text “HELLO!” what should I have to write in the line of the txt file? I see a syntax like “([*] | [REMARK])”, what should this mean? Is correct in this way?

([*][HELLO!])

Should I have to add the progressive numbers before the text or not?

Thank you! sk0rpi0n

User: sk0rpi0n

Date: Jun 10, 2023 0:51:47 GMT

Hi,

don’t mind, found out by myself… thank you for the initial advice!

sk0rpi0n

User: Steve

Date: Jun 10, 2023 4:50:39 GMT

Hi sk0rpi0n

Here’s an example from the condition page

<www.turnssoft.com/conditions.html#gotomacroline>

. And here’s another one showing remarks and comments: minimousemacro_commentsandremarks.gif


possibility of detecting and clicking an image on screen?

URL: https://minimousemacro.proboards.com/thread/578/possibility-detecting-clicking-image-screen
Date: May 28, 2022 23:09:50 GMT

User: pitchninja

Date: May 28, 2022 23:09:50 GMT

Hi there, I’m not overly familiar with mini Mouse, it works great so far with what I’ve used it for.

I was just wondering though if anyone might know if the below scenario is possible somehow with Mini Mouse:

I use an application that has images slowly move up the screen in a particular area. Eventually the images sit still. Is it by any chance possible to have Mini Mouse somehow maybe do a sweep or something across a given area and if it sees part of that image, it will click that image wherever it currently sits to select it and then click somewhere else? If it is possible, is it an extremely involved process?

If it CAN do the above, can it do that same type of sweep/detection for that same type of image and then if it sees it, it will click it - again wherever it currently sits - and then click another location different from the first?

User: Steve

Date: May 29, 2022 2:15:51 GMT

Hi pitchninja

For this I would use the detect image action (<www.turnssoft.com/conditions.html#detectimage>) within an IF THEN ELSE condition (<www.turnssoft.com/conditions.html#thenelse>). When I find the image i would click it with mouse click (<www.turnssoft.com/conditions.html#mouseclick>). To loop over the screen and continually monitor the screen coordinates i am looking for I’d use a goto macro line referencing remarks for START and FINISH (<www.turnssoft.com/conditions.html#gotomacroline>).

* | START
1 | IF | DETECT IMAGE | image path D:\Dropbox\Macro\File\pics\capture\STEVE.BMP::at 50 107 232 475::match quick::move mouse yes | IMAGE FOUND | THEN
   2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay
   3 | RUN ACTION | GOTO MACRO LINE | FINISH
4 | IF | ELSE
   5 | RUN ACTION | GOTO MACRO LINE | START
6 | IF | END IF
* | FINISH

Notice in the example that i’ve disabled the internal MMM event logger. The logger will fill on a loop like this so it’s best to disable it prior to running the macro.

minimousemacro_detectImageOnScreen.gif

User: pitchninja

Date: May 30, 2022 19:29:50 GMT

Oh wow thanks for the response Steve. Lots of info there to look up and learn about for sure. Take me a bit as a noob I’m sure, but at least I’ve got a good reference point to go by.

EDIT: One question I do have though, I did mention that I would want it to click that image and then click somewhere else on the screen. It would basically do it 5 times with the end result being 5 of that same image aligned in a column. Would that be a matter of having 5 separate loop sections maybe to do this?

So the first loop clicks the image and then a specific part of the screen, the second loop finds another of that same image but clicks right below where the first image was placed, and so on?

User: pitchninja

Date: Jun 17, 2022 22:08:17 GMT

Okay so I finally had some time to sit down with this. It’s not working at all. When I do the step you did where you right-click and then save the image, I name it but then it looks like what I attached. I’m following your steps exactly in order and I see according to your video that it saved your image and it displayed correctly but when I do what you did, that is what I get. I’m not sure how to proceed from here.

Can you help?

Attachments: ddnrPUqrsdOQCITXIDJs.png

User: Steve

Date: Jun 17, 2022 23:43:16 GMT

defaultavatar.png Jun 17, 2022 22:08:17 GMT

pitchninja said: Okay so I finally had some time to sit down with this. It’s not working at all. When I do the step you did where you right-click and then save the image, I name it but then it looks like what I attached. I’m following your steps exactly in order and I see according to your video that it saved your image and it displayed correctly but when I do what you did, that is what I get. I’m not sure how to proceed from here. Can you help? Are you scaling up your screen resolution?  MMM is getting the native screen X and Y coords.  I need to add a mechanism into the code to auto-adjust for the scaling.  If your scaling up above 100% your screen coords might need to be adjusted with the current version. screen-res.png

User: Shory9zeci

Date: Jun 23, 2022 12:54:15 GMT

Hello I’m unable to move mouse to picture, i follow the steps in video. Ive try exactly the same steps you made and doesn’t work

sad.png Thank you

User: kingoned

Date: Jun 8, 2023 16:57:34 GMT

Jun 23, 2022 12:54:15 GMT Shory9zeci said: Hello I’m unable to move mouse to picture, i follow the steps in video. Ive try exactly the same steps you made and doesn’t work sad.png Thank you Same problem, why it’s not working? Thanks!

* | START
1 | IF | DETECT IMAGE | image path C:\Users\david\Desktop\test.bmp::at 65 279 188 666::match quick::move mouse yes | IMAGE FOUND | THEN
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 2 times with 100 ms delay and lock the mouse
3 | RUN ACTION | GOTO MACRO LINE | FINISH
4 | IF | ELSE
5 | RUN ACTION | GOTO MACRO LINE | START
6 | IF | END IF
* | FINISH

Mouse Macro - Scheduler Run But The Parameter is incorrect

URL: https://minimousemacro.proboards.com/thread/702/mouse-macro-scheduler-parameter-incorrect
Date: Jun 6, 2023 1:54:17 GMT

User: vkarchli

Date: Jun 6, 2023 1:54:17 GMT

Dear Admin, I tried to follow this [https://www.turnssoft.com/faq2.html#how%20do%20i%20schedule%20my%20macro%20to%20run%20at%20a%20specific%20time] to create task scheduler.

But when the schedule running, there is last run result “The parameter is incorrect. (0x80070057) If I try to run manually the path and script from windows run, it can be run.

What I need to check?

Regards, Fadli.

User: zeak

Date: Jun 6, 2023 6:29:25 GMT

Hi Vkarchli, First of all, Welcome to the forum.

Are you able to show us an example of your code or a screenshot of how you have setup your task wizard.

One thing that might help would be to double check your file path is correct and argument options are correct for your purpose.

v8cajHJ.png

Also please in future, check how you have linked the page you are referring to.

Cheers, Zeak


Setting a Continuous Range of Mouse XY Automatically

URL: https://minimousemacro.proboards.com/thread/697/setting-continuous-range-mouse-automatically
Date: May 10, 2023 21:25:24 GMT

User: omalley

Date: May 10, 2023 21:25:24 GMT

is it possible to automatically set a range of mouse coordinates between two points without having to manually enter each value? Also, could you choose a number of steps for it to divide the task up into? So the mouse would move, for example, two pixels at a time instead of every one?

User: philranger

Date: May 13, 2023 17:09:02 GMT

Hello, I think that if you record the mouse movement while holding a moise button and then remove the lines « mouse click down and mouse click release it would work…

User: Steve

Date: May 26, 2023 19:41:21 GMT

defaultavatar.png May 10, 2023 21:25:24 GMT

omalley said: is it possible to automatically set a range of mouse coordinates between two points without having to manually enter each value? Also, could you choose a number of steps for it to divide the task up into? So the mouse would move, for example, two pixels at a time instead of every one? Hi omalley , Unfortunately this is not possible. The only way to get anywhere near close to this would be to manually edit each mouse movement X and Y after you’ve recorded it. Saying that though, The mouse movement action ( <www.turnssoft.com/conditions.html#mousemovement> ) could be an alternative. Using this action you could record the move movement and using the mouse movement dialog easily remove the mouse stages to give the appearance you’re after. You could also use some loops and math within MMM to programmatically declare the mouse movement structure you are after and then play that back using the mousemovement action. Regards, Steve.

User: zeak

Date: May 30, 2023 1:16:21 GMT

Hi Omallley, I was working on something like this a while ago like Steve said, using maths and Random variable but never got it to work completely.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%mouse_x% | AND | 1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%mouse_y%
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::1140
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::80
4 | IF | INTEGER VARIABLE | %INTEGER% | > | %INTEGER2% | DEFINE INTEGER VARIABLE | %INTEGER%::-%RANDOM_5-10%
5 | IF | INTEGER VARIABLE | %INTEGER% | < | %INTEGER2% | DEFINE INTEGER VARIABLE | %INTEGER%::+%RANDOM_5-10%
6 | IF | INTEGER VARIABLE | %INTEGER1% | > | %INTEGER3% | DEFINE INTEGER VARIABLE | %INTEGER1%::-%RANDOM_5-10%
7 | IF | INTEGER VARIABLE | %INTEGER1% | < | %INTEGER3% | DEFINE INTEGER VARIABLE | %INTEGER1%::+%RANDOM_5-10%
8 | %INTEGER% | %INTEGER1% | 100 | Mouse Movement
9 | IF | MOUSE POSITION NEAR | {X=1140,Y=80} | IS | STOP
10 | IF | MOUSE POSITION NEAR | {X=1140,Y=80} | IS NOT | GOTO MACRO LINE | 4

Let’s see if you can improve it. Cheers, Zeak

User: zeak

Date: May 30, 2023 1:22:02 GMT

I found when testing it, the movements didn’t feel natural enough and the Mouse Position Near was expecting a closer match and was unable to be adjusted the sensitivity. My other thought on this was to choose a number at random between 8 to 20 and calculate the points in between the starting and finish location based on the random interval. Here are some of my other test.

  • Curve Test 1
* | Parameters
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1
2 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::10
3 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL1%::1.5
4 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL2%::10000
5 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL3%::30000
* | Curved or Straight
6 | IF | DECIMAL VARIABLE | %DECIMAL1% | IS | 1 | GOTO MACRO LINE | Straight Loop
* | Curved Loop
* | Curve X
7 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL15%::%INTEGER%-1
8 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL14%::%DECIMAL1%^%DECIMAL15%
9 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL13%::%DECIMAL2%*%DECIMAL14%
10 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL12%::%DECIMAL13%-%DECIMAL2%
11 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL11%::%DECIMAL%-1
12 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL10%::%DECIMAL1%^%DECIMAL11%
13 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL9%::%DECIMAL2%*%DECIMAL10%
14 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL8%::%DECIMAL9%-%DECIMAL2%
15 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL7%::%DECIMAL3%-%DECIMAL2%
16 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL6%::%DECIMAL7%/%DECIMAL8%
17 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL5%::%DECIMAL12%*%DECIMAL6%
18 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL4%::%DECIMAL2%+%DECIMAL5%
19 | RUN ACTION | MESSAGE PROMPT | %DECIMAL4%::Points::0
20 | IF | INTEGER VARIABLE | %INTEGER% | = | %DECIMAL% | STOP
21 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
22 | RUN ACTION | GOTO MACRO LINE | Curved Loop
  • Curve Test 2
* | Parameters
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::10
* | 3 | RUN ACTION | INPUT BOX | Curve::Curve::DECIMAL
* | 4 | RUN ACTION | MESSAGE PROMPT | %DECIMAL%::::0
* | X
3 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::%RANDOM_-5-2%
4 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL1%::100
5 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL2%::1300
* | Y
6 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL3%::%RANDOM_0.1-2%
7 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL4%::200
8 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL5%::600
* | Curved or Straight
9 | RUN ACTION | MESSAGE PROMPT | %DECIMAL% & %DECIMAL3%::::0
10 | IF | DECIMAL VARIABLE | %DECIMAL% | IS | 1 | GOTO MACRO LINE | Straight Loop
11 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::%DECIMAL1%
12 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::%DECIMAL3%
13 | %INTEGER2% | %INTEGER3% | 10 | Left Click Down
* | 14 | %INTEGER2% | %INTEGER3% | 10 | Left Click Down
* | CurvedLoop
* | Curve X
14 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL10%::%INTEGER%
15 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL10%::^%DECIMAL%
16 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL10%::*%DECIMAL1%
17 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL10%::-%DECIMAL1%
18 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL11%::%INTEGER1%
19 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL11%::^%DECIMAL%
20 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL11%::*%DECIMAL1%
21 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL11%::-%DECIMAL1%
22 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL12%::%DECIMAL2%
23 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL12%::-%DECIMAL1%
24 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL12%::/%DECIMAL11%
25 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL12%::*%DECIMAL10%
26 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL12%::+%DECIMAL1%
27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::%DECIMAL12%
* | Curve Y
28 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL20%::%INTEGER%
29 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL20%::^%DECIMAL3%
30 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL20%::*%DECIMAL4%
31 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL20%::-%DECIMAL4%
32 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL21%::%INTEGER1%
33 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL21%::^%DECIMAL3%
34 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL21%::*%DECIMAL4%
35 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL21%::-%DECIMAL4%
36 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL22%::%DECIMAL5%
37 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL22%::-%DECIMAL4%
38 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL22%::/%DECIMAL11%
39 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL22%::*%DECIMAL10%
40 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL22%::+%DECIMAL4%
41 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::%DECIMAL22%
* | Actions
42 | %INTEGER2% | %INTEGER3% | 100 | Left Click Down
* | 43 | RUN ACTION | MESSAGE PROMPT | %INTEGER2% & %INTEGER3%::Points::0
43 | IF | INTEGER VARIABLE | %INTEGER% | = | %INTEGER1% | GOTO MACRO LINE | STOP
44 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
45 | RUN ACTION | GOTO MACRO LINE | CurvedLoop
* | STOP
46 | X | X | 10 | Left Click Release
47 | RUN ACTION | STOP

But as I said, I couldn’t get a clean macro to work, but I hope you have better luck.

Cheers, Zeak


# | RUN ACTION | WAIT SECONDS | under 2 not working?

URL: https://minimousemacro.proboards.com/thread/700/run-action-wait-seconds-working
Date: May 26, 2023 11:49:59 GMT

User: rboss2

Date: May 26, 2023 11:49:59 GMT

Hello everybody, using MMM 8.4.0 and I’m having the following problem:

when using “(number) | RUN ACTION | WAIT SECONDS | x” with a value of 2 or under (1, 1.5, 1.9, etc), it simply doesn’t work. Using 2,1 or above works fine, but for values of 2 seconds or below it just doesn’t seem to work.

Is this a bug?

User: Steve

Date: May 26, 2023 19:17:41 GMT

Hi, Yes this is a bug.

I have a fix and it will be released with the next update.

A work around for now is to use milliseconds instead of seconds with your wait:

1 | RUN ACTION | WAIT MILLISECONDS | 1500

The above will wait for 1.5 seconds.

Hope this helps, Steve.

User: rboss2

Date: May 27, 2023 16:24:24 GMT

It does - I was wondering if there was something wrong from my end. I’ll wait for an update then. Thank you.


Detect image match quick : identical percentage

URL: https://minimousemacro.proboards.com/thread/698/detect-image-match-identical-percentage
Date: May 14, 2023 19:37:11 GMT

User: alexg

Date: May 14, 2023 19:37:11 GMT

Hi, I wondering if it is possible to set the identical tolerance percentage when using the action “DETECT IMAGE” with “Match quick” option. 

I mean by that, that I would like that two images are considerated identical if at least 50% of pixel are matching.  

Thank you in advance ! Alex

User: Steve

Date: May 26, 2023 20:10:56 GMT

Hi alexg

Sorry no that’s not possible. The detect image action with match quick is your best bet.

Regards, Steve.


Keypress Down NOT Executing - on Faster Playback Speed

URL: https://minimousemacro.proboards.com/thread/695/keypress-executing-faster-playback-speed
Date: May 5, 2023 7:17:22 GMT

User: scotty03

Date: May 5, 2023 7:17:22 GMT

Macro is skipping the Keypress down entry #15 on the 4x faster playback, any ideas why?

Let me know. Thanks

1 | 2519 | 84 | 723 | Left Click Down
2 | 2519 | 84 | 210 | Left Click Release
3 | 2519 | 84 | 306 | Left Click Down
4 | 2519 | 84 | 188 | Left Click Release
5 | 2519 | 84 | 306 | Left Click Down
6 | 2519 | 84 | 180 | Left Click Release
7 | 2519 | 84 | 306 | Left Click Down
8 | 2519 | 84 | 198 | Left Click Release
9 | 2824 | 319 | 734 | Left Click Down
10 | 2824 | 319 | 140 | Left Click Release
11 | 2857 | 458 | 956 | Left Click Down
12 | 2857 | 458 | 132 | Left Click Release
13 | 3064 | 696 | 1057 | Left Click Down
14 | 3064 | 696 | 139 | Left Click Release
15 | 3064 | 696 | 871 | Keypress down

User: philranger

Date: May 6, 2023 19:26:02 GMT

Hello, The previous post seems to be about something similar, maybe it would help…

User: Steve

Date: May 26, 2023 20:08:57 GMT

defaultavatar.png May 5, 2023 7:17:22 GMT

scotty03 said: Macro is skipping the Keypress down entry #15 on the 4x faster playback, any ideas why? Let me know. Thanks

1 | 2519 | 84 | 723 | Left Click Down
2 | 2519 | 84 | 210 | Left Click Release
3 | 2519 | 84 | 306 | Left Click Down
4 | 2519 | 84 | 188 | Left Click Release
5 | 2519 | 84 | 306 | Left Click Down
6 | 2519 | 84 | 180 | Left Click Release
7 | 2519 | 84 | 306 | Left Click Down
8 | 2519 | 84 | 198 | Left Click Release
9 | 2824 | 319 | 734 | Left Click Down
10 | 2824 | 319 | 140 | Left Click Release
11 | 2857 | 458 | 956 | Left Click Down
12 | 2857 | 458 | 132 | Left Click Release
13 | 3064 | 696 | 1057 | Left Click Down
14 | 3064 | 696 | 139 | Left Click Release
15 | 3064 | 696 | 871 | Keypress down

Hi scotty03 It’s probably just too fast with the 4x playback speed. Does it work at slower speed?
Also, how do you know it’s missing the keypress down? Have you had a look at the MMM internal event log? Have a look at the event log and look for the keypress event.


KEYPRESS DOWN - INCONSISTENT BEHAVIOUR

URL: https://minimousemacro.proboards.com/thread/283/keypress-inconsistent-behaviour
Date: Jul 17, 2020 15:36:14 GMT

User: danman

Date: Jul 17, 2020 15:36:14 GMT

I am having an issue with a macro, where one user gets one result and another gets something different.

1 | 500 | 300 | 125 | Keypress F8
2 | 500 | 500 | 125 | Keypress DOWN

For myself and most of our users, this macro does the following: Press F8 Key, then press the DOWN key. The macro is set to loop, and we use this a lot to save time and banging on repetitive keystrokes. I have one user that excecutes the same macro and instead it types f8downf8downf8downf8downf8downf8downf8downf8downf8downf8down into a field until the field lenght is met or exceeded. What can cause this?

User: Steve

Date: Jul 20, 2020 10:01:03 GMT

Caps lock can cause this. If CAPS LOCK is on during playback then KEYPRESS DOWN becomes KEYPRESS down and KEYPRESS F8 becomes KEYPRESS f8. f8 and down are treated as whole words in MMM whereas F8 and DOWN have meaning; Function key 8 and DOWN arrow. I’d put money on caps lock being enabled on the host your talking about.

User: danman

Date: Jul 20, 2020 12:36:24 GMT

Doh! That makes sense.  We use CAPS LOCK a lot in the environmnet we are in. So much so, that I might have inverted a lot of stuff in MMM. I’ll test on both systems and report my findings here. Thanks, Danny

User: danman

Date: Jul 20, 2020 17:48:21 GMT

Steve  ( Steve ) So, this was very helpful.  I was able to fix several macros that were having issues once I took case into consideration However, this issue was not resolved.  I tested both users, WITH and WITHOUT CAPS LOCK.  Below is the macro.

1 | 500 | 300 | 125 | Keypress F8
2 | 500 | 500 | 125 | Keypress DOWN
  • TESTING

USER 1 - My laptop - Logged into SERVER1 Remote Desktop CAPS LOCK ON - Macro ran as intended.  No issues or errors.  (Function8 & Down keys) CAPS LOCK OFF - Macro ran as intended. No issues or errors. (Function8 & Down keys) USER 2 - Their laptop - Logged into SERVER1 Remote Desktop CAPS LOCK ON - Macro typed f8down instead of using the Function8 & DOWN key. CAPS LOCK OFF - Macro typed f8down instead of using the Function8 & DOWN key. == WROTE NEW MACRO ON USER 2 LAPTOP == Since this is such a simple macro, I remade it on the USER 2 laptop. I used the RECORD process.  The macros looked the same, but when I ran it on the USER 2 laptop, it worked. I pulled up both macros to compare.  Below are both macros.

  • ORIGINAL MACRO
1 | 500 | 300 | 125 | Keypress F8
2 | 500 | 500 | 125 | Keypress DOWN
  • NEW MACRO
1|500|500|125|Keypress F8
2|500|500|125|Keypress DOWN

The only difference seems to be the spacing between the delimiters. There was another macro not working for this user.  I removed the spaces between delimiters on that one, and it runs as well. (However, it runs much slower.  I’m beginning to troubleshoot that now.) When USER 1 runs this macro, it finishes the macro instantly, even though one of the first commands is a prompt for input.

1|RUN ACTION|INPUT BOX|What is the title of the FROM window:::FROM::STRING1

When I run the NEW MACRO above, looping it 1000 times, as USER 1 I see the count decrementing, but no keystrokes occur. Does this make sense? For USER 1 ONLY works with spaces surrounding delimiter. For USER 2 ONLY works if the spaces are removed from around the delimiter.

Thanks, Danny

User: Steve

Date: Jul 23, 2020 10:34:29 GMT

defaultavatar.png Jul 20, 2020 17:48:21 GMT

danman said: == WROTE NEW MACRO ON USER 2 LAPTOP == Since this is such a simple macro, I remade it on the USER 2 laptop. I used the RECORD process.  The macros looked the same, but when I ran it on the USER 2 laptop, it worked. I pulled up both macros to compare.  Below are both macros. == ORIGINAL MACRO ==

1 | 500 | 300 | 125 | Keypress F8
2 | 500 | 500 | 125 | Keypress DOWN

== NEW MACRO ==

1|500|500|125|Keypress F8
2|500|500|125|Keypress DOWN

The only difference seems to be the spacing between the delimiters.

Hi Danny, If laptop 1 records like the original macro with delimiters like this ‘ | ‘ (note the space) and laptop 2 records with delimiters like this ‘|’ (no space) then the settings for the laptop 1 and laptop 2 are not the same. Under settings - recording options there are options to change the delimiters. It seems as though those settings have been changed on laptop 2. Playing back a macro that has different delimiters to what is set in the settings will result in inconsistent behavior and errors. Exactly like that you are describing. The fix for this should be to match the delimiters on both laptop settings. Hope this helps.

User: ak

Date: Sept 24, 2020 21:30:36 GMT

Hi Steve, On a related note: is there a way to check for or ideally toggle Caps Lock in a MMM script? To help programmatically avoid issues like danman mentioned? Because I’ve had Caps Lock adversely affect my scripts as well.

User: Steve

Date: Sept 25, 2020 3:03:37 GMT

defaultavatar.png Sept 24, 2020 21:30:36 GMT

ak said: Hi Steve, On a related note: is there a way to check for or ideally toggle Caps Lock in a MMM script? To help programmatically avoid issues like danman mentioned? Because I’ve had Caps Lock adversely affect my scripts as well. Hi, Yeah this is what I’ve got to detect a caps and prompt. You could prob compress this down to a few lines:

1 | RUN ACTION | FILE CREATE | C:\Users\test\Desktop\caps.txt
2 | RUN ACTION | WAIT SECONDS | 1
3 | RUN ACTION | RUN PROGRAM | C:\Users\test\Desktop\caps.txt
4 | RUN ACTION | WAIT SECONDS | 1
5 | x | x | 500 | Keypress test
6 | X | X | 500 | Keypress Ctrl+ | a
7 | X | X | 500 | Keypress Ctrl+ | c
8 | X | X | 500 | Keypress Alt+ | f
9 | X | X | 500 | Keypress x
10 | X | X | 500 | Keypress n
11 | IF | CLIPBOARD | VALUE | TEXT IS | test | MESSAGE PROMPT | Caps is not on::CAPS - Status::0 | ELSE | 11 | RUN ACTION | MESSAGE PROMPT | Caps is on::CAPS - Status::0

This detects and toggles capslock:

1 | RUN ACTION | FILE CREATE | C:\Users\test\Desktop\caps.txt
2 | RUN ACTION | WAIT SECONDS | 1
3 | RUN ACTION | RUN PROGRAM | C:\Users\test\Desktop\caps.txt
4 | RUN ACTION | WAIT SECONDS | 1
5 | x | x | 500 | Keypress test
6 | X | X | 500 | Keypress Ctrl+ | a
7 | X | X | 500 | Keypress Ctrl+ | c
8 | X | X | 500 | Keypress Alt+ | f
9 | X | X | 500 | Keypress x
10 | X | X | 500 | Keypress n
11 | IF | STRING VARIABLE | %CLIPBOARD% | CONTAINS | test | GOTO MACRO LINE | Down 2
12 | X | X | 500 | Keypress capslock
13 | RUN ACTION | MESSAGE PROMPT | End of the macro::The End::1

User: Jae Song

Date: May 2, 2023 4:23:13 GMT

Hello, I’m getting an error report on command “1 | -346| 231| 100 | Keypress Alt+ | f5”. Here is the error message: 1 | -346 | 231| 100 | Keypress alt+ | f5 - Unable to process macro line. Check the entry check the delim value between entries [|] I currently have Mini Mouse Macro version 7.0.0.0. Please help! Jae

User: Steve

Date: May 26, 2023 19:47:56 GMT

May 2, 2023 4:23:13 GMT Jae Song said: Hello, I’m getting an error report on command “1 | -346| 231| 100 | Keypress Alt+ | f5”. Here is the error message: 1 | -346 | 231| 100 | Keypress alt+ | f5 - Unable to process macro line. Check the entry check the delim value between entries [|] I currently have Mini Mouse Macro version 7.0.0.0. Please help! Jae Hi Jae, Update you’re Mini Mouse Macro version . You are running a version that is a few years old now and we’ve had a lot of improvements and changes since then. You can download the latest version from minimousemacro.com/ . The error is due to bad delimiter entries on the macro line. This:

1 | -346 | 231 | 100  | Keypress Alt+ | f5

Replace with this:

1 | -346 | 231 | 100 | Keypress Alt+ | f5

Regards, Steve.


MMM text format issue

URL: https://minimousemacro.proboards.com/thread/675/mmm-text-format-issue
Date: Feb 10, 2023 12:16:39 GMT

User: revird

Date: Feb 10, 2023 12:16:39 GMT

Can anyone tell me why this line:

47 | RUN ACTION | OUTPUT TO FILE | C:\MMM\Logs\pending points.txt::APPEND_NEWLINE::%STRING%, UserID= %STRING1%, Before= %STRING2%, After= %STRING3%

Inserts lines like this in a text file? 5/02/2023 9:10:47 AM, UserID= 724338, Before= Pending: 4,760 Points , After= Pending: 3,260 Points 5/02/2023 9:12:58 AM, UserID= 715072, Before= Pending: 4,680 Points , After= Pending: 1,280 Points Thanks for any help.

User: revird

Date: Feb 20, 2023 4:23:01 GMT

Can anyone help please?

User: revird

Date: May 21, 2023 8:24:10 GMT

Asking again, Can anyone tell me why the line below saves the data on separate lines?

38 | RUN ACTION | OUTPUT TO FILE | C:\MMM\Logs\tw_delete.txt::APPEND_NEWLINE::%STRING%, %STRING2%, %STRING3%, %STRING4%, %STRING5%

21/05/2023 5:49:59 PM, UserId: 338915 , Email: oliver.lion.3@gmail.com ( Yes ) , Signup Date: 2022-10-06T10:40:26-04:00 , Detected Country: PT This is how I want it to save to the txt file 21/05/2023 5:50:28 PM, UserId: 338915, Email: oliver.lion.3@gmail.com ( Yes ), Signup Date: 2022-10-06T10:40:26-04:00, Detected Country: PT Thanks..

User: TonyG

Date: May 21, 2023 10:40:53 GMT

How are you declaring your strings? It looks like you’ve got a CRLF (a new line) at the start of your string variables.
What does the variables look like when you output them to a message box?

User: revird

Date: May 21, 2023 22:51:36 GMT

1 | RUN ACTION | DEBUG | CLEAR CUSTOM VARIABLES
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%date% %time%
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::%CLIPBOARD%
4 | 351 | 765 | 2000 | Left Click Down
5 | 351 | 765 | 103 | Left Click Release
6 | 351 | 765 | 89 | Left Click Down
7 | 351 | 765 | 87 | Left Click Release
8 | 351 | 765 | 88 | Left Click Down
9 | 351 | 765 | 136 | Left Click Release
10 | 140 | 795 | 500 | Keypress Ctrl+ | c
11 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::%CLIPBOARD%

Basically, I am highlighting a section on the screen, saving it to the clipboard, assigning the clipboard to a string, then going to the next item highlighting, saving, and then at the end, sending all strings to a text file. I hope you can help, I have been manually editing the text files to get the format I need, pete

User: Steve

Date: May 26, 2023 19:30:42 GMT

Hi revird , I think the issue is you’re clipboard variable is carrying a new line. Whatever your have copied to your clipboard buffer has this new line so when you are pasting it you get the spaces you are seeing. Try testing whats in you’re buffer with a message prompt ( <www.turnssoft.com/conditions.html#messageprompt> ). Throw a test into your current macro.  Something like this will work for a test:

1 | 351 | 765 | 2000 | Left Click Down
2 | 351 | 765 | 103 | Left Click Release
3 | 351 | 765 | 89 | Left Click Down
4 | 351 | 765 | 87 | Left Click Release
5 | 351 | 765 | 88 | Left Click Down
6 | 351 | 765 | 136 | Left Click Release
7 | 140 | 795 | 500 | Keypress Ctrl+ | c
8 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::%CLIPBOARD%
9 | RUN ACTION | MESSAGE PROMPT | Here is the contents of my clipboard buffer:<THIS IS THE START>%CLIPBOARD%<THIS IS THE END>::What is in my clipboard buffer::0::Information

If you see something that looks like the below in your output then it’s safe to say you’re coping blank lines to your clipboard: Here is the contents of my clipboard buffer:<THIS IS THE START>UserId: 338915 <THIS IS THE END> Further to this, you could consider changing the way you pass to the clipboard and retrieve from the clipboard. Take a look at this example: minimousemacro_copytoclipboard.gif Hope this helps, Steve.


Wait time between loop

URL: https://minimousemacro.proboards.com/thread/696/wait-time-loop
Date: May 10, 2023 11:32:05 GMT

User: Danny

Date: May 10, 2023 11:32:05 GMT

Hi there, Like this awesome app. I have a question. Is it possible to put a timer/wait between loops? Lets say I want to loop the macro in “Infinity mode”, but I want to make 1 or 2 min. wait between the runs.

User: philranger

Date: May 13, 2023 17:06:56 GMT

Hello, Either add the ACTION WAIT or edit the timing of the last instruction


I want to copy a text that is located within a specific rang

URL: https://minimousemacro.proboards.com/thread/694/copy-text-located-specific-rang
Date: Apr 30, 2023 12:58:10 GMT

User: aslofke

Date: Apr 30, 2023 12:58:10 GMT

Hi everyone I would appreciate it if you could assist me with the situation that I need to solve, as I have described below. User: name surname (sometimes this field can be long) - 123456 (member number with same number of digits) - Machine: product name model (sometimes this field can be long and have many words) - 123456 (product number with same number of digits) - I want to copy the name, surname, and member number from the two lines above and paste them into the designated fields below as name and product number. To do this, I need to copy the text between the ‘:’ and ‘-‘ symbols and the text between the ‘-‘ symbols separately and paste them into my clipboard. I haven’t been able to figure out how to do this, so can you help me?

User: philranger

Date: May 1, 2023 1:09:57 GMT

Hello, Mini Mouse Macro doesn’t have powerful text search features (to say the least) My workaround would be to copy the texts first in excel if you want to do a batch job, or first paste them in a notepad, use the search feature of the notepad. From your example, I would -paste in a notepad

  • ctrl-f (find) for « : »
  • escape
  • ctrl-shift-home (select til beginning of line)
  • delete (you may need to do twice to remove the « : » as well
  • search for -
  • ctrl-shift-end (select til end of line)
  • delete
  • ctrl-a (select all)
  • copy Or something roughly similar Easier: copy and paste everything in excel and use excel functions to isolate what you need Hoping this helps!

Trouble with OCR statements

URL: https://minimousemacro.proboards.com/thread/693/trouble-ocr-statements
Date: Apr 25, 2023 20:22:03 GMT

User: joe

Date: Apr 25, 2023 20:22:03 GMT

Hello I am trying to stack ocr if then statements. I created the macro below. The macro looks for three different text phrases in the same positon. If the macro sees one of those three phrases it clicks on a link in a different part of the screen. If the macro doesn’t see one of the three different text phrases it will open a word document and then stop. The first two ocr lines (code lines 2 and 3) work just like I want them to. The problem is code line 4. If the text BR#9 appears on the screen the macro doesn’t see it, and it runs code lines 5 and 6.

* | proton vpn location selection test
1 | RUN ACTION | WAIT SECONDS | 5
2 | IF | OCR | At location [X:56 Y:332 W:118 H:25]::Lang eng - English::To string OCR | TEXT IS | CA#105 | GOTO MACRO LINE | CA#105
3 | IF | OCR | At location [X:56 Y:332 W:118 H:25]::Lang eng - English::To string OCR | TEXT IS | CA#91 | GOTO MACRO LINE | CA#91
4 | IF | OCR | At location [X:56 Y:332 W:118 H:25]::Lang eng - English::To string OCR | TEXT IS | BR#9 | GOTO MACRO LINE | BR#9
* | move on to next account
5 | RUN ACTION | RUN PROGRAM | C:\Users\josep\Desktop\Begin coinfarm daily bonus.docx
6 | RUN ACTION | STOP
* | CA#105
7 | IF | OCR | At location [X:42 Y:518 W:73 H:23]::Lang eng - English::To string OCR | TEXT IS | CA#105 | GOTO MACRO LINE | click location
* | CA#91
8 | IF | OCR | At location [X:42 Y:518 W:73 H:23]::Lang eng - English::To string OCR | TEXT IS | CA#91 | GOTO MACRO LINE | click location
* | BR#9
9 | IF | OCR | At location [X:42 Y:518 W:73 H:23]::Lang eng - English::To string OCR | TEXT IS | BR#9 | GOTO MACRO LINE | click location
* | click location
10 | RUN ACTION | MOUSE CLICK | Left click at 265 525 2 times with 77 ms delay

I already tried putting a 500 ms wait time in between line 3 and 4 but that didn’t fix it. So I think I might not be able to use more than two of these “If Then OCR” statements in the same macro. I really hope that I am doing something wrong because the “If Then OCR” statements would be really useful for me if I could stack a bunch of them together. So, am I doing something wrong with my macro above? Is there a work around that would allow me to create a macro that had more than two If Then OCR statements on it without having to separate them into different macros? Thanks!


Use Hotkeys with remote desktop as the active window

URL: https://minimousemacro.proboards.com/thread/691/hotkeys-remote-desktop-active-window
Date: Apr 20, 2023 0:07:47 GMT

User: Cisum

Date: Apr 20, 2023 0:07:47 GMT

Is there any way to use hotkeys while the active window is a remote desktop session? I think the remote desktop session is grabbing the keypresses before MMM can see them. Any specific combination of hotkey keys that will allow me to play the macro while the active window is remote desktop?

User: philranger

Date: Apr 20, 2023 18:58:19 GMT

Hello, I think I have seen other similar questions in the forum…

User: Cisum

Date: Apr 21, 2023 17:17:35 GMT

I couldn’t find one with an actual solution unfortunately. As this macro is only temporary really I’ve just ended the macro by clicking the title bar of MMM and have always on top checked. As long as I position MMM in the same place it works. Not ideal but good enough I suppose.

User: philranger

Date: Apr 22, 2023 11:30:06 GMT

Nice workaround, thanks for sharing this!


Offline No Internet connection play macro

URL: https://minimousemacro.proboards.com/thread/692/offline-internet-connection-play-macro
Date: Apr 20, 2023 15:04:40 GMT

User: Tresh

Date: Apr 20, 2023 15:04:40 GMT

Hello everyone, is it possible to use mmm while not being connected to the internet? Thanks in advance!

User: Tresh

Date: Apr 20, 2023 15:52:22 GMT

I thought I could not play any makros because I had no internet connection. But now I´m pretty sure thats not the problem…

User: Tresh

Date: Apr 20, 2023 16:23:31 GMT

I just had the macro ques activated… How do use them correctly? xD


Problema con IF DETECTE IMAGE

URL: https://minimousemacro.proboards.com/thread/690/problema-con-detecte-image
Date: Apr 16, 2023 19:43:28 GMT

User: Julio

Date: Apr 16, 2023 19:43:28 GMT

Hola Steve. No consigo que la siguiente macro funcione:

2 | IF | DETECT IMAGE | image path C:\Users\Usuario\Downloads\Google.bmp::match quick::move mouse yes | IMAGE NOT FOUND | MESSAGE PROMPT | Imagen no encontrada ::Titulo::0::OK

 Google.bmp es el nombre “Google” en colores, tal como aparece en la web de Google.es. Siento no ponerte la imagen, pero no sé como hacerlo. Cuando tengo cargada la web Google.es, la macro responde “Imagen no encontrada”, lo cual es falso. Cuando tengo cargada cualquier otra web también dice “Imagen no encontrada” , lo cual es cierto. Te adjunto el log cuando tengo cargada la web de Google.es Event Time Text

 04/16/2023 09:37:07.68  Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Usuario\Downloads\Google.bmp::match quick::move mouse yes | IMAGE NOT FOUND | MESSAGE PROMPT | Imagen no encontrada ::Titulo::0::OK
 04/16/2023 09:37:07.93  Macro Condition - Detect Image : Failed to find image. Time: 240 ms
 04/16/2023 09:37:07.95  Macro condition - Condition TRUE
 04/16/2023 09:37:07.96  Macro action - Running ACTION: MESSAGE PROMPT - Message(Imagen no encontrada ::Titulo::0::OK)
 04/16/2023 09:37:22.82  Macro playback finished

User: Julio

Date: Apr 17, 2023 17:16:52 GMT

Ya lo he resuelto. Perdonad las molestias


Can Left Ctrl be pressed by itself?

URL: https://minimousemacro.proboards.com/thread/689/left-ctrl-pressed
Date: Apr 16, 2023 18:43:25 GMT

User: thenameiseaston

Date: Apr 16, 2023 18:43:25 GMT

I’m looking to add a line that can press just left control once a loop. Not a ctrl+ action but just press left control.


Problem starting Image detection

URL: https://minimousemacro.proboards.com/thread/688/problem-starting-image-detection
Date: Apr 14, 2023 20:04:02 GMT

User: Hossein

Date: Apr 14, 2023 20:04:02 GMT

Hi there, I’m new to mini mouse macro and have zero knowledge of Coding and stuff. I tried a lot with the condition adding but cant get it to work I want the macro to detect an image (have a cropped screenshot of what i want to detect) left-click and hold on image for 2sec after that, the image appears elsewhere, find it again and left-click hold for 5sec (will change the times for different scenarios)


How to get pro version?

URL: https://minimousemacro.proboards.com/thread/687/get-pro-version
Date: Apr 7, 2023 18:58:36 GMT

User: lucent

Date: Apr 7, 2023 18:58:36 GMT

I am supporting on Patreon, and it’s supposed to be free for supporters.  How do I get the full version?  I only see the option to purchase it.

User: philranger

Date: Apr 10, 2023 2:20:35 GMT

Hello, I guess Steve should be contacting you soon. He handles the whole thing by himself, so he may be on an Easter break or just living his « normal life » for a couple days!

User: lucent

Date: Apr 12, 2023 16:18:38 GMT

Thanks!  I’m surprised he hasn’t automated the process.


Why can’t I access the conditions page?

URL: https://minimousemacro.proboards.com/thread/685/why-access-conditions-page
Date: Apr 3, 2023 5:52:03 GMT

User: joe

Date: Apr 3, 2023 5:52:03 GMT

When I try to open <www.turnssoft.com/conditions.html> all I get is a blank white page. Why is this happening? I already cleared the history. Is there anything else I should of tried before I came to the forum? Thanks

User: philranger

Date: Apr 4, 2023 0:14:18 GMT

Works for me now using your link. A temporary problem?

User: zeak

Date: Apr 5, 2023 0:53:50 GMT

Hi All, My conditions page is also not loading today, Either from my saved bookmark that has always worked or from the link in this thread.

User: joe

Date: Apr 5, 2023 21:41:55 GMT

I tried opening <www.turnssoft.com/conditions.html> with the mozzila firefox browser just now and that’s not working either. I also just tried to open the conditions page while connected to the surfshark vpn and it’s still not working. I’m not sure what else to try. If anyone has any possible fixes, please let me know. Thanks

User: philranger

Date: Apr 6, 2023 15:27:48 GMT

Just a wild guess: try hitting ctrl-F5 and ctrl-r in your browser to force a refresh instead of taking the page from your local cache?


How can I set the tab key to be pressed once more after ..?

URL: https://minimousemacro.proboards.com/thread/686/set-tab-pressed-more-after
Date: Apr 3, 2023 13:58:00 GMT

User: jordan

Date: Apr 3, 2023 13:58:00 GMT

How can I set the tab key to be pressed once more after each loop. Example:

1 | -390 | 181 | 1393 | Left Click Down
2 | -390 | 181 | 85 | Left Click Release
3 | -390 | 181 | 1300 | Keypress tab
4 | -390 | 181 | 247 | Keypress tab
5 | -390 | 181 | 398 | Keypress tab
6 | -390 | 181 | 1513 | Keypress enter

Thanks

User: philranger

Date: Apr 4, 2023 0:19:25 GMT

Hello, Use the « FOR » instruction. Details at <www.turnssoft.com/conditions.html#for> If it’s only 3-4 times it might not be worth the effort though. you can also change the delay before each action, for example to 50. It’s the 4th number in each instruction and it’s in milliseconds. Please let me know if I didn’t understand what you need!


Alt+Tab to Switch Between Windows

URL: https://minimousemacro.proboards.com/thread/35/alt-tab-switch-windows
Date: Aug 3, 2018 18:49:09 GMT

User: jay

Date: Aug 3, 2018 18:49:09 GMT

Is it possible to use the Alt+Tab to switch between the Mini Mouse window and 2 other?  Two consecutive Alt+Tab steps does not switch focus the way in which the recording was done.

User: Steve

Date: Aug 7, 2018 1:14:31 GMT

Hi Jay, MMM will fail to switch between 2 windows because the ALT key is not held down during the tab during playback. When you record the macro the hold te alt key down and press tab, however when this is played back by MMM it plays back as two consecutive alt+tab. With each alt+tab at playback the alt key is lifted. I have added function key holding to the update list for MMM. To make this work with MMM you are going to have to try a different approach. Check out <www.turnssoft.com/conditions.html#windowtitle> and <www.turnssoft.com/conditions.html#selectwindowbyname> or <www.turnssoft.com/conditions.html#selectwindowbyprocessid> If you need any help getting a macro working with the conditions above I will be happy to help. Regards, Steve.

User: Konkots

Date: Apr 1, 2023 8:59:04 GMT

Hello, I am trying to switch windows but with no success. I tried alt+ tab And i tried to use :

18 | RUN ACTION | SELECT WINDOW BY NAME | names.xlsx - Microsoft Excel

I want to copy data from cells in excel to a web form in mozilla. Is there any way to simulate alt+tqb without problems? Thank you

User: philranger

Date: Apr 2, 2023 13:28:53 GMT

Hello, If you only need Excel and Mozilla, you can start the macro from one of these by using Mini Mouse Macro shortcut keys (mine is set to F3) to start the macro, so you just have to « Alt-Tab » between 2 programs (Mozzy and Excel). If not, windows-tab opens a window where you can navigate between open programs with arrow keys. You could also maybe put each program in a half screen and click on their title bar, but I’m not a fan of macros relying on positions as I often change screen configurations (office vs home office) Cheers!

User: konkots

Date: Apr 3, 2023 6:14:17 GMT

Thank you very much! i tried several times and it works with the following macros :

20 | RUN ACTION | SELECT WINDOW BY NAME | Firefox
18 | RUN ACTION | SELECT WINDOW BY NAME | names

(names is the name of the excel spreadsheet)


Why does macro round the number when it does maths?

URL: https://minimousemacro.proboards.com/thread/683/macro-round-number-when-maths
Date: Mar 24, 2023 2:45:14 GMT

User: joe

Date: Mar 24, 2023 2:45:14 GMT

The first macro copies a number from a website and then it determines whether or not that number is greater than or equal to 100. This number is saved as %swapgold%. If %swapgold% is greater than or equal to 100 the below macro runs. The below macro takes %swapgold% and then it divides it by 100. Then the macro takes %swapgold% and multiplies it by 100, and then it types out the answer. The problem that I am having is that answer gets rounded up or down. For example, if the number that becomes %swapgold% is 150 then the answer is rounded up to 200. When the macro concludes that 150/100=1.5, I want the macro to round down or ignore digits to the right of the decimal. Is this possible to do with MMM? Microsoft Excel has a function called floor.math that lets you put in a number and then excel will round the number down to what ever number you want it to. So if you put in 299 and told excel to round down to the nearest hundred it would give you the 200. If I could make the macro do floor.math that would work as well, but it doesn’t look like MMM does floor math. Is it possible to do floor.math with MMM? 100plus.mmmacro

* | greater than or equal to 100
1 | RUN ACTION | WAIT MILLISECONDS | 500
2 | RUN ACTION | MOUSE CLICK | Left click at 654 303 1 times with 0 ms delay
3 | RUN ACTION | WAIT MILLISECONDS | 500
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %swapgold%::/100
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %swapgold%::*100
6 | RUN ACTION | KEYPRESS | %swapgold%

Thanks

User: philranger

Date: Mar 24, 2023 11:11:45 GMT

Hello, I’d try to Substract 50 before dividing? 100-50= 50, rounds up to 100 199-50=149, rounds down to 100

User: joe

Date: Mar 24, 2023 16:12:53 GMT

Thanks again philranger! I had a feeling that I could do what is essentially the same as the floor.math function in microsoft excel with MMM but I just couldn’t get it right. Thank you for your help, again. Below is a copy of the two macros that I created (with the help of the great MMM community) that copies a number from a website, then rounds the number down to the nearest hundred, and then paste the answer at a different spot.

1 | RUN ACTION | WAIT MILLISECONDS | 500
* | copy from website
2 | RUN ACTION | MOUSE CLICK | Left click at 653 279 2 times with 77 ms delay
3 | 653 | 279 | 500 | Keypress Ctrl+ | c
4 | RUN ACTION | WAIT MILLISECONDS | 500
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %swapgold%::%clipboard%
6 | RUN ACTION | WAIT MILLISECONDS | 500
7 | IF | INTEGER VARIABLE | %swapgold% | GREATER THAN | 100 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100plus.mmmacro
8 | RUN ACTION | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100minus.mmmacro
* | greater than or equal to 100
1 | RUN ACTION | WAIT MILLISECONDS | 500
2 | RUN ACTION | MOUSE CLICK | Left click at 654 303 1 times with 0 ms delay
3 | RUN ACTION | WAIT MILLISECONDS | 500
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %swapgold%::-50
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %swapgold%::/100
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %swapgold%::*100
7 | RUN ACTION | KEYPRESS | %swapgold%

User: philranger

Date: Mar 25, 2023 1:49:39 GMT

Happy it worked!


copy # from website then do math

URL: https://minimousemacro.proboards.com/thread/682/copy-website-math
Date: Mar 22, 2023 5:45:52 GMT

User: joe

Date: Mar 22, 2023 5:45:52 GMT

I would like to make a macro that can copy a number from a website, then round that number down to the nearest 100, and then paste the answer in a different part of the website. For example, if the macro copied the number 199.09 at point A the macro would then paste number 100 at point B. I would really like to be able to do this without having to open something like notepad or excel. Is this possible? Thanks!

User: philranger

Date: Mar 22, 2023 23:40:00 GMT

Hello, I’d try messing with integer variables, dividing by 100 and then multiplying by 100? <www.turnssoft.com/conditions.html#decimal_variable>

User: joe

Date: Mar 23, 2023 0:38:50 GMT

Hello philranger, Thanks for your reply. I’m not really sure how to write the code so that the macro would divide the number by 100 and then multiply the answer by 100. What you’re saying is that line seven should be something like “If Integer Variable %swapgold% divide by 100 then multiply answer by 100”?

1 | RUN ACTION | WAIT MILLISECONDS | 500
* | copy from website
2 | RUN ACTION | MOUSE CLICK | Left click at 1020 582 2 times with 77 ms delay
3 | 1020 | 582 | 500 | Keypress Ctrl+ | c
4 | RUN ACTION | WAIT MILLISECONDS | 500
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %swapgold%::%clipboard%
6 | RUN ACTION | WAIT MILLISECONDS | 500
7 | IF | INTEGER VARIABLE | %swapgold% | GREATER THAN EQUAL TO | 100 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100plus.mmmacro
8 | RUN ACTION | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100minus.mmmacro

does ocr work with if then else statements?

URL: https://minimousemacro.proboards.com/thread/680/ocr-work-statements
Date: Mar 19, 2023 20:44:42 GMT

User: joe

Date: Mar 19, 2023 20:44:42 GMT

Good evening, I am trying to create an ocr if then else statement and I can’t get it to work properly. I want the ocr to look at cell A1 in an excel spreadsheet and determine whether cell A1 has the number 100 in it. If cell A1 is 100 then I want the macro to open the saved word page that says “press swap gold button once.” If cell A1 is not 100 then I want the macro to open the saved word page that says “stop”. Each time I run the macro it opens the word page that says stop. Can someone please help me figure out what is wrong with my code? Below is the actual code.

1 | RUN ACTION | WAIT MILLISECONDS | 500
2 | IF | OCR | At location [X:25 Y:257 W:60 H:19]::Lang eng - English::To string OCR | TEXT CONTAINS | 100 | THEN
3 | RUN ACTION | WAIT MILLISECONDS | 500
4 | RUN ACTION | RUN PROGRAM | C:\Users\josep\Desktop\Press gold swap button once.docx
5 | RUN ACTION | STOP
6 | IF | ELSE
7 | RUN ACTION | RUN PROGRAM | C:\Users\josep\Desktop\Stop.docx
8 | RUN ACTION | STOP
9 | IF | END IF

User: joe

Date: Mar 19, 2023 21:10:57 GMT

I also have another issue that is related to my post regarding “does ocr work with if then else statements?” I think what I should have asked first was can I make a macro that does the below stuff without using an excel spreadsheet?

I made a macro that copies a number from a web page, pastes it into cell b1 of an excel spreadsheet. This spreadsheet is set up so that when I paste a number into cell b1 it rounds the number down to the nearest 100 into cell a1. So for example if I paste 1295 into cell b1, then 1200 will appear in cell a1.    User: philranger

Date: Mar 19, 2023 23:51:17 GMT

Hello, If you already have a copy in the clipboard, just copy it to an integer and check if it is 100?

User: joe

Date: Mar 20, 2023 19:12:48 GMT

Hello Phil, thanks for replying. I think another way of stating what I am trying to do is that I want to make a macro that copies a number from a website, then determines whether that number is greater than or equal to 100. Then if that number is greater than or equal to 100 I want the macro to do A, but if that number is less than 100 I want the macro to do B. The code below is what I came up with but its not working the way I want it to. Regardless of what number the macro copies it keeps loading the 100minus macro.

1 | RUN ACTION | WAIT MILLISECONDS | 500
* | copy
2 | RUN ACTION | MOUSE CLICK | Left click at 28 267 1 times with 0 ms delay
3 | RUN ACTION | WAIT MILLISECONDS | 1000
4 | RUN ACTION | MOUSE CLICK | Right click at 28 267 1 times with 0 ms delay
5 | RUN ACTION | WAIT MILLISECONDS | 1000
6 | RUN ACTION | MOUSE CLICK | Left click at 40 336 1 times with 0 ms delay
7 | RUN ACTION | WAIT MILLISECONDS | 500
8 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN EQUAL TO | 100 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100plus.mmmacro
9 | RUN ACTION | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100minus.mmmacro

thanks!

User: joe

Date: Mar 21, 2023 19:54:26 GMT

I fixed it! Thanks philranger and the help I found on a different post minimousemacro.proboards.com/thread/294/custom-clipboard This is a copy of my working macro in case anyone else is interested:

1 | RUN ACTION | WAIT MILLISECONDS | 500
* | copy from website
2 | RUN ACTION | MOUSE CLICK | Left click at 1020 582 2 times with 77 ms delay
3 | 1020 | 582 | 500 | Keypress Ctrl+ | c
4 | RUN ACTION | WAIT MILLISECONDS | 500
5 | RUN ACTION | DEFINE STRING VARIABLE | %CLIPBOARD%
6 | RUN ACTION | WAIT MILLISECONDS | 500
7 | IF | INTEGER VARIABLE | %CLIPBOARD% | GREATER THAN EQUAL TO | 100 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100plus.mmmacro
8 | RUN ACTION | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\100minus.mmmacro

Tail Log file and act accordingly

URL: https://minimousemacro.proboards.com/thread/681/tail-log-file-act-accordingly
Date: Mar 20, 2023 23:56:00 GMT

User: griffler

Date: Mar 20, 2023 23:56:00 GMT

Hello all, I’m wanting to tail a log file and if it matches a string have it goto a certain part of my script. I’ve read several different operators and just keep confusing myself more and more.  What would be the best way to go about filtering the tail of a log file and acting upon those results?  I’ve considered appending the log file down to only the content I need and reading that file with MMM, etc.  Just cant decide where and how to pull the trigger. Thanks for your help!

User: griffler

Date: Mar 21, 2023 1:02:32 GMT

I’ve got a powershell script running that appends the log file down to only the lines that I’ll need the script reacting to.  Now I just need help figuring out how to read each line added to the new appended log file and react to each.

User: zeak

Date: Mar 21, 2023 6:52:00 GMT

Hi Griffler, Does the following code work for your case?

1 | IF | FILE | C:\rescue.log | FILE CONTAINS STRING | error | KILL PROCESS ID | 8732

This reads - IF the FILE c:\rescue.log FILE CONTAINS STRING ‘error’ then KILL PROCESS ID 8732. So if the file c:\rescue.log contains the text string ‘error’ anywhere in the file then kill the current running process with the process ID of 8732. <www.turnssoft.com/conditions.html#filecontainsstring>

User: zeak

Date: Mar 21, 2023 7:17:35 GMT

Another method would be to monitor the log file for changes.

1 | RUN ACTION | INPUT FROM FILE | STRING::REFRESH::C:\Users\Zeak\Documents\Calculators\Macros\TestFile.txt
2 | IF | STRING VARIABLE | %STRING% | CONTAINS -C | error | CONTINUE

<www.turnssoft.com/conditions.html#inputfromfile> <www.turnssoft.com/conditions.html#containsc> If you would like it to be even more actuate, then use your PowerShell script to put in the variable handles and use the INPUT FROM FILE | VARIABLES part of the condition. If you need any more help, don’t hesitate to ask. Cheers, Zeak

User: griffler

Date: Mar 21, 2023 8:15:40 GMT

Amazing, thanks for the help!  I had considered your first suggestion, it is a constantly updating log file, so I think the second route might be the way to go?  I can match each line in the powershell append and assign a variable.  Should the variable be at the end or beginning of each line, and how should the variable be formatted?  What I’ll then be shooting for is each time a new line is added at the end of the append file, it will trigger the script accordingly. Thanks again for your time!


Mouse Movement playback slows to a Crawl

URL: https://minimousemacro.proboards.com/thread/677/mouse-movement-playback-slows-crawl
Date: Mar 9, 2023 12:41:55 GMT

User: griffler

Date: Mar 9, 2023 12:41:55 GMT

I tried searching for this but could not find anything, I apologize if this has been covered already but please point me in the proper direction. After recording a macro with mouse movement, playback works great for the first few loops of the macro.  However it eventually will slow to a crawl and the only solution is to close the program and restart the macro.  This also happens when using the macro queue option.  I’ve tried the usual fresh restart, close running programs etc.  Its a pretty beefy computer with 32gigs of ram, nothing pegs out in the resource monitor, and MMM is the only thing affected.  Happens on both the regular and pro versions including up to the current Beta release, and length of macro has no impact. Thanks in advance for your time!

User: zeak

Date: Mar 21, 2023 6:34:49 GMT

Hi Griffler, First of all, welcome to the forum. I have found this happens to me if I leave the event log turned on, it fills up and then slows down. Try turning off the event logging if you have it on and see if that helps. If your event logger is already off, then I am not sure what is causing it. Cheers, Zeak


Can I trigger a macro when a button is displayed

URL: https://minimousemacro.proboards.com/thread/679/trigger-macro-when-button-displayed
Date: Mar 15, 2023 17:59:51 GMT

User: ncsteve

Date: Mar 15, 2023 17:59:51 GMT

I’m attempting to create a macro that interacts with a n application that is running on my desktop.  Basically, I need the macro to press a button whenever the button appears on the screen.  Is this feasible?

User: philranger

Date: Mar 16, 2023 1:43:36 GMT

Hello Is the position fixed? I would investigate “Detect image” condition


Copy from excel

URL: https://minimousemacro.proboards.com/thread/678/copy-excel
Date: Mar 9, 2023 13:29:13 GMT

User: philranger

Date: Mar 9, 2023 13:29:13 GMT

Hello, I’m copying a cell from Microsoft Excel and want to take action only if is not empty, but the clipboard contains an « Image », whether the cell is empty or not. I can’t pre-treat the excel files (there will be hundreds of them in the next year and the risk of accidentally saving the treated version is too high) and I’d prefer not having to first go through a second app (such as the notepad). Asking to convert the clipboard to an integer throws an error message. Any hint, anyone? Thanks in advance!

User: philranger

Date: Mar 10, 2023 15:49:35 GMT

Here’s what I found so far: superuser.com/questions/1296965/how-to-disable-copy-as-image-in-excel Q: Recently it seems Excel has made copy-as-image default behaviour for the Ctrl+C hotkey (actually it seems to put the formatted text, table cell data, and a print-view image on the clipboard simultaneously). This is bad if you have a workflow where you copy data from Excel and paste into another MS Office app, or into a web-form in Google Chrome, where the default behaviour of Ctrl+V is to paste the richest content available. A: Copy through a VBA macro. I can’t have my non tech-savvy users try to run 2 macros, I need a simpler way.  If MMM would have a more advanced way to convert the clipboard to a string or integer, that would work for me…

User: philranger

Date: Mar 10, 2023 17:19:39 GMT

Found a workaround! In the Excell cell, Hit F2 (edit cell), then ctrl-A (select all of the content), then ctrl-c (copy).  An empty cell will keep the last copied value though, but I can work with that.

1 | RUN ACTION | DEFINE STRING VARIABLE | %CLIPBOARD%::Cell Is Empty A1B2C3
2 | X | X | 0 | Keypress f2
3 | X | X | 0 | Keypress Ctrl+ | a
4 | X | X | 0 | Keypress Ctrl+ | c
5 | X | X | 0 | Keypress escape
6 | X | X | 0 | Keypress down
7 | IF | CLIPBOARD | VALUE | TEXT IS | Cell Is Empty A1B2C3 | GOTO MACRO LINE | 1

Pfeeew!

User: bigjim

Date: Mar 10, 2023 19:12:35 GMT

Great info, I wish I’d seen this thread earlier I could have helped (or I could have benefited a few months ago!
wink.png ), as I do this a lot too - use “edit mode” (hit F2 in a cell) to drop the flashing cursor inside the cell without having to emulate a human double-clicking into the cell to get at the contents, or a human mousing up to the formula bar and getting the contents from there.. In fact using MMM has got me into excel hotkey shortcuts in a big way in my macros as Excel is often involved somewhere… Old school spreadsheet pros would probably roll their eyes that we’ve forgotten so much of this stuff! tongue.png You may have seen all this already while looking for the solution (and I haven’t found a better solution to date to your problem), but if you have a cell that uses functions and you want to use that function output in your macro without pre-treating the spreadsheet itself, pressing F9 immediately after F2 to go into edit mode converts the contents of that cell into a it’s value, which Ctrl-A > Ctrl-C can copy and then use later in the macro. If you use Escape to cancel-out of edit mode after copying your data, the conversion to value doesn’t remain. If you tab-out or Alt-Enter, etc the conversion remains, and it’s as if you’d pasted as value into the cell. Navigating tabs by using Ctrl-Pgup/Dn is another favorite, combined with Ctrl-Home lets me ensure that users are starting at the same point in the spreadsheet every time I jump to the excel active window (tab-1, top-left cell) and they haven’t started the macro with some random cell selected which messes up the routine. Something to be aware of, if your users are using different versions of excel, some of those hotkey shortcuts work slightly differently. For example, on my computer at home i use a slightly over version of excel, and F2>Ctrl-A will not select-all like it does for you. Instead on that version I need to F2>Ctrl-Shift-Home to get the same effect. On the version at work, if I Ctrl-shift>right it will select all text upto the next “/” slash, which can be handy as quick & dirty way to grab a portion of a string, for example the bit of a URL you want, or a date. Anyway sorry for banging on at length about spreadsheets but your problem struck a chord as I use excel in my macros so much!

User: philranger

Date: Mar 10, 2023 19:19:20 GMT

Thanks, everything helps, and I’ll definitely consider the ctrl-shift-home! EDIT: Macro doesn’t work with this anymore as clipboard really comes back as empty! I am now banging my head against another issue: I need to add line feeds inside the string variables in mmm, which isn’t obvious!

User: bigjim

Date: Mar 11, 2023 12:16:24 GMT

USoWV0dWXmFkYDAjTGiw.jpg Mar 10, 2023 19:19:20 GMT

philranger said: Thanks, everything helps, and I’ll definitely consider the ctrl-shift-home! EDIT: Macro doesn’t work with this anymore as clipboard really comes back as empty! I am now banging my head against another issue: I need to add line feeds inside the string variables in mmm, which isn’t obvious! Interesting.. You mean selecting a cell with text, hitting F2 to go into edit mode (cursor by default is positioned at the END of the text), then hitting Ctrl-Shift-Home doesn’t select all the text and position the cursor at the start of the text for you? That’s cool to know - like i say the differences I’ve seen are very minor, like where if you F2 then Ctrl-Shift-arrow left/right in some versions selects all, in some it will only select up to the next slash, but I thought that Ctrl-Shift-Home/End were pretty universal across all the versions out there. Thanks for that info! All my macros basically involve taking data out of excel and using it in another system, or vice-versa and I often test stuff at home on one version and then run at work on another, which is how I noticed the example I gave earlier so other minor differences like this can be valuable to me. Your issue with adding CRLF to a string variable got me going down a rabbit hole last night for no good reason tongue.png I don’t actually know of a good solution, and this would be a horrible dirty workaround but IIRC in excel (if you’re actually using excel in the macro you’re talking about) you can add a CRLF by using Char(10) in a formula. It also doesn’t address your issue of having the string variable directly contain the line break, it’s only a quick & dirty way of inserting one into a text string you can copy to windows clipboard. So if I type literally into a cell; =”test”&CHAR(10)&”test” then it comes out as… test test ..and if you then convert the formula to it’s value using F9 or somesuch, this string can be pasted into notepad and it retains the line break which got me very excited! At least this could be handy if you’re taking the source strings from excel, or inputting them into excel. But when I tried to test this theory in a test macro I ran into issues, because when I used RUN ACTION | KEYPRESS the () characters don’t seem to output, which breaks the use of CHAR(10).

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::"Test1"
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::"Test2"
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::CHAR(10)
4 | RUN ACTION | WAIT MILLISECONDS | 500
5 | RUN ACTION | KEYPRESS | =
6 | RUN ACTION | KEYPRESS | %STRING1%
7 | RUN ACTION | KEYPRESS | &
8 | RUN ACTION | KEYPRESS | %STRING3%
9 | RUN ACTION | KEYPRESS | &
10 | RUN ACTION | KEYPRESS | %STRING2%

(I know it’s long code and not necessary to have so many lines, but I used them just for an easy to read visual example) I would expect the output of this test to be… =”Line1”&CHAR(10)&”Line2” Which excel would then treat as a function due to the leading = and wrapping the text strings in quotation marks, but instead it comes out as… =”Line1”&CHAR10&”Line2” [note the lack of () brackets in the output above] Anyway you’ve possibly looked at this already, but if MMM can be forced into keypressing the brackets, it was at least a line of inquiry that might be worth looking into? Sorry I couldn’t have been more help, I’ll be interested to see how you solve it!
cool.png EDIT TO ADD I notice an older thread here that discusses brackets in Keypress actions - I might have a play later today to see if this resolves the issues i had in testing.. But of course this long-winded idea still is only of use if you’re taking data from or inputting to excel and is probably very cumbersome to write if you need very many strings to contain line breaks. EDIT-EDIT Recording keypress shift+|9 for “(“ and shift+|0 for “)” does insert brackets as-per the thread linked, and the test output into excel works, and the result then can be copy/pasted into notepad with line break present. I wonder if the formula output of two strings separated by CHAR(10) can be copied to windows clipboard, then %clipboard% passed to a MMM string variable , and the next time you use that variable it still has the line break? Will have a play later!

User: philranger

Date: Mar 12, 2023 2:25:24 GMT

My macro don’t work anymore because if it’s on an empty cell it really brings back an empty clipboard, which, as far as I know, can’t be verified in MMM. Great info, thanks! I like your workarounds. May try them (not this week though!)


How do I start the auto queue?

URL: https://minimousemacro.proboards.com/thread/591/start-auto-queue
Date: Jun 21, 2022 22:42:08 GMT

User: joe

Date: Jun 21, 2022 22:42:08 GMT

How do I start the auto queue? I loaded the macros that I want in the auto queue and I saved the auto queue, but I can’t seem to start it.

User: jeff

Date: Jun 22, 2022 3:31:48 GMT

I couldn’t figure it out either grin.png I settled for having macros call the next macro with the Load condition when it gets to the end of the macro. Not sure if this would work in your case.

86 | RUN ACTION | LOAD MACRO | Day 3 Rebirth\!Day3-End.mmmacro

User: Steve

Date: Jun 22, 2022 8:27:08 GMT

Hi jeff

The Macro Queue can be started by adding a saved .mmmacro file to the queue, ticking ‘on’ to enable that line, and ensuring that the Macro Queue is set to ON (bottom option).  Clicking the ‘SAVE’ button saves this configuration. macroqueue_orig.jpg The ‘Auto Start Play ON’ option when enabled automatically runs this macro queue when MMM first opens up. To queue up multiple macro’s that run sequentially, just add another line and ensure to tick the ‘on’ option in the line. Hope this helps.

User: joe

Date: Jun 23, 2022 1:00:55 GMT

Thanks!

User: Joiry

Date: Mar 4, 2023 19:14:57 GMT

Sorry for quoting the old string but I found this in the search.   Is there a way to manually launch the queue?  I like the “on” and “off” check mark where I have a series of macros to do utility things.  But depending on my situation I’ll want some on and some off.  I’d like to just load a bunch of macros here to sit, and then click the ones I want on and off and launch.   I guess I can do that, close the app, and then relaunch the app.  That works, but when I launch the app a third time, it auto runs the macro again before I get a chance to adjust what I want on and off. Hopefully this makes sense. Joiry

User: Joiry

Date: Mar 5, 2023 15:23:22 GMT

Ok, So for anybody interested, I figured out my own question.  There is no way to launch macros from the queue.  Instead of what it does is impact the next time you either load or run macros from the main interface. At the bottom there are two boxes with checks.       1)  Macro Queue on or off - If on, this will launch the queue next time you press play on the main interface (regardless of what macro is loaded there)     2)   Auto Start on or off - if on, this will launch these macros upon load of the application. So, for what I need, I toggle Macro Queue on or off and just go back to the main interface to press play.


How to I keep Mini Mouse Macro from minimizing to taskbar?

URL: https://minimousemacro.proboards.com/thread/676/keep-mouse-macro-minimizing-taskbar
Date: Feb 19, 2023 5:12:20 GMT

User: me

Date: Feb 19, 2023 5:12:20 GMT

How to I keep Mini Mouse Macro on top? It closes to the taskbar icon whenever I click on a new tab. I would like it to remain open when I switch tabs.

User: zeak

Date: Feb 20, 2023 23:21:50 GMT

Hi Me, First of all, welcome to the Forum. You will find the always on top option at the bottom of the main interface. nBtlu40.png


mouse click and drag problems

URL: https://minimousemacro.proboards.com/thread/673/mouse-click-drag-problems
Date: Jan 24, 2023 22:56:35 GMT

User: joe

Date: Jan 24, 2023 22:56:35 GMT

I am trying to create a macro that left clicks on a button on a website, then drags the mouse to a different position, and then releases the left mouse button. The below code is what I have come up with so far but it doesn’t really work. When I run the code it positions the mouse at the first point, clicks the left button down, then drags the mouse to the second position, and then it releases the left mouse button. I know the code clicks the mouse when it is suppose to because the mouse pointer changes shape to indicate that it “grabbed” the object. But the button that the mouse is suppose to click and drag does not move. What am I doing wrong?

1 | RUN ACTION | WAIT SECONDS | 2
2 | 845 | 645 | 2000 | LEFT CLICK DOWN
3 | 978 | 653 | 2000 | LEFT CLICK RELEASE

User: joe

Date: Jan 25, 2023 21:28:36 GMT

I actually came up with an easy fix for my problem. I’m embarrassed that I didn’t figured this out before. So I clicked on the red button in the upper left hand corner of the MMM app (and I checked the box next to Mouse) and then I started the mouse click and drag macro that I wanted to create. But when I used this strategy I end up recording more mouse movements than I really want to, so this requires that I edit out some of the lines of code that I don’t need. The two differences between working code and the code that didn’t work for me is how the code was created and the mouse movement codes. The working code is below:

* | click and drag 2
1 | 847 | 643 | 100 | Left Click Down
2 | 847 | 643 | 221 | Mouse Movement
3 | 850 | 643 | 22 | Mouse Movement
4 | 857 | 643 | 16 | Mouse Movement
5 | 867 | 643 | 24 | Mouse Movement
6 | 884 | 643 | 31 | Mouse Movement
7 | 906 | 643 | 10 | Mouse Movement
8 | 910 | 643 | 16 | Mouse Movement
9 | 913 | 643 | 10 | Mouse Movement
10 | 921 | 643 | 10 | Mouse Movement
11 | 925 | 643 | 16 | Mouse Movement
12 | 930 | 643 | 22 | Mouse Movement
13 | 938 | 643 | 16 | Mouse Movement
14 | 941 | 643 | 10 | Mouse Movement
15 | 946 | 643 | 10 | Mouse Movement
16 | 950 | 643 | 100 | Left Click Release

User: philranger

Date: Jan 25, 2023 22:45:10 GMT

Hi Joe, Thanks for sharing your solution, it will help if other users have the same issue. My bets would have been to add a coupe “mouse movements” or maybe release quicker but your solution was the most likely. Thanks again!

User: zeak

Date: Jan 30, 2023 5:13:22 GMT

Hi Joe, Give this a try,

* | click and drag 3
1 | 847 | 643 | 100 | Left Click Down
2 | 946 | 643 | 10 | Mouse Movement
3 | 950 | 643 | 100 | Left Click Release

Recent laptop update changed my macros!

URL: https://minimousemacro.proboards.com/thread/630/recent-laptop-update-changed-macros
Date: Sept 29, 2022 19:46:31 GMT

User: joe

Date: Sept 29, 2022 19:46:31 GMT

NEVER MIND, I FIGURED OUT WHAT WAS WRONG. I just updated my laptop and then I discovered that my macros have now changed! I have only discovered one change to my macro so far, it was the coordinates for a mouse click. It was an easy fix, but it was fix that I wasn’t expecting to have to make. The original macro code was:

4 | RUN ACTION | MOUSE CLICK | Left click at 1450 50 1 times with 0 ms delay

But then after the updates my macro code was changed to:

4 | RUN ACTION | MOUSE CLICK | Left click at 1772 50 1 times with 0 ms delay

The original coordinates were changed to coordinates that are not even on my screen! Has this happened to anyone in the past? My google chrome browser zoom size is set to 100%, but it looks like my scale settings in my computer settings looks like it was changed to 125%. Can someone please tell me what I should reset my computer settings to? These recent updates changed the settings on my computer and it changed the way my desktop icons look which is kind of understandable. The updates also altered macros that I created, which are basically documents. I’m rambling at this point, I’m sorry.

User: joe

Date: Sept 30, 2022 1:06:40 GMT

Nevermind, I figured out what was wrong.

User: philranger

Date: Sept 30, 2022 2:10:12 GMT

What was it, it could help someone else! Different screen resolution?

User: joe

Date: Sept 30, 2022 3:42:39 GMT

Hey philranger, The computer updates changed the size and position of everything and the screen resolution size. After I changed the screen resolution back to 100% the desktop icons and the folder icons were still in a different size and in a different spot. Also, I had several pixel color/if then else statements that didn’t work post computer updates.

User: philranger

Date: Oct 3, 2022 14:57:01 GMT

Congrats for figuring it out, and thanks for sharing!

User: stevenm

Date: Oct 31, 2022 18:23:23 GMT

by the way… I had a different but similar problem that I used this exe for:

13 | RUN ACTION | RUN VIA CMD /C | c:\tools\cmdow "My program name" /siz 550 856 /mov 500 0

The command resizes the application window and moves it to a particular location on the screen (to a known tested size and position on the screen). The EXE can be found here as well as good docs in the app’s help : ritchielawrence.github.io/cmdow/ you can run cmdow.exe “Program Name” /p to see where your program is located on the screen Output: Handle Lev Pid -Window status- Left Top Width Height Image Caption 0x11B03C4 1 26520 Res Ina Ena Vis 500 0 550 856 WsaClien Program N Notice that the /siz and /mov correspond to the values I have in the RUN ACTION above And yes, I had to change the Zoom Level to 100% on a 2nd PC I was testing with also…   Right Click on Desktop (W11) -> Screen Settings -> Scale And Layout -> Scale = 100% (not 125%) the setting may look a tiny bit different in W10 but you get there the same way HTH

User: André

Date: Jan 20, 2023 0:28:49 GMT

0SwESFBlUJWD0SFzApgP.jpg Sept 29, 2022 19:46:31 GMT

joe said: NEVER MIND, I FIGURED OUT WHAT WAS WRONG. I just updated my laptop and then I discovered that my macros have now changed! I have only discovered one change to my macro so far, it was the coordinates for a mouse click. It was an easy fix, but it was fix that I wasn’t expecting to have to make. The original macro code was:

4 | RUN ACTION | MOUSE CLICK | Left click at 1450 50 1 times with 0 ms delay

But then after the updates my macro code was changed to:

4 | RUN ACTION | MOUSE CLICK | Left click at 1772 50 1 times with 0 ms delay

The original coordinates were changed to coordinates that are not even on my screen! Has this happened to anyone in the past? My google chrome browser zoom size is set to 100%, but it looks like my scale settings in my computer settings looks like it was changed to 125%. Can someone please tell me what I should reset my computer settings to? These recent updates changed the settings on my computer and it changed the way my desktop icons look which is kind of understandable. The updates also altered macros that I created, which are basically documents. I’m rambling at this point, I’m sorry.


Selecting window not working

URL: https://minimousemacro.proboards.com/thread/672/selecting-window-working
Date: Jan 18, 2023 10:33:42 GMT

User: gregory

Date: Jan 18, 2023 10:33:42 GMT

Hello, I’m trying to do Select Window by name to focus on it but can’t. My final goal is that this is part of the bigger code when in some moment new window appear on screen (new email message) and I must wait for it some miliseconds, but don’t know how long should I wait so I decided to add statement when I check if mentioned window was created by email client and if YES ten focus on it (Select Window) But it can not focus on it. Code:

1 | IF | WINDOW TITLE | Untitled - Message (HTML) | EXIST | SELECT WINDOW BY NAME | Untitled - Message (HTML)

What’s wrong ? Another words, I want use something similar like Steve proposed here in 2nd post minimousemacro.proboards.com/thread/578/possibility-detecting-clicking-image-screen but instead of detect image I need Select Window but earlier wait for it for a while until mail client will create it. If I select one line responsible for selecting (line 56 on video) then it select mail window and focus on it. While in whole program it constantly does not select this window and thus line 58 (Else) and 59 (jumping up) are executed. Normally I want this scenario (Else) when mail client is generating that expected window and after that select it and go with further lines of code, so it should find mentioned window what not happend unfortunately, but why ? Here is shown how it should work I think, it wait for window and later it finish and allow me go next parts of code


Iterate entries in left side to makesome tasks in right side

URL: https://minimousemacro.proboards.com/thread/669/iterate-entries-makesome-tasks-right
Date: Dec 24, 2022 15:03:28 GMT

User: gregory

Date: Dec 24, 2022 15:03:28 GMT

I’m using this great software since some time now and thanks for it i’m able to automate some tasks but now I’m stuck with - in theory - very simle one but I can’t figure it out. Simply speaking I need to iterate entries in specific Windows program, these entries are visible in left panel, (like in Explorator) and for each given entry from left I need to do some opeartions (which I know how to do macro in MMM in right panel) like checking Prorperties or whatever.   Question is - how to go down / select automatically each antry in left panel - like I did manually on video ? I want to select each entry in left panel and then make stuff in right panel, next choose next left entry, make stuff in right panel….and that in loop , finishing on entry named “Windows PowerShell” at bottom in attached example.

User: philranger

Date: Dec 31, 2022 11:28:30 GMT

Hello, Some apps use F6, F7, ctrl-F6 or something similar to switch tab. Some use ctrl-tab. Maybe won’t work but worth a try?

User: gregory

Date: Jan 1, 2023 15:09:33 GMT

Hello Philranger and thanks for tip, of course I know about Tab in some app it works, but not in that one which I wanna automate - its old app. Any other way how to cycle between left and right panel while making some tasks on right panel and must back to left panel, one position below previous. Thank you for any input.

User: philranger

Date: Jan 3, 2023 0:34:11 GMT

I’d do a google search with the name of the sortware + « keyboard shortcuts ». Sometimes clicking the title of the tab gives you access to that tab. The F6-F7 might be « eaten » by mini mouse macro


Email attachment?

URL: https://minimousemacro.proboards.com/thread/671/email-attachment
Date: Dec 29, 2022 8:23:55 GMT

User: 963

Date: Dec 29, 2022 8:23:55 GMT

Hi Possible send email attachment (files for example pdf..etc)? Thanks

User: philranger

Date: Dec 31, 2022 11:30:17 GMT

hello, I did by doing « alt-tab » to a Windows Explorer, doing ctrl-c, then pasting in the email. Hoping it can help.

User: 963

Date: Dec 31, 2022 13:17:48 GMT

Thanks I understand, email send line options not possible attachement file.

1 | RUN ACTION | SEND EMAIL | SEND::TO=Recipicant@gmail.com::FROM=MyEmail@gmail.com::SUBJECT=Email from Mini Mouse Macro::HTML=True::BODY= 

CTRL+C and CTLR+V working with pdf file, but not send attachement file.

User: philranger

Date: Jan 3, 2023 0:31:25 GMT

Sorry, I always emailed from outlook, i’m not familiar with that action


Doesnt go up to the requested ms

URL: https://minimousemacro.proboards.com/thread/661/requested-ms
Date: Nov 24, 2022 12:06:47 GMT

User: timothy

Date: Nov 24, 2022 12:06:47 GMT

Im trying to make my character hold down w and jump for a total of 43 seconds (43000 ms) but its only going up to 9l i.imgur.com/mUjnBn5.gif

User: philranger

Date: Nov 24, 2022 22:07:29 GMT

Hello, I recommend using the wait in seconds instead of milliseconds for long times like 43 seconds.

User: timothy

Date: Nov 24, 2022 23:39:04 GMT

I need help with 4 things 1)  How would I make it turn around after the first 4 steps are completed? i tried recording myself turning around and playing it, but nothing happened. i.imgur.com/poWSekf.gif 2) How do I play my macro from a selected step instead of playing from the beginning 3) My hotkey to start the macro (CTRL + ALT + F5) doesnt work when I enable the load macro on start option 4) When I am in the default macro menu (not the editor) and i try to copy and paste and edit the values, sometimes they randomly get swapped. I think it might be because I’m copying and pasting something that was already there so it’s mixing up the two and moving them around incorrectly.

User: philranger

Date: Dec 15, 2022 20:29:15 GMT

Hello, 2) How do I play my macro from a selected step instead of playing from the beginning In the macro, you can use the GOTO command 3) My hotkey to start the macro (CTRL + ALT + F5) doesnt work when I enable the load macro on start option You can reassign the shortcuts. I use F3 because the default didn’t work for me as it was eaten by the software I was in. 4) When I am in the default macro menu (not the editor) and i try to copy and paste and edit the values, sometimes they randomly get swapped. I think it might be because I’m copying and pasting something that was already there so it’s mixing up the two and moving them around incorrectly. I also have this issue. After inserting, I right click on a list and do a « relist » to solve the problem before further editing Hoping it helps!


List of commands

URL: https://minimousemacro.proboards.com/thread/668/list-commands
Date: Dec 12, 2022 4:11:52 GMT

User: joeyidk

Date: Dec 12, 2022 4:11:52 GMT

I’m wondering does anyone have a list of commands the software can understand?

User: philranger

Date: Dec 15, 2022 20:24:24 GMT

Hello! <www.turnssoft.com/conditions.html>


OCR statement resolving TRUE when no text found?

URL: https://minimousemacro.proboards.com/thread/667/statement-resolving-true-when-text
Date: Nov 29, 2022 4:35:42 GMT

User: trey

Date: Nov 29, 2022 4:35:42 GMT

11/28/2022 11:24:24.57 PM Macro condition: 22 | IF | OCR | At location [X:643 Y:53 W:636 H:229]::Lang eng::To string OCR::Remove CR LF | TEXT CONTAINS | Feed | GOTO MACRO LINE | Enter_email | ELSE | 22 | RUN ACTION | WAIT SECONDS | 10 11/28/2022 11:24:27.64 PM OCR - No text or characters where found from the input 11/28/2022 11:24:27.66 PM Macro condition - Condition TRUE Macro action - Running ACTION: GOTO MACRO LINE - Macro line(Enter_email) This is from the event log of a run that is giving me issues.  The line in particular is:

22 | IF | OCR | At location [X:643 Y:53 W:636 H:229]::Lang eng::To string OCR::Remove CR LF | TEXT CONTAINS | Feed | GOTO MACRO LINE | Enter_email | ELSE | 22 | RUN ACTION | WAIT SECONDS | 10

The intent here is that if it doesn’t find text containing the word “Feed”, then it should wait 10 seconds.  If it does, then go to macro line “Enter_email”.  Instead it looks like OCR isn’t  finding text or characters, but nonetheless takes the GOTO MACRO LINE path, rather than wait 10 seconds.  Why does it default to a TRUE condition if there isn’t any text found?

User: trey

Date: Dec 1, 2022 14:50:42 GMT

Uh, when I try the line

22 | IF | OCR | At location [X:643 Y:53 W:636 H:229]::Lang eng::To string OCR::Remove CR LF | TRUE | GOTO MACRO LINE | Enter_email | ELSE | 22 | RUN ACTION | WAIT SECONDS | 10

I also get OCR - No text or characters where found from the input Macro condition - Condition TRUE Macro action - Running ACTION: GOTO MACRO LINE - Macro line(Enter_email)

User: trey

Date: Dec 1, 2022 20:44:48 GMT

Steve Sorry for pinging, this has got me hard stuck for the last week. Any ideas what’s happening here?

User: Steve

Date: Dec 2, 2022 3:49:22 GMT

Hi trey I have ran your line 22 and have it working exacly as expected. When it doesn’t find the text it executes the else condition and it does wait. Are you running the latest version of MMM and do you have the plugins installed for OCR?
What OS are you running?

User: trey

Date: Dec 2, 2022 17:26:54 GMT

Thanks Steve I appreciate the timely response.  I’m still getting this bug intermittently and I can’t isolate the cause, but it’s happening with similar lines (different At location parameters, but otherwise that’s it), and it’s a big wrench thrown into the gears when it does. Every time it happens is the same sequence though, it reports OCR - No text or characters where found from the input but then evaluates the condition as TRUE. I’ve attached a screengrab of my specs to this post, couldn’t figure out how to embed the pic. Attachments: dkqDgieWJADJrMebddsD.png

User: trey

Date: Dec 3, 2022 17:32:43 GMT

Steve This keeps happening and I can’t for the life of me figure it out.  Here’s another example from today: LOeRTbkScXzwdbrFaRcE.png 12/03/2022 12:25:12.94 PM Macro condition: 81 | IF | OCR | At location [X:699 Y:224 W:564 H:76]::Lang eng::Remove CR LF | TEXT CONTAINS | Your credentials are | GOTO MACRO LINE | Invalid_creds 12/03/2022 12:25:13.11 PM Macro action - Running ACTION: GOTO MACRO LINE - Macro line(Invalid_creds) 12/03/2022 12:25:13.16 PM OCR - No text or characters where found from the input 12/03/2022 12:25:13.22 PM Macro condition - Condition TRUE 12/03/2022 12:25:13.28 PM Macro action - Running ACTION: GOTO MACRO LINE - Macro line(Invalid_creds) huh.png ??


MMM issues when working on remote computer

URL: https://minimousemacro.proboards.com/thread/662/issues-when-working-remote-computer
Date: Nov 24, 2022 17:42:36 GMT

User: Vadim

Date: Nov 24, 2022 17:42:36 GMT

Hello, I’m trying to use MMM on a remote computer, which I’m accessing using windows remote desktop.

I noticed that some of the MMM functionality just does not work correctly if my ‘remote desktop’ window is not opened. i have a complicated macros, which works perfectly well if i’m ‘looking’ via remote desktop. If the same macros is executed while my remote desktop is closed - some commands don’t work.

For example:

OCR seems not working at all, DEFINE PIXELRANGE is not working:

11/24/2022 12:14:18.99 PM : Macro action - DEFINE PIXEL RANGE VARIABLE: (%PIXEL_RANGE%::At location [X:0 Y:0 W:2555 H:1437]::Save image to C:\xxx\xxx\screen.bmp)
11/24/2022 12:14:19.01 PM : Playback error:  2 | RUN ACTION | DEFINE PIXEL RANGE VARIABLE | %PIXEL_RANGE%::At location [X:0 Y:0 W:2555 H:1437]::Save image to C:\xxx\xxx\screen.bmp - An unexpected error has occured: The handle is invalid
Pressing SHIFT+ keys - not working:
11/24/2022 12:14:39.69 PM : Macro event: 15 | 1323 | 365 | 1877 | Keypress Shift+ | HOME
11/24/2022 12:14:41.65 PM : Playback error:  15 | 1323 | 365 | 1877 | Keypress Shift+ | HOME - Invalid Action: Access is denied
accessing keypresses from file and tying to input them into a program text field not working:
11/24/2022 12:14:41.70 PM : Macro action - Running ACTION: KEYPRESS FROM FILE
11/24/2022 12:14:42.58 PM : Playback error:  16 | RUN ACTION | KEYPRESS FROM FILE | C:\xxx\xxx\xxx.txt - ERROR: Failed to output the text.  

Here is the error: Access is denied ‘WIN’ key + keys seems not acting correctly:

11/24/2022 12:14:19.03 PM : Macro event: 2 | 0 | 0 | 1 | Keypress lwin | Key Down
11/24/2022 12:14:19.04 PM : Macro event: 3 | 0 | 0 | 0 | Keypress up
11/24/2022 12:14:19.05 PM : Playback error:  3 | 0 | 0 | 0 | Keypress up - Invalid Action:
11/24/2022 12:14:19.07 PM : Macro event: 4 | 0 | 0 | 1 | Keypress lwin | Key Release

is there something that I’m missing?

I understand that instructions dealing with rendering (OCR, PIXELRANGE etc) might not work without an actual screen, but keypresses and accessing files - are rather important.

hope someone can help

User: philranger

Date: Nov 24, 2022 22:10:17 GMT

Hello, Do you run MMM in the remote machine or yours? Mouse moves and keypresses are in the machine running MMM for what I understand

User: Vadim

Date: Nov 28, 2022 14:10:18 GMT

MMM is executed on remote machine - I just access it via remote desktop. the idea was to start the MMM macro using script, so it would run without my interaction, but it seems that without active remote desktop session some of the actions are not working…

User: trey

Date: Nov 29, 2022 4:04:39 GMT

Hi Vadim, It’s because when there isn’t a display connected to the remote windows host, then there’s not display to render to.  There’s no concept of a desktop unless there is a display driver connected.  There’s no “virtual” display rendering if there isn’t anything actually “looking” at the desktop, therefore, there isn’t anything for MMM to interact with.


FOR EACH with values from 2 files

URL: https://minimousemacro.proboards.com/thread/154/values-2-files
Date: Apr 4, 2019 15:08:21 GMT

User: sharecow

Date: Apr 4, 2019 15:08:21 GMT

Hi everybody, I’m thankfully using this brilliant “little” tool for a while now. Thanks, Steve for your work so far! I have a csv file with 2 columns. Col 1 contains urls and col 2 names accordingly. Since mmm does not parse csv I exported the csv content into 2 separate files: url.txt and name.txt. I need a loop that does cycle through the url.txt firstly and secondly name.txt. Both values are needed in the same cycle.

1 | FOR | EACH | LINE IN | url.txt | DO

… %LINE% <– 1st line of urls.txt … huh.png <– 1st line of name.txt

1 | FOR | NEXT

I have written quite complex stuff in mmm already, but I cannot figure out how to get this done. Thanks for your help.

User: sharecow

Date: Apr 9, 2019 9:57:49 GMT

This still gives me headaches … no one an idea?

User: Steve

Date: Apr 13, 2019 7:18:51 GMT

I spent a bit of time on this and initially I was thinking of nesting two FOR EACH LINE IN loops but it’s not working as expected. The %LINE% variable I was using to catch the input from each file to store into variables wasn’t changing after breaking each for loop. I’m going down the path of OUTPUT TO FILE for each variable.
I’ll have another look into this and let you know.

User: Steve

Date: Apr 25, 2019 6:37:29 GMT

Hi are you still stuck on this? Check out this post were we use CLIPBOARD to pass variables between MMM instances ( minimousemacro.proboards.com/thread/152/input-box-focus-when-pops ). Maybe we can use clipboard to carry out %LINE% value to the new loop. Something like this:

3 | RUN ACTION | COPY TO CLIPBOARD | %LINE%
60 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%CLIPBOARD%

User: aeronnaex

Date: Nov 22, 2022 21:16:10 GMT

I know this is an old thread, but I’m trying to do something similar - pull line values from two files at the same step in the loop.  To explain:

1 | FOR | EACH | LINE IN | D:\SourceTEST.txt | DO
2 | RUN ACTION | DEFINE STRING VARIABLE | %SOURCE%::%LINE%
3 | FOR | EACH | LINE IN | D:\TargetTEST.txt | DO
4 | RUN ACTION | DEFINE STRING VARIABLE | %TARGET%::%LINE%

   <STUFF HAPPENS…..SUCCESSFULLY>

75 | FOR | NEXT

For the first time the loop is read - it’s all good.  %SOURCE% and %TARGET% have their proper values from the correct files. When the loop starts again however, they have the same values they had before.  They’ve not moved down to the second line in their respective files. I wondered if I could have one FOR loop, and have both variables set from different files using the same %LINE% value, but I don’t know what the context of that would be.  I’m also not sure how to use the %CLIPBOARD% solution for two source files. Alternately, I thought about somehow putting both values into a single file, but after looking on the board saw this would not work.

User: aeronnaex

Date: Nov 22, 2022 21:38:44 GMT

I’ve got the context for loading from two files, but the variables %SOURCE% and %TARGET% never move down the list, even after a FORNEXT.
1 | FOR | EACH | LINE IN | D:\SourceTEST.txt | DO
6 | RUN ACTION | INPUT FROM FILE | SOURCE::NO_REFRESH:

grin.png :\SourceTEST.txt

5 | RUN ACTION | INPUT FROM FILE | TARGET::NO_REFRESH:

grin.png :\TargetTEST.txt The variables through the first two loops look like this - they don’t change, although clearly MMM has some knowledge of the other values for each: %SOURCE%=source1 source2 source3 source4 source5 %TARGET%=target1 target2 target3 target4 target5


Two Files - Two Variable - One Loop?

URL: https://minimousemacro.proboards.com/thread/660/files-variable-loop
Date: Nov 22, 2022 17:12:51 GMT

User: aeronnaex

Date: Nov 22, 2022 17:12:51 GMT

I’m processing sound files and the macro is working great…..one at a time…..except I’ve got a LOT of files to process.  So I’ve got two text files: SOURCE.TXT and TARGET.TXT.  In the macro I use %STRING1% for the SOURCE file name (per line from SOURCE.TXT), and %STRING2% for the TARGET file name (per line from TARGET.TXT).  The problem is when I use a FOR like this:

1 | FOR | EACH | LINE IN | D:\SourceTEST.txt | RUN
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::%LINE%
3 | FOR | EACH | LINE IN | D:\TargetTEST.txt | RUN
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::%LINE%

……..PROCESSING LINES HERE

5 | FOR | NEXT |LOOP 5

The problem is, as I run a loop, it uses the same two strings for %STRING1% and %STRING2% - it’s not loading the next lines in either file. Help!

User: stevenm

Date: Nov 22, 2022 18:12:51 GMT

Without testing this myself, i think your problem is one of using the same variable in the for loop…  >>> LINE  <<< Changing LINE to SRCLINE and TGTLINE like below should likely fix the issue…  as the macro likely overwrites LINE in the second FOR loop.

1 | FOR | EACH | SRCLINE IN | D:\SourceTEST.txt | DO
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::%SRCLINE%
3 | FOR | EACH | TGTLINE IN | D:\TargetTEST.txt | DO
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::%TGTLINE%
5 | FOR | NEXT

HTH Steven M

User: aeronnaex

Date: Nov 22, 2022 18:45:26 GMT

defaultavatar.png Nov 22, 2022 18:12:51 GMT

stevenm said: Without testing this myself, i think your problem is one of using the same variable in the for loop…  >>> LINE  <<< Changing LINE to SRCLINE and TGTLINE like below should likely fix the issue…  as the macro likely overwrites LINE in the second FOR loop.

1 | FOR | EACH | SRCLINE IN | D:\SourceTEST.txt | DO
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::%SRCLINE%
3 | FOR | EACH | TGTLINE IN | D:\TargetTEST.txt | DO
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::%TGTLINE%
5 | FOR | NEXT

HTH Steven M Actually, %STRING1% and %STRING2% are two different values, and are correct for the first line of their respective files.  It just doesn’t set them to the next line in those files when the loop starts the next cycle (and it does start the next cycle successfully).  I have “Clear Variables On Playback” disabled.

User: aeronnaex

Date: Nov 22, 2022 21:38:29 GMT

I’ve got the context for loading from two files, but the variables %SOURCE% and %TARGET% never move down the list, even after a FORNEXT.
1 | FOR | EACH | LINE IN | D:\SourceTEST.txt | DO
6 | RUN ACTION | INPUT FROM FILE | SOURCE::NO_REFRESH:

grin.png :\SourceTEST.txt

5 | RUN ACTION | INPUT FROM FILE | TARGET::NO_REFRESH:

grin.png :\TargetTEST.txt The variables through the first two loops look like this - they don’t change, although clearly MMM has some knowledge of the other values for each: %SOURCE%=source1 source2 source3 source4 source5 %TARGET%=target1 target2 target3 target4 target5


Add Condition builder with OCR suggests that CLAIM is bad

URL: https://minimousemacro.proboards.com/thread/651/add-condition-builder-suggests-claim
Date: Nov 14, 2022 1:20:12 GMT

User: stevenm

Date: Nov 14, 2022 1:20:12 GMT

It’s kind of odd, but I created this line from the MMM condition tool, and it worked in the initial test script, but then I took that IF block, and copied it to a different mmmacro file, and then I got this… bAitiyANqjifpvDQPf0T.png Thoughts???

13 | IF | OCR | At location [X:1769 Y:575 W:81 H:22]::Lang eng::To string OCR | TEXT IS | CLAIM | THEN
 19RUN ACTIONMOUSE CLICKLeft click at 1807 544 1 times with 100 ms delay
 21RUN ACTIONDEFINE STRING VARIABLECLICK_GIFTS::YES
 20RUN ACTIONWAIT MILLISECONDS5000
22 | IF | END IF

Thanks for any ideas… Steven M

User: stevenm

Date: Nov 14, 2022 15:36:54 GMT

its still happening even after I recreated again with the add condition tool. however, I’ve gotten around it by making this a two step process

17 | RUN ACTION | DEFINE STRING VARIABLE | CLICK_GIFTS::NO
18 | RUN ACTION | DEFINE STRING VARIABLE | OCR_SUCCESSFUL::NO
19 | IF | OCR | At location [X:1774 Y:575 W:81 H:22]::Lang eng::To string OCR | SUCCESSFUL | THEN
  20 | RUN ACTION | DEFINE STRING VARIABLE | OCR_SUCCESSFUL::YES
21 | IF | END IF
22 | IF | STRING VARIABLE | %OCR_SUCCESSFUL% | IS | YES | THEN
  23 | IF | STRING VARIABLE | %OCR% | IS | CLAIM | THEN
    24 | RUN ACTION | MOUSE CLICK | Left click at 1807 544 1 times with 100 ms delay
    25 | RUN ACTION | DEFINE STRING VARIABLE | CLICK_GIFTS::YES
    26 | RUN ACTION | WAIT MILLISECONDS | 5000
  27 | IF | END IF
28 | IF | END IF

HTH someone

User: trey

Date: Nov 19, 2022 22:27:26 GMT

Hey I just ran into this as well.  It’s like OCR doesn’t like being in an IF THEN statement.  Very awkward.


reset playback time

URL: https://minimousemacro.proboards.com/thread/634/reset-playback-time
Date: Oct 17, 2022 13:01:31 GMT

User: saner

Date: Oct 17, 2022 13:01:31 GMT

hi, how can i reset this time after 6. step MMM-autobuyer-start-mmmacro-2022-10-17-15-50-26.png

User: Steve

Date: Nov 12, 2022 21:46:42 GMT

Hi Saner, It’s not possible to reset the playback timer. The playback timer only resets when the macro is stopped. Regards, Steve.

User: philranger

Date: Nov 17, 2022 17:38:39 GMT

Hello, Could a macro end by starting another instance of MMM running the same macro and kill the 1st MMM, which would hopefully reset the timer?


random mouse clicks

URL: https://minimousemacro.proboards.com/thread/653/random-mouse-clicks
Date: Nov 14, 2022 18:34:20 GMT

User: joe

Date: Nov 14, 2022 18:34:20 GMT

I don’t know if anyone else has been able to create a macro that can randomly mouse click within a defined area but I have! I am building a macro to play games on a crypto casino website and I thought it would be wise to create a macro part that clicks a button or a web link in different spots each time. Has anyone been able to achieve this in a different way?  * | random mouse clicks within defined area

1 | RUN ACTION | MOUSE CLICK | Left click at %RANDOM_518-651% %RANDOM_964-884% 2 times with 77 ms delay
2 | RUN ACTION | STOP

User: stevenm

Date: Nov 17, 2022 3:11:34 GMT

I’ve thought about “should I” and “trying to” press in different areas of a button since a human could never specifically click ax X & Y position repeatedly and consistently, but ultimately, I’ve come to the conclusion that unless there is some VERY special code in the web page or game, they cant really tell where you are clicking on a specific button, and only that you clicked that specific button. I like your implementation of this thought process using MMM, as I like making it slightly more “human” (and or random) in how we might press a button (not always in the exact same place)!!!


IDLE Condition

URL: https://minimousemacro.proboards.com/thread/641/idle-condition
Date: Nov 1, 2022 22:05:12 GMT

User: mark

Date: Nov 1, 2022 22:05:12 GMT

Hi Steve, I need to detect a single mouse click in any position of the screen… I did not find any condition to do this and so I am trying to use IDLE. This is what I have found in your manual: TIME: X second time period to monitor for the idle status NOMOUSE: Optional - Removes mouse movement as a state check NOKEYS: Optional - Removes keyboard and mouse clicks as a state check PROCESSES: Optional - Adds the process count check. If the count of process changes during the TIME value IDLE returns false. Note that process count can be a volitile measurement and change frequently. And this is my row:

1 | IF | IDLE | 60::BREAK::NOMOUSE | IS FALSE | MESSAGE PROMPT | MouseClick Detected::::0::OK

NOMOUSE because I don’t want to detect mouse movements. The problem is that the mouse click is not detected… only the keybord works. What I have understood reading the manual is that keyboard and mouse clicks are detected toghether with NOKEYS while NOMOUSE is only for movements. What I am doing wrong ? Thank you !  

User: Steve

Date: Nov 12, 2022 22:03:50 GMT

Hi mark I had a look at this and the NOMOUSE is preventing mouse clicks from being detected as well as mouse movement. In fact, when the mouse is clicked it seems to reset the time value. This is not how it’s intended. The code must be off here. I’ve added it as a bug <www.turnssoft.com/bugtrack.html#bugs> . The MMM code for this condition will need to be fixed or the condition layout will need to be changed.

User: mark

Date: Nov 14, 2022 22:38:36 GMT

Thanks Steve !


GOTO MACRO LINE Bug???

URL: https://minimousemacro.proboards.com/thread/643/goto-macro-line-bug
Date: Nov 3, 2022 4:04:08 GMT

User: stevenm

Date: Nov 3, 2022 4:04:08 GMT

I’ve got a macro that’s about 200 lines, and it’s deciding to just end the macro if I turn on this new part of the macro (called Box Collection) I believe the logic is fine, and the clicks look correct.  This is a sample of the macro that is misbehaving:

Focus is at the top of the macro and does a GET WINDOW BY TITLE to make sure that the app is selected, and then it starts doing everything

* | Before-Box-Collection
149 | RUN ACTION | DEBUG | logger::INFO::DEFEATS: %DEFEAT_COUNTER%
150 | IF | STRING VARIABLE | %BOX_COLLECTION_ON_OFF% | IS | OFF | THEN
   151 | RUN ACTION | GOTO MACRO LINE | Focus
152 | IF | END IF
153 | IF | PIXEL RANGE | At Location [X:951 Y:74]::Size [W:70 H:10] | CHANGES::1::3::500 | THEN
  154 | IF | DETECT IMAGE | image path %IMAGES_PATH%\empty-box.png::match full::move mouse yes | IMAGE FOUND | THEN
    155 | RUN ACTION | DEBUG | logger::INFO::Empty Box Slot (box collection aborted)
    156 | RUN ACTION | GOTO MACRO LINE | Focus
  157 | IF | ELSE
    158 | RUN ACTION | DEBUG | logger::INFO::Running Box collection
    * | Click-Box-Slot-Button
    159 | RUN ACTION | MOUSE CLICK | Left click at 998 130 1 times with 100 ms delay
    * | ClickTroopOpen
    160 | RUN ACTION | WAIT MILLISECONDS | 3000
    161 | IF | PIXEL RANGE | At Location [X:617 Y:323]::Size [W:114 H:105] | CHANGES::1::4::0 | THEN
      162 | IF | STRING VARIABLE | %BATTLE_LEVEL_OPTION% | IS | LEVEL-8000 | THEN
        163 | RUN ACTION | MOUSE CLICK | Left click at 926 447 1 times with 100 ms delay
      164 | IF | ELSE
        165 | RUN ACTION | MOUSE CLICK | Left click at 926 396 1 times with 100 ms delay
      166 | IF | END IF
      * | ClaimTroopBox
      167 | IF | DETECT IMAGE | image path %IMAGES_PATH%\troop-box-ok.png::match full::move mouse yes | IMAGE NOT FOUND | THEN
        168 | RUN ACTION | WAIT MILLISECONDS | 1000
        169 | RUN ACTION | GOTO MACRO LINE | ClaimTroopBox
      170 | IF | ELSE
        171 | RUN ACTION | MOUSE CLICK | Left click at 784 690 1 times with 100 ms delay
        172 | RUN ACTION | GOTO MACRO LINE | Focus
      173 | IF | END IF
      174 | RUN ACTION | GOTO MACRO LINE | Focus
    175 | IF | END IF
    176 | IF | PIXEL RANGE | At Location [X:600 Y:531]::Size [W:116 H:55] | CHANGES::1::5::500 | THEN
      * | HeroBoxOpen
      177 | IF | STRING VARIABLE | %BATTLE_LEVEL_OPTION% | IS | LEVEL-8000 | THEN
        178 | RUN ACTION | MOUSE CLICK | Left click at 926 447 1 times with 100 ms delay
      179 | IF | ELSE
        180 | RUN ACTION | MOUSE CLICK | Left click at 926 620 1 times with 100 ms delay
      181 | IF | END IF
      * | ClaimHeroBox
      182 | IF | DETECT IMAGE | image path %IMAGES_PATH%\hero-box-ok.png::match full::move mouse yes | IMAGE NOT FOUND | THEN
        183 | RUN ACTION | WAIT MILLISECONDS | 1000
        184 | RUN ACTION | GOTO MACRO LINE | ClaimHeroBox
      185 | IF | ELSE
        186 | RUN ACTION | MOUSE CLICK | Left click at 784 690 1 times with 100 ms delay
        187 | RUN ACTION | GOTO MACRO LINE | Focus
      188 | IF | END IF
    189 | IF | END IF
    * | CloseBoxCollection
    190 | 953 | 195 | 2000 | Left Click Down
    191 | 953 | 195 | 100 | Left Click Release
  192 | IF | END IF
193 | IF | END IF

I am trying to understand why the logs seem to say that it’s going to the ClaimTroopBox line, but then ends…  This looks to be coming from lines 167 - 169 because I need to wait a few seconds for the image to become available, but want to try every second or so to find the “OK” button to claim the reward and then I can process the next loop of the macro.

11/02/2022 08:43:01.22 PM Macro action - Finished Mouse Click (1 clicks in 0.1144495 seconds) 11/02/2022 08:43:01.32 PM Macro condition: 166 | IF | END IF (9)
11/02/2022 08:43:01.66 PM Macro action - Thread sleeping for 1000 milliseconds 11/02/2022 08:43:02.68 PM Macro action - Running ACTION: GOTO MACRO LINE - Macro line(ClaimTroopBox) 11/02/2022 08:43:03.00 PM Macro playback finished

Also, I was working on changing all the:

191 | X | Y | 2000 | Left Click Down
192 | X | Y | 100 | Left Click Release

To:

179 | RUN ACTION | MOUSE CLICK | Left click at X Y 1 times with 100 ms delay

In case there was an issue with the different syntax, but that didn’t seem to help and this seems more like a bug/issue in the GOTO MACRO LINE inside the IF statement (unless anyone can find a problem with my logic).

  • Pressing Run Entry on the individual lines in the script seem to work correctly (mouse clicks)
  • The IMAGES_PATH is defined correctly and other DETECT IMAGE actions seem to run fine

Help?  Should I submit a bug request?

Please and Thank You, Steven M

User: stevenm

Date: Nov 3, 2022 4:37:42 GMT

In looking at what is different between this and the rest of the script, it looks like this is the only place where I have 4 levels deep of IF blocks.  Mostly I have 1-2 levels of IF blocks.

maybe related to: MMM_BZ26

Thanks for any responses. Steven M

User: stevenm

Date: Nov 3, 2022 20:55:10 GMT

Okay, I restructured the logic so it was only 2 levels deep at any one point, and it works now.

I would suggest this might be related to the For Loop Bug already submitted.  (BZ26)

HTH someone. Steven M

User: joe

Date: Nov 11, 2022 2:16:36 GMT

Hey Stevenm, I think I might be having a similar problem with goto macro lines being skipped. My macro has over 700 lines of code and a lot of If Then Else statements.

This is a copy of the code that I’m having trouble with:

* | click all games left new
227 | RUN ACTION | WAIT MILLISECONDS | 500
228 | IF | PIXEL COLOR | Color [R=127, G=43, B=25]::At Location [X:44 Y:537] | IS THE SAME | THEN
229 | RUN ACTION | GOTO MACRO LINE | all games left new
230 | IF | ELSE
231 | RUN ACTION | GOTO MACRO LINE | click all games left old
232 | IF | END IF
* | all games left new
233 | RUN ACTION | WAIT MILLISECONDS | 500
234 | RUN ACTION | MOUSE CLICK | Left click at 96 536 1 times with 0 ms delay
235 | RUN ACTION | WAIT MILLISECONDS | 5000
236 | RUN ACTION | GOTO MACRO LINE | favorite
* | click all games left old
* | if website is changed again this button will probably reactivate
237 | RUN ACTION | WAIT SECONDS | 3
238 | RUN ACTION | MOUSE CLICK | Left click at 103 368 1 times with 0 ms delay
239 | RUN ACTION | WAIT SECONDS | 3
* | favorite
240 | RUN ACTION | WAIT MILLISECONDS | 5000
241 | RUN ACTION | MOUSE CLICK | Left click at 779 233 1 times with 0 ms delay
242 | RUN ACTION | WAIT SECONDS | 3

The macro seems to skip over line 236 to line 237. I think you’re saying that the problem is that I have too many If Then Else statements? I’m not really sure how I would decrease the amount of If Then Else statements.

User: Steve

Date: Nov 12, 2022 22:20:15 GMT

Hi stevenm Sorry for the late reply and thanks for your help answering off questions on the forum.
The community thanks you wink.png

I think I can see the problem with your IF blocks. Its the GOTO exit.

Point 2 from the condition (<www.turnssoft.com/conditions.html#thenelse>) help page:

Somethings to note with IF THEN blocks within Mini Mouse Macro:

  • All IF THEN blocks must have a closing END IF.
  • Once within a IF THEN block it is not possible to escape out with GOTO prior to closing the block.
  • Classic IF ELSEIF statements are not yet supported at this time.
  • Statements within IF then blocks do not need to be indented and will work as expected without indentation.

IF blocks in MMM cannot be escaped prior to closing the block. The block needs to close with an END IF. This is due to the linear nature of MMM; everything running top to bottom one line at a time.

Unfortunately this is unavoidable with the code under the hood as it is now. A solution coming in the future would be something along the lines of calling a function block within the else rather than the jump out to the GOTO label.

Hope this helps.

User: Steve

Date: Nov 12, 2022 22:21:21 GMT

0SwESFBlUJWD0SFzApgP.jpg Nov 11, 2022 2:16:36 GMT

joe said:

Hey Stevenm,
I think I might be having a similar problem with goto macro lines being skipped.
The macro seems to skip over line 236 to line 237.
I think you're saying that the problem is that I have too many If Then Else statements? I'm not really sure how I would decrease the amount of If Then Else statements.

Hi joe As above,

the issue here is the escaping out with the GOTO condition.

User: stevenm

Date: Nov 13, 2022 1:03:49 GMT

This is trying to explain what I mean by reducing the number of nested if blocks (and how I did it in mmm)…. If I have something like this with 3 levels of nested IFs:

typical nested if block (3 levels) – not mmmacro syntax

if this = that then
  if that = somethingelse then
    if x &gt; 3 then
      dosomething
    end if
  end if
end if
By changing the mmmacro logic to look for stuff in up to 2 nested if blocks, and then defining a variable saying that I found what I was looking for in the 2 nested levels, I can get around the limitation of the 2 nested levels of if blocks by saying something similar to...
found_special_condition = no
if this = that then
  if that = somethingelse then
    found_special_condition = yes
  end if
end if
if found_special_condition = yes then
  if x &gt; 3 then
    dosomething
  end if
end if

The above example and the below example should supposedly do the same thing:
dosomething   —>if x > 3 and this = that and that = somethingelse

… but are structured differently to show how I got around the nested levels “bug/limitation” that was causing me headaches.

keep in mind that none of this is in mmmacro syntas but hopefully this gets the point across on what made my mmmacro work correctly for “box collection”.

P.S. Thanks for the notes on GOTO and IF..ENDIF caveats, I’m clearly hitting some limits on what the program can do, but I still love the program and it’s abilities because I didnt have to write some python or c code to do the mouse and window manipulation code!!!!!

Steven M

User: stevenm

Date: Nov 13, 2022 1:38:34 GMT

keep in mind that based on what steve (the author) said, I’m likely getting into a VERY deep recursion with all the GOTO lines which is likely causing other problems for me (over time), but in the short run, my macro does seem to be working correctly.

User: joe

Date: Nov 13, 2022 21:10:38 GMT

Thank you both for your replies.

I understand that I can’t exit an IF Block with a GOTO but the first several IF BLOCKS seem to work with the GOTO but later on in the macro the GOTO line gets skipped.

I don’t really understand STEVENM’S explanation of how he restructured his macro to make the IF BLOCKS work with the GOTO lines. I’m going to need some more time to figure this out.

Thanks again for your help!

User: stevenm

Date: Nov 14, 2022 1:12:30 GMT

by making a variable that is defined IF two levels of IF blocks find the conditions I am looking for, and then having the 2nd level IF block just finish, then I can check from a new first level IF block to check if the first 2 IF blocks found the condition I was looking for

–i.e. whether that variable got set to YES from the second level IF block, and check it from a less nested IF block… 

that is how I was able to get around the issue I was having.

I hope that explains it better. sorry if I am not making sense.

If necessary, I can show you with MMM syntax

Steven M

User: stevenm

Date: Nov 14, 2022 16:17:33 GMT

Steve,

If you are sating what I believe you are saying about IF..ENDIF blocks and GOTO statements, I believe following 2 code examples seem to identify the old (bad) way I was doing things, and a way that doesn’t violate the GOTO from an IF..ENDIF block case you were warning me about. 

Please reply and let me know what you think.

Thanks, Steven M

bad - has a GOTO inside an IF block

36 | IF | INTEGER VARIABLE | %RETRY_COUNTER% | GREATER THAN | %RETRY_COUNTER_MAX% | THEN
37 | RUN ACTION | RUN VIA CMD /C | something
38 | RUN ACTION | GOTO MACRO LINE | Focus
39 | IF | END IF

no GOTOs inside an IF block….  is this an acceptable way of handling this scenario???

35 | DEFINE STRING VARIABLE | GOTO_FOCUS | NO
36 | IF | INTEGER VARIABLE | %RETRY_COUNTER% | GREATER THAN | %RETRY_COUNTER_MAX% | THEN
37 | RUN ACTION | RUN VIA CMD /C | something
38 | DEFINE STRING VARIABLE | GOTO_FOCUS | YES
39 | IF | END IF
40 | IF | STRING VARIABLE | GOTO_FOCUS | IS | YES | RUN ACTION | GOTO MACRO LINE | Focus

CURRENT DATE & TIME to a string variable and DATE MATH

URL: https://minimousemacro.proboards.com/thread/639/current-date-time-string-variable
Date: Oct 29, 2022 17:04:52 GMT

User: stevenm

Date: Oct 29, 2022 17:04:52 GMT

I have a process that should be run once an hour (possibly every 2 hours), but I need to keep running through other clicks regularly and was trying to think of a way to set something to look if I have done this action in the last hour or not.

I saw that you can use DATE & TIME, but am not sure how to record the current DATE & TIME to a string variable so that I can run the actions and then save when I did it last so I don’t run that process for another hour or more.

This is my crude attempt to try and get MMM to record the current date and time to a string so I could then do IF statements to tell my macro to run in 1 hour….  BUT IT DOESNT WORK

1 | RUN ACTION | DEFINE STRING VARIABLE | %LAST_PROCESSED%::never
2 | IF | STRING VARIABLE | %LAST_PROCESSED% | IS | never | THEN
3 | RUN ACTION | DEFINE STRING VARIABLE | %LAST_PROCESSED%::TIME AND DATE
4 | IF | END IF
5 | RUN ACTION | MESSAGE PROMPT | LAST PROCESSED: %LAST_PROCESSED%::Message Prompt
As well, I saw that I can also create files and look at the created time, but again, don’t see a way to do any math to say %FILE.CREATIONTIME%::+HOUR1 in order to construct an:
1 | IF | TIME AND DATE | %LAST_PROCESSED_PLUS_ONE_HOUR% | IS AFTER CURRENT DATE & TIME | THEN
2 | RUN ACTION | SOMETHING
3 | IF | END IF

If I have to, I can run a counter variable to basically run the process every 200 - 500+ cycles of the macro, but an “hourly” process would be better as I can’t always guarantee that the macro cycle will always take X number of seconds to go through, and the reason I need to do this hourly is because it takes a long time for it to be advantageous to click for this particular link as part of the macro.  As well, if I don’t click this button regularly, then at some point, the reward stops accumulating and I’d like to avoid that as well.

Any thoughts would be appreciated.

I love this program!!!  Thank You very much for maintaining it.

Steven M

User: stevenm

Date: Nov 1, 2022 22:21:39 GMT

OK…  I think I figured this one out… Keep in mind that this only tests if the current time is at AFTER 2PM and before 3PM…  but once you are at line 6, it makes it so this particular IF block wont fire again until after 3PM (and you’d need a similar block for 4PM, 5PM, etc, and in this way we can run an hourly process!!!

Initialize it as -1 so that no matter what time it is, it will fire once for the current hour (once you build all the IF THEN blocks for each hour)

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %CURRENT_HOUR%::-1
* | Start
2 | IF | TIME | 3:00:00 PM | IS BEFORE CURRENT TIME | THEN
  3 | IF | TIME | 4:00:00 PM | IS AFTER CURRENT TIME | THEN
    4 | IF | INTEGER VARIABLE | %CURRENT_HOUR% | IS NOT | 15 | THEN
      5 | RUN ACTION | MESSAGE PROMPT | Is in time range and its not equal to current_hour::Time Check::0::Information
      6 | RUN ACTION | DEFINE INTEGER VARIABLE | %CURRENT_HOUR%::15
      7 | RUN ACTION | DEFINE STRING VARIABLE | %RUN_HOURLY_PROCESS%::YES
    8 | IF | END IF
  9 | IF | ELSE
    10 | RUN ACTION | DEBUG | logger::INFO::verbose::later than start time but not before ending time
  11 | IF | END IF
12 | IF | ELSE
  13 | RUN ACTION | DEBUG | logger::INFO::verbose::Didnt find time in range
14 | IF | END IF
15 | IF | STRING VARIABLE | %RUN_HOURLY_PROCESS% | IS | YES | THEN
  16 | RUN ACTION | MESSAGE PROMPT | Put your hourly process here::Run Hourly process::0::Information
  17 | RUN ACTION | DEFINE STRING VARIABLE | %RUN_HOURLY_PROCESS%::NO
17 | IF | END IF
18 | GOTO MACRO LINE | Start

I hope this helps someone other than me!


Any way to get the macro to work with other applications?

URL: https://minimousemacro.proboards.com/thread/638/any-get-macro-work-applications
Date: Oct 28, 2022 14:24:28 GMT

User: jigglefloyd

Date: Oct 28, 2022 14:24:28 GMT

Is there any way to ‘assign’ a macro to a specific application or program I’m using? I play this game called MTG Arena - and when it’s being used it basically locks down a lot of keyboard functions, even print screen. I made a mouse based macro with mouse clicks and movement and it works fine while on the desktop but it doesn’t work at all in Arena. When I am in the Arena window I can’t play the macro using the hotkeys [Arena basically locks a lot of keyboard functions]. If I play the macro on the desktop it will work, and I’ll see the mouse moving in Arena, but the mouse clicks won’t register. It’s like Arena is in a different dimension and can’t interact with the macro program. Does that make any sense? Any thoughts on how to make this work?

User: stevenm

Date: Oct 31, 2022 18:11:27 GMT

I am just making sure that you have something like this in your macro that selects the arena window as the focused application.

1 | RUN ACTION | SELECT WINDOW BY NAME | Arena Program

If you do have this in your program, I sadly don’t have any other suggestions. Steven


OCR creates an exception on W11

URL: https://minimousemacro.proboards.com/thread/636/ocr-creates-exception-on-w11
Date: Oct 24, 2022 20:04:51 GMT

User: stevenm

Date: Oct 24, 2022 20:04:51 GMT

10/24/2022 12:49:12.74 PM Macro condition: 1 | RUN ACTION | OCR | location [X:679 Y:347 W:175 H:30]::Lang eng - English::To string OCR
10/24/2022 12:49:12.79 PM Macro condition - Condition TRUE
10/24/2022 12:49:12.83 PM Macro action - Running ACTION: OCR
10/24/2022 12:49:12.90 PM Playback error:  1 | RUN ACTION | OCR | location [X:679 Y:347 W:175 H:30]::Lang eng - English::To string OCR - an unexpected error has occured Exception has been thrown by the target of an invocation.
10/24/2022 12:49:12.91 PM Macro condition: 2 | RUN ACTION | MESSAGE PROMPT | %OCR%::::1::OK
10/24/2022 12:49:12.93 PM Macro condition - Condition TRUE
10/24/2022 12:49:12.94 PM Macro action - Running ACTION: MESSAGE PROMPT - Message(%OCR%::::1::OK)
10/24/2022 12:49:14.03 PM Macro playback finished
10/24/2022 12:49:32.25 PM Macro saved: ocr.mmmacro

Im really at the first stages of testing this currently, and I am trying to OCR the text of an image, but it is throwing this error, and was hoping there’s a way to get past it.

It also throws this exception when using the “test” method in the Add Condition builder.

I’ve been using the app for about 2 weeks now, and love the flexibility and depth the program has including the IF…ELSE blocks!

I turned to OCR because the detect image was intermittently throwing a wrench into the works (likely because of slightly different color shades in the image I am detecting).

I originally had mmmacro just running on the desktop, and then after I downloaded the ocr files and saw it had created some subdirs, I decided to move it to its own dir…  since then I disabled and reenabled the plugin in case there were any linkages to the old location and rebooted the PC but still get the error.

I can’t downgrade to W10 instead of W11, because I am using Windows Subsystem for Android (only available in W11). Any thoughts would be appreciated as I am not sure exactly how the tesseract.dll and accompanying files get handled. my mmmacro files are at c:\mmmacro if that is important.

Thanks,

Steven M

User: stevenm

Date: Oct 25, 2022 16:22:15 GMT

I have tested the OCR functionality on Windows 10, and it gets past this error (on another system).

User: stevenm

Date: Oct 25, 2022 17:26:13 GMT

Sysinternals processmonitor.exe doesnt show any interesting problems trying to invoke mmmacro, or the OCR dlls (was hoping for some ACCESS DENIED error somewhere)

I am running as an administrator on the PC.

I did give “Everyone” “Full Control” NTFS access to c:\mmmacro and it’s contents (subdirs included).

Is anyone else running Windows 11 and mmmacro that might be able to test the OCR functionality quickly?

Quick notes to test:

  • open mmmacro
  • in the blank space, right click and add condition
  • under “Object” choose OCR
  • in the new window (“OCR Action - Configure”), choose “At Location”
  • press the picture of the mountains and sun to open the “Capture Range” window
  • resize the window to fit around some text on the screen you want to test for OCR
  • click the green check button at bottom of this screen
  • press OK
  • click the OCR button at the bottom of the Configure Window to test the OCR functionality

Please and Thank You,

Steven M

User: stevenm

Date: Oct 27, 2022 0:25:08 GMT

I got it to happen on another W10 system, so it’s not W11 in general..  YAY!!

Now all I have to do is figure out what is different between the 2 W10 systems (working vs not working) Is there some framework or C++ Redistributable required?

Steven M

User: stevenm

Date: Oct 27, 2022 16:23:38 GMT

I figured it out… I needed to load: “Microsoft Visual C++ 2015-2022 Redistributable (x64)”

I already had the (x86) version installed.

Both versions can be found here: learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170

HTH Someone.

Have a great day.

Steven M

User: philranger

Date: Oct 30, 2022 14:45:06 GMT

Thanks for sharing the solution. People line you are the MVP!


logger not logging correctly

URL: https://minimousemacro.proboards.com/thread/640/logger-logging-correctly
Date: Oct 29, 2022 22:46:13 GMT

User: stevenm

Date: Oct 29, 2022 22:46:13 GMT

Is it fair to say that the logger may log something incorrectly and or not output something it is told to??? I have a few logger statements, and when I click on something I will call Defeat, it logs a Victory entry but yet, it clicks the correct button (position of the Victory and Defeat buttons are in different places).

Keep in mind that I quadruple checked that the code/app I am trying to automate for logs/clicks from the correct IF block because I don’t want anyone chasing one of my code mistakes.

I’m not asking for a fix, I just want to know if logging may “need some love” in a future release or not (that anyone is aware of) before I check my code 4 more times…. smiley.png

P.S. I read bug note MMM_BZ2

Lastly, the determination of the victory or defeat is from an OCR command like this, and runs in an infinite loop:

<snip>

5 | RUN ACTION | DEFINE INTEGER VARIABLE | %DEFEAT_COUNTER%::0
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %COUNTER%::0

<snip>

* | Retry-Button

<snip>

53 | RUN ACTION | DEFINE STRING VARIABLE | %VICTORYOCR%::BLANK
54 | RUN ACTION | DEFINE STRING VARIABLE | %DEFEATOCR%::BLANK
55 | RUN ACTION | OCR | At location [X:721 Y:342 W:182 H:31]::Lang eng::To string VICTORYOCR
56 | RUN ACTION | OCR | At location [X:760 Y:349 W:118 H:31]::Lang eng::To string DEFEATOCR
57 | IF | STRING VARIABLE | %VICTORYOCR% | CONTAINS | Remaining | THEN
  62 | RUN ACTION | DEBUG | logger::INFO::Pressing Victory Next Button -- %COUNTER%
  63 | RUN ACTION | DEFINE INTEGER VARIABLE | %DEFEAT_COUNTER%::0
  64 | 894 | 638 | 200 | Left Click Down
  65 | 894 | 638 | 100 | Left Click Release
  66 | RUN ACTION | GOTO MACRO LINE | End-Attack
67 | IF | END IF
68 | IF | STRING VARIABLE | %DEFEATOCR% | CONTAINS | Remaining | THEN
  69 | RUN ACTION | DEBUG | logger::INFO::Pressing Defeat Next Button -- %COUNTER%
  70 | RUN ACTION | DEFINE INTEGER VARIABLE | %DEFEAT_COUNTER%::+1
  71 | 813 | 618 | 200 | Left Click Down
  72 | 882 | 642 | 100 | Left Click Release
  73 | RUN ACTION | GOTO MACRO LINE | End-Attack
74 | IF | ELSE
  75 | RUN ACTION | WAIT MILLISECONDS | 2000
  76 | RUN ACTION | DEBUG | logger::INFO::Next Button(s) not found -- %COUNTER%
  77 | RUN ACTION | GOTO MACRO LINE | Retry-Button
78 | IF | END IF
* | End-Attack
79 | RUN ACTION | DEFINE INTEGER VARIABLE | %COUNTER%::+1

Please and thank you, Steven M

User: stevenm

Date: Oct 30, 2022 3:53:02 GMT

my bad….  My OCR statements were doing something incorrectly..  I was able to do this all a different way. 

All better now.  


WAIT SECONDS | 2

URL: https://minimousemacro.proboards.com/thread/637/wait-seconds-2
Date: Oct 27, 2022 19:54:35 GMT

User: stevenm

Date: Oct 27, 2022 19:54:35 GMT

I have a lot of waits in my script and they don’t seem to be executing properly.

As a workaround, I changed WAIT SECONDS2 to WAIT MILLISECONDS2000 and it worked properly…

I would assume this works for a bug report???  and a workaround. 

It’s not all that important since I can get the functionality desired by changing the format from seconds to milliseconds.

HTH Someone

Steven M

User: zeak

Date: Oct 28, 2022 3:37:32 GMT

Hi Stevenm, First of all, welcome to the forum.

Thank you for identifying this bug, there is a bug report already in the works for this one.

BZ28 (<www.turnssoft.com/bugtrack.html#bugs>)

Thank you for following this up, please don’t hesitate to raise your concerns in the future.

Cheers, Zeak

User: joe

Date: Oct 28, 2022 5:15:42 GMT

Hello, Awhile ago I discovered that if you want your macro to wait 1 or 2 seconds you would have to write the code in milliseconds instead of seconds in order for it to work properly. So instead of “WAIT SECONDS | 2” I would use “1 | RUN ACTION | WAIT MILLISECONDS | 2000”.

User: stevenm

Date: Oct 29, 2022 17:13:45 GMT

thanks for the responses, and the bug tracker url.


random number generator, part two

URL: https://minimousemacro.proboards.com/thread/633/random-number-generator
Date: Oct 8, 2022 4:44:34 GMT

User: joe

Date: Oct 8, 2022 4:44:34 GMT

So, the solution to my last post, “Random Number generator” was so good that I thought up of another problem.

So originally I created ten macros, lets call them A, B, C, D, E, F, G, H, I, and J. I then created a macro that would pick one of those macros at random and then play it.

What I was wondering is can I make a macro that would pick one of the above mentioned macros at random, play it, and then pick another one of the above macros at random and then play it without repeating the macro that was already played?

For example, if I could create this macro and ran it. And then the first macro that it picked at random to play was E. Then it would go back and pick randomly from a smaller list of macros (A, B, C, D, F, G, H, I, J) cause it doesn’t pick the previous macro that was played, and it picked A. Then it would go back and pick randomly from B, C, D, F, G, H, I, J and so forth.

Is this possible?

I was going to ask for help with something else but I have forgotten it already.

Thanks again!

User: philranger

Date: Oct 11, 2022 1:54:35 GMT

I don’t see an easy way apart from listing the macros in an external text file?

User: zeak

Date: Oct 11, 2022 3:25:31 GMT

Hi Joe, Try this out.

* | START
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %RAND%::%RANDOM_0-5%
2 | IF | INTEGER VARIABLE | %RAND% | = | %STORE% | GOTO MACRO LINE | START
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %STORE%::%RAND%
4 | RUN ACTION | MESSAGE PROMPT | RAND = %RAND%::Random::1::OK
5 | IF | INTEGER VARIABLE | %RAND% | = | 1 | LOAD MACRO | D:\Dropbox\Macro\A.mmmacro
6 | IF | INTEGER VARIABLE | %RAND% | = | 2 | LOAD MACRO | D:\Dropbox\Macro\B.mmmacro
7 | IF | INTEGER VARIABLE | %RAND% | = | 3 | LOAD MACRO | D:\Dropbox\Macro\C.mmmacro
8 | IF | INTEGER VARIABLE | %RAND% | = | 4 | LOAD MACRO | D:\Dropbox\Macro\D.mmmacro
9 | IF | INTEGER VARIABLE | %RAND% | = | 5 | LOAD MACRO | D:\Dropbox\Macro\E.mmmacro

Added a remark and two extra lines to Steve’s code, a check line and store integer line. rename them as you see fit.

User: joe

Date: Oct 20, 2022 0:47:47 GMT

Hi Zeak, Thanks for replying to my post.

Your solution didn’t work for me in the way that I had hoped.

The START macro just keeps playing the A, B, C, D, and E macros. I had hoped the START macro would stop playing after it played all of the macros.

Maybe, I did some of the code wrong?

Below I posted my START macro, which is pretty much a copy of your example. Below my START macro I posted my A macro.

These are two separate macros and in between where the START macro ends and the A macro begins I put the words “new macro”.

* | START
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %RAND%::%RANDOM_0-5%
2 | IF | INTEGER VARIABLE | %RAND% | = | %STORE% | GOTO MACRO LINE | START
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %STORE%::%RAND%
4 | RUN ACTION | MESSAGE PROMPT | RAND = %RAND%::Random::1::OK
5 | IF | INTEGER VARIABLE | %RAND% | = | 1 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\A.mmmacro
6 | IF | INTEGER VARIABLE | %RAND% | = | 2 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\B.mmmacro
7 | IF | INTEGER VARIABLE | %RAND% | = | 3 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\C.mmmacro
8 | IF | INTEGER VARIABLE | %RAND% | = | 4 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\D.mmmacro
9 | IF | INTEGER VARIABLE | %RAND% | = | 5 | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\E.mmmacro

new macro

* | A
1 | RUN ACTION | MOUSE CLICK | Left click at 894 1054 1 times with 0 ms delay
2 | RUN ACTION | WAIT SECONDS | 5
3 | RUN ACTION | MOUSE CLICK | Left click at 514 54 1 times with 0 ms delay
4 | RUN ACTION | WAIT SECONDS | 5
5 | RUN ACTION | KEYPRESS | A
6 | RUN ACTION | WAIT SECONDS | 5
7 | RUN ACTION | MOUSE CLICK | Left click at 1896 16 1 times with 0 ms delay
8 | RUN ACTION | WAIT MILLISECONDS | 500
9 | RUN ACTION | LOAD MACRO | C:\Users\josep\Desktop\MiniMouseMacros\START.mmmacro

User: zeak

Date: Oct 24, 2022 6:49:22 GMT

Hi Joe,

Do you have the “Clear variables on playback” turned on in options?

If you do it will clear the STORE variable when the other macro loads.

I also made a rookie mistake of not declaring variables before using them.

please see fixed code below and make sure to untick the clear variables on playback.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %RAND%::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %STORE%::0
* | START
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %RAND%::%RANDOM_0-5%
4 | IF | INTEGER VARIABLE | %RAND% | = | %STORE% | GOTO MACRO LINE | START
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %STORE%::%RAND%
6 | IF | INTEGER VARIABLE | %RAND% | = | 1 | LOAD MACRO | D:\Dropbox\Macro\A.mmmacro
7 | IF | INTEGER VARIABLE | %RAND% | = | 2 | LOAD MACRO | D:\Dropbox\Macro\B.mmmacro
8 | IF | INTEGER VARIABLE | %RAND% | = | 3 | LOAD MACRO | D:\Dropbox\Macro\C.mmmacro
9 | IF | INTEGER VARIABLE | %RAND% | = | 4 | LOAD MACRO | D:\Dropbox\Macro\D.mmmacro
10 | IF | INTEGER VARIABLE | %RAND% | = | 5 | LOAD MACRO | D:\Dropbox\Macro\E.mmmacro

gP2ykIM.png

User: joe

Date: Oct 28, 2022 5:52:17 GMT

Hello Zeak,

I made the changes that you suggested and the macro is still repeating.

Should there be a stop command somewhere on the macro?

Thanks again!

User: stevenm

Date: Oct 28, 2022 9:15:30 GMT

Here’s something I was playing with since I was interested in how to do what you wanted.

All the # lines are not actually part of the script, and you should remove them but they help explain what each section does…  yes, I could have done “* | Whatever”, but didn’t

Define used numbers and times tried – the , in USED_NUMBERS is important to set the variable up so all the numbers will be like ,1,3,4,2,5, once they are tried

1 | RUN ACTION | DEFINE STRING VARIABLE | %USED_NUMBERS%::,
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %TIMES_TRIED%::0
* | START
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %RAND%::%RANDOM_0-5%

check to see if we already used the number that was randomly retrieved

4 | IF | STRING VARIABLE | %USED_NUMBERS% | CONTAINS | ,%RAND%, | GOTO MACRO LINE | START

record how many times we tried since we found a random number that wasn’t previously tried

5 | RUN ACTION | DEFINE INTEGER VARIABLE | %TIMES_TRIED%::+1
6 | RUN ACTION | MESSAGE PROMPT | RAND = %RAND% -- Tried: %TIMES_TRIED%::Random::1::OK

update the used numbers list so we don’t reuse numbers – note, the commas are so we know the difference between 1 and 12 although I didn’t test higher than 5

7 | RUN ACTION | DEFINE STRING VARIABLE | %USED_NUMBERS%::%USED_NUMBERS%%RAND%,

Display the used numbers string

8 | RUN ACTION | MESSAGE PROMPT | USED_NUMBERS=%USED_NUMBERS%

Right about here, you’d have to deal with your different macro files, but I think you have that already worked out so I didn’t want to test that myself

if we haven’t tried more times than there are numbers, then do it again

9 | IF | INTEGER VARIABLE | %TIMES_TRIED% | LESS THAN | 5 | GOTO MACRO LINE | START

HTH Steven M


Random number generator?

URL: https://minimousemacro.proboards.com/thread/631/random-number-generator
Date: Sept 30, 2022 3:56:11 GMT

User: joe

Date: Sept 30, 2022 3:56:11 GMT

I created ten macros, lets call them A, B, C, D, E, F, G, H, I, and J. Can I create a macro that will pick one of those ten macros above at random, and then play it? I think I need to use integer variables and random numbers conditions but I didn’t really understand how. Can someone please help?

User: Steve

Date: Oct 1, 2022 21:37:21 GMT

Hi joe

This can be done a few way in MMM.
For this example I have declared %RANDOM% variable (RAND) to hold a number between 1 and 5. The macro then has some logic to determine that number and load a macro.

More on working with random numbers here <www.turnssoft.com/conditions.html#random_integer_variable>.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %RAND%::%RANDOM_0-5%
2 | RUN ACTION | MESSAGE PROMPT | RAND = %RAND%::Random::1::OK
3 | IF | INTEGER VARIABLE | %RAND% | = | 1 | LOAD MACRO | D:\Dropbox\Macro\A.mmmacro
4 | IF | INTEGER VARIABLE | %RAND% | = | 2 | LOAD MACRO | D:\Dropbox\Macro\B.mmmacro
5 | IF | INTEGER VARIABLE | %RAND% | = | 3 | LOAD MACRO | D:\Dropbox\Macro\C.mmmacro
6 | IF | INTEGER VARIABLE | %RAND% | = | 4 | LOAD MACRO | D:\Dropbox\Macro\D.mmmacro
7 | IF | INTEGER VARIABLE | %RAND% | = | 5 | LOAD MACRO | D:\Dropbox\Macro\E.mmmacro

User: joe

Date: Oct 2, 2022 4:59:34 GMT

Thanks for replying Steve! I will look into this over the next day or two.

User: joe

Date: Oct 2, 2022 5:57:34 GMT

Thanks again, Steve! I got it to work and it was a lot easier than I though it would be.


My is the same/is not th statements are reversed. Any help?

URL: https://minimousemacro.proboards.com/thread/624/same-statements-reversed-any-help
Date: Aug 25, 2022 9:01:41 GMT

User: tiredbeyondsleep

Date: Aug 25, 2022 9:01:41 GMT

1 | IF | PIXEL COLOR | Color [R=23, G=142, B=211]::At Location [X:764 Y:1422] | IS NOT THE SAME | STOP

I have read the documentation over and over again for about 2 hours. I have tried everything possible that I can think of to get this to work. The only way I could get this to work is by reversing the IS THE SAME/IS NOT THE SAME statement. According to the documentation, This SHOULD read IF pixel color is not the same (Does not match ) STOP. So if the pixel color is not the color I choose then it should stop. Yet it does not work. I had to input:

1 | IF | PIXEL COLOR | Color [R=23, G=142, B=211]::At Location [X:764 Y:1422] | IS THE SAME | STOP

With ELSE IN theory, it should read as if pixel color (Matches) stop but, it is the reverse. The rest of the Macro triggers. Unless the last word is for the ELSE statement. I tried with Continue and that did not work. After reading the forums, I have 100% scaling, so no issues there. I have saved the macro. Recreated it several times. Restarted And my current version is the pro for the month. Any ideas? 

User: Steve

Date: Sept 10, 2022 1:39:08 GMT

Hi tiredbeyondsleep

I’ve got a little demo below to help explain.

1 | IF | PIXEL COLOR | Color [R=56, G=174, B=245]::At Location [X:-1568 Y:659] | IS THE SAME | MESSAGE PROMPT | This is the same pixels::SAME::0::Information
2 | IF | PIXEL COLOR | Color [R=56, G=174, B=245]::At Location [X:-1568 Y:659] | IS NOT THE SAME | MESSAGE PROMPT | This is not the same pixels::NOT SAME::0::Information

In this demo i’ve captured the blue in the image background (circled by my mouse) and run two tests with ‘is the same’ and ‘is not the same’. The first run through, the pixels do not change from 56,174,245 (blue) so line 1 evaluates true and the message prompt shows “This is the same pixels”. The second run through I move the Mini Mouse Macro window over the blue background and push play on the macro. The blue pixels are now white. Line 1 evaluates false as the pixels are not the same. Line 2 evaluates true as the pixels are now white. minimousemacro-pixelcolor-samenot.gif I hope this helps.


Macro timing issues

URL: https://minimousemacro.proboards.com/thread/622/macro-timing-issues
Date: Aug 24, 2022 17:57:59 GMT

User: Entity

Date: Aug 24, 2022 17:57:59 GMT

I’m having an issue with macro timing; I need to click a spot, and then about 1 second later move the mouse to another spot and click.  I record this with the macro, and sometimes it seems to skip the 1 second pause when I’m not moving the mouse and sometimes it seems to capture it.  Does anyone know what’s going on with this?

User: Entity

Date: Aug 25, 2022 13:38:12 GMT

Seems as if there is a setting somewhere that will move the mouse immediately in a recording if a certain amount of wait time hasn’t passed.   If I click and wait for a full second before moving the mouse, the macro seems to capture it and in the replay will get the 1 second pause before the next click. If I click and wait for less than a second, then move the mouse, the macro won’t capture the less than second pause and immediately click the next point in the macro.

User: Steve

Date: Sept 10, 2022 1:21:53 GMT

Hi Entity, A bug for waiting one second with WAIT SECONDS currently exists ( <www.turnssoft.com/bugtrack.html#bugs> ). A work around is to use WAIT MILLISECONDS. The following will wait 1 second using ‘wait milliseconds’:

1 | RUN ACTION | WAIT MILLISECONDS | 1000

Checking value in predefined location

URL: https://minimousemacro.proboards.com/thread/625/checking-value-predefined-location
Date: Aug 26, 2022 8:19:02 GMT

User: serdath

Date: Aug 26, 2022 8:19:02 GMT

Hi, I want to check the value of a text in a predefined location. The value is always there, and when it goes under 20, i want to perform further actions. I made a functional code, but it’s really scuffed. I’d like to check it without moving the cursor and extra clicks I still haven’t figured out how to do it, can someone help me please?

2 | RUN ACTION | MOUSE CLICK | Left click at 947 665 2 times with 10 ms delay
3 | 947 | 665 | 500 | KEYPRESS Ctrl+ | c
4 | IF | INTEGER VARIABLE | %CLIPBOARD% | LESS THAN | 20 | GOTO MACRO LINE | 5 | ELSE | 4 | RUN ACTION | GOTO MACRO LINE | 10

User: serdath

Date: Aug 26, 2022 15:39:05 GMT

I have fulfilled my need with another function (pixel color, but it’s not related to checking a value at all) OCR plugin seems to be able to detect text and evaluate it, but i don’t know how consistent it is, especially on a small text piece

User: Steve

Date: Sept 10, 2022 1:18:50 GMT

Hi serdath I was going to suggest OCR on a condition for the text value. You’re right on the small text. I’d suggest doing some sample testing. Perhaps a dozen or so attempts and evaluate the capture rate. Other than OCR another option could be image detection. If the screen area that presents the text is the same then detection of an image that you capture could achieve the same outcome. <www.turnssoft.com/conditions.html#ocr> <www.turnssoft.com/conditions.html#detectimage>


Mouse pointer travel from x1, y1 to x2, y2

URL: https://minimousemacro.proboards.com/thread/620/mouse-pointer-travel-x1-y1
Date: Aug 22, 2022 21:38:36 GMT

User: cdeb

Date: Aug 22, 2022 21:38:36 GMT

Hi, I would like to create a macro where I simply define the starting and ending point of the path for the mouse pointer to travel. As an example, rather than have this:

1 | 1282 | 830 | 10 | Mouse Movement
2 | 1292 | 825 | 10 | Mouse Movement
3 | 1305 | 817 | 10 | Mouse Movement
4 | 1311 | 812 | 10 | Mouse Movement
5 | 1321 | 805 | 10 | Mouse Movement
6 | 1325 | 802 | 10 | Mouse Movement
7 | 1331 | 799 | 10 | Mouse Movement
8 | 1335 | 796 | 10 | Mouse Movement
9 | 1339 | 795 | 10 | Mouse Movement
10 | 1342 | 793 | 22 | Mouse Movement

I would like to have a way to instruct the mouse pointer to go from 1282, 830 to 1342, 793 in 150ms. There are a couple of programs out there that allow you to do this. I tried to find a way in MMM but couldn’t figure it out. Any ideas?

User: Steve

Date: Sept 10, 2022 1:13:46 GMT

Hi cdeb Yeah that would be a good feature. MMM can’t do that without either having the mouse movement on each line or using the ‘mouse movement’ ( <www.turnssoft.com/conditions.html#mousemovement> ) action. The mouse movement actions will produce something like this:

9 | RUN ACTION | MOUSE MOVEMENT | 360-252:10,367-253:10,375-255:10,380-257:10,391-258:10,392-258:10,400-262:10,408-267:10,413-271:10,417-275:10,429-283:10,439-289:10,453-297:10,467-304:10,482-311:10,494-317:10,507-322:10,517-327:10,523-329:10,527-330:10,531-333:10,534-334:10,540-335:10,544-337:10,549-337:10,556-339:10,562-339:10,567-339:10,570-338:15,571-337:18,572-336:17,576-335:21,580-334:10,583-333:10

It’s one line and move efficient than ‘mouse movement’ on each line however it’s essentially the same concept.


Is there a hotkey that will launch MMM?

URL: https://minimousemacro.proboards.com/thread/619/hotkey-launch-mmm
Date: Aug 19, 2022 6:23:36 GMT

User: joe

Date: Aug 19, 2022 6:23:36 GMT

Hello, I actually have two questions. The first one is there a hotkey that will launch MMM? Second, I saved a macro to the correct folder but when I go back to MMM to open the macro and run it, the macro does not show up in the load macro window. Why is this happening? Also, why can’t I post a damn screen shot? I am embarrassed and frustrated with my lack of ability to include a screenshot. Doc1.docx (159.93 KB) Thanks

User: Steve

Date: Sept 10, 2022 1:09:19 GMT

Hi joe First up, the easy one - the embedding of a screen shot. Have a look at this post minimousemacro.proboards.com/thread/121/embed-image-post where I step through it with screen shots of my own. Is there a hotkey to launch MMM? Not natively to MMM. By ‘launch MMM’ i am assuming you mean start minimousemacro.exe. You’re going to have to use something else within windows for that one. File association (association of .mmmacro saved files with minimousemacro.exe) might be what your looking for. Check out this thread for that minimousemacro.proboards.com/post/2040/thread . Lastly, command line parameters and launching from the command line ( here ) might be able to help also. Your second question on loading a macro. It might be your queue settings. Do you have the macro queue enabled? If you do, then this will take precedence. Also it could be the ‘load last saved macro’ option in the settings too. Hope this helps.


A loop in the secondary file does not work

URL: https://minimousemacro.proboards.com/thread/626/loop-secondary-file-work
Date: Aug 31, 2022 20:44:32 GMT

User: sadlol

Date: Aug 31, 2022 20:44:32 GMT

When I use the command RUN MACRO INLINE A loop in the secondary file does not work. If I run the secondary file by itself the loop works. There is no flaw in my code Is this a known problem? Does she have a solution?

User: philranger

Date: Sept 1, 2022 20:03:13 GMT

Hello, Do you mean that there are 2 macros that use the same variables and they get confused?

User: zeak

Date: Sept 7, 2022 5:55:47 GMT

Hi Sadlol, When using the command RUN MACRO INLINE , the macro from the file has no flow control. This means GOTO and LOOP statements will not work. You can get around this by using RUN PROGRAM command with the Exit command as the last line of the macro, and in the main macro having a statement to watch for the second macro to finish. There are many ways to determine if the second macro has finished ( looking for window name , outputting a variable to a file and having the main macro looking for the change , just waiting a set amount of time or looking for a change on the screen ) I have linked all the Conditions information, This page is a great resource that I always go back to. Cheers, Zeak


Help with a simple macro

URL: https://minimousemacro.proboards.com/thread/621/help-simple-macro
Date: Aug 23, 2022 20:31:46 GMT

User: serdath

Date: Aug 23, 2022 20:31:46 GMT

Hello there, I’ve been trying to put together a basic macro, but the truth is, i suck at this. So i hope someone here can help me figure out how to make it properly smiley.png I had some progress but it isn’t what i wanted, and i think the result was a mess, so i’d prefer making a clean new one First of all, i’d like the macro to check for two images, which i tried with detect image. In case of trying with only one image, it was all good, but i don’t know how to set it up properly for 2 images. I only need one of the images to be found on the screen, but there can be multiple at once. In case at least one image is found, i would like the macro to click once at a given offset from the center of the image In case there is no such image on the screen, i just want the macro to click once at the given coordinates After these 2 steps, i want to check for another image, and in case it is on the screen, the macro will have to click once at the center of the image. In case there are multiple instances of that image, i’d like to have them all clicked, with a short delay between them. In case there’s none, just continue with whatever other lines i will set up That’s it. I would much appreciate a bit of help smiley.png

User: serdath

Date: Aug 24, 2022 20:07:00 GMT

I actually managed to make it work, after all

User: torikoko

Date: Aug 25, 2022 4:14:24 GMT

Hi Serdath, Post your Macro. It might helps others with theirs.

User: serdath

Date: Aug 25, 2022 12:36:53 GMT

defaultavatar.png Aug 25, 2022 4:14:24 GMT

torikoko said: Hi Serdath, Post your Macro. It might helps others with theirs. Hi Torikoko, I still think my macro is a bit messy, but it does the trick for me due to the favorable circumstances

1 | RUN ACTION | MOUSE CLICK | Left click at 620 255 1 times with %RANDOM_850-950% ms delay
2 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image1.bmp::match quick::move mouse yes: | IMAGE FOUND | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | 4
3 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 800 ms delay
4 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image1.bmp::match quick::move mouse yes: | IMAGE FOUND | GOTO MACRO LINE | 5 | ELSE | 4 | RUN ACTION | GOTO MACRO LINE | 6
5 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 800 ms delay
6 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image2.bmp::at 783 347 59 628::match quick::move mouse yes::offset +490 0 | IMAGE FOUND | GOTO MACRO LINE | 8 | ELSE | 6 | RUN ACTION | GOTO MACRO LINE | 7
7 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image3.bmp::at 783 347 59 628::match quick::move mouse yes::offset +490 0 | IMAGE FOUND | THEN
8 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 400 ms delay
9 | IF | ELSE
10 | RUN ACTION | MOUSE CLICK | Left click at 1054 1000 1 times with 0 ms delay
11 | IF | END IF
12 | RUN ACTION | WAIT SECONDS | %RANDOM_178-182%

I changed the order a bit, so now it will first click a button which opens a page, where i want to check for an image, which might be in multiple instances, and click two of them (i don’t know how to make it to click all existing ones with a short delay between them, so i wrote the code lines twice since clicking 2 instances is more than enough. Secondly, the macro will check if any of the two images (image2 and image3) are on the screen, if so, will click at an offset of 490 on x axis, from the first image it finds. If none is on the screen, it will click on a fixed location where there’s a button. Sometimes this doesn’t work properly and even if the images are found, it will still click on this fixed location, but it doesn’t affect me because at that point the button will be locked. And the process will be repeated at random intervals between 178 and 182 seconds

User: torikoko

Date: Aug 26, 2022 0:53:27 GMT

This looks great! Well done serdath!

User: serdath

Date: Aug 26, 2022 7:08:25 GMT

I made a final version, where it will work fully consistent

1 | RUN ACTION | MOUSE CLICK | Left click at 620 255 1 times with %RANDOM_850-950% ms delay
2 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image1.bmp::match quick::move mouse yes: | IMAGE FOUND | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | 4
3 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 700 ms delay
4 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image1.bmp::match quick::move mouse yes: | IMAGE FOUND | GOTO MACRO LINE | 5 | ELSE | 4 | RUN ACTION | GOTO MACRO LINE | 6
5 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 700 ms delay
6 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image2.bmp::at 783 347 59 628::match quick::move mouse yes::offset +490 0 | IMAGE FOUND | GOTO MACRO LINE | 8 | ELSE | 6 | RUN ACTION | GOTO MACRO LINE | 7
7 | IF | DETECT IMAGE | image path C:\Users\User\Desktop\Image3.bmp::at 783 347 59 628::match quick::move mouse yes::offset +490 0 | IMAGE FOUND | GOTO MACRO LINE | 8 | ELSE | 7 | RUN ACTION | GOTO MACRO LINE | 10
8 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 0 ms delay
9 | RUN ACTION | GOTO MACRO LINE | 11
10 | RUN ACTION | MOUSE CLICK | Left click at 1054 1000 1 times with 0 ms delay
11 | RUN ACTION | WAIT SECONDS | %RANDOM_178-182%

Can’t duplicate Tradingview alerts

URL: https://minimousemacro.proboards.com/thread/611/duplicate-tradingview-alerts
Date: Jul 27, 2022 0:48:07 GMT

User: manna

Date: Jul 27, 2022 0:48:07 GMT

New to the forum. I set everything up according to the mouse macro on utube. It will automatically record the 2nd alert after I did the first one. Then you will see the pointer going over to the button where you set an alert up, but the rectangle “create alert” box will not show up like it automatically did on the 2nd one. When I did the log for 5, you can see that it goes through all 5. When I check to see if the alerts recorded, only the first 2 record. The first one which I did and then the automatic one. They only record as long as you can physically see the large rectangle “create alert” box showing up on the screen. You can tell that the mouse macro is going through the key strokes and you can even see that it hits the set alert button but that rectangle “create alert” box just does not show up on 3-5. One time it did it on the 3rd one but only one time. Any help will much be appreciated. Thank you!

User: Steve

Date: Jul 28, 2022 10:55:04 GMT

Hi manna Sorry but I don’t understand what problem your having. Firstly, you said you set everything up according the macro on YouTube - what YouTube video are you talking about and what did you set up? What is the ‘create alert’ box your talking about?

User: manna

Date: Aug 1, 2022 13:59:19 GMT

Thanks for replying. Sorry, I was not on the computer over the weekend. The utube video was “Tradingview Multiple Alerts from Watchlist Automated” Dec 23, 2020 8 min 53 seconds long. Set up means I did everything according to the video exactly. Set up might have been the wrong words. Not sure if you are familiar with tradingview.com. The create alert box is when you click the little clock on the top of a chart, a large rectangle box (the create alert box) appears where you can create an alert so when certain parameters that you have set are matched, the alert goes off. The macro is supposed to duplicate the keystrokes so you don’t have to set 50 (or whatever number) alerts by hand which is very time consuming. I am supposed to physically see the create alert box each time the keystroke comes around automatically to set up each alert. You can see the keystroke coming around each time to highlight the “clock” button but after the second time around the actual “create alert” box does not show up on screen even though you can tell the keystrokes are automatically working. If that large rectangle create alert box does not show up on screen, the alert is not recorded. Let’s say you put on the log for 5. It will go through the keystrokes for all 5 alerts, but only the first and second one will be recorded. Of course the first one because that is the one you physically do in order to make the proper keystrokes so the macro will record it. If you physically see the large rectangle create box showing up on screen, the alert is recorded, success! If it doesn’t, the alert is not recorded. It always shows up the 2nd time around and the alert is recorded. Only one time it showed up after that which caused the alert to be recorded. So, like I say, the problem is the large rectangle create alert box most of the time is not showing up on screen even though you can see the keystrokes are working. So it is not doing what its supposed to do and that is… recording the alert.  I have re-done things probably 5 times to no avail.

User: philranger

Date: Aug 1, 2022 17:23:44 GMT

Hello, My main problems with the macros I created are typically in one of these categories 1- don’t wait long enough before clicking (sometimes the web site takes longer than usual to be fully ready 2- clicking position changes (sometimes done by websites that don’t want bots, or could depend on content size) 3- first click in a window selects the window when you are in another program, so I either need to first click on the window title bar, or switch to that window with « »keypress alt+ | tab I am not familiar with that site Hoping it can help

User: manna

Date: Aug 1, 2022 18:05:55 GMT

I will look into this. Thanks. If there is anyone else that is familiar with tradingview please let me know

User: ola

Date: Aug 25, 2022 18:33:02 GMT

in the video posted, the last step before the he stopped recording is to press the down arrow button on the keyboard. before you play it, make sure your watchlist is already set and the first ticker is selected


Detect pixel range change on screen and take a screen shot

URL: https://minimousemacro.proboards.com/thread/618/detect-pixel-range-change-screen
Date: Aug 19, 2022 2:10:27 GMT

User: torikoko

Date: Aug 19, 2022 2:10:27 GMT

Hi, thanks for the amazing tool.

I have been trying to find a way to get MMM to detect a screen change by pixel range and then keypress a value ie F4 to take a screenshot when the change is detected.

What is the best way to do this? This is what I have so far. Keypress f4 for me takes a screenshot. This is working for scrolling down a webpage checking for new content and taking a screenshot.

1 | IF | PIXEL RANGE | At Location [X:700 Y:134]::Size [W:100 H:100] | CHANGES::1::0::0 | GOTO MACRO LINE | 2
2 | 93 | 119 | 2684 | Keypress f4
3 | 93 | 119 | 5200 | Keypress pgdn

Is there anyway to improve this?

Also is there a way to add these two lines to the start without looping them?

I would like it to take an initial screenshot (f4) then page down to look for new content, if there is new content I want it to screenshot, if not I want it to keep trying to page down until there is.

2 | 93 | 119 | 2684 | Keypress f4
3 | 93 | 119 | 5200 | Keypress pgdn

Happy to hear your thoughts.

User: philranger

Date: Aug 19, 2022 19:35:43 GMT

Hello I’m not familiar enough with using that kind of functions, but… Maybe let your macro take a screenshot, crop it (so the clock isn’t on the screenshot, let the macro save it, then loop until you can’t find that picture?

User: Tori koko

Date: Aug 19, 2022 21:33:46 GMT

This is what I have so far:

1 | IF | PIXEL RANGE | At Location [X:700 Y:134]::Size [W:500 H:500] | CHANGES::1::0::0 | GOTO MACRO LINE | 2
2 | 93 | 119 | 2684 | Keypress f4
3 | 93 | 119 | 5200 | Keypress pgdn

Keypress f4 for me takes a screenshot. This is working for scrolling down a webpage checking for new content and taking a screenshot. Is there anyway to improve this? Also is there a way to add these two lines to the start without looping them?: | 93 | 119 | 2684 | Keypress f4 | 93 | 119 | 5200 | Keypress pgdn


Detect Image does not work, Please help!

URL: https://minimousemacro.proboards.com/thread/617/detect-image-work-help
Date: Aug 9, 2022 2:28:57 GMT

User: joe

Date: Aug 9, 2022 2:28:57 GMT

* | Open Free Bitcoin Cash
* | START
1 | RUN ACTION | WAIT SECONDS | 10
2 | IF | DETECT IMAGE | image path C:\Users\josep\Desktop\MiniMouseMacros\Open Free Bitcoin Cash.bmp::at 1608 169 69 52::match quick::move mouse yes | IMAGE FOUND | THEN
3 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 77 ms delay
4 | RUN ACTION | GOTO MACRO LINE | FINISH
5 | IF | ELSE
6 | RUN ACTION | GOTO MACRO LINE | START
7 | IF | END IF
* | FINISH

In the above code I am trying to create a macro that looks for an image called Free Bitcoin Cash and then clicks the image. When I run the macro it seems to stop when it gets to the detect image line. Doc1.docx (889.32 KB)

User: joe

Date: Aug 9, 2022 2:31:10 GMT

The document that I attached is a screen shot of my macro getting stuck on the detect image line.

User: joe

Date: Aug 9, 2022 2:33:14 GMT

My macro is probably getting stuck on the detect image line because it can’t locate the image. But the image is there. What am I doing wrong?

User: Steve

Date: Aug 10, 2022 22:38:38 GMT

Hi joe Is it ‘stuck’ or just doing it’s loop? What does the MMM event log say? When I run your macro I loop back to line 2 because I don’t have your image.
Have a look at this post minimousemacro.proboards.com/thread/602/detect-image-working and try some of the solutions in that one.

User: joe

Date: Aug 16, 2022 3:47:42 GMT

Thanks Steve! After I changed my screen resolution to 100% and created my image using MMM I was able to execute the below macro successfully.

* | START
1 | IF | DETECT IMAGE | image path C:\Users\josep\Desktop\MiniMouseMacros\FBC.bmp::at 1543 100 192 212::match quick::move mouse yes | IMAGE FOUND | THEN
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay
3 | RUN ACTION | GOTO MACRO LINE | FINISH
4 | IF | ELSE
5 | RUN ACTION | GOTO MACRO LINE | START
6 | IF | END IF
* | FINISH

However, I was unable to duplicate my success with a similar image in a different part of the screen. When I used MMM to save the image and give it a range the image that was created was unusual and when I hit the test button nothing would happen. The image that I created with MMM is litecoin giveaway start button. The image that I was trying to create with MMM should look more like 1. litecoin giveaway start button.bmp (11.43 KB) 1.bmp (92.86 KB) I can’t seem to attach the images correctly. But pitchninja was able to so. My litecoin giveaway start button image looked a little like the link below from one of pitchninja’s post. minimousemacro.proboards.com/attachment/download/69

User: philranger

Date: Aug 16, 2022 11:00:53 GMT

Hello, Many software are made especially to avoid automation. Their menus and buttons will slightly change every time. You just need a few pixels that are ever so slightly differently colored or offset to do the trick. Maybe this is such a case?


Can the MMM minimize its self after I click play?

URL: https://minimousemacro.proboards.com/thread/615/minimize-self-after-click-play
Date: Aug 2, 2022 19:59:39 GMT

User: joe

Date: Aug 2, 2022 19:59:39 GMT

I want to be able to click on the play button of MMM and then have the MMM minimize its self. For example, in the picture below I want to click the play button of MMM and then have MMM minimize its self so that the macro that it is playing can click on the image beneath the MMM. Is this possible? How do I do it? Thanks. WBRPxQSPHzsUeeQkdtQE.png

User: philranger

Date: Aug 4, 2022 14:11:54 GMT

Hello, The easiest way is to use the keyboard to start the macro instead of clicking play. Look into the « hotkey » menu to find which key it is. You may yave to change it so it doesn’t interfere with the other software you are using (I set mine to « F3 »)

User: joe

Date: Aug 4, 2022 21:49:45 GMT

Thanks Phil!

User: joe

Date: Aug 4, 2022 22:12:58 GMT

Thanks Phil for helping but it didn’t really fix the problem that I’m trying to fix. What is the minimize to tray option suppose to do? Attachments: minimize to tray option forum.docx (855.82 KB)


Mini not working: Can’t see cursor movements

URL: https://minimousemacro.proboards.com/thread/610/mini-working-cursor-movements
Date: Jul 26, 2022 19:22:24 GMT

User: flycaster99

Date: Jul 26, 2022 19:22:24 GMT

Have the latest updated Mini Mouse and have been using a while on my HP PC. However, I got the bug to “clean” up its operation and screwed things up which lead me to making a new macro. But, with the new macro, I made some entries in Quick Launch, and then the macro didn’t work correctly…when making the macro and testing it, you could see the cursor doing its thing. but now you don’t see the cursor’s movement and it does show up at the end. So, afte several tries, I just delete the exe and reinstalled a new Mini. But I’m still having this problem:

  1. Record a macro
  2. Test it, and save if it works
  3. Edit out un-necessary  cursor movements and save (I’m fairly certain that I did the editing correctly)
  4. Can’t see any cursor movements until the end and nothing happens re what I wanted opened.

User: Steve

Date: Jul 28, 2022 11:00:32 GMT

Hi flycaster99

I’m not sure why your mouse movements are not showing up. Have you tried resetting the settings? Mini Mouse Macro saves it’s settings to the system registry. You might have some dodgy settings. I recommend refreshing the settings. MMM-Uninstall.png Settings - Uninstall - Check ‘Remove Registry Entries’ - Click the bin - Then close the program and open it again. This will clear the current settings.

User: flycaster99

Date: Jul 28, 2022 17:26:25 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jul 28, 2022 11:00:32 GMT

Steve said: Hi flycaster99

I’m not sure why your mouse movements are not showing up. Have you tried resetting the settings? Mini Mouse Macro saves it’s settings to the system registry. You might have some dodgy settings. I recommend refreshing the settings. MMM-Uninstall.png Settings - Uninstall - Check ‘Remove Registry Entries’ - Click the bin - Then close the program and open it again. This will clear the current settings. Thanks for the info. But, by deleting the program and reinstalling, I was able to accomplish what I wanted…so I’ll just keep it as it is working fine.

User: Steve

Date: Jul 30, 2022 0:51:11 GMT

Thanks for the info. But, by deleting the program and reinstalling, I was able to accomplish what I wanted…so I’ll just keep it as it is working fine. Great. Can I ask, and to clarify for others, what do you mean by ‘deleting and reinstalling’? Did you delete minimousemacro.exe, download it again, and then run your updated minimousemacro.exe? Technically this isn’t uninstalling MMM. MMM stores it’s settings to the system registry so that when you open MMM all your customization’s are there for you. To uninstall MMM fully, the only way is to use the ‘Options - Uninstall’ and select ‘Remove Registry Entries’. Running MMM after this is a clean build with no saved settings.


Can you help me to clarify this information

URL: https://minimousemacro.proboards.com/thread/612/help-me-clarify-information
Date: Jul 28, 2022 20:47:33 GMT

User: Miguelot

Date: Jul 28, 2022 20:47:33 GMT

I got this message at evaluating the tool Matches rule MALWARE-CNC DNS Fast Flux attempt from Snort registered user ruleset trojan-activity Do you know what can be? Thank you so much.

User: Steve

Date: Jul 29, 2022 8:44:19 GMT

Hi Miguelot

What are you using to ‘evaluate’ MMM?
The latest virus total score here <www.virustotal.com/gui/file/ab83463d785f91e915b8faf8b5d87b94aba9f1510f51962f982eaddece643f68> runs through the analysis of the code. You can create a free virus total account and get some more details stats on the code or submit your own minimousemacro.exe binary up for analysis. Mini Mouse Macro is not malware. Mini Mouse Macro by nature of being a mouse and keyboard macro recording tool can record keystrokes…it’s what it’s designed to do. I’m not a security expert but I’d say that your analysis hitting on MALWARE-CNC DNS Fast Flux signature is a false positive. MMM pulls update info from minimousemacro.com for it’s update check. This update check compares the running version of the tool with the latest version number advertised by the site. It also pulls the update text. The update text is displayed under ‘settings - update’ and informs on the latest version release info. I’d say the IP of minimousemacro.com, a digital ocean cloud host, is not recognized as your SNORT signature runs over the sample.
If you find out anything further in your analysis please let me know. I’d love to hear about it. Cheers, Steve.


Hotkeys- how to operate them?

URL: https://minimousemacro.proboards.com/thread/607/hotkeys-operate
Date: Jul 12, 2022 13:27:18 GMT

User: First time user

Date: Jul 12, 2022 13:27:18 GMT

Hello, the scenario is as follows:

1) I’ve opened the program, (almost) all settings were at default (I changed some small things at record options). 2) Clicked the gear at the top-> Hotkeys->“Ctrl” in the drop-down menu was changed to “none”.  “Pause macro” entered value as “p”. “Stop playback” entered value as “s”.  “Stop macro” remained F10. 3) I’ve recorded some short little playing with the mouse. right clicks, left clicks and etc… 4) “Play macro” was clicked and the mouse movement repeated. 5) When pressing- “s”, “p” and “f10” keys, nothing happens and the green playback bar fills up until the very end. After googling a little I’ve found this thread: minimousemacro.proboards.com/thread/492/hotkeys-work In it the user was complaining about a similar problem and the reply was that maybe the Ctrl key was eaten by another program, so I’ve tried doing without it… but alas… I have no programs that respond when pressing those keys… I will say, however, that the program does runs inside an isolated virtual box. Any ideas as to how to resolve the issue? (The solution the user of said post found also doesn’t do anything for me). Thank you very much! Raj.

User: Steve

Date: Jul 13, 2022 22:01:45 GMT

Hi, Cheers for the run down. It helps. I think most likely the issue here is the macro running within Virtual Box and how your attempting to send the hotkey’s in.
After a quick google i found these default hotkeys within Virtual Box hardwaresfera.com/en/articulos/atajos-teclado-virtualbox/ . Any hotkeys you configuration with MMM will counter with those Virtual Box has natively running. This will also apply to any shortcuts/hotkeys enabled for other applications running within your OS within the Virtual Box VM.

User: First time user

Date: Jul 22, 2022 5:18:13 GMT

Many thanks for the reply(!), to be honest this forum doesn’t seem to be very active so I didn’t expect one so soon… Yes, that was the essence of what you’ve wrote to that other user and is the reason for me replacing the “ctrl” button in the drop-down menu- I wanted to make sure that there would be no clash whatsoever with any other utility (I’ve then tried some other weird combos, just to make sure). While indeed ctrl+random key\alt+random key is a staple in many cases, just using a single button (like the letter ‘p’ or the number ‘1’) would create a havoc for most programs, with a barrage of complaints from people using their PC normally when suddenly something gets activated… I know its weird and probably useless, but just in case I’ve attached 2 images- the first is how the hotkeys settings look like, the second is what happens despite me pressing the “S” button vigorously tongue.png

User: First time user

Date: Jul 22, 2022 8:28:57 GMT

Okay… I’m a bit ashamed for bothering you… I think I solved the issue and I should have solved it by myself a week ago… It was, as always, a bit dumb. For any future google searcher with a similar issue that will stumble upon this post- if you are using a virtual machine, check out it specific type (Virtual box\Vmware, windows sandbox, Hyper-V and etc…) and the way it does virtualization. Some machines (like mine) have a type of isolation that prevents any interactions with the host and do not posses any software mediator to capture and forward some commands. In some cases it is possible to bypass at the expense of security (If you are using a machine not for security reasons,for instance). It is not that they use the same hotkeys it is that they do not allow hotkeys to begin with. Anyway, thank you very much for the spared attention and if this post needs to be flagged as “solved”- than you can do this (I obviously can’t edit anything).

User: philranger

Date: Jul 22, 2022 19:24:37 GMT

Don’t feel bad: it’s almost always easy once you know the solution, but yours wasn’t that easy at all. Thanks A LOT for coming back to share how it was solved!

User: First time user

Date: Jul 23, 2022 20:02:19 GMT

Thanks:P


Mouse Movement like human

URL: https://minimousemacro.proboards.com/thread/609/mouse-movement-human
Date: Jul 23, 2022 11:09:33 GMT

User: stunrage

Date: Jul 23, 2022 11:09:33 GMT

Is there anyways to set mouse Movement like a human in a game. I am new to this program and learning. As of now in my scripts I just have mouse clicks set at x y and the action then key presses. But clicking move from one xy to another xy click is instant and seems very unhuman like. Ive tried searching everything in forums but couldn’t find anything. Using mouse Movement I think doesn’t make it human like either I believe. I’ve figured out how to random click in a set area but if I use that command for a right click how can I make it so it will click like -40x where I want it to select the option I need the script to pick? For now I’ve set a fix position on the place but clicking same position everytime would be bot like.

User: philranger

Date: Jul 23, 2022 12:17:00 GMT

Hello, Does the contextual menu has underlined letters, which could be called from the keyboard, or does it accept cursor movements, so a couple of « keypress down » followed by « entrr » or the spacebar would work? If not, you could stock your position in a variable, add a fixed number to it so it moves by the right amount, then click there. Randomized timing might be a good idea too.

User: stunrage

Date: Jul 23, 2022 14:16:41 GMT

dont understand what you are trying to say but here is my script ive made so far.

1 | %random_1084- 1123% | %random_327- 422% |  %random_400- 700% | Left Click
2 | X | X |  %random_1200- 1600% | Keypress 1
3 | X | X |  %random_700- 900% | Keypress ]
4 | X | X |  %random_400- 600% | Keypress space
5 | RUN ACTION | WAIT SECONDS | %random_17- 19%
6 | X | X | %random_500- 699% | Left Click
7 | X | X |  %random_1200- 1600% | Keypress 1
8 | X | X |  %random_700- 900% | Keypress ]
9 | X | X |  %random_400- 600% | Keypress space
10 | RUN ACTION | WAIT SECONDS | %random_17- 19%
11 | X | X | %random_400- 699% | Left Click
12 | X | X |  %random_1200- 1600% | Keypress 1
13 | X | X |  %random_700- 900% | Keypress ]
14 | X | X |  %random_400- 600% | Keypress space
15 | RUN ACTION | WAIT SECONDS | %random_17- 19%
16 | X | X | %random_500- 699% | Left Click
17 | X | X |  %random_1200- 1600% | Keypress 1
18 | X | X |  %random_700- 900% | Keypress ]
19 | X | X |  %random_400- 600% | Keypress space
20 | RUN ACTION | WAIT SECONDS | %random_17- 19%
26 | X | X | %random_400- 699% | Left Click
27 | X | X |  %random_1200- 1600% | Keypress 1
28 | X | X |  %random_700- 900% | Keypress ]
29 | X | X |  %random_400- 600% | Keypress space
30 | RUN ACTION | WAIT SECONDS | %random_17- 19%
31 | %random_1084- 1123% | %random_327- 422% |  %random_400- 700% | Left Click
* | Buying Potions Clearing inventory
32 | X | X | %random_700- 1100% | Keypress 3
33 | X | X | %random_400- 500% | Keypress escape
34 | 1048 | 369 |  %random_700- 1500% | Right Click
35 | %random_1023-1050% | 429 | %random_1100- 1900% | Left Click
* | Restore
36 | 823 | 320 | %random_700- 1500% | Right Click
37 | %random_790- 820% | 359 | %random_800- 999% | Left Click
* | Summoning
38 | 873 | 314 | %random_700- 1500% | Right Click
39 | %random_845- 860% | 357 | %random_500- 900% | Left Click
* | Attack
40 | 921 | 314 | %random_700- 1500% | Right Click
41 | %random_913- 930% | 350 | %random_500- 900% | Left Click
* | Strength
42 | 980 | 305 | %random_700- 1500% | Right Click
43 | %random_985- 1005% | 344 | %random_500- 900% | Left Click
* | Defence
44 | 1027 | 311 | %random_700- 1500% | Right Click
45 | %random_1005- 1025% | 352 | %random_500- 900% | Left Click
* | Magic
46 | 1082 | 331 | %random_700- 1500% | Right Click
47 | %random_1079- 1099% | 376 | %random_500- 900% | Left Click
* | Ranging
48 | 1132 | 321 | %random_700- 1500% | Right Click
49 | %random_1118- 1138% | 363 | %random_500- 900% | Left Click
50 | X | X | %random_600- 900% | Keypress escape

Hotkeys will not work

URL: https://minimousemacro.proboards.com/thread/492/hotkeys-work
Date: Aug 26, 2021 1:10:41 GMT

User: Tankman

Date: Aug 26, 2021 1:10:41 GMT

Mmm will not respond to cfl+F6 and continues to run

User: Steve

Date: Aug 26, 2021 7:00:47 GMT

Hi Tankman, Sometimes other programs can eat the ctrl+<whatever> keys before MMM can eat them. It really depends on what you are doing and where your trying to run MMM to and from.
I’ve seen this behavior when certain applications have focus that also respond to these keys, when people run MMM within a VM or remote session, or when people run MMM and jump inside a game or Java based environment. Have you tried changing the key combo for the hotkey? Running this test will let us know if its a certain key combination thats being eaten by a different app thats open. Have you tried a simple test with no applications open? This test will do pretty much the same as the first one but will give us more certainty that its not MMM thats the issue. Cheers, Steve.

User: Tankman

Date: Aug 28, 2021 3:47:16 GMT

Thanks Steve, I have tried your suggestions but still will not work. I should add this is a laptop and I have also tried turning touch screen on and off

User: philranger

Date: Aug 28, 2021 13:50:00 GMT

hello, on my own laptop I needed to hold the “Fn” (function) key to access the F keys (I solved it but don’t remember how). I also reassigned all of my hotkeys to avoid using ctrl as depending in which software I was using the macro I would get strange behaviours (software eating keystrokes)

User: Steve

Date: Aug 29, 2021 21:50:35 GMT

Aug 28, 2021 3:47:16 GMT Tankman said: Thanks Steve, I have tried your suggestions but still will not work. I should add this is a laptop and I have also tried turning touch screen on and off Ok so you ran a test with no applications open and with changing the hotkey to something other than the default and this still didn’t work.
As philranger suggested I would be looking at something with you laptop like function lock. To test this out, change the hotkey to something like CTRL+M. If it runs then we know its the function lock.

User: Tankman

Date: Aug 29, 2021 23:42:25 GMT

Thanks Steve, I have got the hotkeys to work. The mistake I made was that I only changed the “stop macro running” instead of changing all of them to “alt”. Thanks for your help

User: Julio

Date: Dec 13, 2021 16:08:01 GMT

A mi me pasa lo mismo con ctrl+f6 que a Tankman. No me funciona para detener la macro. ¿Se ha encontrado alguna solución? Saludos

User: mini

Date: Jul 13, 2022 17:46:16 GMT

can anyone say the select all and paste option for macro click file

1 | RUN ACTION | WAIT SECONDS | 2
2 | 696 | 564 | 0 | Left Click
3 | RUN ACTION | WAIT SECONDS | 2
4 | 832 | 491 | 0 | Left Click
5 | 832 | 491 | 0 | Left Click
6 | 832 | 491 | 0 | Left Click
7 | X | X | 10 | Keypress Ctrl+v

this code doesnt work

User: Steve

Date: Jul 13, 2022 21:55:09 GMT

Jul 13, 2022 17:46:16 GMT mini said: can anyone say the select all and paste option for macro click file Hi, Please start a new thread. You’ve jumped in on an unrelated issue from six months ago…


Using excel instead of notepad

URL: https://minimousemacro.proboards.com/thread/606/using-excel-notepad
Date: Jul 9, 2022 0:28:57 GMT

User: revird

Date: Jul 9, 2022 0:28:57 GMT

Hi Folks, great program, used the free version for a long time, now a pro user, recommend it to all, anyway, I have the following in some of my macros

19 | RUN ACTION | OUTPUT TO FILE | C:\MMM\Logs\email.log::APPEND_NEWLINE::%STRING%, NewEmail= %STRING1%, UserID= %STRING3%, OldEmail= %STRING2%  and so on.

I would love to be able to put the output into an excel file string1 into cell A3 strings2 into D3 and things like that, but I do not want to have the excel file open all the time, like I don’t need to have notepad open now. Is this possible? I can see how to do it by recording mouse movements and copying and pasting, but trying to get away from that. Thanks, pete.

User: Steve

Date: Jul 10, 2022 8:25:14 GMT

Hi revird

I’d do this by writing out to a csv file and then opening that csv file in excel when im done. Instead of outputting to a email.log in your example, output to email.csv.

1 | RUN ACTION | OUTPUT TO FILE | D:\Dropbox\Macro\File\myfiles\email.csv::APPEND_NEWLINE::date, NewEmail, UserID, OldEmail
2 | RUN ACTION | OUTPUT TO FILE | D:\Dropbox\Macro\File\myfiles\email.csv::APPEND_NEWLINE::%date%,sally@gmail.com,sallyG,sally@hotmail.com
3 | RUN ACTION | OUTPUT TO FILE | D:\Dropbox\Macro\File\myfiles\email.csv::APPEND_NEWLINE::%date%,bob@gmail.com,BobG,bob@hotmail.com

minimousemacro-csv.png

User: revird

Date: Jul 10, 2022 9:26:16 GMT

Thank you, very much I will start changing things now, thanks heaps.

User: revird

Date: Jul 11, 2022 0:24:48 GMT

Thanks, I noticed the layout of a csv file cant be saved, some of the strings are large, it puts them in ok, but need to widen the cells to read it, even after saving, worksheet is the way to go, but it complains when I try to view an xlsx file. thanks again for your help

User: philranger

Date: Jul 11, 2022 10:22:55 GMT

Hello, An excel file is a zip file renamed as .xlsx. Once unzipped, it contains many folders and files which can be understood, but creating one from Mini Mouse Macro would be quite tedious. A workaround could be that when proper formatting is needed, you do a « save as » from excel to temporarily convert your file to an xlsx one?


click the Detected image

URL: https://minimousemacro.proboards.com/thread/474/click-detected-image
Date: Aug 11, 2021 7:48:16 GMT

User: martinp

Date: Aug 11, 2021 7:48:16 GMT

Hello everyone, I know the question I’m going to ask is extremely simple but I am new to the program and can’t find a way how to solve it. All I need is to click the detected image using the DETECT IMAGE condition. As a matter of fact even this code doesn’t work, it just gives me exactly “%XV% %YV%” message:

3 | IF | DETECT IMAGE | image path C:\Users\martinp\1.png::match quick::move mouse no::save to vars XV YV | IMAGE FOUND | MESSAGE PROMPT | %XV% %YV%::::0::OK

The image is found correctly, if I select “move mouse yes”, then coursor is always moved. I just need it to be clicked as well…

Thank you very much, it will save me a tons of time.

User: Steve

Date: Aug 11, 2021 8:42:43 GMT

Hi Martinp, I’m not sure why your variables aren’t being declared properly for the detect image action (<www.turnssoft.com/conditions.html#detectimage>). The syntax you have is solid and should work as described.

I have a solution to get your click working at the image location:

1 | IF | DETECT IMAGE | image path C:\Users\martinp\1.png::match quick::move mouse yes | IMAGE FOUND | CONTINUE
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay
  • At line 1 we move the mouse to the image. We use ‘CONTINUE’ here to wait until the image is found on the screen.
  • At line 2 we do the mouse click. The internal variables %MOUSE_X% and %MOUSE_Y% will automatically populate with the new mouse X and Y values as the mouse moves with line 1.

If we know the image is going to be on the screen and match then we could use MOUSE TO IMAGE (<www.turnssoft.com/conditions.html#mousetoimage>) as an alternative to an IF condition:

1 | RUN ACTION | MOUSE TO IMAGE | image path C:\Users\martinp\1.png::match quick::move mouse yes
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay

I’ll chase up the variables not defining issue too.  This looks like it might be a bug….I did a lot of testing with this DETECT IMAGE code prior to release so i’ll be kicking myself if it is.

Hope this helps.

User: martinp

Date: Aug 11, 2021 10:49:04 GMT

Hello Steve, it does wonders, thank you very much. This program and it’s support is pure gold. You can’t even imagine how many hours I have saved already with repetitive manual work in SAP. So far I was using PIXEL COLOR which defined if screen has been updated and macro can continue. This DETECT IMAGE functionality works like magic when the layout changes quite often. I haven’t even taped into the potential of this program and I am already amazed. Thang you again for your support.

User: Steve

Date: Aug 13, 2021 4:53:26 GMT

Thanks Martin.
Its always good to hear how this little program is helping so many people to get work done. I’ glad you found a good use for it.

User: Acor

Date: Feb 12, 2022 19:15:59 GMT

I can’t get image detection. @steve, how that actually works? Do you grab a screenshot and look for the similar pixel array from the image file or you use some more sophisticated algorithm? Thanks

User: Acor

Date: Feb 13, 2022 12:46:18 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Aug 11, 2021 8:42:43 GMT

Steve said: Hi Martinp, I’m not sure why your variables aren’t being declared properly for the detect image action (<www.turnssoft.com/conditions.html#detectimage>). The syntax you have is solid and should work as described. I have a solution to get your click working at the image location:

1 | IF | DETECT IMAGE | image path C:\Users\martinp\1.png::match quick::move mouse yes | IMAGE FOUND | CONTINUE
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay

At line 1 we move the mouse to the image. We use ‘CONTINUE’ here to wait until the image is found on the screen. At line 2 we do the mouse click. The internal variables %MOUSE_X% and %MOUSE_Y% will automatically populate with the new mouse X and Y values as the mouse moves with line 1. If we know the image is going to be on the screen and match then we could use MOUSE TO IMAGE ( <www.turnssoft.com/conditions.html#mousetoimage> ) as an alternative to an IF condition:

1 | RUN ACTION | MOUSE TO IMAGE | image path C:\Users\martinp\1.png::match quick::move mouse yes
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay

I’ll chase up the variables not defining issue too.  This looks like it might be a bug….I did a lot of testing with this DETECT IMAGE code prior to release so i’ll be kicking myself if it is. Hope this helps.

User: Acor

Date: Feb 13, 2022 12:47:43 GMT

Non of the commands works for me

User: Steve

Date: Mar 7, 2022 21:09:16 GMT

Feb 13, 2022 12:47:43 GMT Acor said: Non of the commands works for me Hi Acor, Sorry for the late reply. If your still having an issue with this can you start a new thread and tag me. Cheers, Steve.

User: Mehul Mishra

Date: Jun 24, 2022 17:23:41 GMT

The detect image does not work for me at all I have been trying to get it to work for months. Can someone help me with this ? I have tried several different images on several different websites. Mini mouse macro is never able to detect the image

User: Steve

Date: Jun 24, 2022 20:58:36 GMT

Jun 24, 2022 17:23:41 GMT Mehul Mishra said: The detect image does not work for me at all I have been trying to get it to work for months. Can someone help me with this ? I have tried several different images on several different websites. Mini mouse macro is never able to detect the image Hi Mehul, Checkout this thread minimousemacro.proboards.com/thread/578/possibility-detecting-clicking-image-screen and download the latest version of Mini Mouse Macro. Some improvements have been made to the detect image function.

User: Mehul Mishra

Date: Jun 27, 2022 0:40:53 GMT

Hi Steve I followed your steps . It still did not work I unscaled and scaled the screen tried both 100% and 125% I have uploaded the video of my screen (this one is scaled but it still does not work with unscaled)

User: Mehul Mishra

Date: Jun 27, 2022 0:44:16 GMT

Jun 27, 2022 0:40:53 GMT Mehul Mishra said: Hi Steve I followed your steps . It still did not work I unscaled and scaled the screen tried both 100% and 125% I have uploaded the video of my screen (this one is scaled but it still does not work with unscaled) The above video was at 125% . The screenshot tool works fine at 100% however the image detection still does not work.

User: cyberchipz

Date: Jul 8, 2022 19:55:28 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Aug 11, 2021 8:42:43 GMT

Steve said: Hi Martinp, I’m not sure why your variables aren’t being declared properly for the detect image action ( <www.turnssoft.com/conditions.html#detectimage> ). The syntax you have is solid and should work as described. Steve, It seems you’re saying variables do not need to be initialized before using detect. I did not know this; but I had to start declaring them at the beginning of the code because, if the image is not found, this is what happens… If you use variables in the detect say: MYX MYY and the image isn’t found.. and if the variables are not declared, and I printed them out in a message I got “%MYX% %MYY% in the displayed text. I simply realized, if I want a usable value to use to click or just know if it found the image… I had initialize the variables to zero at the start of the code. So, reading that they should be declared in a detect even if the image isn’t found surprised me; and I felt the need to comment. So, what I’m saying is “Yes, I found that the variables are declared, IFF the image is found” and “The variables are not declared when the image is not found”. At least that’s been my experience. If this has been fixed; I’ll cop out by saying.. Afterward, I just always declared them and didn’t notice when it got fixed and I no longer needed to do that! ;-) Just trying to help! :-) Chip


pixel range

URL: https://minimousemacro.proboards.com/thread/433/pixel-range
Date: Jun 18, 2021 22:57:33 GMT

User: asemmohsen

Date: Jun 18, 2021 22:57:33 GMT

im kinda new to mmm and was wondering how to move the mouse location to the exact pixel that changed

User: philranger

Date: Jun 20, 2021 0:05:56 GMT

Hello, I’m not aware if MMM can do this but I’m far from all-knowing. I suggest asking technical questions in the “questions and help” section, as this one is less frequented and more for general chitchat.

User: noradavis123

Date: Jul 7, 2022 9:00:26 GMT

For most images, pixel values are integers that range from 0 (black) to 255 (white). The 256 possible gray intensity values are shown below. The range of intensity values from 0 (black) to 255 (white). Even if you view the full-size image, clicker counter  it is difficult to see the individual pixel intensities. These pixel values denote the intensity of the pixels. For a grayscale or b&w image, we have pixel values ranging from 0 to 255. The smaller numbers closer to zero represent the darker shade while the larger numbers closer to 255 represent the lighter or the white shade The most common pixel format is the byte image, where this number is stored as an 8-bit integer giving a range of possible values from 0 to 255.Generally the pixel values start from 0 (it makes sense since it generally corresponds to no-light) then the maximum value becomes 255


Detect image not working

URL: https://minimousemacro.proboards.com/thread/602/detect-image-working
Date: Jun 24, 2022 17:27:20 GMT

User: Mehul Mishra

Date: Jun 24, 2022 17:27:20 GMT

I have been trying to get the detect image to work for months but mini mouse macro is never able to detect the image Has anyone ever been able to get this to work ?

User: Mehul Mishra

Date: Jun 24, 2022 17:32:22 GMT

Steve Is there anyway you can help me with this ? I load the image on the detect image popup but the image is never detected. Even if i isolate the area.

User: philranger

Date: Jun 24, 2022 22:41:05 GMT

Wrong forum area, might take longer to be answered (if at all)!

User: zeak

Date: Jun 27, 2022 4:12:13 GMT

Hi Mehul Mishra, Is the image in a game or does the image contain transparent parts?

User: Mehul Mishra

Date: Jun 29, 2022 13:32:42 GMT

Hi Zeak No it isn’t I tried to make a video as well

User: Mehul Mishra

Date: Jun 29, 2022 13:33:16 GMT

USoWV0dWXmFkYDAjTGiw.jpg Jun 24, 2022 22:41:05 GMT

philranger said: Wrong forum area, might take longer to be answered (if at all)! Oh Where should i post ?

User: philranger

Date: Jul 1, 2022 13:40:33 GMT

Hello, It’s now ok, a moderator moved it here!

User: Mehul Mishra

Date: Jul 2, 2022 0:07:11 GMT

Okay thanks Steve Did you get a chance the see the video ? I am open for a zoom call to show you the issue if that helps

User: Steve

Date: Jul 2, 2022 2:42:37 GMT

Hi Mehul Mishra, I had a look today at your video. Thanks for posting by the way, it really helps this troubleshooting.
First thing I’m thinking is your screen scaling. Have a look at this post minimousemacro.proboards.com/thread/578/possibility-detecting-clicking-image-screen . Are you scaling your current desktop screen res? I noticed a big lag when you clicked on controls within MMM. This was odd. MMM should not be lagging at all like that. Is something affecting your performance at the moment?

User: Mehul Mishra

Date: Jul 2, 2022 22:45:07 GMT

Hi Steve I tried working on 100% resolution . Now it works about 20% of the time. But i cannot pin point why it does not work the other times This is a video of me trying other times Lagging is not an issue that was a one of incident From what i can tell the detect image only works if i take the screen capture from within mini mouse macro multiplle times and i get lucky and there is no transparent overlap of the menu (see video for reference) I does not work if i take the default screenshot tool from windows

User: Steve

Date: Jul 3, 2022 0:46:52 GMT

Hi Mehul Mishra, Can I confirm your running with MMM version 8.4?
I’m not sure why your capture is not working as expected. What are you running this on? A laptop, and if so what resolution. I know you said the performance issues in one of your video’s was a one off. Do you regularly has these kind of issues and if so what kind of loads are you running with? I’ve been assuming your build isn’t virtualized. Can you confirm your desktop isn’t a VM running through a hypervisor or any remote desktop/VNC software? I ran a quick test with version 8.4 and could not replicate your issue.  The screen recording below is from my primary monitor at 1920/1080 res with no additional scaling.  The captures both detected first attempt. minimousemacro_detectimage_face.gif

User: Mehul Mishra

Date: Jul 6, 2022 0:14:38 GMT

Hi Steve . As shown in the video i posted yes i am using a laptop with 100% resolution. Display settings are 1920*1080 No the loading issue was one off. I don’t regularly have those issues. Infact it is not there in the second video that i posted I am not using a hypervisor or virtualbox. It works 20% of the time with 100% scaling. If you want i can show you the issue on a zoom call. I have two windows laptops the issue is the same in both of them

User: Steve

Date: Jul 6, 2022 6:04:23 GMT

Can I confirm your running with MMM version 8.4? With version 8.4 the code was tweaked for the detect image function to make it more accurate. If your not use 8.4 download 8.4 and run your code. If your using 8.4 download 8.3.3 from here and see if the older version that carries the original does give you same result.


Running MMM from Word VBA

URL: https://minimousemacro.proboards.com/thread/604/running-mmm-word-vba
Date: Jun 29, 2022 14:06:27 GMT

User: drybsmt

Date: Jun 29, 2022 14:06:27 GMT

I am trying to have a Word macro load and run MMM,

Sub openMMM()
Dim Macro As String

Macro = "D:\Dropbox (DRYBSMT)\Software\Mini Mouse Macro\WordAutomation\SaveToMax.mmmacro"
Shell ("D:\Dropbox (DRYBSMT)\Software\Mini Mouse Macro\minimousemacro.exe /m /d:0001" & Macro)

End Sub

The error says:  Error loading with arguments Is there an issue the code?

User: philranger

Date: Jun 29, 2022 22:00:37 GMT

Hello I’m not familiar with launching external programs from vba but isn’t there a space missing before macro ? Shell (“D:\Dropbox (DRYBSMT)\Software\Mini Mouse Macro\minimousemacro.exe /m /d:0001 “ & Macro)

User: Steve

Date: Jul 3, 2022 1:18:37 GMT

Have a look at the command line switch options at the FAQ link.

With version 1.4+ command line switches were introduced. Command line switches are used for scripting Mini Mouse Macro and also allow the app to be task scheduled in Windows.

The command line options and syntax are below:

MiniMouseMacro                     [/?]
                                   [/h]
                                   [/l:x]
                                   [/m]
                                   [/e]
                                   [/d:x]
                                   ["file path"]
     Options:
    /h - Display this help menu
    /? - Display this help menu
    /l:x  - Enable loop option for macro (0 = infinite)
    /m - Minimize to tray
    /e - End program and close after macro (wins over /l:0)
    /d:x - Delay macro x amount of milliseconds
    ["file path"] - Path to .mmmarco macro file to load
     Examples:
               MiniMouseMacro "d:\Macro Files\mymacro.mmmacro"
                 - Runs the macro mymacro.mmmacro
               MiniMouseMacro /m /l:0 "d:\Macro Files\mymacro.mmmacro"
                 - Runs macro minimized with the infinite loop option checked
               MiniMouseMacro /m /l:4 /e /d:2000 "d:\Macro Files\mymacro.mmmacro"
                 - Runs macro minimized, loops 4 times, start delay of 2 seconds and exiting after completion.

5491027.png?483.8009049773756


“FOR | EACH | FILE IN | %STRING% | DO” does not work

URL: https://minimousemacro.proboards.com/thread/605/file-string-work
Date: Jul 1, 2022 14:25:37 GMT

User: robert

Date: Jul 1, 2022 14:25:37 GMT

I want to process all files in a chosen folder. The only way I can think of for choosing the folder without editing the macro is via an input box. However, I cannot get variables to work in FOREACHFILE IN. See minimum reprex below.
1 | RUN ACTION | INPUT BOX | Paste path for files to be processed::Choose folder::STRING
2 | FOR | EACH | FILE IN | %STRING% | DO
3 | RUN ACTION | MESSAGE PROMPT | %FILE.NAME%::File name::2::OK
4 | FOR | NEXT

This just gives an error message “The path %STRING% does not exist or cannot be read. I have checked that %STRING% does contain the path name correctly, and if pasted verbatim instead of %STRING% this works fine. Is there any other way to achieve this?

User: Steve

Date: Jul 3, 2022 1:14:14 GMT

Hi robert Yep it makes sense that FOR EACH FILE should be able to take a variable string but it doesn’t and fails like this. I’ve added it as a bug under <www.turnssoft.com/bugtrack.html#bugs> and will fix it next update. Thanks
wink.png


I am having trouble combining several macros into one macro.

URL: https://minimousemacro.proboards.com/thread/589/having-trouble-combining-macros-macro
Date: Jun 20, 2022 20:14:18 GMT

User: joe

Date: Jun 20, 2022 20:14:18 GMT

I have two macros that work great on their own. The problem starts when I try to combine the macros. In the first macro it opens my surfshark vpn, clicks on the surfshark search bar to erase what ever was in the search bar, and then it types in “albania”.

* | Open Vpn And Type Location
1 | RUN ACTION | RUN PROGRAM | C:\Program Files (x86)\Surfshark\Surfshark.exe
2 | RUN ACTION | RUN MACRO INLINE | C:\Users\josep\Desktop\MiniMouseMacros\erase vpn location.mmmacro
7 | RUN ACTION | KEYPRESS | albania

In the second macro it looks for the albania icon and clicks on it if it is located. If it does not locate the albania icon it opens a word document called nice hash.

* | Click on Vpn Location
2 | IF | DETECT IMAGE | image path C:\Users\josep\Desktop\MiniMouseMacros\albania.bmp::at 38 86 177 174::match quick::move mouse yes | IMAGE NOT FOUND | GOTO MACRO LINE | NotDetected
* | ImageDetected
4 | RUN ACTION | MOUSE CLICK | Left click at 113 146 1 times with 0 ms delay
5 | RUN ACTION | GOTO MACRO LINE | AfterDetectionCode
* | NotDetected
7 | RUN ACTION | RUN PROGRAM | C:\Users\josep\Desktop\nice hash.docx
* | AfterDetectionCode

I combine the two macros into the macro below:

* | Open Vpn And Type Location
1 | RUN ACTION | RUN PROGRAM | C:\Program Files (x86)\Surfshark\Surfshark.exe
2 | RUN ACTION | RUN MACRO INLINE | C:\Users\josep\Desktop\MiniMouseMacros\erase vpn location.mmmacro
3 | RUN ACTION | KEYPRESS | albania
* | Click on Vpn Location
4 | IF | DETECT IMAGE | image path C:\Users\josep\Desktop\MiniMouseMacros\albania.bmp::at 38 86 177 174::match quick::move mouse yes | IMAGE NOT FOUND | GOTO MACRO LINE | NotDetected
* | ImageDetected
5 | RUN ACTION | MOUSE CLICK | Left click at 113 146 1 times with 0 ms delay
6 | RUN ACTION | GOTO MACRO LINE | AfterDetectionCode
* | NotDetected
7 | RUN ACTION | RUN PROGRAM | C:\Users\josep\Desktop\nice hash.docx
* | AfterDetectionCode

The macro works perfectly if “albania” is the surfshark search bar when line 1 runs and then in line 2 the macro will delete what was in the search bar and then it will type “albania” in the search bar when it runs line 3. And the rest of the macro runs perfectly. If any other word besides “albania” is in the search bar before line 2 runs then lines 1-5 will run perfectly but then line 7 will run. Line 7 should not run because lines 1-5 ran perfectly. Its as if the macro remembers what location was in the vpn search bar before it erased it, types in the albania location and clicks on the icon, and then executes line 7. In summary, if I run the macros separately everything goes according to plan. But when I combine the two macros it doesn’t work.

User: jeff

Date: Jun 22, 2022 3:35:45 GMT

I suggest adding some wait time before any image / pixel reading. They occur basically instantly but screens have to “refresh” and that refresh delay could be causing the issue. Try putting this before the  DETECT IMAGE line.

51 | RUN ACTION | WAIT MILLISECONDS | 250

I also don’t recommend clicking with 0 ms delay. I find 77 to be good but 30-50 range will usually work. When you start going below 20ms for things, the program (the one you are scripting) might not keep up with your clicks.

User: joe

Date: Jun 23, 2022 0:58:31 GMT

Thanks Jeff, I appreciate your help. I will try this.

User: joe

Date: Jun 23, 2022 1:24:52 GMT

Hey Jeff, I added the wait time that you suggested below and it didn’t work. So I changed the wait time from 250 to 500 and it worked. Why do you think it 500 worked for me? Is it because my screen refreshes at a slower rate?

51 | RUN ACTION | WAIT MILLISECONDS | 250

Thanks again for your help!

User: jeff

Date: Jun 23, 2022 2:43:20 GMT

Not necessarily your screen, but more the program. If the program is kind of laggy and takes a bit to settle, like lots of new poorly programmed animations you see these days, then you will need more time for that program to finish settling on the final pixels that your eyes actually see. Glad to hear it worked though! smiley.png


How do I make a macro that holds down / toggles left alt?

URL: https://minimousemacro.proboards.com/thread/590/make-macro-holds-toggles-left
Date: Jun 20, 2022 20:34:55 GMT

User: Novus

Date: Jun 20, 2022 20:34:55 GMT

I have enabled left alt in the settings and I want left alt to be held, not repeatedly pressed. How do I do this? Thank you

User: Steve

Date: Jun 22, 2022 8:37:18 GMT

Jun 20, 2022 20:34:55 GMT Novus said: I have enabled left alt in the settings and I want left alt to be held, not repeatedly pressed. How do I do this? Thank you For this you also need to enable ‘Enable key down capture’ from ‘Record Options - Key Capture’. what this does is capture the key down/up events for each key. Essentially recording the lenght of time a key is held.

1 | 852 | 427 | 1117 | Left Click Down
2 | 852 | 427 | 60 | Left Click Release
3 | 852 | 427 | 1623 | Keypress menu | Key Down
4 | 852 | 427 | 1 | Keypress f 
3 | 852 | 427 | 1623 | Keypress menu | Key Up

This example above clicks into a open notepad document and runs a alt+f with the alt key held.


detect image skip if image is not detected in 1 minute

URL: https://minimousemacro.proboards.com/thread/588/detect-image-skip-detected-minute
Date: Jun 18, 2022 21:12:57 GMT

User: joe

Date: Jun 18, 2022 21:12:57 GMT

I am trying to create a macro that looks for an image on the screen, but then if the image is not located then I would like the macro to skip to a different macro line. How do I do this?

User: Steve

Date: Jun 18, 2022 23:34:47 GMT

Hi joe

You can do this with conditions ( <www.turnssoft.com/conditions.html> ) and controlling the macro flow with the GOTO action ( <www.turnssoft.com/conditions.html#gotomacroline> ). The %TIME_MACRO% variable is an internal variable that records the current running macro time in seconds.

* | DETECT
1 | IF | DETECT IMAGE | image path D:\Macro\File\pics\face.bmp::at 90 426 177 174::match quick::move mouse no | IMAGE FOUND | GOTO MACRO LINE | FOUND
2 | IF | INTEGER VARIABLE | %TIME_MACRO% | < | 61 | GOTO MACRO LINE | DETECT
* | FOUND

User: joe

Date: Jun 20, 2022 19:35:11 GMT

Thank you again Steve.


If Then Else statement?

URL: https://minimousemacro.proboards.com/thread/585/statement
Date: Jun 9, 2022 5:29:23 GMT

User: joe

Date: Jun 9, 2022 5:29:23 GMT

Hello I am trying to make a macro that would do the following:

  1. Look at the computer screen for “image A”.
  2. Then if it finds “image A” it would need to click on the image.
  3. But if “image A” is not on the the computer screen then I need the macro to skip ahead to a different macro line. I think I need to use an “If Then Else” statement but I am not really sure how to do this using the “Add Condition” box. Thanks!

User: Steve

Date: Jun 9, 2022 9:40:30 GMT

Hi joe

Something like this:

1 | IF | DETECT IMAGE | image path C:\Users\steph\Dropbox\Macro\File\pics\capture.bmp::match quick::move mouse yes | IMAGE FOUND | THEN
   2 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 0 ms delay
3 | IF | ELSE
   4 | RUN ACTION | GOTO MACRO LINE | 10
5 | IF | END IF

Have a look here <www.turnssoft.com/conditions.html#thenelse> for more on if-then-else, and here <www.turnssoft.com/conditions.html#detectimage> for detect image.

User: joe

Date: Jun 10, 2022 3:41:37 GMT

Thanks Steve! This works but not in the exact way that I had hoped it would. Using your example below, if the image in line 1 is detected then line 2 and 4 are executed. And if the image in line 1 is not detected then line 4 is executed. What I am trying to do is if the image in line 1 is detected then only line 2 is executed (and line 4 does not get executed). And if the image in line 1 is not detected then only line 4 is executed. Is this possible?

1 | IF | DETECT IMAGE | image path C:\Users\steph\Dropbox\Macro\File\pics\capture.bmp::match quick::move mouse yes | IMAGE FOUND | THEN
   2 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 0 ms delay
3 | IF | ELSE
   4 | RUN ACTION | GOTO MACRO LINE | 10
5 | IF | END IF

Thanks again!

User: Steve

Date: Jun 10, 2022 5:11:01 GMT

0SwESFBlUJWD0SFzApgP.jpg Jun 10, 2022 3:41:37 GMT

joe said: Using your example below, if the image in line 1 is detected then line 2 and 4 are executed. And if the image in line 1 is not detected then line 4 is executed. What I am trying to do is if the image in line 1 is detected then only line 2 is executed (and line 4 does not get executed). And if the image in line 1 is not detected then only line 4 is executed. Is this possible? Hi joe What version of MMM are you using?
The syntax for the IF - THEN - ELSE is correct and should only run line 2 if line 1 returns true and should only run line 4 if line 1 returns false. The behavior your describing makes me think your running an older version that isn’t compatible with the IF - THEN - ELSE statement.

User: joe

Date: Jun 12, 2022 22:41:30 GMT

version 8.3.3.0

User: cyberchipz

Date: Jun 14, 2022 16:07:37 GMT

0SwESFBlUJWD0SFzApgP.jpg Jun 10, 2022 3:41:37 GMT

joe said: This works but not in the exact way that I had hoped it would. Using your example below, if the image in line 1 is detected then line 2 and 4 are executed. And if the image in line 1 is not detected then line 4 is executed. What I am trying to do is if the image in line 1 is detected then only line 2 is executed (and line 4 does not get executed). And if the image in line 1 is not detected then only line 4 is executed. Is this possible?

1 | IF | DETECT IMAGE | image path C:\Users\steph\Dropbox\Macro\File\pics\capture.bmp::match quick::move mouse yes | IMAGE FOUND | THEN
   2 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 0 ms delay
3 | IF | ELSE
   4 | RUN ACTION | GOTO MACRO LINE | 10
5 | IF | END IF

I know you want an IF THEN ELSE statement; but I would handle it like this..

* | SimpleVersion
1 | IF | DETECT IMAGE | image path C:\Users\steph\Dropbox\Macro\File\pics\capture.bmp::match quick::move mouse yes | IMAGE NOT FOUND | RUN ACTION | GOTO MACRO LINE | NotDetected
* | ImageDetected
2 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 0 ms delay
* | Or alternately this left click
3 | %mouse_x% | %mouse_y% | 57 | Left Click 
9 | RUN ACTION | GOTO MACRO LINE | AfterDetectionCode
* | NotDetected
10| . Insert not detected code here
* | AfterDetectionCode
* | Complex Version 
1 | IF | DETECT IMAGE | image path C:\Users\steph\Dropbox\Macro\File\pics\capture.bmp::match quick::move mouse yes | IMAGE NOT FOUND | RUN ACTION | GOTO MACRO LINE | 10
* | ImageDetected
2 | %mouse_x% | %mouse_y% | 57 | Left Click 
3 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %FOUNDCAPTURE%::TRUE
* | I only added line above if I need to know later if the image had been clicked or detected.
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %CAPTUREX%::%mouse_x%
5 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %CAPTUREY%::%mouse_y%
* | I added the above line if I need to click it later; with the boolean TRUE I know this is the detected location

Additional Code if needed.

* | I only added lines above if I need to know where to click later.
9 | RUN ACTION | GOTO MACRO LINE | AfterDetectionCode
* | NotDetected
10| 987 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %FOUNDCAPTURE%::FALSE
* | I only added line above if I need to know later if the image had NOT been clicked or detected.
11 | Insert Code Here for Not Detected
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %CAPTUREX%::456
3 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %CAPTUREY%::789
* | I only added lines above if I need to know where to click if I didn't find the image (default determined manually: ie: if the image changes or moved..
* | With the manually entered location, if the image is not detected, I can still click it if I need to and with boolean FALSE I know it's my own values it's using.
* | AfterDetectionCode

Thanks again!

User: joe

Date: Jun 18, 2022 20:09:07 GMT

Thank you CyberChipz, I think that worked!


Multiple pixel color conditions

URL: https://minimousemacro.proboards.com/thread/582/multiple-pixel-color-conditions
Date: Jun 5, 2022 16:18:18 GMT

User: pitchninja

Date: Jun 5, 2022 16:18:18 GMT

Hello, I am trying to have Mmm look and see whether 5 different parts of the screen equal a certain color. If they all equal, the colors specified then it should go to another macro line. The only way I know of how to do this is by adding an AND action and so I came up with a very long row that looks like this:

47 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:353] | IS THE SAME | GOTO MACRO LINE | 57 | AND | 1 | IF | PIXEL COLOR | Color [R=86, G=119, B=29]::At Location [X:980 Y:477] | IS THE SAME | GOTO MACRO LINE | 57 | AND | 1 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:596] | IS THE SAME | GOTO MACRO LINE | 57 | AND | 1 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:978 Y:720] | IS THE SAME | GOTO MACRO LINE | 57 | AND | 1 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:979 Y:842] | IS THE SAME | GOTO MACRO LINE | 57

It’s weird because it is working most of the time but sometimes it is not. It will actually jump to macro line 57 before all 5 conditions are met.

I am not as familiar with conditions, but is there a better way to have done this? To make it so that the loop that  this is in is looking to see these 5 different spots are matching the color specified before it jumps to the specified line?

User: pitchninja

Date: Jun 6, 2022 1:15:58 GMT

Okay I found the solution, though if someone has a better one I am open to it. I had to separate the code into 5 different lines and use Else in the code.

47 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:353] | IS THE SAME | GOTO MACRO LINE | 48 | ELSE | 47 | RUN ACTION | GOTO MACRO LINE | 53
48 | IF | PIXEL COLOR | Color [R=86, G=119, B=29]::At Location [X:980 Y:477] | IS THE SAME | GOTO MACRO LINE | 49 | ELSE | 48 | RUN ACTION | GOTO MACRO LINE | 53
49 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:596] | IS THE SAME | GOTO MACRO LINE | 50 | ELSE | 49 | RUN ACTION | GOTO MACRO LINE | 53
50 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:978 Y:720] | IS THE SAME | GOTO MACRO LINE | 51 | ELSE | 50 | RUN ACTION | GOTO MACRO LINE | 53
51 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:979 Y:842] | IS THE SAME | GOTO MACRO LINE | 61 | ELSE | 51 | RUN ACTION | GOTO MACRO LINE | 53

So this is really a chain or waterfall condition. it would look for a pixel color in one row, if it found it, it would move onto the next line which looked for a pixel color in that row.

If it found it, it would then go to the next row to look for a pixel color for that row and so on. If at any point it did not match a pixel in a given row, it couldn’t go further. So it could not progress to row 5 if Row 4 condition hadn’t been fulfilled, could not progress to 4 if 3 hadnt been fulfilled etc.

If the conditions weren’t fulfilled it would basically start the loop over doing a sequence of actions that happened right before the pixel color check. But once it got to Row 51 which was the last row to fulfill the pixel condition, if it fulfilled it, it could then successfully jump to row 61 which is the beginning of a second sub Loop in that macro.

It was definitely an interesting macro to come up with for sure oh, and at least there it does have 100% consistency. I could see before though the reason why mine worked some of the time in the initial code that I pasted was because it was only looking truly for the first pixel color match which was actually the top row(sometimes the top row pixel color could be fulfilled before the other rows were causing it to prematurely jump to the next loop)

User: Steve

Date: Jun 6, 2022 6:48:45 GMT

Hi pitchninja

You could do this with some variables to make it run a little neater but what you have will do the trick and it’s easy to read and follow. I like it. I would change one thing though, I’d remove the positive catch on focus on the negative.

This removes any line processing that is not absolutely necessary. In my example I have changed ‘IS THE SAME’ to ‘IS NOT THE SAME’ and removed the else. If the line does match it will continue to the next line without any additional line processing.

47 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:353] | IS NOT THE SAME | GOTO MACRO LINE | 53
48 | IF | PIXEL COLOR | Color [R=86, G=119, B=29]::At Location [X:980 Y:477] | IS NOT THE SAME | GOTO MACRO LINE | 53
49 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:596] | IS NOT THE SAME | GOTO MACRO LINE | 53
50 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:978 Y:720] | IS NOT THE SAME | GOTO MACRO LINE | 53
51 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:979 Y:842] | IS NOT THE SAME | GOTO MACRO LINE | 53
52 | RUN ACTION | GOTO MACRO LINE | 61

User: pitchninja

Date: Jun 6, 2022 9:08:20 GMT

Ah good thinking. I like that better since it’s more concise. I will adjust it to function like that

User: zeak

Date: Jun 7, 2022 7:00:17 GMT

Hi pitchninja, I had a thought, not sure if it applies to your macro. If you had the colour on the screen ever appear in a different sequence then you were expecting then you run a tally check.

* | Color Check Loop
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %COLOR1%::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %COLOR2%::0
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %COLOR3%::0
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %COLOR4%::0
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %COLOR5%::0
6 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1212 Y:610] | IS THE SAME | DEFINE INTEGER VARIABLE | %COLOR1%::1
7 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:353] | IS THE SAME | DEFINE INTEGER VARIABLE | %COLOR1%::1
8 | IF | PIXEL COLOR | Color [R=86, G=119, B=29]::At Location [X:980 Y:477] | IS THE SAME | DEFINE INTEGER VARIABLE | %COLOR2%::1
9 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:596] | IS THE SAME | DEFINE INTEGER VARIABLE | %COLOR3%::1
10 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:978 Y:720] | IS THE SAME | DEFINE INTEGER VARIABLE | %COLOR4%::1
11 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:979 Y:842] | IS THE SAME | DEFINE INTEGER VARIABLE | %COLOR5%::1
13 | RUN ACTION | DEFINE INTEGER VARIABLE | %TALLYTOTAL%::%COLOR1%::+%COLOR2%::+%COLOR3%::+%COLOR4%::+%COLOR5%
13 | IF | INTEGER VARIABLE | %TALLYTOTAL% | IS NOT | 5 | GOTO MACRO LINE | Color Check Loop

This would work by checking each location and adding a Boolean to sum up at the end. If the sum total matches what your expecting then continue, if not then go back to start and check again.

User: cyberchipz

Date: Jun 16, 2022 16:26:13 GMT

I think you could shorten that one a bit…

* | ColorCheckLoop
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %COLOR1%::0
6 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:353] | IS THE SAME | DEFINE INTEGER VARIABLE | %COUNTER%::1
7 | IF | PIXEL COLOR | Color [R=86, G=119, B=29]::At Location [X:980 Y:477] | IS THE SAME | DEFINE INTEGER VARIABLE | %COUNTER%::+1
8 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:980 Y:596] | IS THE SAME | DEFINE INTEGER VARIABLE | %COUNTER%::+1
9 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:978 Y:720] | IS THE SAME | DEFINE INTEGER VARIABLE | %COUNTER%::+1
10 | IF | PIXEL COLOR | Color [R=85, G=118, B=28]::At Location [X:979 Y:842] | IS THE SAME | DEFINE INTEGER VARIABLE | %COUNTER%::+1
13 | IF | INTEGER VARIABLE | %COUNTER% | IS | 5 | GOTO MACRO LINE | MatchHandler
* | NoMatchHandler
* | Note - All done, do it again.
60 | RUN ACTION | GOTO MACRO LINE | ColorCheckLoop

If 5 colors don’t match, drops out of check, otherwise goes to the line you want to handle if success.  Same as zeak’s, but how I would do it.  Of course, Zeak’s is better if you need debugging and want to know which line failed. ;-) Chip


Second loop index check

URL: https://minimousemacro.proboards.com/thread/586/second-loop-index-check
Date: Jun 12, 2022 16:17:20 GMT

User: Mubashir

Date: Jun 12, 2022 16:17:20 GMT

I have multiple cards and search bar on my page. When the macro run for the first time it works exaclty as I want it to but  I have loop enable for my macro. ON the second loop instead of selecting the second card using tab , the program tabs in the search bar. How can I prevent this. I want certain thing to be done on all my cards. Is there a way to keep record of card on which the action was performed so that when the loop runs for the second time instead tabbing into the searchbar the second card is selected and so on.  

User: Steve

Date: Jun 12, 2022 22:30:59 GMT

Hi, The best way to ensure that your loop begins when you want it to is to use some conditional logic within your macro (<www.turnssoft.com/conditions.html>). Conditions within Mini Mouse Macro help script out the macro to ensure control over the logical flow.


Not looping all cells in excel

URL: https://minimousemacro.proboards.com/thread/584/looping-all-cells-excel
Date: Jun 8, 2022 15:40:50 GMT

User: Sony

Date: Jun 8, 2022 15:40:50 GMT

I tried to make a simple test copy cell 1 to cell 3 and cell 2 to cell 4 than let the mini mouse macro to continue the rest of the document after stopping to cell 4. But id does the same thing not going down to do the same operations for all the rows from the excel file. Any help what am I doing wrong? Thank you

User: Steve

Date: Jun 9, 2022 9:47:05 GMT

Hi Sony, Working with individual cells in Excel can always be a little finicky. It’s hard to say where your going wrong, for that we’re going to need a lot more info from you.
Generally, when working with excel try to use keyboard shortcuts as much as you can. This post might help minimousemacro.proboards.com/thread/580/copy-past-mini-mouse-macro . minimousemacro-Excel-Copy-To-Word.gif

User: Sony

Date: Jun 9, 2022 23:41:48 GMT

Hi Thanks for the reply. Here is my example

a  b  c  d       I am recording and starting to copy from cell a1 to c1 than from b1 to d1, and than I stop the recording and starting the play to automate the rest of the process, but when I press play doesn’t go to cell a2 it copy the value starting from b2 not from a2 as it should than from the b2 to d2…and so on….Is something wrong in the mini mouse macro settings? 1 ab 1 ab 2 cd
3 ef
4 gh

1 | -849 | 361 | 1232 | Left Click Down
2 | -849 | 360 | 35 | Mouse Movement
3 | -849 | 360 | 97 | Left Click Release
4 | -849 | 361 | 1036 | Keypress Ctrl+ | c
5 | -734 | 366 | 1490 | Left Click Down
6 | -734 | 366 | 119 | Left Click Release
7 | -734 | 366 | 865 | Keypress Ctrl+ | v
8 | -818 | 368 | 954 | Left Click Down
9 | -818 | 368 | 112 | Left Click Release
10 | -818 | 368 | 1194 | Keypress Ctrl+ | c
11 | -669 | 365 | 908 | Left Click Down
12 | -669 | 365 | 104 | Left Click Release
13 | -670 | 365 | 1566 | Keypress Ctrl+ | v
14 | -861 | 366 | 10378 | Left Click Down
15 | -861 | 366 | 149 | Left Click Release
16 | -861 | 368 | 2718 | Keypress down

User: Steve

Date: Jun 10, 2022 5:14:45 GMT

I dont think the problem is the macro settings. It’s more your use of mouse clicks. If you can, get away from mouse clicks.
In my example above and described in a little more detail here ( minimousemacro.proboards.com/thread/580/copy-past-mini-mouse-macro ), I don’t use mouse clicks but instead I use keyboard navigation within the cell. Also I make sure when I start the macro that the correct cell is selected.

User: philranger

Date: Jun 10, 2022 18:43:47 GMT

Hello 1- click on the cell you want the copy to go (destination), then clicking on the cell you want to copy (source), nothing in between. 2- Then record: ctrl-c Down Alt-tab Ctrl-v Down Alt-tab


IF Validation

URL: https://minimousemacro.proboards.com/thread/583/validation
Date: Jun 7, 2022 20:36:35 GMT

User: Miguelot

Date: Jun 7, 2022 20:36:35 GMT

Please some help to see what options I can use. I’m trying to validate if the number in the clipboard is “>3”, But in the IF option I only see “Text is” or “Text Contains”. Is there any option to evaluate this?

4 | IF | CLIPBOARD | VALUE | TEXT IS | 3 | MESSAGE PROMPT | Alert!!!::Alert!!::0::OK

User: Steve

Date: Jun 9, 2022 9:31:55 GMT

Hi Miguelot

To evaluate numbers you need to assign the clipboard to an INTEGER.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%CLIPBOARD%
2 | IF | INTEGER VARIABLE | %INTEGER% | > | 3 | MESSAGE PROMPT | Alert!::ALERT::0::Exclamation

See more here on integer and math use within MMM <www.turnssoft.com/conditions.html#integer_variable> .

User: Miguelot

Date: Jun 9, 2022 16:53:53 GMT

Thanks, it worked perfectly!


Macros for extended ASCII characters?

URL: https://minimousemacro.proboards.com/thread/581/macros-extended-ascii-characters
Date: Jun 2, 2022 16:34:01 GMT

User: Bob Engelhardt

Date: Jun 2, 2022 16:34:01 GMT

The extended ASCII characters don’t have keyboard keys, but can be entered with ALT sequences.  E.g., the degree symbol (°) can be entered by typing “ALT 0176”.  Is it possible to create an MMM macro that would do this & have it bound to a hotkey?  In other words, I would like to be able to enter the degree symbol simply by pressing a hotkey.  Thanks, Bob

User: cyberchipz

Date: Jun 2, 2022 18:09:06 GMT

Jun 2, 2022 16:34:01 GMT Bob Engelhardt said: The extended ASCII characters don’t have keyboard keys, but can be entered with ALT sequences.  E.g., the degree symbol (°) can be entered by typing “ALT 0176”.  Is it possible to create an MMM macro that would do this & have it bound to a hotkey?  In other words, I would like to be able to enter the degree symbol simply by pressing a hotkey.  Thanks, Bob Hmmm, programmable hot keys… sounds interesting. Perhaps something that ran an external macro would be very useful.  I imagine an instance of MMM would have to be running; but not necessarily.  One could easily write code to do a single action. I picture something like a menu code that would execute particular code when a “Hotkey” is pressed… in a menu this would be a jump to that code and stop. Perhaps, hotkeys that cause a jump to a line of code could be created. I’m just trying to think of ways this could be implemented in an existing MMM environment.  I’ve always kind of wanted to have a Menu type feature, other than an input line requesting a response; perhaps an interrupt that would force MMM to execute the code even if specific code monitoring keystrokes wasn’t running as a macro itself?  Could be heavy overhead to monitor key inputs, but not if it grabed the code, and then returned the any “non” hotkeys pressed back to the OS. (A short key monitoring wedge) Plus I know interrupts are sensitive to run time conditions… don’t want to overrun housekeeping actions….  the only thing it would need to do is recognize the hotkey pressed, if one, and pass the action to the system, activate MMM to run an external macro. It could use a dedicated memory space or file; be limited in function (size) and store small macros, be initialized at startup on the machine.  Might be a bit much. But, maybe not so much if one required a particular instance of MMM running to execute.  Conflicts could be an issue; first come, first serve. Sounds a little outside of MMM features though… still it’s interesting.  You may already have this embedded into MMM for handling “hotkeys” ;-)  I only wonder how we’d co-opt already claimed Hotkeys by the OS; this could be an issue.

User: Bob Engelhardt

Date: Jun 2, 2022 19:18:51 GMT

Maybe I used the term “hotkey” inappropriately, as MMM has “hotkeys”.  I merely meant having the macro assigned to a specific key.

User: philranger

Date: Jun 3, 2022 20:20:26 GMT

Hello, Maybe I don’t understand, but are you trying to assign a specific hotkey to your macro, like for example F3? This can be changed by clicking on the little house icon to open the menu <www.turnssoft.com/uploads/1/6/1/4/16147946/s865443635110418194_p17_i60_w640.png>

User: bobengelhardt

Date: Jun 3, 2022 22:04:35 GMT

I realize now that what I want, is to do Quick Launch of the macro, using a key that I’d pick.  That would be straight forward.  The hard part is getting the code sent.  I have tried “Keypress %integer%” with integer set to 176, but that sends “1”,”7”,”6”.  Recording “ALT 0176” gives:

1 | 34 | 74 | 150 | Keypress Alt+ | numpad0
2 | 34 | 74 | 150 | Keypress Alt+ | numpad1
3 | 34 | 74 | 150 | Keypress Alt+ | numpad7
4 | 34 | 74 | 150 | Keypress Alt+ | numpad6

Playing that gives

06/03/2022 05:36:41.12 PM Playback error:  1 | 34 | 74 | 150 | Keypress Alt+ | numpad0 - Not a standard action [not an error]: Keyword 'numpad0' is not valid.

Then I tried “1 | 34 | 74 | 150 | Keypress °” which gave “ 06/03/2022 05:56:46.75 PM Macro playback finished”, but didn’t send “°” Getting even more basic, “1 | 34 | 74 | 150 | Keypress Z” didn’t send “Z” either. My basic problem is just not having a clue.

User: Steve

Date: Jun 4, 2022 1:01:16 GMT

Hi bobengelhardt Unfortunately MMM cannot paste your ASCII chars from a keyboard entry. The only way to get these down is to copy them into the internal clipboard and paste them.

1 | RUN ACTION | SELECT WINDOW BY NAME | ASCII.txt - Notepad
2 | RUN ACTION | COPY TO CLIPBOARD | °
3 | RUN ACTION | WAIT MILLISECONDS | 100
4 | RUN ACTION | PASTE FROM CLIPBOARD

This simple macro above selects an open notepad doc saved with a window title of ‘ASCII.txt - Notepad’, copies the ASCII char ‘ALT 0176’ to the clipboard, waits 100 ms (it’s too fast without this), and then paste’s this to the selected notepad document.

User: philranger

Date: Jun 4, 2022 23:22:42 GMT

What about trying to define a string with that character directly?

User: Steve

Date: Jun 5, 2022 2:47:17 GMT

Yep that works too.

1 | RUN ACTION | SELECT WINDOW BY NAME | ASCII.txt - Notepad
2 | RUN ACTION | DEFINE STRING VARIABLE | ASCII::°
3 | RUN ACTION | COPY TO CLIPBOARD | %ASCII%
4 | RUN ACTION | WAIT SECONDS | 1
5 | RUN ACTION | PASTE FROM CLIPBOARD

And the string directly too. Nice one philranger

grin.png

1 | RUN ACTION | SELECT WINDOW BY NAME | ASCII.txt - Notepad
2 | RUN ACTION | DEFINE STRING VARIABLE | ASCII::°
3 | RUN ACTION | WAIT SECONDS | 1
4 | RUN ACTION | KEYPRESS | %ASCII%

User: bobengelhardt

Date: Jun 5, 2022 17:11:20 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jun 5, 2022 2:47:17 GMT

Steve said: […] And the string directly too. Nice one philranger

grin.png

1 | RUN ACTION | SELECT WINDOW BY NAME | ASCII.txt - Notepad
2 | RUN ACTION | DEFINE STRING VARIABLE | ASCII::°
3 | RUN ACTION | WAIT SECONDS | 1
4 | RUN ACTION | KEYPRESS | %ASCII%

Great, that’s getting real close.  Now, in my total cluelessness, I have to ask: is there a way to do it without selecting a window?  To do it in the active window?  E.g., if I’m composing an MMM Reply (in a FireFox tab), can I run this macro simply by pressing a key (e.g., ALT F6) to which this macro has been bound/assigned?  And the “°” is added to the Reply text?

User: Steve

Date: Jun 6, 2022 6:33:09 GMT

Yep best bet for that is to save the macro as a .mmmacro file and assign it to a quick launch slot.
Quick launch (options - quick launch) can bind macro saves to hotkeys.

User: bobengelhardt

Date: Jun 6, 2022 17:53:33 GMT

I GOT IT!!!! The “run in the active window” happens when I simply don’t do a “SELECT WINDOW”.  And since I don’t have to wait for the window selection, I took out the “WAIT”.  So it’s just:

1 | RUN ACTION | DEFINE STRING VARIABLE | ASCII::°
2 | RUN ACTION | KEYPRESS | %ASCII%

And the Quick Launch has nothing selected except “On”, assigned to F5 key. Works a dream!!  I tried it in all my usual applications: mail reader, FireFox, Open Office, various editors. Now, to make macros for some other extended ASCII characters.  E.g., ±, ×, • Thank you!  I’ll be doing a Donate. Oh, wait: am I missing anything? Bob

User: philranger

Date: Jun 6, 2022 18:51:44 GMT

When you have the full version you can assign different macros to different keys!


Virtual desktop stuck mouse

URL: https://minimousemacro.proboards.com/thread/579/virtual-desktop-stuck-mouse
Date: May 31, 2022 22:44:28 GMT

User: rob1

Date: May 31, 2022 22:44:28 GMT

I have a virtual desktop on one side of my monitor and the local computer on the other. When a macro is running the mouse gets stuck in the virtual desktop and clicks the edge of the virtual desktop instead of where it should.

User: philranger

Date: Jun 3, 2022 20:01:03 GMT

Hello, I think the macro either runs in the real desktop or in the virtual desktop, not both

User: Steve

Date: Jun 4, 2022 0:43:00 GMT

Yep +1 for philranger

Once your in the hypervisor your not going to be able to escape out with MMM mouse or keyboard events. I’ll add that it is possible to control MMM from the desktop into your VM via MMM’s remote tools ( <www.turnssoft.com/remote.html> ). 146875269_orig.gif


How can I copy and past with Mini Mouse Macro

URL: https://minimousemacro.proboards.com/thread/580/copy-past-mini-mouse-macro
Date: Jun 1, 2022 17:06:00 GMT

User: ninjashadow

Date: Jun 1, 2022 17:06:00 GMT

I have two files in excel and one in word, I would like to copy the content from the excel file to the Word file in a specific order. How can I do that with Mini Mouse Macro? I have 1000 addresses on the excel sheet that I want to copy and past on in word when I used Macro it goes just repeated on I did and it stops it doesn’t continue. How can I configure Macro to help me to achieve what I want, please // Below is the word file that I want to copy the address to from the excel sheet ( I have a 1000 like that too) address: “street 25 France, Paris” address: “street 25 France, Paris” address: “street 25 France, Paris” “address”: “street 25 France, Paris”

Thank you

User: Steve

Date: Jun 1, 2022 22:03:51 GMT

Hi ninjashadow

I have an example below that will copy values from excel to a word document. The example uses the Select Window By Name action to select each saved xlsx and docx document. In the example the excel doc is saved as ‘address.xlsx’ and the word doc is saved a ‘Streets.docx’. Goto Macro Line is used to loop through the macro 3 times. It loops 3 times because I have 3 values in the excel ‘address.xlsx’ document.
Another thing to note is that I started the macro with the MMM internal logger off and with the first cell selected in the excel document. Selecting the first cell is the key here.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::3
* | START
2 | RUN ACTION | WAIT SECONDS | 1
3 | IF | INTEGER VARIABLE | %INTEGER% | > | 0 | THEN
   4 | RUN ACTION | SELECT WINDOW BY NAME | address.xlsx - Excel
   5 | X | X | 250 | Keypress Ctrl+ | c
   6 | RUN ACTION | SELECT WINDOW BY NAME | Streets.docx - Word
   7 | X | X | 250 | Keypress Ctrl+ | v
   8 | RUN ACTION | SELECT WINDOW BY NAME | address.xlsx - Excel
   9 | X | X | 250 | Keypress down
   10 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-1
11 | IF | ELSE
   12 | RUN ACTION | GOTO MACRO LINE | END
13 | IF | END IF
   14 | RUN ACTION | GOTO MACRO LINE | START
* | END

minimousemacro-Excel-Copy-To-Word.gif


Moved: Background color changes.

URL: https://minimousemacro.proboards.com/thread/577/moved-background-color-changes
Date: May 20, 2022 22:45:51 GMT

User: Steve

Date: May 20, 2022 22:45:51 GMT

This message has been moved to Ideas for Improvements by Steve .


Background options

URL: https://minimousemacro.proboards.com/thread/574/background-options
Date: May 18, 2022 15:12:56 GMT

User: Miguelot

Date: May 18, 2022 15:12:56 GMT

Hi Steve, first of all I want to tell you that your tool is really good! Simple, funtional, complete. You’ve done a great job! I wanted to know if there any alternative to operate MMM that allow you to keep working in your PC. I was trying the virtual desktop and extending the display but didn’t work. It is just to see if I can be more productive while running macros.

User: Steve

Date: May 19, 2022 10:06:44 GMT

Thanks Miguelot ! Cheers for your words on MMM.
It really depends on what type of macro’s your running with MMM. MMM will always win in a mouse and keyboard fight…if your moving the mouse manually and MMM is also wanting to do mouse movements then MMM will move it as the macro runs.

Same with keyboard key presses if MMM is playing back those too.

You can only run MMM independently of any manual mouse movement and keyboard key press if your macro is not running them. Often people can find that they don’t necessarily need mouse and keyboard movements with MMM once they understand conditional statements.

Conditional statements (<www.turnssoft.com/conditions.html>) can take environmental queues to perform direct actions on the desktop with out the need to move an mouse. It’s worth investigating if you want to work independently whilst MMM is burning in the background.

Hope this helps.


Rebind play hotkey to mouse

URL: https://minimousemacro.proboards.com/thread/573/rebind-play-hotkey-mouse
Date: May 10, 2022 16:56:47 GMT

User: Lega

Date: May 10, 2022 16:56:47 GMT

Hi. I’m trying to use my middle mouse key to activate the macro but I can’t find the answer or if it’s possible. There’s some way to do it? Mini-Mouse-Macro-Change-Hotkey.png

User: Lega

Date: May 11, 2022 17:57:12 GMT

Sorry for double post but I can’t edit the original. Adding to the question, if it’s not possible to use MMB there’s some way to Play Macro with only shift?

User: Steve

Date: May 13, 2022 0:36:30 GMT

Hi Lega, To edit your post I think you need to become a member of the forum.

The hotkeys need a modifier setting plus a standard key. The modifiers can be CTRL, SHIFT, ALT, CTRL+ALT, or [None]. ‘None’ here means no modifier and to skip it in favor of just the key press. The key is any standard keyboard key. Usually these are the F1 though F12 keys but can be any key on the keyboard other than modifiers.

For example these are valid:

CTRL+F9, CTRL+1, CTRL+G etc.

Any combinations other than the modifiers listed + a standard key can’t be applied.


How to put a “.” in DECIMAL VARIABLE

URL: https://minimousemacro.proboards.com/thread/566/put-decimal-variable
Date: Apr 22, 2022 23:00:15 GMT

User: adri

Date: Apr 22, 2022 23:00:15 GMT

Hello, i have a question, When i execute the macro by entering a decimal value which contains a point “.” ex : “0.01”     The macro does not recognize the point (it disappears) and put “0” instead of “0.01” Can u help me ?

User: philranger

Date: Apr 24, 2022 13:01:07 GMT

Hello, It’s hard ro say without seeing your code. I guess you tried the examples from <www.turnssoft.com/conditions.html#decimal_variable> ? I don’t know if MMM is influenced by this, but some countries use « , » instead of « . » as a decimal separator. I don’t know which country you are from either, so this is just me brainstorming. Please let us know if you find the solution!

User: adri

Date: Apr 25, 2022 12:25:00 GMT

K2C7z0z K2C7z0z link

Hi, if i use a “,” for decimal it works but i need a “.” obligatorily. by the way im french

User: philranger

Date: Apr 26, 2022 16:46:10 GMT

Looks line it’s tied to Windows « international «  settings. I’m from Quebec so I speak French too. So far I was able to get around the issue, but maybe Steve can let us know if he thinks something could be done?

User: adri

Date: Apr 27, 2022 13:49:14 GMT

so you think i can’t do anything on my side ?

User: cyberchipz

Date: Apr 27, 2022 18:30:55 GMT

Apr 27, 2022 13:49:14 GMT adri said: so you think i can’t do anything on my side ? I’ve never used decimals; but, recently I need to calculate X and Y positions as a percentage of screen area; so I am keenly interested in this too; USA uses a period.  If Phil is saying we can use a comma instead of the decimal; that will work for me; even though it will look strange; as long as it works; I’m good; but, yes… this could be an issue.  Since I’ll need an integer value for X,Y location; my workaround for this would be to multiply the number by a power of 10, and then divide by the power to get my value.  Ex: 0.78 * 100 = 78 but, if I can’t use 0.78… I would just multiply one or both values by 100 so 78 * 100 = 7800 (7800 / 100) = 78  and then to get 78 I would divide by 100.  or if I have to multiply both values by 100, divide by 10000; so, with decimals 0.78 *100.98 (= 0.78 * 100) X (100.98 * 100) or 78 * 10098 = 787644 and 787644 / 10000 = 78.7644 and I never have to type a period.  This would work with any number; but what I don’t know is how the decimal value will be stored in the %DECIMAL% variable; either 78,7644 or 78.7644.  It wouldn’t matter to me, as long as I could use it. :-)  So, I would just use the comma, it’s easier than multiplying by powers of 10. ;-)  It’s a thinking and printing problem; but not a math problem.  cool.png

User: Steve

Date: Apr 28, 2022 20:14:20 GMT

I don’t think I’m following here… So this doesn’t work?

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::1.1

User: adri

Date: May 5, 2022 16:46:21 GMT

any idea about the impossibility to create decimals with “.”?

User: philranger

Date: May 7, 2022 14:49:11 GMT

I know it’s not great but I would copy the value to a notepad, replace the offensive character, then rrcopy Ctrl-c, alt-tab, ctrl-a, ctrl-v, ctrl-h, . Tab. , enter, escape, ctrl a, crrl v or somthing similar Sorry, I’m on my phone and cannot give a better answer

User: adri

Date: May 7, 2022 17:57:02 GMT

I did something like you with copy paste and it will be ok Thanks anyway !


Ctrl + Alt

URL: https://minimousemacro.proboards.com/thread/569/ctrl-alt
Date: May 3, 2022 21:40:03 GMT

User: Miguelot

Date: May 3, 2022 21:40:03 GMT

I was trying to use Ctrl + Alt to move between windows and I have this line but is not working:

2 | 228 | 345 | 985 | Keypress Alt+ | tab

Anyone can help me?

User: philranger

Date: May 5, 2022 15:05:57 GMT

Hello, I use a line similar to yours frequently and it works fine as long as I make sure that: 1- I launch the macro from a keyboard shortcut (so I am not alt-tabbing from mmm) 2- I need to make sure a single alt-tab brings me to the right program. Mini mouse macro releases the alt key between each step.

User: Steve

Date: May 6, 2022 7:53:16 GMT

May 3, 2022 21:40:03 GMT Miguelot said: I was trying to use Ctrl + Alt to move between windows and I have this line but is not working:

2 | 228 | 345 | 985 | Keypress Alt+ | tab

Anyone can help me? Hi Miguelot, For alt+tab to switch between windows the ALT key needs to be held down and then the TAB key pressed. You need this:

1 | 228 | 345 | 1000 | Keypress Alt+ | tab | Key Down
2 | 228 | 345 | 500 | Keypress Alt+ | tab | Key Release

Or this:

1 | 228 | 345 | 1000 | Keypress menu | Key Down
2 | 228 | 345 | 500 | Keypress tab
3 | 228 | 345 | 1000 | Keypress menu | Key Release

User: philranger

Date: May 7, 2022 14:58:57 GMT

Thanks Steve, I didn’t know this one, it will help me too! #metoo 2022, but in a good way ;-)


Continue after looping

URL: https://minimousemacro.proboards.com/thread/571/continue-after-looping
Date: May 5, 2022 17:23:28 GMT

User: HeitorRossi

Date: May 5, 2022 17:23:28 GMT

How can I make more actions after a few times looping? I have a manual work that can be looped, than I need to save it after all the loop. So I need to add another rotine, but after the loop. Is it possible? Thanks you all. Heitor Rossi

User: Steve

Date: May 6, 2022 8:07:28 GMT

Hi HeitorRossi

Use variables to control your looping within your macro. Have a look here <www.turnssoft.com/conditions.html> and within this forum for examples. Here is an example of a controlled integer counter loop (start) and a FOR counter loop (end):

* | ------------------
1 | RUN ACTION | DEFINE INTEGER VARIABLE | counter::5
* | ------------------
* | START
2 | RUN ACTION | DEFINE INTEGER VARIABLE | counter::+1

    < your routines go here >

4 | IF | INTEGER VARIABLE | counter | LESS THAN | 5 | GOTO MACRO LINE | START
* | ------------------
6 | RUN ACTION | DEFINE INTEGER VARIABLE | counter::5
* | ------------------
* | END
7 | FOR | I | = | 0 TO counter | NEXT

    < your next routines go here >

6 | FOR | NEXT

Math - Rounding and Order of Operations

URL: https://minimousemacro.proboards.com/thread/570/math-rounding-order-operations
Date: May 4, 2022 14:36:09 GMT

User: Bob Donut

Date: May 4, 2022 14:36:09 GMT

I see information on how to do simple math equations to change the value of a variable.  Is there anything that will allow me to round up or down to the nearest integer?  And, if I want to calculate (x - y) * (a - b), can I do it with one expression, or do I need to calculate each set of parentheses, and then multiply the result as separate steps?

User: Steve

Date: May 6, 2022 7:41:56 GMT

Hi Bob, Have a look here <www.turnssoft.com/conditions.html#integer_variable> and here <www.turnssoft.com/conditions.html#define_integer_variable> for some info on math within MMM. Here is a break down…. Math evaluations are available for both INTEGER and DECIMAL variables. Consider the following INTEGER VARIABLE example statements below that show all the available OPERATOR evaluation of:

Addition (+)
Subtraction (-)
Multiplication (*)
Division (/)
Is even
Is odd
Power of (^)
Modulus (%)
Equal to (=)
Not equal to (!=)
Greater than (&gt;)
Greater than equal to (&gt;=)
Less than (&lt;)
Less than equal to (&lt;=) ADDITION example (+)
1 | IF | INTEGER VARIABLE | %INTEGER% | + | 2::=::%INTEGER1% | DELETE FILE | D:\Macro\%STRING%_%INTEGER1%.mmmacro

This reads:

  • IF the INTEGER VARIABLE, %INTEGER%, + 2 does equal (=) the value of %INTEGER1% then DELETE the FILE located at D:\Marco\%STRING%_%INTEGER1%.mmmacro.

SUBTRACTION example (-)

1 | IF | INTEGER VARIABLE | %INTEGER% | - | %INTEGER1%::>=::%INTEGER1% | DEFINE INTEGER VARIABLE | %INTEGER%::*%INTEGER2%

This reads:

  • IF the INTEGER VARIABLE, %INTEGER%, subtract (-) %INTEGER1% is greater or equal to (>=) the value of %INTEGER1% then DEFINE INTEGER VARIABLE, %INTEGER% to be the value of %INTEGER% multiple by (*) %INTEGER2%.

MULTIPLICATION example (*)

1 | IF | INTEGER VARIABLE | %INTEGER% | * | 2::<::100 | GOTO MACRO LINE | %RETURN%-5

This reads:

  • IF the INTEGER VARIABLE, %INTEGER%, multiply by (*) 2 is less than (<) the value 100 then GOTO MACRO LINE number with the value of %RETURN%-5. More on the %RETURN% variable can found under the GOTO MACRO LINE section. DIVISION example (/)
1 | IF | INTEGER VARIABLE | %INTEGER% | / | 5::!=::5 | DEFINE INTEGER VARIABLE | %INTEGER%::25

This reads:

  • IF the INTEGER VARIABLE, %INTEGER%, divided by (/) 5 is not equal to (!=) the value 5 then DEFINE INTEGER VARIABLE, %INTEGER% to be the value of 25.

IS EVEN

1 | IF | INTEGER VARIABLE | %INTEGER% | IS EVEN | MOD 2 = 0 | DEFINE INTEGER VARIABLE | %INTEGER%::%INTEGER1%

This reads:

  • IF the INTEGER VARIABLE %INTEGER% IS an EVEN number then DEFINE INTEGER VARIABLE to be the current value of the variable %INTEGER1%. So the current integer variable value is 2, this is a even number (MOD 2 = 0) and evaluates to true, so now define the value of %INTEGER% to be the value of the %INTEGER1% variable.

IS ODD

1 | IF | INTEGER VARIABLE | %INTEGER% | IS ODD | MOD 2 = 1 | DEFINE INTEGER VARIABLE | %INTEGER%::+1 | ELSE | 2 | IF | INTEGER VARIABLE | %INTEGER% | % | 2::=::0 | MESSAGE PROMPT | Value is EVEN::Even or Odd

This example is similar to the IS EVEN example above however it showcases an alternative via the ELSE statement using a MODULUS match function. POWER OF example (^)

1 | IF | INTEGER VARIABLE | %INTEGER% | ^ | 3::<::100 | DEFINE INTEGER VARIABLE | %INTEGER%::+25

This reads:

  • IF the INTEGER VARIABLE, %INTEGER%, to the power of (^) 3 is less than (<) the value 100 then DEFINE INTEGER VARIABLE, %INTEGER%to be the value of %INTEGER% + 25.

MODULUS example (%)

1 | IF | INTEGER VARIABLE | %INTEGER% | % | %INTEGER1%::=::%INTEGER2% | COPY TO CLIPBOARD | %INTEGER% | ELSE | 2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::%3

This reads:

  • IF the INTEGER VARIABLE, %INTEGER%, mod (%) %INTEGER1% is equal to (=) the value %INTEGER2% then run the action to COPY TO CLIPBOARD the value of %INTEGER% or ELSE if the value is not equal to then DEFINE INTEGER VARIABLE, %INTEGER3% to be the value of %INTEGER3% % 3.

EQUAL example (=)

1 | IF | INTEGER VARIABLE | %INTEGER% | IS | 100 | DEFINE INTEGER VARIABLE | %INTEGER%::+150

-or-

1 | IF | INTEGER VARIABLE | %INTEGER% | = | 100 | DEFINE INTEGER VARIABLE | %INTEGER%::+150

This reads:

  • IF the INTEGER VARIABLE %INTEGER4% IS 100 then DEFINE INTEGER VARIABLE, %INTEGER%, to be the current value + 150. So the current integer variable is 100, so this condition evaluates to true, so add 150, the value of %INTEGER% is now 350.

NOT EQUAL example (!=)

1 | IF | INTEGER VARIABLE | %INTEGER% | IS NOT | 100 | DEFINE INTEGER VARIABLE | %INTEGER%::-300

-or-

1 | IF | INTEGER VARIABLE | %INTEGER% | != | 100 | DEFINE INTEGER VARIABLE | %INTEGER%::-300

This reads:

  • IF the INTEGER VARIABLE %INTEGER% IS NOT 100 then DEFINE INTEGER VARIABLE to be the current value - 300. So the current integer variable value is 350, and not 100 so this condition is true, now subtract that by 300. the value of %INTEGER% is now 50.

GREATER THAN example (>)

1 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN | 10 | DEFINE INTEGER VARIABLE | %INTEGER%::*200

-or-

1 | IF | INTEGER VARIABLE | %INTEGER% | > | 10 | DEFINE INTEGER VARIABLE | %INTEGER%::*200

This reads:

IF the INTEGER VARIABLE %INTEGER% IS GREATER THAN 10 then DEFINE INTEGER VARIABLE to be the current value * 200. So the current integer variable value is 50, this is greater than 10 - the condition is true, now multiply that by 200. the value of %INTEGER% is now 10000.

GREATER THAN EQUAL TO example (>=)

1 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN EQUAL TO | 10000 | DEFINE INTEGER VARIABLE | %INTEGER%::/2

-or-

1 | IF | INTEGER VARIABLE | %INTEGER% | >= | 10000 | DEFINE INTEGER VARIABLE | %INTEGER%::/2

This reads:

  • IF the INTEGER VARIABLE %INTEGER% IS GREATER THAN or EQUAL TO 10000 then DEFINE INTEGER VARIABLE to be the current value / 2. So the current integer variable value is 10000, this is equal to 10000 and evaluates to true, so now divide that by 2. the value of %INTEGER% is now 5000.

LESS THAN example (<)

1 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | 10000 | DEFINE INTEGER VARIABLE | %INTEGER%::-99999

-or-

1 | IF | INTEGER VARIABLE | %INTEGER% | < | 10000 | DEFINE INTEGER VARIABLE | %INTEGER%::-99999

This reads:

  • IF the INTEGER VARIABLE %INTEGER% IS LESS THAN 10000 then DEFINE INTEGER VARIABLE to be the current value - 99999. So the current integer variable value is 5000, this is less than to 10000 and evaluates to true, so now subtract that by 99999. the value of %INTEGER% is now -94999.

LESS THAN EQUAL TO example (<=)

1 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN EQUAL TO | 1 | RUN PROGRAM | c:\Batch\calculateresults.bat

-or-

1 | IF | INTEGER VARIABLE | %INTEGER% | <= | 1 | RUN PROGRAM | c:\Batch\calculateresults.bat

This reads:

  • IF the INTEGER VARIABLE %INTEGER% IS LESS THAN or EQUAL TO 1 then RUN the PROGRAM located at C:\Batch\calcualteresults.bat. So the current integer variable value is -94999, this is less than to 1 and evaluates to true, so now run the program c:\Batch\calculateresults.bat
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::=100  | Declaration - %INTEGER% = 100
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+100  | Addition - %INTEGER% + 100
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-100  | Subtraction - %INTEGER% - 100
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::/100  | Division - %INTEGER% / 100
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::*100  | Multiplication - %INTEGER% * 100
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%2  | Modulus - %INTEGER% MOD 2
7 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::^5  | Power of - %INTEGER% to the power of 5
8 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%INTEGER1%  | %INTEGER% equals the value of %INTEGER1%
9 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%RANDOM_200-250%  | %INTEGER% equals a random between 200 and 250
10 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%STRING%  | %INTEGER% equals the value of %STRING% (must be a number)
11 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%CLIPBOARD%  | %INTEGER% equals the value of %CLIPBOARD% (must be a number)
12 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::XOR10  | XOR - %INTEGER% XOR 10
13 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::MAX%INTEGER1%  | MAX - %INTEGER% equals the highest value of itself compared to %INTEGER1%
14 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::MIN50  | MIN - %INTEGER% equals the lowest value of itself compared to 50
15 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::SIGN  | SIGN - %INTEGER% equals math SIGN value of itself
16 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::SQRT  | SQRT - %INTEGER% equals the value squared
17 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::SQRT%INTEGER1%  | SQRT - %INTEGER% equals the value squared by %INTEGER1%
18 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::POW7  | POW - %INTEGER% equals %INTEGER% to the power of 7

We can use User variables inside of Left Click now???

URL: https://minimousemacro.proboards.com/thread/568/user-variables-inside-left-click
Date: Apr 27, 2022 20:33:34 GMT

User: cyberchipz

Date: Apr 27, 2022 20:33:34 GMT

When did that happen; I saw a guy using a User Variable %click_pos% as the variable for I presume a left click.  Last I knew we had to use %INTEGER1% or one of the standard variables in the short commands like left / right click and mousemovement.  I mean, yeah… I could try it myself; but, before I do; I wanted to know when this was fixed?  I’m still assigning the user defined variables to %INTEGER1% and %INTEGER2% inside the command.  shocked.png

76 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::775
77 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::763
80 | %INTEGER1% | %INTEGER2% | 57 | Left Click

or did someone just use their own variable for simplicity and it won’t work?

92 | RUN ACTION | DEFINE INTEGER VARIABLE | %MyIntX%::775
93 | RUN ACTION | DEFINE INTEGER VARIABLE | %MyIntY%::763
94 | %MyIntX% | %MyIntY% | 57 | Left Click

Senior Member wants to know! ;-)

User: Steve

Date: Apr 28, 2022 20:10:16 GMT

Hi cyberchipz I think with named variables back in feb 2021, maybe version 8.1. However a couple of years before that I made sure that variables worked for each component. I think this works as well but it’s not very practical:

1 | <var> | <var> | <var>

<var> | <var> | <var> | <var> <var> <var> | <var> Every actions/command/place can be a variable. But like I said, its not very practical.

User: cyberchipz

Date: Apr 30, 2022 17:24:41 GMT

I see. I noticed I could use %vars% for Pixel Capture for the X, Y values; I use IMAGE capture to save the X/Y Variables create the “(X:%VARX% Y:%VARY%)” for location of the pixel and then use pixel capture and find for a fast find command for that object in a single session. As I mentioned once before; the game designers; as are many games constantly revising and updating practically everything. With the PICTURE, as long as I keep up on the PICTURE capture and get the location, they can move things around; whatever they want; if the IMAGE capture fails for me; I trap the error; grab the new image; name it the same as the previous one; and the code doesn’t break.  That’s fantastic. 

So, with that, I wanted to bring up the mention I made for image capture.  Have you considered making the full screen Image search a variable screen size image search.  Since the full screen quick Image capture is really fast but the width and height image capture is too strict.  Making the width and height one search treat that in code like a small screen size @ location X/Y with Height Width, and search that area like it does the full screen for that smaller area is exactly what I need to make non-breaking code.  I mentioned that the screen capture only works well, if there isn’t another identical item on the screen. For example Two American Flags.  If I need the X/Y location of the 2nd, or 3rd etc flag; the height and width image search only works if I know exactly where it is and that’s not really feasable.  I tried this; but since I was off a pixel on the image… (Yeah, I could do this for a single position IFF the flag I needed was present).  So, I avoid mixed enemy/friendlies territory.

I think you grasp the concept from what you said in the first post I made; I’m just wondering how quickly you might make this change? ;-)  Right now, my workaround I’m going to try is to find the object on the screen; paint over that image enough the search fails, and hopefully it will find the 2nd image. I hope. lol  Or, fail if there’s only one flag.   Or, if you might mod the code (and as I said, if it’s done right; the old function of that code for the image based off of width and height “should” still work. :-)  You just have to make it look for where the image starts; like the screen search function; and I presume that code is already written for the full screen search, just need to mod the X Y variables for the screen size. Right?

One advantage of being an old man who has coded since he was 16 is that at least I understand the process. lol

Again, I would be happy to Beta test

.  In my favorite game (only game) I play… they just did a major overhaul of the game layout.  None of my click points work.  I’ve already captured all the images I need to capture reference points for the click locations…  I just need to capture one of three possible identical flags on the screen… to ensure I don’t attack friendlies. lol 

If I could beta test that mod to the width height screen “area” image capture…  heh.. I could just fix it rather than do a whole rewrite later. (hint ;-)   But, perhaps I can scribble out each flag as I find it after I check to see where it’s located.. and look for other flags.. that might work.  I’m nothing if not innovative.  and, thanks… I’ll make it work, one way or another.   Perhaps if I find a allied flag; I can just reset the battle to a new location… and go from there… but, it can be tough when I get into enemy territory where the front line is… lots of friendlies there; and I could end up in an endless loop.. if I can’t tell the enemy from the friendlies. No worries, I’ll figure it out! :-)  Friendly fire is frowned on.

undecided.png   lol

User: cyberchipz

Date: Apr 30, 2022 18:01:09 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Apr 28, 2022 20:10:16 GMT

Steve said:

1 | <var> | <var> | <var>

<var> | <var> | <var> | <var> <var> <var> | <var> Every actions/command/place can be a variable. But like I said, its not very practical. Yes, not practical; but could be used to auto create code on the fly. IFF, you allowed for special characters like “|”, “::” “%” and others, etc.  I wanted to remind you of a suggestion I made a while back.  If you could expand the options for special characters, like you do with ‘/n’ which acts as a new line. (I believe that works because it’s standardized code for printing lines.)  But, if you could make a special character set with a shift character that tells your code to just store the the symbol in a string variable but ignore it otherwise; I could use the macro to create macro code inside a string.   In my mind I think I would still need to copy and paste the file created that way into a macro; or alternately if I created a small subroutine, load and run it via the macro. In the world of macros, a macro that makes macros is the kind of thing I wished I could do.  I recall an old Military programming language called Mumps could do this. It offered, variable variable names and executing code in a string.   But, I can tell you as a coder; I’ve forgotten more than I know. ;-)  Right now I’m limited to Application VBA and MMM. :-)  I would suggest a shift character but I don’t know which symbols you’ve already reserved to tranlating your code. Perhaps “~” or something… so ~| would imbed a | into the string without running the code at the time of creation of the code.   Chip


Issue with two successive FOR nested in one FOR loop.

URL: https://minimousemacro.proboards.com/thread/565/issue-successive-nested-loop
Date: Apr 22, 2022 19:34:23 GMT

User: marcop0l0

Date: Apr 22, 2022 19:34:23 GMT

The following code doesn’t run properly :

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::5
2 | FOR | I | = | 0 TO %INTEGER% | NEXT
   3 | RUN ACTION | MESSAGE PROMPT | Main Loop - Value of %i% / %integer%::%i% / %integer%::1
   4 | FOR | I | = | 0 TO %INTEGER% | NEXT
      5 | RUN ACTION | MESSAGE PROMPT | Second Loop - Value of %i% / %integer%::%i% / %integer%::1
   6 | FOR | NEXT
   7 | FOR | I | = | 0 TO %INTEGER% | NEXT
      8 | RUN ACTION | MESSAGE PROMPT | Third Loop - Value of %i% / %integer%::%i% / %integer%::1
   9 | FOR | NEXT
10 | FOR | NEXT

Main and second loop run properly but third loop not.

User: philranger

Date: Apr 24, 2022 12:52:26 GMT

Hello, You have a loop inside a loop but they use the same variable i. What are you trying to do exactly? Please also take a look at this: minimousemacro.proboards.com/thread/545/nested-loop

User: marcop0l0

Date: Apr 24, 2022 17:30:21 GMT

Hello, This is what I want to do. Currently, I made two custom loop instead of two FOR loop inside the main loop.

1 | 718 | 301| 50 | Left Click
2 | FOR | I | = | 0 TO 22 | NEXT
    3 | RUN ACTION | DEFINE INTEGER VARIABLE | %click_pos%::=301
    * | click_loop
    4 | 718 | %click_pos% | 50 | Mouse Movement
    5 | 718 | %click_pos% | 50 | Left Click
    6 | RUN ACTION | DEFINE INTEGER VARIABLE | %click_pos%::+37
    7 | IF | INTEGER VARIABLE | %click_pos% | LESS THAN EQUAL TO | 597 | GOTO MACRO LINE | click_loop
    8 | RUN ACTION | DEFINE INTEGER VARIABLE | %drag_pos%::=597
    9 | RUN ACTION | DEFINE INTEGER VARIABLE | %drag_speed%::=10
    10 | 718 | %drag_pos% | 50 | Left Click Down
    * | drag_loop
    11 | 718 | %drag_pos% | 1 | Mouse Movement
    12 | RUN ACTION | DEFINE INTEGER VARIABLE | %drag_pos%::-%drag_speed%
    13 | IF | INTEGER VARIABLE | %drag_pos% | LESS THAN | 275 | DEFINE INTEGER VARIABLE | %drag_speed%::=1
    14 | IF | INTEGER VARIABLE | %drag_pos% | GREATER THAN EQUAL TO | 262 | GOTO MACRO LINE | drag_loop
    15 | 718 | %drag_pos% | 50 | Mouse Movement
    16 | 718 | %drag_pos% | 50 | Left Click Release
    17 | 718 | 301| 50 | Left Click
18 | FOR | NEXT

User: Steve

Date: Apr 28, 2022 20:26:40 GMT

Hi marcop0l0 Nesting more than one FOR I loop doesn’t work as it should. I thought this was fixed with version 8.3.3 but nope doesnt seem like it. Well, one nested for loop works but just not two or more…

I’d suggest doing more of what you’ve done for your macro here; goto loops and the like.

Cheers for pointing this one out. I’ll add it to the bugtrack list (<www.turnssoft.com/bugtrack.html#bugs>) a little later on.


# | X | Y | {huh?} | {action}

URL: https://minimousemacro.proboards.com/thread/567/huh-action
Date: Apr 27, 2022 3:44:04 GMT

User: WWO

Date: Apr 27, 2022 3:44:04 GMT

No doubt this is front and center obvious somewhere, but my search fu seems to be broken … Ignoring ‘run action’, mmm lines seem to be of the form:

| x | y | t | action

where:

| = delimiter = line number

  • x = x coordinate
  • y = y coordinate
  • t = time
  • action = action

What is t?

I think I’ve seen it as: wait time t; move the mouse to coordinates x, y; perform action.

However, my timing always seems to be off / mentally tracking line and what I’m seeing on screen seems … backwards. (For lack of a better word.)

I’ve ended up coding things as:

1 | 100 | 200 | 100 | Mouse movement
2 | X | X | 100 Left Click
3 | X | X | 300 | Mouse Movement

just to be able to mentally track each (triplet) step with (optional) before / after delays so my eyes can follow things / steps. So what is ‘t’ (herein), and what is the right way to think about / read such lines?

[Sorry, no doubt this should be obvious, but I’m just not getting it / missing something - flow across several mouse moves and clicks … just doesn’t.] Links to the right place my current search fu can’t seem to grasp, welcome.

Other threads describe x, y, and action, but skip over the meaning of the number, part. e.g. ‘15’ in

minimousemacro.proboards.com/thread/228/question-syntax, so I’ve asked herein.

User: cyberchipz

Date: Apr 27, 2022 20:05:43 GMT

Of course the other one is mousemovement; which basically waits the alloted time then moves the mouse; great for seeing where the click is taking place.  It usually leaves a little trail of arrows (or whatever you use for your pointer) everywhere there is a mouse movement; I use it to confirm that the mouse is clicking in the right place; if this location due to 3rd party code is subject to change. Which makes the mouse click fail.   Hope this helps.

User: WWO

Date: Apr 27, 2022 22:04:45 GMT

<sigh> THANK YOU! [My bad, I knew it was milliseconds, should have said that.] So … t means different things on different actions. On mouse clicks it is the ‘duration’ of the click. On other things it is the delay (pause) before the (mouse) movement. No wonder I’ve been … spinning ‘round. I just expected every line to be <x> <y> <delay> <action>, and you note that that is not the case. Thank you, muchly.

User: cyberchipz

Date: Apr 28, 2022 15:11:09 GMT

At least that’s my understanding. In reality it only makes a difference for background activities; the only issues I have, where I raise the amount of time is when I click something that requires the background screen to change; like when the screen will move to another page completely. If it’s on the internet; that time can vary; if it is an app; you will get an idea of how long that takes, I usually give that 300 to 500 milliseconds.. For website page changes; I have to capture a pixel that will disappear when the page changes; and I watch for that activity. When the pixel disappears, the page has changed; I give it a little more time to settle down; and then I can take an action.  Most of the time, I am overly cautious; and have to include routines, when dealing with a website, for lag.  These can include counters that will set a maximum time for the page to change; I’ve seen lag, in some games last up to a minute.  If you know what will appear on the next page, on a website; you can look for that image to appear; then when it finds that image; you “Know” the page has changed.  Otherwise, handling lag is the worst issue. But, one that seldom appears inconsistently when dealing with applications or computer programs.  Only online websites have to deal with lag.  Otherwise, click time can be as low as 30ms for a page change… except for websites.

User: WWO

Date: Apr 28, 2022 16:26:48 GMT

Yep. Been there, and experiencing, that. Thanks for your comments. Appreciated.

User: Steve

Date: Apr 28, 2022 20:00:36 GMT

av_default_male.png Apr 27, 2022 22:04:45 GMT

WWO said: <sigh> THANK YOU! [My bad, I knew it was milliseconds, should have said that.] So … t means different things on different actions. On mouse clicks it is the ‘duration’ of the click. On other things it is the delay (pause) before the (mouse) movement. No wonder I’ve been … spinning ‘round. I just expected every line to be <x> <y> <delay> <action>, and you note that that is not the case. Thank you, muchly. Hi WWO

The ‘T’ is always time in milliseconds prior to the event running. A wait then run the keyboard entry. The ‘T’ is only a wait for keyboard entries. Let me break this down…

1 | 607 | 314 | 10 | Mouse Movement
2 | 608 | 309 | 134 | Left Click 

Line number | mouse X pos | mouse y pos | time to wait in milliseconds prior to execution | keyboard event av_default_male.png Apr 27, 2022 22:04:45 GMT

WWO said: t means different things on different actions. On mouse clicks it is the ‘duration’ of the click. On other things it is the delay (pause) before the (mouse) movement. No this is a bit off. It works the same on Left Click, mouse movement, and keyboard presses.  It’s the same for all.  It is simply the time to wait post execution of the previous line. Let me break that down…

3 | 1539 | 580 | 100 | Left Click Down
4 | 1539 | 580 | 500 | Left Click Release

Line 3 executes a left click down 100 ms after line 2 ends. Line 4 executes a left click release 500 ms after line 3 ends. Hope this helps.


Problem with accentuated characters in IF | WINDOWS TITLE

URL: https://minimousemacro.proboards.com/thread/554/problem-accentuated-characters-windows-title
Date: Mar 3, 2022 12:33:48 GMT

User: Julio

Date: Mar 3, 2022 12:33:48 GMT

Hi Steve. It is not the first time that I request improvements in the use of accentuated characters in the IF | WINDOW TITLE condition. I have Google Chrome installed in Spanish with Windows 10 and with the settings tab (“Configuración” in Spanish) active. The Chrome icon on the taskbar reads “Configuración - Google Chrome” Now I find that to the following statement :

1 | IF | WINDOWS TITLE | Configuración - Google Chrome | EXISTS | MESSAGE PROMPT | Exists::::0::OK | ELSE | 1 | RUN ACTION | MESSAGE PROMPT | Does not exist::::0::OK

MMM always answers “Does not exist” due to the presence of the accentuated character “ó”.  ( If there are no accentuated characters in the title of the active tab, the IF | WINDOW TITLE condition works perfectly. It also works well with windows of other applications, for example with Notepad (“Bloc de notas” in Spanish). This works correctly with the following statement:

1 | IF | WINDOWS TITLE | Configuración: Bloc de notas | EXISTS | MESSAGE PROMPT | Exists::::0::OK | ELSE | 1 | RUN ACTION | MESSAGE PROMPT | Does not exist::::0::OK

Please, can you help me? Thank you very much.

User: philranger

Date: Mar 4, 2022 2:54:00 GMT

Hi Julio, Just a wild guess: if you put the name in a string before and search for that string, does itchange anything?

User: Julio

Date: Mar 4, 2022 15:23:21 GMT

I have created a macro with these 2 lines with active tab “Configuración - Google Chrome”. On line 1, “Image.bmp” is a clipped portion of the active tab.

1 | RUN ACTION | MOUSE TO IMAGE | image path C: \ Users \ User \ OneDrive \ Documents \ Mini Mouse Macro \ Image.bmp :: at 250 550 320 170 :: match quick :: move mouse yes
2 | IF | WINDOWS TITLE | Configuración - Google Chrome | EXISTS | MESSAGE PROMPT | Exists::::0::OK | ELSE | 1 | RUN ACTION | MESSAGE PROMPT | Does not exist::::0::OK 

When executing the macro, in line 1 it puts the mouse in the middle of the image “Image.bmp” and line 2 responds “Does not exist”.

User: philranger

Date: Mar 7, 2022 12:36:46 GMT

Whenever I have problems to fully automate, I do half automation. For exemple, in this case, you could prompt the user to click in the « configuracion » window and then press enter. If it is already open and on the screen, an image detection would work after that, or a keypress Alt+tab to get back to that program.

User: Julio

Date: Mar 7, 2022 15:32:03 GMT

I think I’m not explaining myself well. The only thing I wanted to say is that the IF | WINDOW TITLE condition does not work when the open Chrome window has accentuated characters in its title, such as the settings window (“Configuración” in spanish) In the example above I wanted to explain that despite having the “Configuración” window open and active (move the mouse over an image of it), it still says not exist the “Configuración” window. It is not a real program. My program is as follows: …………….

* | Esperar
1 | RUN ACTION | WAIT MILLISECONDS | 2
2 | IF | WINDOW TITLE | Configuración - Google Chrome | NOT EXIST | GOTO MACRO LINE | Esperar

…………. With these instructions I want to make the program wait until the window whose title is “Configuración” has been completely loaded, because sometimes Chrome takes a few seconds to load a new window. In this case the program always stays in an indefinite loop, even though the window has been loaded. On the other hand, this indefinite loop does not occur if the title of the window does not have accentuated characters.

User: philranger

Date: Mar 7, 2022 18:06:13 GMT

Thanks for the explanations. I don’t know how to help then, sorry!

User: Steve

Date: Mar 7, 2022 21:20:54 GMT

Mar 7, 2022 15:32:03 GMT Julio said: …………….

* | Esperar
1 | RUN ACTION | WAIT MILLISECONDS | 2
2 | IF | WINDOW TITLE | Configuración - Google Chrome | NOT EXIST | GOTO MACRO LINE | Esperar

…………. With these instructions I want to make the program wait until the window whose title is “Configuración” has been completely loaded, because sometimes Chrome takes a few seconds to load a new window. In this case the program always stays in an indefinite loop, even though the window has been loaded. On the other hand, this indefinite loop does not occur if the title of the window does not have accentuated characters. Hi Julio, Yeah this is good one. I tried this in a notepad document ‘Configuración notepad.txt’ and yep, it found the window title no problem. Its interesting that when reading the title from a chrome tab it works differently. I’m not sure why this is. I’d have to agree with philranger on this one in that sometimes you might just need a workaround. Unfortunately I don’t think I can fix this in the code or ‘factor’ it in easily.
Can you trigger your condition via a different queue? Such as an image or process? What exactly are you trying to do that requires this window title to be present?

User: Julio

Date: Mar 8, 2022 18:55:19 GMT

Thank you very much Steve for your answer. I had also seen that with Notepad windows it worked. I have tried with the window of an image the condition IF | WINDOW TITLE and it doesn’t work at all: both with accented characters in the title and unaccented. I use the “Configuración” window as an example. With it I test how MMM works with Chrome tabs that have Spanish accented characters (á, é, í, ó, ú, ñ) in their titles. As I said in a previous post, it often happens that Chrome takes time to load certain web pages. To do this I use a loop like this: …………….

* | Expect 
1 | RUN ACTION | WAIT MILLISECONDS two 
2 | IF | WINDOWS TITLE | Settings - Google Chrome | NOT EXIST | GOTO MACRO LINE | Expect 

…………. This loop allows MMM to wait until the corresponding web (opened before) has been fully loaded, before continuing with the following instructions. Because if the web wasn’t loaded, those instructions would fail. This loop works fine with any tab that doesn’t have accented characters in its title, but gets stuck in an infinite loop when it does. On the other hand, I have seen that the condition RUN ACTION | SELECT WINDOW BY NAME does recognize accented characters in Chrome tab names. The following statement works fine despite having the accented “ó” character in the Chrome window name.

1 | RUN ACTION | SELECT WINDOW BY NAME | Settings - Google Chrome 

It would be a pity if you couldn’t solve this problem.

User: Julio

Date: Mar 8, 2022 18:59:49 GMT

Thank you very much Steve for your answer. I had also seen that with Notepad windows it worked. I have tried with the window of an image the condition IF | WINDOW TITLE and it doesn’t work at all: both with accented characters in the title and unaccented. I use the “Configuración” window as an example. With it I test how MMM works with Chrome tabs that have Spanish accented characters (á, é, í, ó, ú, ñ) in their titles. As I said in a previous post, it often happens that Chrome takes time to load certain web pages. To do this I use a loop like this: …………….

* | Expect
1 | RUN ACTION | WAIT MILLISECONDS | 2
2 | IF | WINDOWS TITLE | Configuración - Google Chrome | NOT EXIST | GOTO MACRO LINE | Expect

…………. This loop allows MMM to wait until the corresponding web (opened before) has been fully loaded, before continuing with the following instructions. Because if the web wasn’t loaded, those instructions would fail. This loop works fine with any tab that doesn’t have accented characters in its title, but gets stuck in an infinite loop when it does. On the other hand, I have seen that the condition RUN ACTION | SELECT WINDOW BY NAME does recognize accented characters in Chrome tab names. The following statement works fine despite having the accented “ó” character in the Chrome window name.

1 | RUN ACTION | SELECT WINDOW BY NAME | Settings - Google Chrome

It would be a pity if you couldn’t solve this problem.

User: Steve

Date: Mar 8, 2022 22:13:09 GMT

Mar 8, 2022 18:59:49 GMT Julio said: The following statement works fine despite having the accented “ó” character in the Chrome window name.

1 | RUN ACTION | SELECT WINDOW BY NAME | Settings - Google Chrome

It would be a pity if you couldn’t solve this problem. Hi Julio, I had a look at the code behind the IF | WINDOW and the RUN ACTION | SELECT WINDOW BY NAME and they are different. The IF WINDOW code is using the FindWindow function and the SELECT WINDOW BY NAME is using AppActivate function .
I will look into changing the IF WINDOW to use AppActivate instead of FindWindow. I will add it to my list for the next update. In the mean time how about extending the wait seconds time to something larger and not using the window title to catch your condition. Does the page load a fixed image or a banner that is always constant? If it does you might be able to use DETECT IMAGE ( <www.turnssoft.com/conditions.html#detectimage> ) as your trigger to progress.

User: Julio

Date: Mar 9, 2022 9:20:18 GMT

Thanks a lot Steve for the change in the IFWINDOW TITLE code and for your advice.

User: Julio

Date: Mar 25, 2022 19:48:41 GMT

Hi Steve. In your last post in this thread, you said that in the next version you would modify the code behind IF | WINDOW TITLE for this condition to work well with accented characters. Well, I have verified that in the latest version 8.3.3 of MMM, the following instruction is still not executed correctly:

1 | IF | WINDOWS TITLE | Configuración - Google Chrome | EXISTS | MESSAGE PROMPT | Exists::::0::OK | ELSE | 1 | RUN ACTION | MESSAGE PROMPT | Does not exist::::0::OK

User: Steve

Date: Mar 25, 2022 20:54:40 GMT

Mar 25, 2022 19:48:41 GMT Julio said: Hi Steve. In your last post in this thread, you said that in the next version you would modify the code behind IF | WINDOW TITLE for this condition to work well with accented characters. Well, I have verified that in the latest version 8.3.3 of MMM, the following instruction is still not executed correctly:

1 | IF | WINDOWS TITLE | Configuración - Google Chrome | EXISTS | MESSAGE PROMPT | Exists::::0::OK | ELSE | 1 | RUN ACTION | MESSAGE PROMPT | Does not exist::::0::OK

Hi Julio, I said I would look into changing the code behind the IF WINDOW TITLE. I did look into changing it and its not a simple change. The AppActivate method can only be used to switch focus to a new window title. This is not what we want with the IF condition. Unfortunately I haven’t got a solution for the accented characters.
I did add the LAST CONDITION action ( <www.turnssoft.com/conditions.html#lastcondition> ) with the last update specifically with this type of problem in mind. This condition may allow you to handle this failure a little cleaner.  The version update notes detail whats been added to the update if you missed it.

User: philranger

Date: Mar 29, 2022 16:38:42 GMT

Hello, Since it is complex, I would suggest a workaround: instead of waiting until the window exists, wait until the picture of the window exists. You could either detect the window title bar or detect a specific part of the web page is on screen

1 | IF | DETECT IMAGE | image path C:\images\header.bmp::match quick::move mouse no | IMAGE NOT FOUND | CONTINUE

User: Julio

Date: Mar 31, 2022 8:36:21 GMT

Hi Philranger. Thank you so much for your advice. That’s exactly what Steve told me in his post on March 8, 2022. Greetings

User: philranger

Date: Apr 4, 2022 19:49:25 GMT

No problem, I wanted to know if you understood and tried it since you didn’t answer his proposal.

User: cyberchipz

Date: Apr 28, 2022 15:39:16 GMT

Mar 31, 2022 8:36:21 GMT Julio said: Hi Philranger. Thank you so much for your advice. That’s exactly what Steve told me in his post on March 8, 2022. Greetings I find that using quick image find works well for finding any image that exists, like a logo.  Since it runs pretty quickly, this will allow you to KNOW that page not only exists; but is visible.  Because the internet can lag; this is a great way to handle problems on the internet; I’m thinking even an image of the Title will work but I haven’t tried that, I have too many tabs. To do this, take a screen shot of the page you want; crop out the image you want the code to recognize; and save it as a .bmp file and use this command.  with either IMAGE FOUND or IMAGE NOT FOUND, or both if needed. Of course, if they change the logo or the image you capture, you’ll need to capture it again. ;-)  You’ll find this is handy for a lot of stuff! Finding buttons.. etc.  Capture the X, Y location (center of the image) and click it later, if it’s a button or something to click.  I have to use this all the time to handle lag.  My high speed internet is rural and pretty slow compared to city internet.  And in game play, it’s great for handling lag. :-)

24 | IF | DETECT IMAGE | image path C:\LogoOrImage.bmp::match quick::move mouse no::save to vars TLCX TLCY | IMAGE NOT FOUND | GOTO MACRO LINE | FailedToFind

or

24 | IF | DETECT IMAGE | image path C:\LogoOrImage.bmp::match quick::move mouse no::save to vars TLCX TLCY | IMAGE FOUND | GOTO MACRO LINE | FoundIt

I also use it to know when the page closes so I can continue with code for other pages.


IF | KEYBOARD KEYPRESS

URL: https://minimousemacro.proboards.com/thread/564/keyboard-keypress
Date: Apr 20, 2022 19:03:53 GMT

User: Victor

Date: Apr 20, 2022 19:03:53 GMT

Hey guys, You’ve already told me that IF | KEYBOARD KEYPRESS was kind of a fuzzy condition to program but I’d need to make a macro that detects if I press either MOUSE4 ~or~ MOUSE5 (mmm detects these values as xbutton2 and xbutton1 respectively). Thing is, if I program IF | KEYBOARD KEYPRESS | Keypress xbutton2 | IS | CONTINUE then I obviously can’t program ELSE | IF | KEYBOARD KEYPRESS | Keypress xbutton1 | IS | CONTINUE. I’m not sure if I’m explaining myself correctly but I want the macro to detect wether I press xbutton1 or 2 and from that, do a specific set of steps (I figured I could do it using THEN/ELSE but I can’t get to that part yet

User: philranger

Date: Apr 24, 2022 13:59:06 GMT

Hello, If I understand correctly: You want to detect one button OR the other, so a continue doesn’t work. You can do another kind of looping, such as: A: If button 1 goto B If button 2 goto C Goto A Hoping this helps

User: Victor

Date: Apr 25, 2022 16:28:51 GMT

USoWV0dWXmFkYDAjTGiw.jpg Apr 24, 2022 13:59:06 GMT

philranger said: Hello, If I understand correctly: You want to detect one button OR the other, so a continue doesn’t work. You can do another kind of looping, such as: A: If button 1 goto B If button 2 goto C Goto A Hoping this helps But it then won’t wait for either keypress to be pressed to continue, it will just go on, right?

User: cyberchipz

Date: Apr 27, 2022 20:18:38 GMT

As you see, it loops back to the beginning; if you want to exit the loop, you write that code at Label B. or C.  He didn’t include that code; that’s what you wanted to do. ;-)  so, it keeps going around in circles until you do one or the other.  You could put as many traps inside the loop to handle as many different things you wanted to do.. and when it detects that action, it will go to the line with the label you give it.  It’s a thing about coders and coding; you have to understand the basic process; or none of it makes sense. As a coder; we have a rule; we don’t write your code for you.. we will help with syntax, logic, function; but the path is yours to take. ;-)  We’re quite literal; so be specific.  the code is unforgiving. And at the top, in the menu is a box with a c inside it; it’s quirky; but not hard to figure out… Give examples of your code; in that way, we only help to fix it for you; so You can see what it’s missing; but… when you do provide examples… use that command to enter the code… click on the [C] above, and enter the code in the box. Hit enter; and it formats it for you.. the way you wrote it… and it’s easier to help that way. :-)


Change Quick Launch list behind the scenes

URL: https://minimousemacro.proboards.com/thread/561/change-quick-launch-list-scenes
Date: Apr 2, 2022 19:15:43 GMT

User: gurttron

Date: Apr 2, 2022 19:15:43 GMT

I use macros for my job, and with MMM I have about 20 setup, which is about the limit I can get without messing with other things. I have about a dozen more I need/want to make and if new tasks get added to my work load I’ll need another dozen or so. With the fast pace of the work environment I am in I really would like a way to have multiple Quick Launch Lists that can change on the fly, without needing to switch to the program. I use MMM in conjunction with VBA Userforms and the 1000’s of macros I have set in there. ie I use the SendKey’s VBA code to send the keys I have set for MMM to run the MMM macro. What I would like is a way when I click a certain userform button it loads the needed MMM quicklaunch list, and if I click another button again from my userform it’ll load a different list. This way I can make a quick launch list per Job Task I have without overlapping, and better organization with more HotKeys I can set.

User: Steve

Date: Apr 5, 2022 4:00:02 GMT

defaultavatar.png Apr 2, 2022 19:15:43 GMT

gurttron said: I use macros for my job, and with MMM I have about 20 setup, which is about the limit I can get without messing with other things. I have about a dozen more I need/want to make and if new tasks get added to my work load I’ll need another dozen or so. With the fast pace of the work environment I am in I really would like a way to have multiple Quick Launch Lists that can change on the fly, without needing to switch to the program. I use MMM in conjunction with VBA Userforms and the 1000’s of macros I have set in there. ie I use the SendKey’s VBA code to send the keys I have set for MMM to run the MMM macro. What I would like is a way when I click a certain userform button it loads the needed MMM quicklaunch list, and if I click another button again from my userform it’ll load a different list. This way I can make a quick launch list per Job Task I have without overlapping, and better organization with more HotKeys I can set. Hi gurttron I love that your using the SendKeys VBA code to send keys to MMM - nice wink.png I think i get what your trying to achieve but why not just have one really large quick launch list that has all the quick launches you need? I might be missing that part.

User: gurttron

Date: Apr 8, 2022 2:01:54 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Apr 5, 2022 4:00:02 GMT

Steve said: defaultavatar.png Apr 2, 2022 19:15:43 GMT

gurttron said: I use macros for my job, and with MMM I have about 20 setup, which is about the limit I can get without messing with other things. I have about a dozen more I need/want to make and if new tasks get added to my work load I’ll need another dozen or so. With the fast pace of the work environment I am in I really would like a way to have multiple Quick Launch Lists that can change on the fly, without needing to switch to the program. I use MMM in conjunction with VBA Userforms and the 1000’s of macros I have set in there. ie I use the SendKey’s VBA code to send the keys I have set for MMM to run the MMM macro. What I would like is a way when I click a certain userform button it loads the needed MMM quicklaunch list, and if I click another button again from my userform it’ll load a different list. This way I can make a quick launch list per Job Task I have without overlapping, and better organization with more HotKeys I can set. Hi gurttron

I love that your using the SendKeys VBA code to send keys to MMM - nice wink.png I think i get what your trying to achieve but why not just have one really large quick launch list that has all the quick launches you need? I might be missing that part.
There is a limit to how many keys can be used via SendKeys & MMM without compatibility issues, and I have reached it already grin.png (On another note really wish this forum would send email notifications when responses come in grin.png )

User: Steve

Date: Apr 9, 2022 0:16:45 GMT

Hi gurttron

Yeah the notifications are slow on this forum. I’m not sure what is happening with that. Proboards has this mass emailing feature for board owners that they warn ‘can take days to email out due to abuse’. I think they might have some mail problems… Ok, I see how you could reach that limit. I’m not sure how to solve this one or if it can be solved at all with quick launch. I think you are going to need some conditions to dynamically load or feed different macro files in as you need them.  Have a look at the conditions below, they will give you some ideas to get the macro lines in dynamically:

<www.turnssoft.com/conditions.html#loadmacro>

<www.turnssoft.com/conditions.html#loadmacrofromurl>

<www.turnssoft.com/conditions.html#addmacrofromfile>

<www.turnssoft.com/conditions.html#addmacrofromurl> Cheers, Steve.

User: gurttron

Date: Apr 11, 2022 14:51:33 GMT

Haven’t had a chance to look through these in detail yet but thanks!! I am sure it’ll be helpful!!


Saving single INTEGER externally?

URL: https://minimousemacro.proboards.com/thread/112/saving-single-integer-externally
Date: Nov 27, 2018 23:05:10 GMT

User: zeak

Date: Nov 27, 2018 23:05:10 GMT

Is there a way to save single INTEGERs externally either to a INPUT.mmmacro just used as a data file to then have certain INTEGERs be pulled back to the main macro when required? Example of how I think it works:

1 | RUN ACTION | OUTPUT TO FILE | D:\Macro\RX\INPUT.mmmacro::OVERWRITE::%INTEGER1%::%INTEGER4%

The line above if I can understand it correctly creates an INPUT.mmmacro file at the file path D:\Macro\RX\INPUT.mmmacro with the declared INTEGER1 overwritten with the information with INTEGER4 in the current macro for use with the INPUT FROM FILE action.

User: Steve

Date: Nov 28, 2018 4:06:18 GMT

A good way to get data into variables during run time is to use INPUT FROM FILE ( <www.turnssoft.com/conditions.html#inputfromfile> ).

1 | RUN ACTION | INPUT FROM FILE | VARIABLES::REFRESH::D:\Macro\RX\VARS.txt

Declared usually at the beginning of the macro, the INPUT FROM FILE condition above will monitor the VARS.txt for changes. Any changes that are made to the file will be added into the corresponding variables.
For this to work, VARS.txt must be formatted correctly: VARS.txt INTEGER::10 INTEGER1::20 INTEGER2::30 INTEGER3::40 INTEGER4::50 STRING::Ant STRING1::Bee STRING2::Cat STRING3::Dog STRING4::%CLIPBOARD% If you do not intent to monitor all variables for changes then a single variable can be declared. Like we did here: JFoc0jEJzNqTrrLxeLBk.jpg Nov 27, 2018 3:56:42 GMT

Steve said: getres.mmmacro can assign the resolution to variables. I think this is what you are after. getres.mmmacro uses ‘wmic’ to pull the screenwidth and screenheight values into a file that is read in by MMM to assign the variables. main.mmmacro

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::0
3 | FOR | EACH | LINE IN | D:\Macro\getres.mmmacro | RUN
4 | RUN ACTION | MESSAGE PROMPT | Screen Res is %integer1%x%integer%::::0

getres.mmmacro

1 | RUN ACTION | INPUT FROM FILE | INTEGER1::REFRESH::D:\Macro\inX.txt
2 | RUN ACTION | RUN VIA CMD /c | for /f "tokens=1,2 delims== skip=2" %i in ('wmic desktopmonitor get screenwidth /value') do (IF NOT "%j"=="" <NUL set /p out=%j>D:\MACRO\inX.txt)
3 | RUN ACTION | WAIT SECONDS | 2
4 | RUN ACTION | INPUT FROM FILE | INTEGER::REFRESH::D:\Macro\inY.txt
5 | RUN ACTION | RUN VIA CMD /c | for /f "tokens=1,2 delims== skip=2" %i in ('wmic desktopmonitor get screenheight /value') do (IF NOT "%j"=="" <NUL set /p out=%j>D:\MACRO\inY.txt)
6 | RUN ACTION | WAIT SECONDS | 2

OUTPUT TO FILE can be used to populate a single entry. Something like this:

1 | RUN ACTION | INPUT FROM FILE | INTEGER::REFRESH::D:\Macro\RX\INTEGER.txt
2 | RUN ACTION | OUTPUT TO FILE | D:\Macro\RX\INTEGER.txt::OVERWRITE::%INTEGER%

<www.turnssoft.com/conditions.html#inputfromfile> <www.turnssoft.com/conditions.html#outputtofile>

User: zeak

Date: Nov 29, 2018 0:07:33 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Nov 28, 2018 4:06:18 GMT

Steve said:

1 | RUN ACTION | INPUT FROM FILE | INTEGER::REFRESH::D:\Macro\RX\INTEGER.txt
2 | RUN ACTION | OUTPUT TO FILE | D:\Macro\RX\INTEGER.txt::OVERWRITE::%INTEGER%

So if I was to do this I would require a different text file for each INTEGER that I wanted recorded. Is there a way to pull a particular INTEGER from a text file that has multiple INTEGERs in it like your previous example below. VARS.txt INTEGER::10 INTEGER1::20 INTEGER2::30 INTEGER3::40 INTEGER4::50 STRING::Ant STRING1::Bee STRING2::Cat STRING3::Dog STRING4::%CLIPBOARD% Lets say I only wanted to update “STRING1::Bee” from this file, would that be possible? I’m just hoping to get away from having half a dozen text files required with my macro.

User: Steve

Date: Nov 29, 2018 3:37:40 GMT

Yeah if you only wanted to update STRING1=Bee then within VARS.txt you would change the value of STRING1 within the file.

1 | RUN ACTION | INPUT FROM FILE | VARIABLES::REFRESH:D:\Macro\RX\VARS.txt
2 | RUN ACTION | MESSAGE PROMPT | Value of STRING1 = %STRING1%::Value Before ::0
* | Make the change to the value within VARS.txt now and save the file.
3 | RUN ACTION | WAIT SECONDS | 5
4 | RUN ACTION | MESSAGE PROMPT | Value of STRING1 = %STRING1%::Value After ::0

VARS.txt INTEGER::10 INTEGER1::20 INTEGER2::30 INTEGER3::40 INTEGER4::50 STRING::Ant STRING1:: Frog STRING2::Cat STRING3::Dog STRING4::%CLIPBOARD%

User: zeak

Date: Nov 29, 2018 4:23:57 GMT

Can I update the value STRING1 from Bee to Frog without having to open the text file. can I use a macro to do so?

1 | RUN ACTION | INPUT FROM FILE | VARIABLES::REFRESH:D:\Macro\RX\VARS.txt
2 | RUN ACTION | MESSAGE PROMPT | Value of STRING1 = %STRING1%::Value Before ::0
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::Frog
4 | RUN ACTION | OUTPUT TO FILE | D:\Macro\RX\VARS.txt::STRING1::%string1%
5 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::Bee
* | This is just to change the variable on MMM to be different then Frog to see if the change works.
6 | RUN ACTION | INPUT FROM FILE | STRING1::REFRESH:D:\Macro\RX\VARS.txt
7 | RUN ACTION | MESSAGE PROMPT | Value of STRING1 = %STRING1%::Value After ::0

The Idea is if you could use a STRING or INTEGER was well as OVERWRITE or APPEND while performing the OUT TO FILE action. Sorry if you have trouble understanding what I am thinking as I have trouble communicating my thoughts.

User: Steve

Date: Nov 29, 2018 5:03:00 GMT

1 | RUN ACTION | OUTPUT TO FILE | D:\Macro\RX\VARS.txt::OVERWRITE::%VARIABLES%

The line above will output the value of all current variables to the file VARS.txt with the correct formatting. Does this help?

User: zeak

Date: Nov 29, 2018 5:05:55 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Nov 29, 2018 5:03:00 GMT

Steve said:

1 | RUN ACTION | OUTPUT TO FILE | D:\Macro\RX\VARS.txt::OVERWRITE::%VARIABLES%

The line above will output the value of all current variables to the file VARS.txt with the correct formatting. Does this help? the issue with that is I don’t wish to change the other variables, just a single one.

User: Steve

Date: Dec 3, 2018 5:23:54 GMT

VARS.txt could have a single entry. Something like: STRING1::Frog With 1 | RUN ACTION | INPUT FROM FILE | VARIABLES::REFRESH:D:\Macro\RX\VARS.txt any changes to VARS.txt during the running macro will refresh the variable value that it is assigned to.

User: cyberchipz

Date: Apr 3, 2022 21:04:09 GMT

I have tried to use INPUT FROM FILE this and it isn’t working for me.  Line 16 should import the variables into the macro… the file has changed and STRING1 says TESTING WORKS I am using 8.3.3.0 - have not tested in previous versions… just needed it now. The error created just repeats the code in line 16, (NO REASON OR ANYTHING) same happens for trying to save a changed variable and overwrite it with OUTPUT TO FILE (Not shown) Bottom line; code is not IMPORTING or EXPORTING variable values to the file. (Lines 20-22 work)

1 | RUN ACTION | DEBUG | BACKGROUND COLOR::Black
2 | RUN ACTION | WAIT SECONDS | 1
3 | RUN ACTION | DEBUG | FOREGROUND COLOR::White
* | Want to keep the previous Variables from another macro IOW don't want to lose them, so for testing assigning manually
* | and I already tested this without the variables being assigned, and testing adding VARS to see if that caused it to fail
4 | RUN ACTION | DEFINE STRING VARIABLE | STRING::ERRHANDLER
* | Defined this next variable top TESTING.. file says TESTING WORKS
5 | RUN ACTION | DEFINE STRING VARIABLE | STRING1::TESTING
6 | RUN ACTION | DEFINE STRING VARIABLE | STRING2::DebugClickCheck
7 | RUN ACTION | DEFINE STRING VARIABLE | STRING3::StopIt Normal is FALSE AUTO is TRUE SKIPPED is %SKIPPEDFLAG%
8 | RUN ACTION | DEFINE STRING VARIABLE | STRING4::NotTesting
9 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER::0
10 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER1::1298
11 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER2::778
12 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER3::0
13 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER4::2
* | This should be code to read in the changed variables (file content is listed below
14 | RUN ACTION | MESSAGE PROMPT | String1 is %STRING1%::TESTING INPUT FROM TEXT LOCATION::0::OK
15 | RUN ACTION | INPUT FROM FILE | VARIABLES::REFRESH:C:HWFLAGS\VARS.txt
16 | RUN ACTION | WAIT SECONDS | 5
17 | RUN ACTION | MESSAGE PROMPT | String1 is %STRING1%'\n'THIS SHOULD BE - TEST WORKS::TESTING INPUT FROM TEXT LOCATION::0::OK
18 | RUN ACTION | STOP
* | So I initially run each line here manually to set the variables first.
* | In reality Vars already exist because I retain Variable Values macro to macro
* | Change this line for testing purposes
19 | RUN ACTION | DEFINE STRING VARIABLE | STRING1::TESTING WORKS
20 | RUN ACTION | OUTPUT TO FILE | C:\HWFLAGS\VARS.txt::OVERWRITE::%VARIABLES%
21 | RUN ACTION | STOP

Pretty sure I didn’t need line 16 but added anyway… just because. Lines 11 and 12 works… and creates the file with all the variables Below STRING::ERRHANDLER STRING1::TEST WORKS STRING2::DebugClickCheck STRING3::StopIt Normal is FALSE AUTO is TRUE SKIPPED is %SKIPPEDFLAG% STRING4::NotTesting INTEGER::0 INTEGER1::1298 INTEGER2::778 INTEGER3::0 INTEGER4::2

User: Steve

Date: Apr 4, 2022 22:36:15 GMT

Hi cyberchipz,

I can’t see where you could be going wrong. It looks ok to me. Is the MMM internal event log giving you any feedback that might help?

Have a look at this example based off your STRING and INTEGER variable.  You should be able to replicate this by pasting the code into MMM:

* | #############################
* | Clear all vars
* | #############################

   1 | RUN ACTION | DEFINE STRING VARIABLE | FARM::Chicken
   2 | RUN ACTION | DEFINE BOOLEAN VARIABLE | STATUS::FALSE
   3 | RUN ACTION | DEFINE INTEGER VARIABLE | COUNT::0
   4 | RUN ACTION | DEFINE STRING VARIABLE | STRING::NUL
   5 | RUN ACTION | DEFINE STRING VARIABLE | STRING1::NUL
   6 | RUN ACTION | DEFINE STRING VARIABLE | STRING2::NUL
   7 | RUN ACTION | DEFINE STRING VARIABLE | STRING3::NUL
   8 | RUN ACTION | DEFINE STRING VARIABLE | STRING4::NUL
   9 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER::0
   10 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER1::0
   11 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER2::0
   12 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER3::0
   13 | RUN ACTION | DEFINE INTEGER VARIABLE | INTEGER4::0

* | #############################
* | Output all vars prior to input from file
* | #############################

   14 | RUN ACTION | MESSAGE PROMPT | %STRING%'\n'%STRING1%'\n'%STRING2%'\n'%STRING3%'\n'%STRING4%'\n'%INTEGER%'\n'%INTEGER1%'\n'%INTEGER2%'\n'%INTEGER3%'\n'%INTEGER4%'\n'
   15 | RUN ACTION | MESSAGE PROMPT | %FARM%'\n'%STATUS%'\n'%COUNT%::Farm - Status - Count

* | #############################
* | input from file from input1.txt
* | #############################

   16 | RUN ACTION | INPUT FROM FILE | VARIABLES::NO_REFRESH::D:\Dropbox\Macro\File\input1.txt

* | #############################
* | output all vars post input from file
* | #############################

   17 | RUN ACTION | MESSAGE PROMPT | %STRING%'\n'%STRING1%'\n'%STRING2%'\n'%STRING3%'\n'%STRING4%'\n'%INTEGER%'\n'%INTEGER1%'\n'%INTEGER2%'\n'%INTEGER3%'\n'%INTEGER4%::Strings and Integers
   18 | RUN ACTION | MESSAGE PROMPT | %FARM%'\n'%STATUS%'\n'%COUNT%::Farm - Status - Count

input1.txt

FARM::Goat
STATUS::False
COUNT::2
STRING::ERRHANDLER
STRING1::TEST WORKS
STRING2::DebugClickCheck
STRING3::StopIt Normal is FALSE AUTO is TRUE SKIPPED is %SKIPPEDFLAG%
STRING4::NotTestingNo
INTEGER::1
INTEGER1::1298000
INTEGER2::77800000
INTEGER3::10000000
INTEGER4::200000

minimousemacro_InputFromFile.gif

User: cyberchipz

Date: Apr 5, 2022 14:16:51 GMT

OH MY! I feel like such a doof… shaking my head…. line 15 of my code is missing a colon… and backslash after C:  (sigh)….

I’m just going to fall back on… my hand injury has me having to pay so much attention to my typing… that when I edited the path, I botched it up and didn’t see it. undecided.png

Thank you so much… I’ll just say that having code I know works to go from…. sure makes a big difference in my expectations…  Naturally, I had to change the path in your code; but, I didn’t mess up this time when I changed it.  I was going to write… saving the whole file and input that would have been a good enough workaround… I’d have used it; but, everything is working now… and I appreciate this so much… thanks for bearing with me. 

typo’s … a coder’s worst enemy. (sigh).

Thanks again Steve…

All of my previous and new, from you, code is all working now! :-)

PS: For what it is worth; the MMM internal event log only repeated the line with the error; but with the missing colon, and missing backslash… it had nothing to say about the line… it did not pick up on the syntax error; but, then I don’t expect it would. ibb.co/sCCnGkJ   image of error log.


Fuzzy matching for WINDOW TITLE

URL: https://minimousemacro.proboards.com/thread/560/fuzzy-matching-window-title
Date: Mar 31, 2022 16:39:30 GMT

User: moatmai

Date: Mar 31, 2022 16:39:30 GMT

Using Mini Mouse Macro Pro, I am trying to check whether a window exists by targeting its title, i.e.

6 | IF | WINDOW TITLE | Page Info | EXIST | CONTINUE

However, this does not work because the actual title is “Page Info — <some URL>”, where <some URL> changes depending on the page from which I’m invoking the Page Info window. I was hoping to use something like “Page Info*” to do a wildcard match, but that doesn’t work. Can anyone suggest what could I do to get the Macro to work the way I need it to?

User: Steve

Date: Apr 1, 2022 22:10:25 GMT

Hi moatmai

Yes we can do this but its not pretty.
MMM at the moment has very little in the way of string manipulation which makes problems like this complicated.  At this stage with version 8.3.3.0 we need to rely on external commands to feed the variables in for the window titles. I don’t have any give within the ‘WINDOW TITLE’ condition for wildcarding/fuzzy matching but i will look into that.

Bear with me - this is what I have below:

1 | RUN ACTION | RUN VIA CMD /C | tasklist /fi "imagename eq notepad.exe" /fo list /v > d:\macro\temp\windowlist.txt & findstr "Window Title:" d:\macro\temp\windowlist.txt > d:\macro\temp\windows.txt
2 | IF | FILE | D:\macro\temp\mmm_log.txt | EXIST | FILE DELETE | D:\macro\temp\mmm_log.txt
3 | FOR | EACH | LINE IN | D:\macro\temp\windows.txt | DO
   4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%line%
   5 | RUN ACTION | RUN VIA CMD /C | for /F "tokens=1,2,*" %a in ("%STRING%") do echo %c&gt;&gt;d:\macro\temp\mmm_log.txt
   6 | RUN ACTION | WAIT SECONDS | 1
7 | FOR | NEXT
8 | FOR | EACH | LINE IN | d:\macro\temp\mmm_log.txt | DO
   9 | RUN ACTION | DEFINE STRING VARIABLE | %WINDOW_TITLE%::%line%
   10 | IF | WINDOW TITLE | %WINDOW_TITLE% | EXIST | MESSAGE PROMPT | Found Window: %WINDOW_TITLE%::%WINDOW_TITLE% EXITS!::0::OK
11 | FOR | NEXT

In this example I want to find pizza.txt

  • Notepad. A new file I opened.
  • Line 1
    • One way to capture all the window titles is with the old tasklist command.
    • At line 1 we run a command line action to output all the window titles from open notepad.exe windows.
    • We output that to windowlist.txt. After that we run findstr to filter for only the ‘Window Title:’ lines in the file and output that to another file called windows.txt.
    • The result is a file called windows.txt with the current open notepad text file window titles. It looks like this for my currently open text files:
      • windows.txt
      • Window Title: windowlist.txt - Notepad
      • Window Title: pizza.txt - Notepad
  • Line 2
    • We make sure we don’t have mmm_log.txt so we delete it. We need that file clean for later on.
  • Line 3
    • Line 2 is the start of a for loop where we loop over each line in windows.txt.
  • Line 4
    • We define a new variable %STRING% to contain the contents of the current line of the file (%LINE%).
  • Line 5
    • We need to trim the ‘Window Title: ‘ away from the string so we are just left with titles. We need another batch command here so we throw it at a windows for /F and print out the 3 to the nth values.
  • Line 6
    • Here we wait 1 second because the macro runs faster than the command at line 5 and want to ensure that mmm_log.txt is fully populated.
  • Line 7
    • This is the end of the FOR we started at line 3. At this point we have another file ‘mmm_log.txt’ with just the window titles. It looks like this:
      • mmm_log.txt
      • windowlist.txt - Notepad
      • pizza.txt - Notepad
  • Line 8
    • Line 8 is the start of a for loop where we loop over each line in mmm_log.txt.
  • Line 9
    • We define a new variable %WINDOW_TITLE% to contain the content of the current line of the file (%LINE%).
  • Line 10
    • Here we loop for our window title and if we find it I popup a message box to say “Found Window %WINDOW_TITLE%”.
  • Line 11
    • We end the for loop.

My windows cmd line is pretty old school and powershell is probably the better tool here to extract the values. If someone has a neater script please please pass it out here. I’d love to see it. Hope this helps. Steve.

User: moatmai

Date: Apr 2, 2022 0:56:44 GMT

First of all: Thanks for your response! And I appreciate the fact that there actually is a solution. Second: Oof. That is a lot of work for achieving a fuzzy match … I thought there was some eay thing I was missing, but apparently I have opened quite the proverbial can of worms.

I think I will have to handle this manually for now. (It is a task I do every one or two months …) Hopefully there will be a future version of MMM which will do fuzzy matching. I’ll wait until then.

Regards, moatmai


Detect Image and Mouse to Image Conditions.

URL: https://minimousemacro.proboards.com/thread/557/detect-image-mouse-conditions
Date: Mar 16, 2022 3:18:49 GMT

User: Victor

Date: Mar 16, 2022 3:18:49 GMT Hey guys, it’ll be too much text but anyways, help if you can and want ❤.

I’ve been playing a lot with MMM lately and found out how to accurately use these two conditions. However, I’m trying to make a Macro to Follow/Unfollow/Block people on Instagram (There are apps for that, but I want to do it on my own with a Macro because it’s fun). I’ve been trying to do this:

I’m already at the “Following” section of someone else’s account. I’m not following any of those accounts, so all there is on screen are their usernames, profile pics, and a big blue “Follow” button on each of them. Note that I’m using an Android Emulator, so it is Instagram’s Android/Mobile user interface.

Steps:

  1. Detect Image / Mouse to Click to find that blue “Follow” button and click just before to open that person’s profile.
  • Works great.
  1. Detect Image / Mouse to Click to find the three dots in the upper right corner.
  • By screenshotting the three buttons, it worked at first but then started bugging, so I only cropped 1 out of the three dots so it detects only the first of the three, and it works great like that.
  1. Detect Image / Mouse to Click to find the “Block” section.
  • Depending on whether that person’s profile is Public or Private, there’s an extra option here, so I can’t just do a simple left click on “Block” because it will be constantly changing. Also, if I select the entire word, sometimes it bugs, so I sorted it out by only screenshotting the “BL”, “BLO”, “CK”, or “K” as it’s not a button itself, but a section in a content box, so there’s no outline on the “Block” option. I’m making it find the word basically. Only that way was I able to make it work 100% of the time.
  1. Detect Image / Mouse to Click to find the blue “Block” confirmation button.
  • It’s a long button, so it was bugging as well, so I did the same thing as in step 3. Works normally.
  1. Detect Image / Mouse to Click to find the Back arrow in the top left to obviously go back and go to the next one.

I’ve managed it to work until this point because if I loop the macro, it’ll just still go to the first person on the list even though there’s no “Follow” button but an “Unblock” button instead of searching for the next “Follow” button which is right under it. I can just go back again to the main profile and then back to the “Following” section so it will be a new still unblocked profile on top, but I’ve already taken the challenge to make it work the way I want it to work (if possible, you’ll tell me) and I also don’t want to add those extra steps.

Now, that’s a quite specific task, so it could be replicated on Instagram’s web page, or just somewhere where the target image repeats a couple of times so the macro must look for the next option available when the last one already changed. For example, having a 1x10 table and filling it with 0’s and making the macro change all of those 0’s to 1’s. I’m not sure. If it just won’t work, tell me, or if you know a better way to do all this, correct me and I’ll replicate.

I’ll leave my lines here under so you can see how I organized it.

1 | RUN ACTION | MOUSE TO IMAGE | image path C:\Users\victo\Pictures\Macro\Follow button.bmp::at 1071 277 135 750::match full::move mouse no::save to vars X Y | AND | 2 | RUN ACTION | MOUSE CLICK | Left click at 900 %Y% 1 times with 100 ms delay
2 | RUN ACTION | WAIT SECONDS | 1 | AND | 2 | IF | DETECT IMAGE | image path C:\Users\victo\Pictures\Macro\dot.bmp::match full::move mouse no::save to vars X2 Y2 | IMAGE FOUND | MOUSE CLICK | Left click at %X2% %Y2% 1 times with 100 ms delay
4 | RUN ACTION | WAIT SECONDS | 1 | AND | 4 | RUN ACTION | MOUSE TO IMAGE | image path C:\Users\victo\Pictures\Macro\ck.bmp::at 659 718 100 100::match full::move mouse no::save to vars X3 Y3 | AND | 4 | RUN ACTION | MOUSE CLICK | Left click at %X3% %Y3% 1 times with 100 ms delay
4 | RUN ACTION | WAIT SECONDS | 1 | AND | 4 | IF | DETECT IMAGE | image path C:\Users\victo\Pictures\Macro\ck2.bmp::match full::move mouse no::save to vars X4 Y4 | IMAGE FOUND | MOUSE CLICK | Left click at %X4% %Y4% 1 times with 100 ms delay
5 | RUN ACTION | WAIT SECONDS | 1 | AND | 5 | IF | DETECT IMAGE | image path C:\Users\victo\Pictures\Macro\back arrow.bmp::match full::move mouse no::save to vars X5 Y5 | IMAGE FOUND | MOUSE CLICK | Left click at %X5% %Y5% 1 times with 100 ms delay

User: philranger

Date: Mar 16, 2022 13:31:31 GMT

Hello Victor, A few « brainstorm » ideas:

  • In Windows, you often can either hit « tab » multiple times to go through the various buttons and then press the spacebar to activate them. I don’t know if it works in Instagram as I don’t use it.
  • Sometimes, there are keyboard shortcuts, which can be found by googling for them. According to greasyfork.org/fr/scripts/374589-instagram-keyboard-shortcuts it is « l » to follow/unfollow (I don’t know if this is what you need to do though).
  • Also I don’t know if an android emulator does any of this though.

Regards

User: Victor

Date: Mar 17, 2022 1:41:43 GMT

Yes, one way to work around it would be using Tab, nevertheless it won’t work on the Emulator, only on Instagrams web page. Also, I think it would come to the same result as I’d need to find those cues that will tell the macro where to click to focus that section and then Tab until I reach my destination button.

Is there a condition or option to increase the number of times the Tab button will be pressed when the Macro loops? like, for example, the first time it will press it 2 times, then 3, then 6 and so on as the macro continues looping.

User: Steve

Date: Mar 19, 2022 4:26:28 GMT

Hi Victor, You might be a good candidate to try the OCR image recognition beta features within the version 8.3.3.0 (released today).
Have a look at <www.turnssoft.com/ocr.html> for the initial instructions to set it up. It might be useful to detect the ‘Follow’, ‘Block’, etc word changes rather than the banner image detection.

User: Victor

Date: Mar 21, 2022 15:51:05 GMT

Hi Steve, I’ll be more than glad to help. I’m checking that out.


Offset previously saved %XPOS% %YPOS%

URL: https://minimousemacro.proboards.com/thread/558/offset-previously-saved-xpos-ypos
Date: Mar 17, 2022 21:58:14 GMT

User: Ale

Date: Mar 17, 2022 21:58:14 GMT

“The example below will try to detect the image banner.bmp on the screen. If it is found it will not move the mouse to that location and it will save the mouse X and Y pos values to variables %X% and %Y% and then carry out the MOUSE CLICK action. The MOUSE CLICK action will perform a ‘Left Click’ at the declared image X and Y value.

1 | IF | DETECT IMAGE | image path C:\File\banner.bmp::match quick::move mouse no::save to vars X Y | IMAGE FOUND | MOUSE CLICK | Left click at %X% %Y%"

Is it possible to save the mouse position and then perform the click at those %X% %Y% values BUT with an offset?

1 | IF | DETECT IMAGE | image path C:\File\banner.bmp::match quick::move mouse no::save to vars X Y | IMAGE FOUND | MOUSE CLICK | Left click at %X%-250 %Y%+50 for example? It is giving me an error so I'm doing something wrong, but is it possible to make it work?

User: philranger

Date: Mar 18, 2022 2:25:02 GMT

Hello, Maybe there is a better way, but you can stock variables in %INTEGER1% through 5 I believe and do math on them.

User: Steve

Date: Mar 18, 2022 6:04:14 GMT

Hi Ale, This can be done but we need to force the mouse move first, WAIT for the mouse to move, and with an AND condition finally click on the internal %mouse_x% and %mouse_y% vars.

These internal mouse vars hold the current mouse x and y so they will be populated with the initial move within the DETECT IMAGE condition.

This example has a +250 X and +250 Y offset.

1 | IF | DETECT IMAGE | image path D:\pics\capture2.bmp::match quick::move mouse yes::offset +250 +250 | IMAGE FOUND | WAIT MILLISECONDS | 10 | AND | 1 | RUN ACTION | MOUSE CLICK | Left click at %mouse_x% %mouse_y% 1 times with 50 ms delay

User: Ale

Date: Mar 18, 2022 19:19:00 GMT

Hey guys, thx for answering. I had already guesed there was indeed a fixed name/denomination/route to call the X and Y values of the mouse no matter where they were, just use those values; but didn’t know exactly how. Great group and tool


Difference Between Keypress 7 and Keypress 7 (Numberpad)

URL: https://minimousemacro.proboards.com/thread/540/keypress-7-numberpad
Date: Jan 6, 2022 6:47:42 GMT

User: Guest

Date: Jan 6, 2022 6:47:42 GMT

Trying to figure out how to code this. For my purposes there is a difference between the Keyboard 7 and the Numberpad 7. When I use the Record Option, they both list it as Keypress 7 and my script won’t work. What is the code for to get it to recognize the Keypad 7??

User: philranger

Date: Jan 7, 2022 3:47:30 GMT

I don’t think that MMM can differentiate them, sorry

User: zeak

Date: Jan 17, 2022 23:18:19 GMT

Hi Steve , Do you think this should be added to the improvement list? Personally I have a few hotkeys that use Numpad over Number row keys as well as Excel uses certain functions with Numpad. Cheers, Zeak

User: Steve

Date: Jan 18, 2022 5:17:21 GMT

Hi zeak Yeah i will look in to it and let you know. Cheers.

User: Palindar

Date: Feb 22, 2022 18:47:14 GMT

I have a game Neverwinter nights. It uses the numpad to enter commands and the number buttons as hotkeys. I tried to program a macro with mini mouse but it does not recognise the numpad keys on playback.

User: Victor

Date: Feb 28, 2022 19:50:25 GMT

Feb 22, 2022 18:47:14 GMT Palindar said: I have a game Neverwinter nights. It uses the numpad to enter commands and the number buttons as hotkeys. I tried to program a macro with mini mouse but it does not recognise the numpad keys on playback. Hi, If I’m not wrong in all/most games where you have hotkeys, they record those as NUMPAD7 for example. Have you tried it like that?

User: Palindar

Date: Mar 2, 2022 14:05:48 GMT

I tried it by using the manual edit of the macro entry so it says NUMPAD0 and when run it typed out NUMPAD0 as the entry (i tested in notepad) instead of 0 from the numpad.

User: Palindar

Date: Mar 2, 2022 14:11:25 GMT

I saw this in the event log. 03/02/2022 02:08:43.34 PM Playback error: 4 | 1611 | 1259 | 1794 | Numpad 0 - Not a standard action or multi text out [not an error]: Keyword “Numpad 0” is not valid. Is there somewhere with a list of valid keywords? I tried Numpad 0 and Numberpad 0 but that didnt work either.

User: Steve

Date: Mar 7, 2022 21:44:55 GMT

Mar 2, 2022 14:11:25 GMT Palindar said: I saw this in the event log. 03/02/2022 02:08:43.34 PM Playback error: 4 | 1611 | 1259 | 1794 | Numpad 0 - Not a standard action or multi text out [not an error]: Keyword “Numpad 0” is not valid. Is there somewhere with a list of valid keywords? I tried Numpad 0 and Numberpad 0 but that didnt work either. Hi Palindar, Playback error:  4 | 1611 | 1259 | 1794 | Numpad 0 - Not a standard action or multi text out [not an error]: Keyword “Numpad 0” is not valid. This log entry occurred because you forgot the standard ‘Keypress’ keyword prior to the text ‘Numpad 0’. This entry is telling us that the entry is not standard but it’s trying it anyway. The best way to find keywords is just to record a macro and press the keys.
Here are the numpad mappings. They are different depending on if you have ‘numlock’ on or off at the time of recording.

1 | X | X | 100 | Keypress NUMLOCK
2 | X | X | 100 | Keypress 0
3 | X | X | 100 | Keypress .
4 | X | X | 100 | Keypress 1
5 | X | X | 100 | Keypress 2
6 | X | X | 100 | Keypress 3
7 | X | X | 100 | Keypress 4
8 | X | X | 100 | Keypress 5
9 | X | X | 100 | Keypress 6
10 | X | X | 100 | Keypress 7
11 | X | X | 100 | Keypress 8
12 | X | X | 100 | Keypress 9
13 | X | X | 100 | Keypress NUMLOCK
14 | X | X | 100 | Keypress INSERT
15 | X | X | 100 | Keypress DELETE
16 | X | X | 100 | Keypress END
17 | X | X | 100 | Keypress DOWN
18 | X | X | 100 | Keypress PGDN
19 | X | X | 100 | Keypress LEFT
20 | X | X | 100 | Keypress CLEAR
21 | X | X | 100 | Keypress RIGHT
22 | X | X | 100 | Keypress HOME
23 | X | X | 100 | Keypress UP
24 | X | X | 100 | Keypress PGUP

User: Steve

Date: Mar 9, 2022 21:26:13 GMT

ovqiSZMQkcHXJsgduMbm.jpg Jan 17, 2022 23:18:19 GMT

zeak said: Hi Steve , Do you think this should be added to the improvement list? Personally I have a few hotkeys that use Numpad over Number row keys as well as Excel uses certain functions with Numpad. Cheers, Zeak Hi zeak Does that list above help?

User: zeak

Date: Mar 11, 2022 4:55:09 GMT

Hi Steve , The above list works for using the numeric keys above the alphabet Keys but does not account for utilizing the number pad when replaying the numbers recorded. the main reason I use the numpad keys particularly in excel is for my macros in excel VBA. Here is an example of my macro in VBA. Sub CreateShortcuts()    Application.OnKey “^{96}”, “ColourChange1” End Sub Sub DeleteShortcuts()    Application.OnKey “^{96}” End Sub Sub ColourChange1()    Selection.Interior.Color = RGB(102, 255, 255) End Sub Excel VBA refers to the Key code used that can be found in this website docstore.mik.ua/orelly/webprog/DHTML_javascript/0596004672_jvdhtmlckbk-app-b.html a keypress for 5 is keycode 53 and a keypress for numpad 5 is keycode 101. Below is an example of trying to record my macro shortcut and replay it, Macro shortcut is Control + Numpad 5 & Control + Numpad 0. KmcYRCu.gif I also noticed when you use the keyboard shortcut function in MMM to remove X Y coordinates that it removed the Key Up and Key Down if there was a key modifier in the line. NKacZm5.gif

User: Palindar

Date: Mar 11, 2022 11:25:26 GMT

I went back and retested and not able to get the numpad keys to record as numpad but it instead converts them to normal number keys that you find in the top row across the keyboard. As the previous post mentioned they are really different keys that need to be detected differently to normal numeric keys. Programs that are automatable use the number and numpad keys for different purposes. The keypress command needs to added for keyword Numpad[x] instead of typing out the letters Numpad when you execute the macro.

User: Steve

Date: Mar 11, 2022 20:29:26 GMT

Thanks zeak and Palindar, I have to ask, are you sure you are recording with numlock off? MMM will record the numbers when numlock is on and record the numpad actions when it’s not on. It should be like the example above. If you are using numlock and still not getting the same as above then maybe it’s something else. Are you using a standard full keyboard, laptop keyboard, or external number pad?

User: Palindar

Date: Mar 12, 2022 12:25:39 GMT

I have a 17 inch HP omen laptop with a numpad as it’s a large laptop. Since you make me think it could be different as it’s a laptop I did some testing. I recorded again macros with the laptop numberpad and as a second test a software keyboard built into windows called on screen keyboard. I recorded a macro to test the key detect difference between numpad and the number keys on the top row. I also check the num lock was working and it output number not the other keys which MM detects if in the other mode for things like END, HOME etc. MMM records each number keypress as Keypress x (where x is a number i typed). it cant differentiate between numpad and normal number keys. To make really sure it not my hardware or something else i started another macro software called Macro recorder and it detected the numpad keypresses were different to the top row number keys as it labels the numppad keys as NumPadX when i press them. So it seems that my laptop hardware is working ok but that MMM cant differentiate between numpad keys and number keys. Have you been able to record a macro with both number pad keys and normal keys. how does it show up in the macro ? Please share a screen shot if you can. Please be aware that i dont want to actually type the numbers, as software that the macro recorder wants to automate is bound to the numberpad keys and not the top number keys and so it does not type the number out on screen or in a text box like how you may imagine why i want to type numbers.

User: Steve

Date: Mar 13, 2022 20:33:25 GMT

Mar 12, 2022 12:25:39 GMT Palindar said: Please be aware that i dont want to actually type the numbers, as software that the macro recorder wants to automate is bound to the numberpad keys and not the top number keys and so it does not type the number out on screen or in a text box like how you may imagine why i want to type numbers. Ok I get it. MMM strips the ‘numpadX’ and replaces it with it’s numeric key value. Numpad1 becomes 1, numpad2 becomes 2, and so on. The problem is that ‘1’ is not ‘numpad1’ for a lot of applications like how your application wants to use it. This leaves MMM unable to provide a real representation of the numeric keyboard.
I’ve fixed this for the next update. Now numpadX will equal numpadX. I appreciate the persistence here in getting your point across. I completely overlooked this one. Thanks zeak and @palindar.


Using the IF |PROCESS NAME condition with Microsoft Edge

URL: https://minimousemacro.proboards.com/thread/551/using-process-name-condition-microsoft
Date: Feb 14, 2022 18:03:42 GMT

User: Julio

Date: Feb 14, 2022 18:03:42 GMT

Hello: With the condition IF |PROCESS NAME | Chrome |EXIST ……, mmm detects when the Chrome browser is open. How to write this condition so that mmm knows if Microsoft Edge browser is open? This browser comes standard with Windows 10. I’ve tried replacing the word Chrome with Edge, but it doesn’t work. Thanks a lot

User: Julio

Date: Feb 26, 2022 16:20:13 GMT

Does anyone know anything about my problem?

User: Steve

Date: Mar 7, 2022 21:56:27 GMT

Hi Julio, I did a quick google for ‘what is microsoft edge process name?’ and got msedge . This works for me:

1 | IF | PROCESS NAME | msedge | EXIST | MESSAGE PROMPT | ::Edge is open::0::OK

Hope this helps. Steve.

User: Julio

Date: Mar 8, 2022 17:41:46 GMT

Thank you very much Steve. Yes, it has helped me a lot


KeyPresses wont work in game

URL: https://minimousemacro.proboards.com/thread/555/keypresses-work-game
Date: Mar 8, 2022 0:40:15 GMT

User: WaifuLover13

Date: Mar 8, 2022 0:40:15 GMT

I recorded a macro to auto change my reticle color in apex but the key presses are not getting detected in apex but they work every where else. please help

User: Steve

Date: Mar 8, 2022 5:02:14 GMT

Not all games allow the keypresses from MMM to come through. It really depends on the game whether or not this is going to work. If MMM works for you outside of the game but not in the game, and your sure your launching it via hotkeys, then there is nothing that can be done to get it working. Sorry. But just check that the macro is actually starting with the hotkey…


Find string on the screen and click mouse on that string?

URL: https://minimousemacro.proboards.com/thread/549/find-string-screen-click-mouse
Date: Feb 12, 2022 3:40:52 GMT

User: Acor

Date: Feb 12, 2022 3:40:52 GMT

Hi, how to find string on the screen and click mouse on that string? String means text produced by the website (html prompt). For example, I want to open a web page, find the specific string on the web page visible part displayed via browser (Firefox, Chrome, etc.) and click mouse on the part of the screen where is the string. Thanks!

User: philranger

Date: Feb 18, 2022 20:26:38 GMT

Hello To my knowledge, the only way to do that is to store a picture of what the text looks like and do a move to image

User: zeak

Date: Feb 20, 2022 23:05:07 GMT

Hi All, Steve an I one point were looking into text detection, this was when we where trying to get image detection working. I am not sure if it is still on his radar or where he got with it.

User: Steve

Date: Mar 7, 2022 21:52:12 GMT

ovqiSZMQkcHXJsgduMbm.jpg Feb 20, 2022 23:05:07 GMT

zeak said: Hi All, Steve an I one point were looking into text detection, this was when we where trying to get image detection working. I am not sure if it is still on his radar or where he got with it. Hi zeak , Sorry mate for the late reply. OCR was one thing we were talking about yeah. It kinda shifted to the suite of image detection actions rather than anything to do with text recognition. It would be cool though. I did look briefly into it and it was a pretty big undertaking. I think at the time I thought it may have been too ambitious to get off the ground.


Diferencia entre WINDOW TITLE VS WINDOW BY NAME

URL: https://minimousemacro.proboards.com/thread/538/diferencia-entre-window-title-name
Date: Jan 4, 2022 17:59:29 GMT

User: Julio

Date: Jan 4, 2022 17:59:29 GMT

Hola, buenas tardes. Haciendo pruebas he comparado el comportamiento de las 2 condiciones siguientes: 1ª.- IF | WINDOW TITLE | Titulo1 | EXIST….. 2ª.- RUN ACTION | SELECT WINDOW BY NAME | Nombre1 Para que la 1ª condicion sea cierta es necesario que “Titulo1” coincida completamente con el título de la ventana de la barra de tareas. Pero el carácter “ñ” en los títulos de las ventanas no es reconocido en dicha comparación aunque esté presente en” Titulo1”. Para que la condición 2ª sea cierta es necesario que “Nombre1” coincida con los primeros caracteres de la ventana de la barra de tareas. En esta comparación se reconoce el carácter “ñ” en el nombre de la ventana. ¿Es esto correcto?. En caso afirmativo…. ¿es posible que la comparacion con “Nombre1” que hace la 2ª condición, se haga de igual manera con “Titulo1” en la 1ª?. Es decir, que no sea necesario escribir en “Titulo1” el nombre completo del titulo de la ventana y se admita el caracter “ñ” en dicho titulo, como sucede en la condición 2ª. Saludos

User: philranger

Date: Jan 4, 2022 22:08:09 GMT

Hello, good afternoon. By doing tests I have compared the behavior of the following 2 conditions: 1st.- IF | WINDOW TITLE | Title1 | EXIST ….. 2nd.- RUN ACTION | SELECT WINDOW BY NAME | Name1 For the 1st condition to be true, it is necessary that “Title1” completely matches the title of the taskbar window. But the character “ñ” in the window titles is not recognized in this comparison even if it is present in “Title1”. For the 2nd condition to be true, “Name1” must match the first characters of the taskbar window. This comparison recognizes the “ñ” character in the window name. Is this correct?. If so … is it possible that the comparison with “Name1” that makes the 2nd condition, is made in the same way with “Title1” in the 1st? That is, it is not necessary to write in “Title1” the full name of the window title and the character “ñ” is allowed in said title, as in the 2nd condition. Greetings

User: philranger

Date: Jan 6, 2022 21:24:13 GMT

Hello,   I am not familiar with using accentuated characters in MMM, sorry.   What I usually do is to go from one program to the other one by using the command:

1 | X | X | 50 | Keypress Alt+ | tab

It is a good idea to let around 200 milliseconds for this command to complete before the next action. Hoping this helps a bit!

User: philranger

Date: Jan 6, 2022 21:28:36 GMT

I just successfully ran the following:

1 | IF | WINDOW TITLE | ñana.txt - Notepad | EXIST | SELECT WINDOW BY NAME | ñana.txt - Notepad

Inspired from <www.turnssoft.com/conditions.html#windowtitle> Hoping it helps!

User: Bill

Date: Feb 14, 2022 13:24:54 GMT

How can i use condition entry like this:

40 | IF | WINDOW TITLE | Part1 | Part2 | EXIST | EXIT

I want to check if window title matched with “Part1 | Part2” but it seem not work. I already try some type of configuration like:

40 | IF | WINDOW TITLE | Part1 | Part2 | EXIST | EXIT
40 | IF | WINDOW TITLE | Part1 | Part2 | EXIST | EXIT
40 | IF | WINDOW TITLE | "Part1 | Part2" | EXIST | EXIT

Please help <3

User: julio

Date: Feb 15, 2022 18:14:14 GMT

Hello Philranger. Thank you very much for your answer. I am sorry to inform you that your contribution has not helped me because I was referring, not to application windows such as Notepad that do work, but to Chrome Browser windows (tabs) active on the taskbar. I hope I have explained well. Excuse my English. Greetings

User: philranger

Date: Feb 18, 2022 20:21:41 GMT

Hello, Your English was perfect. I don’t habe Chrome on my machine but normally a windows name includes the program name as well as the file name. You may have to concatenate them in a single string though.

User: Steve

Date: Mar 7, 2022 21:47:33 GMT

Feb 14, 2022 13:24:54 GMT Bill said: How can i use condition entry like this:

40 | IF | WINDOW TITLE | Part1 | Part2 | EXIST | EXIT

I want to check if window title matched with “Part1 | Part2” but it seem not work. I already try some type of configuration like:

40 | IF | WINDOW TITLE | Part1 | Part2 | EXIST | EXIT
40 | IF | WINDOW TITLE | Part1 | Part2 | EXIST | EXIT
40 | IF | WINDOW TITLE | "Part1 | Part2" | EXIST | EXIT

Please help <3 Hi Bill, Please start a new thread for this one. Cheers.


Error while detecting image

URL: https://minimousemacro.proboards.com/thread/550/error-detecting-image
Date: Feb 13, 2022 12:21:56 GMT

User: Acor

Date: Feb 13, 2022 12:21:56 GMT

Hi, I get Error report: “1 | RUN ACTION | MOUSE TO IMAGE | image path D:\Downloads\Delete2.png::at 142 342 80 400::match quick::move mouse yes - an unexpected error has occurred Index was outside the bounds of the array” for this action

1 | RUN ACTION | MOUSE TO IMAGE | image path D:\Downloads\Delete2.png::at 142 342 80 400::match quick::move mouse yes
2 | RUN ACTION | MOUSE CLICK | Left click at %MOUSE_X% %MOUSE_Y% 1 times with 0 ms delay

I run software on Windows 11, Screen size 2560x1440 (x 2 monitors acting as extended monitors). Image I search for is displayed on the screen. Thank you

User: Steve

Date: Mar 7, 2022 21:07:04 GMT

Hi Acor, I can’t replicate your error. I’ve pasted your line 1 and 2 into Mini Mouse Macro and it works fine with no error. Are you running the latest version of Mini Mouse Macro?
Is the image your looking for on the primary screen?


How to get the loop to work on the next file?

URL: https://minimousemacro.proboards.com/thread/553/get-loop-work-next-file
Date: Feb 23, 2022 17:59:50 GMT

User: Rose

Date: Feb 23, 2022 17:59:50 GMT

Hello there, I am new to Mini Mouse Macro and have an issue with the replay…after recording the replay kept doing things with the original file that I used when I did the recording when I needed it to move on to the next file. How do I make sure that in the replay they will be working with the next file in the sequence? Many thanks!! Best, Rose

User: philranger

Date: Feb 28, 2022 2:16:25 GMT

Hello Rose. I am not sure what you mean exactly: did you record mouse movements and keypresses or are you using the files command to open each file? Maybe giving us your code and what you are trying to accomplush exactly? Regards


custom loop count

URL: https://minimousemacro.proboards.com/thread/552/custom-loop-count
Date: Feb 21, 2022 15:17:09 GMT

User: rob1

Date: Feb 21, 2022 15:17:09 GMT

When the custom loop counter is finished I would like it to make a noise or take some other action. I dont want to use a FOR loop, just enter a number in the counter.

User: philranger

Date: Feb 22, 2022 3:47:57 GMT

Hello, Please check: Input box Next for Play system sound All on <www.turnssoft.com/conditions.html> Have fun!

User: zeak

Date: Feb 23, 2022 5:18:16 GMT

Hi Rob1, I believe this is what your chasing, this is looping without FOR LOOP.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1
2 | RUN ACTION | INPUT BOX | Loop Count?::Counter::INTEGER1
* | LOOP START
* | -- Put do action here.
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
5 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN EQUAL TO | %INTEGER1% | GOTO MACRO LINE | LOOP START
6 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN | %INTEGER1% | PLAY SYSTEM SOUND | Beep::SYNC
* | -- Remove line 6 if you don't want sound, put other action here.

 Cheers, Zeak


If image then go to line no.

URL: https://minimousemacro.proboards.com/thread/548/image-line
Date: Feb 11, 2022 0:26:10 GMT

User: Acor

Date: Feb 11, 2022 0:26:10 GMT

HI, how to create if image on coursor then jump to LINE # ? For example, I did very successful Facebook friends, posts and messages delete macros but it interrupts when the popup triggered by the mouse click on the facebook is showing different menu for different typeos of posts, messages or friends. If I can run conditionaly different parts of the mouse movements and actions dependable of the “image” at the courser and conditionally jumo to a different linie I can create very solid macro to manage Facebook content automatically. Also, can I run instead of mouse comand a delay time command and jump to a certain macro LINE command? Kind regards, Acor

User: philranger

Date: Feb 18, 2022 20:19:16 GMT

Hello, Please take a look at <www.turnssoft.com/conditions.html#detectimage> As well as <www.turnssoft.com/conditions.html#wait>


Does the number syntax matters?

URL: https://minimousemacro.proboards.com/thread/546/number-syntax-matters
Date: Jan 27, 2022 9:06:19 GMT

User: salmonsashimi1990

Date: Jan 27, 2022 9:06:19 GMT

Hi all! Instead of recording my entire work on macro, I have recorded step 1-10 (A), step 20-40 (B) and made several copies on word documents. As such, it will look like, with 2-4 lines differing as there is different key stroke for each iteration.

  • (A)
  • (B)
  • (A)
  • (A)
  • (B)
  • (B)
  • (A)
  • (B)

My question is, when i combined them into 1 long code and paste them back into the software, it has seem to arranged the codes by ascending numbers? How do I prevent that? Or should I save each macro blocks in different file and let the system run multiple macro files in a sequence? I hope my question is clear for some debugging work. Thank you!

User: philranger

Date: Jan 30, 2022 20:47:59 GMT

Hello, Syntax for line numbers do matter. But if you select a line and right-click, you can “relist” Hoping it helps!

User: Steve

Date: Jan 30, 2022 23:47:02 GMT

defaultavatar.png Jan 27, 2022 9:06:19 GMT

salmonsashimi1990 said: Hi all! Instead of recording my entire work on macro, I have recorded step 1-10 (A), step 20-40 (B) and made several copies on word documents. As such, it will look like, with 2-4 lines differing as there is different key stroke for each iteration.

  • (A)
  • (B)
  • (A)
  • (A)
  • (B)
  • (B)
  • (A)
  • (B)

My question is, when i combined them into 1 long code and paste them back into the software, it has seem to arranged the codes by ascending numbers? How do I prevent that? Or should I save each macro blocks in different file and let the system run multiple macro files in a sequence? I hope my question is clear for some debugging work. Thank you! Hi salmonsashimi1990

You can disable the auto relist by turning off ‘Auto Relist on Play’ from the settings menu. Mini-Mouse-Macro-autorelistonplay.png MMM uses the line numbers for GOTO and other redirection commands. If you are not using line numbers for flow control (ie with a GOTO action) then you can disable them with an X. Like this:

X | 1754 | 248 | 10 | Mouse Movement
X | 1754 | 247 | 10 | Mouse Movement
X | 1754 | 247 | 74 | Left Click Down
X | 1460 | 422 | 8 | Left Click Release
X | 1472 | 416 | 10 | Mouse Movement

Hope this helps.

User: salmonsashimi1990

Date: Feb 4, 2022 14:21:03 GMT

Thank you all for the suggestion! I guess it will be good to re-number so that if there is any error, it will be easier for me to use the search function and debug. smiley.png


How to time out an infinite loop in 60 seconds?

URL: https://minimousemacro.proboards.com/thread/85/time-out-infinite-loop-seconds
Date: Sept 30, 2018 3:27:42 GMT

User: Johnc

Date: Sept 30, 2018 3:27:42 GMT

Hi Steve, I have a pixel color comparison loop to check a few pixels but sometimes the web page didn’t load resulting in a dead lock in the loop.  I need to time out the loop and then press the “refresh” button to get the page to reload and hopefully the right pixel condition will end the loop. Any idea how to “time out” a loop in say 60 seconds? Thanks!  John

User: Steve

Date: Oct 2, 2018 0:16:23 GMT

Hi John, It really depends on what logic you are using to do your looping; it will be different for the FOR loop’s or looping based on conditions. Generally you can’t go wrong with a counter to control your looping Something loosely like this for your ‘time out’ at 60 seconds: (opening macro lines)

10 | FOR | EACH | LINE IN | D:\Macro\pixel events.mmmacro | RUN
11 | RUN ACTION | WAIT SECONDS | 1
12 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
13 | IF | INTEGER VARIABLE | %INTEGER% | < | 60 | GOTO MACRO LINE | 10
14 | FOR | EACH | LINE IN | D:\Macro\page refresh events.mmmacro | RUN
15 | IF | STRING VARIABLE | %STRING% | IS NOT | END | GOTO MACRO LINE | 10

(closing macro lines)

  • at line 10 we do the pixel conditions, loaded in using a FOR RUN condition
  • lines 11, 12, and 13 is our counter. We add +1 to INTEGER every loop. When we get INTEGER above 60 we move on to line 14
  • line 14 we run the ‘refresh’ you need for the page, again in a FOR RUN condition.
  • and line 15, if we didn’t declare STRING to END we then go back to line 10 and continue the loop Is this what your after John?

User: Johnc

Date: Oct 2, 2018 2:31:07 GMT

Thanks Steve for your help! This is exactly what I want and I have thought of doing something like this too. The wait 1 sec line is the key. I was hoping there is a timer function somehow without using a counter. This is a great example Steve! U r the best! Thanks so much!

User: Joe

Date: Jan 28, 2022 21:24:00 GMT

Hi Steve Can this be used if my run condition has a continue ?

User: Steve

Date: Jan 30, 2022 23:50:35 GMT

Hi Joe, CONTINUE statements might not work here. Paste in an example of what you are trying to do and I will see if we can find an answer.

User: joe

Date: Jan 31, 2022 9:01:32 GMT

Hi Steve i have a bunch of lines in the macro there is like 7 macro that test the pixel such as

29 | IF | PIXEL COLOR | Color [R=204, G=204, B=204]::At Location [X:1328 Y:306] | IS THE SAME | CONTINUE

if any of this 7 pixel colour check fails and ends checking condition indefinite loop, i wanna start from the beginning of the whole macro and start over trying to upload 10,000 NFT on opensea, any suggestions the page keeps erroring after every 15-20 mins Thanks Steve

User: Steve

Date: Jan 31, 2022 22:20:38 GMT

Jan 31, 2022 9:01:32 GMT joe said: Hi Steve i have a bunch of lines in the macro there is like 7 macro that test the pixel such as

29 | IF | PIXEL COLOR | Color [R=204, G=204, B=204]::At Location [X:1328 Y:306] | IS THE SAME | CONTINUE

if any of this 7 pixel colour check fails and ends checking condition indefinite loop, i wanna start from the beginning of the whole macro and start over trying to upload 10,000 NFT on opensea, any suggestions the page keeps erroring after every 15-20 mins Thanks Steve Hi Joe, Something like this at the start of your macro code:

* | PIXEL_CHECKS
1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %RESTART%::FALSE
2 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1141 Y:879] | IS NOT THE SAME | DEFINE BOOLEAN VARIABLE | %RESTART%::TRUE
3 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1142 Y:880] | IS NOT THE SAME | DEFINE BOOLEAN VARIABLE | %RESTART%::TRUE
4 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1143 Y:881] | IS NOT THE SAME | DEFINE BOOLEAN VARIABLE | %RESTART%::TRUE
5 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1144 Y:882] | IS NOT THE SAME | DEFINE BOOLEAN VARIABLE | %RESTART%::TRUE
6 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1145 Y:883] | IS NOT THE SAME | DEFINE BOOLEAN VARIABLE | %RESTART%::TRUE
7 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1146 Y:884] | IS NOT THE SAME | DEFINE BOOLEAN VARIABLE | %RESTART%::TRUE
8 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1147 Y:885] | IS NOT THE SAME | DEFINE BOOLEAN VARIABLE | %RESTART%::TRUE
9 | RUN ACTION | WAIT MILLISECONDS | 100
10 | IF | BOOLEAN VARIABLE | %RESTART% | IS TRUE | GOTO MACRO LINE | PIXEL_CHECKS

1.

       We define a boolean variable, RESTART, and declare it to FALSE.
2 - 8 .  If the pixels from line 2 through to 8 are not the same as 255,255,255 then we set boolean RESTART to TRUE. 9.        We wait 100 milliseconds at the end. This may not seem important but it is. It helps to slow down the macro. MMM will run through the pixel checks really fast. If you have the internal MMM event logger on it will spam hard here with internal logging events. If you don’t want to wait the 100 ms then I suggest turning off the internal MMM event logger. You can do this from the MMM settings menu.
10.      At line 10 we do a check to see if RESTART is TRUE. If it is true this means our pixels have changed, so we start again by GOTO MACRO LINE - PIXEL_CHECKS. 11.      After line 10 we would have the guts of the code whatever that may be for you. Hope this helps. On a side note, in the example above I could use PIXEL RANGE ( <www.turnssoft.com/conditions.html#pixelrange> ) instead of PIXEL COLOR.  PIXEL RANGE would be 1 line instead of 8.


Nested FOR loop

URL: https://minimousemacro.proboards.com/thread/545/nested-loop
Date: Jan 25, 2022 12:53:02 GMT

User: robert

Date: Jan 25, 2022 12:53:02 GMT

I am trying to create a basic nested FOR loop.  A previous answer gets close to what I want: Basic for loop behaving strangely Code shown here, but with the MESSAGE PROMPT modified to show the correct numbers for the inner and outer loops:

1 | FOR | I | = | 0 TO 3 | NEXT
   2 | RUN ACTION | DEFINE STRING VARIABLE | %parent%::%I%
   3 | FOR | I | = | 0 TO 5 | NEXT
      4 | RUN ACTION | DEFINE STRING VARIABLE | %child%::%I%
      5 | RUN ACTION | MESSAGE PROMPT | Parent=%parent% of 3 Child=%child% of 5::loop status::2
   6 | FOR | NEXT
7 | FOR | NEXT

Unfortunately that accepted answer also does not work as intended.  On the first iteration of the outer loop (%parent%), the %child% variable in the inner loop only goes from 1 to 3.  On subsequent iterations of the outer loop, %child% goes from 1 to 5 as it should.  Is there any option to put anything other than I as a counter in a loop?

User: Steve

Date: Jan 31, 2022 0:15:45 GMT

Hi robert Yes this should be working but isnt working as expected. Its not right. I’ll have a look at the code. Most likely a bug I think. Cheers for finding this one. Steve.


Microsoft Soitaire - ISSUE

URL: https://minimousemacro.proboards.com/thread/524/microsoft-soitaire-issue
Date: Nov 13, 2021 10:37:15 GMT

User: fabio

Date: Nov 13, 2021 10:37:15 GMT

Hi all! I know that the issue I’m going to describe could seem a “joke”, but it isn’t. :-)

I tried to use Mini Mouse Macro Pro to record macro that could be used by colleagues to solve some puzzles in Microsoft Soitaire Collection (freely available to any Win 10 user).

My goal: I want to record myself while solving the puzzles, than send the macro to a colleague who can use the macro itself to solve the same puzzle (exactly the same PC configuration).

Consider that this is absolutely fun… but it’s part of a IA project demonstration. If I can get this app to work, it will become part of our laboratory tool and it will be used extensively.

And Microsoft Solitaire Collection has been selected as a platform to develop various IA algorythms to test. Anyway, I encountered two blocking issues:

1) Strangely, MMMPro seems not to record “drag & drop” informations (even if D&D is enabled) while used in Microsoft Solitaire. To better explain: D&D works perfectly while NOT using Microsoft Solitaire, for example, if I try to record me while moving windows and folders around the desktop. But if I record a macro (while playing a spider solitaire) in which I click on a card, drag it on a new position and release the mouse button, during the playback the card is selected but doesn’t move

2) If I change the timing shortening some durations (or if I play the macro faster), during the playback “some” actions are randomly getting lost. Generally speaking, I cannot identify what action is failing and why.

Can you help me in getting MMMPro to work?

User: Steve

Date: Dec 12, 2021 1:00:45 GMT

Hi fabio Yeah i tried this myself and yep no drag and drop. Not all applications and games allow MMM to make use of .NET to hook into them to make calls unfortunately. If you search this forum for ‘games’ and ‘java’ you’ll find a head of examples where this very same thing is outlined. Some people have success running MMM as admin and some don’t. It really depends on the application that MMM is interacting with. I would love to try to get this working for you. It sounds like a real interesting piece of work your doing. Im sorry but this one is just not going to work. Good luck.

User: J Rich

Date: Jan 25, 2022 17:28:44 GMT

It wasn’t working for me until I created a shortcut and set it to Ompat Mode Win7 and Run as administrator. Then it started working.

User: Steve

Date: Jan 31, 2022 0:14:14 GMT

Jan 25, 2022 17:28:44 GMT J Rich said: It wasn’t working for me until I created a shortcut and set it to Ompat Mode Win7 and Run as administrator. Then it started working. will-ferrell-old-school.gif


mass change time for Mouse Clicks in IF and RUN ACTION

URL: https://minimousemacro.proboards.com/thread/547/mass-change-mouse-clicks-action
Date: Jan 29, 2022 21:22:37 GMT

User: rockdoc

Date: Jan 29, 2022 21:22:37 GMT

I initially created MOUSE CLICK commands with TIMING=1000 MS, then copied into multiple statements for modification. Now I have many statements but I’d like to reduce the TIMING to 500 (or less). Selecting multiple statements and then right mouse click Mass Change to Time=500 does not modify any selected statements. Any workaround to reduce manually modifying each individual statement? Thanks.

User: philranger

Date: Jan 30, 2022 21:24:51 GMT

I often select many lines then do ctrl-t (as in “time”) to change all of them at once. Ctrl- - removes the x-y coordinates

User: Steve

Date: Jan 31, 2022 0:05:07 GMT

defaultavatar.png Jan 29, 2022 21:22:37 GMT

rockdoc said: I initially created MOUSE CLICK commands with TIMING=1000 MS, then copied into multiple statements for modification. Now I have many statements but I’d like to reduce the TIMING to 500 (or less). Selecting multiple statements and then right mouse click Mass Change to Time=500 does not modify any selected statements. Any workaround to reduce manually modifying each individual statement? Thanks. Hi rockdoc

The Mass Change feature only works for mouse movements and clicks and not for IF and ACTION statements. There is no workaround for manually changing these individual statements. I’d suggest maybe trying the macro editor and the ‘find’ ‘replace’ feature to change your values. In the screen shot below I’m changing the MOUSE CLICK action time value from 100 ms to 500 ms: minimousemacro-findreplace.png Hope this helps.


Gaming application of mouse clicks.

URL: https://minimousemacro.proboards.com/thread/543/gaming-application-mouse-clicks
Date: Jan 17, 2022 19:41:18 GMT

User: dracneer

Date: Jan 17, 2022 19:41:18 GMT

  1. I would like to use some sort of loop that increments at a number greater than one. IE: “For I = 1 to “Z” Step 20.” I want to use “I” as a mouse x/y coordinate. Thus I could click on a series of “boxes” that are consistently an equal distance from each other.  
  2. I would love to also be able to detect how many of those boxes exist so I can make the loop cycle that many times.
  3. Grabbing a pixel color has proven to be far more challenging than expected as the boxes colors are not a solid. Any tricks to this one? Thanks in advance. I’m new so be kind.

User: Steve

Date: Jan 18, 2022 5:38:31 GMT

Hi dracneer 1. I’d use a defined counter variable via an IF statement like this:

* | DEFINE VARS
1 | RUN ACTION | DEFINE INTEGER VARIABLE | start_count::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | end_count::800
3 | RUN ACTION | DEFINE INTEGER VARIABLE | increment_count::50
* | START_LOOP
4 | RUN ACTION | MESSAGE PROMPT | %start_count%/%end_count%::%start_count%/%end_count%::1::OK
5 | RUN ACTION | MOUSE CLICK | Left click at %start_count% %end_count% 1 times with 0 ms delay
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %start_count%::+%increment_count%
7 | IF | INTEGER VARIABLE | %start_count% | LESS THAN EQUAL TO | %end_count% | GOTO MACRO LINE | START_LOOP
  1. and 3. Are the boxes static? I mean do they change often? If not, then perhaps look for an image and not a single pixel. If you can do this then you may be able to map out your screen res to into sections and capture the count of found images across the screen. This count could then be your increment_count variable above. Note above at line 5 that ive used %start_count% and %end_count% as the mouse X and mouse Y variables. This tactic can be used on all mouse movement functions. Have a look at examples of image and pixel detection from this forum and the condition pages:

<www.turnssoft.com/conditions.html#detectimage> <www.turnssoft.com/conditions.html#definepixelrangevariable> <www.turnssoft.com/conditions.html#pixelrange> <www.turnssoft.com/conditions.html#pixelrangesave>

User: zeak

Date: Jan 18, 2022 23:42:52 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jan 18, 2022 5:38:31 GMT

Steve said: Are the boxes static? I mean do they change often? If not, then perhaps look for an image and not a single pixel. Hi Steve, I’ve been testing this with a game I also play, the main issue I’ve been having is trying to count the number of images on the screen, partially when they move slightly, overlap slightly or between two sections being counted. Is it possible to get a function that can count the number of selected images in a area or even out put there location in an array/list? Cheers, Zeak

User: Steve

Date: Jan 19, 2022 7:00:39 GMT

Hi zeak Yeah id say its possible. It would probably involve splitting the screen into sections bound by the dimensions of the image we are trying to detect and count. Love the suggestion hey. Thanks.


MMM working in the background?

URL: https://minimousemacro.proboards.com/thread/544/mmm-working-background
Date: Jan 18, 2022 19:53:05 GMT

User: lazterix

Date: Jan 18, 2022 19:53:05 GMT

Hi guys, I am using MMM for around two years now, sniping the transfer market on FIFA games. My question is probably simple - is there any way to make the MMM run on a certain program only or on a window in the background? I mean, I want it to work on one website, so I am able to use my PC, because now I cannot touch it while MMM is working. Is is possible - is the Auto Shrink on Play option from the PRO version about that? Thanks for any answers

User: zeak

Date: Jan 18, 2022 23:35:18 GMT

Hi Lazterix, First off, Welcome to the forum. The short and quick answer is currently no. This is due to MMM uses .NET hook’ins to control the Mouse/Keyboard as if a user was supplying the input because of that as you are probably aware, you will fight with MMM to control the Mouse/Keyboard while MMM is running. Cheers, Zeak P.S. I have been looking into a program that creates a secondary input and let MMM control that, currently the issue is the programs I have found either don’t know which input to use for MMM or they conflict with each other and cause a total lockup. I too would like to have MMM running on one of my other screens while I do work on my main screen.


Can a macro WAIT for a keypress?

URL: https://minimousemacro.proboards.com/thread/542/macro-wait-keypress
Date: Jan 11, 2022 18:34:04 GMT

User: bctv

Date: Jan 11, 2022 18:34:04 GMT

I just found MMM and I see that there is the ability to pause a macro using WAIT. But is that pause only time related? Or can it pause indefinitely until a specific key is pressed? Basically, I’m hoping to create a macro that will automate tasks involved with setting up a new FB video stream. But at some point, the user has to manually enter a unique title for the stream in a webpage. For my plan to work, I’d need a macro that waits for this title to be entered, and then un-pauses after a specific keypress. I’d make it just a timed pause, but I’m hoping to use this to assist an elderly volunteer. And the amount of time he’d need to enter a title can be hugely different depending on how he’s feeling that day and if he knows where his reader glasses are. Thanks for the help.

User: philranger

Date: Jan 14, 2022 2:55:24 GMT

Hello Either a keypress: <www.turnssoft.com/conditions.html#keyboardkeypress> Or even better, a full message box with a question: <www.turnssoft.com/conditions.html#inputbox> Good luck!

User: Steve

Date: Jan 14, 2022 4:48:48 GMT

Keyboardkeypress can be a bit difficult to detect with MMM. I’d suggest going a different route. Have you considered using some other environmental queue to continue the macro flow? Perhaps a pixel change or picture detection? <www.turnssoft.com/conditions.html#pixelrange> <www.turnssoft.com/conditions.html#detectimage> Have a look at the condition page for some ideas <www.turnssoft.com/conditions.html> and this forum for some code examples. The search function of the forum is surprising good. I’ve also got a gif repository here with examples that might be useful…most of these are on this forum minimousemacro.com/pic/forum/pics.html .


possible glitch “keypress junjamode”…

URL: https://minimousemacro.proboards.com/thread/541/glitch-keypress-junjamode
Date: Jan 8, 2022 17:19:54 GMT

User: Zanumren

Date: Jan 8, 2022 17:19:54 GMT

Greetings all, Quick question, I’m getting this strange happening when I try to record a macro. It records “keypress junjamode, oemtilde key down” as the first thing before I press anything… This prevents me from recording any keypresses at all.   It doesn’t always do this. Though today and yesterday, even after restarting my PC, it continues to do this.  Any ideas on how I might fix this?

User: philranger

Date: Jan 14, 2022 2:58:06 GMT

Hello It may be related to the keyboard shortcuts that are assigned to mini mouse macro, I would try to either change them or deactivate them. Also make sure that you don’t have 2 or more instances of minimouse macro running at the same time. I may be clueless to! Cheers

User: Steve

Date: Jan 14, 2022 4:42:46 GMT

Jan 8, 2022 17:19:54 GMT Zanumren said: Greetings all, Quick question, I’m getting this strange happening when I try to record a macro. It records “keypress junjamode, oemtilde key down” as the first thing before I press anything… This prevents me from recording any keypresses at all.   It doesn’t always do this. Though today and yesterday, even after restarting my PC, it continues to do this.  Any ideas on how I might fix this? Hi Zanumren, Are you using a keyboard layout different to US-English? “ junjamode “ is this a Korean layout? A quick google is reference Korean chars.

MMM is going to record immediately once that record button is pressed. I’d say what is happening is that junjamode and tilde and being pressed or called by the OS in some way at the moment MMM launches it’s recording. The ‘key down’ may also imply that a ‘key up’ (a keypress) of this key took place just prior to MMM starting this recording round. Did you finish a recording round with MMM with a ‘key up’ event on this key combination prior to starting a new recording round?


MMM no pega 1 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN

URL: https://minimousemacro.proboards.com/thread/539/mmm-pega-1-mouse-500
Date: Jan 5, 2022 17:45:57 GMT

User: Julio

Date: Jan 5, 2022 17:45:57 GMT

Hola. Cuando intento pegar (por medio de Ctrl+v) la instrucción “1 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN” se produce un error que indica que, en la edición manual, se requiere un valor numérico para las coordenadas X,Y. Ello obliga a tener que escribirla completa cada vez que la necesito. ¿Se puede solucionar? Muchas gracias por vuestra ayuda

User: philranger

Date: Jan 6, 2022 20:58:29 GMT

Hello, I think the answers may come quicker if you also post a “google translate” version of the question as moderators speak mostly English (and also French in my case) “ Hello. When I try to paste (via Ctrl + v) the instruction “1 |% MOUSE_X% |% MOUSE_Y% | 500 | DOWN” I get an error stating that, in manual editing, a numeric value is required for the X coordinates ,Y. This forces me to have to write it in full every time I need it. It can be fixed? Thank you very much for your help “

User: philranger

Date: Jan 6, 2022 21:13:11 GMT

Hi again,   I am not sure I understand what are you trying to do exactly.  Is it something like:

1 | X | X | 500 | Keypress Ctrl+ | v

Where the mouse position is not changed? A click without moving the mouse, like:

2 | X | X | 500 | Left Click

or Separate actions for click and release, like:

3 | X | X | 500 | Left Click Down
4 | X | X | 500 | Left Click Release

or a click at a specific position, like:

5 | RUN ACTION | MOUSE CLICK | Left Click at 900 470
6 | RUN ACTION | MOUSE CLICK | Right Click at 900 470
7 | RUN ACTION | MOUSE CLICK | Middle Click at 900 470

Most of the answers are (for me) found on <www.turnssoft.com/conditions.html> Have a nice day!

User: Julio

Date: Jan 7, 2022 10:32:44 GMT

Hola. Lo que intento hacer es los siguiente:

63 | RUN ACTION | MOUSE TO IMAGE | image path C:\Users\Usuario\OneDrive\Documentos\Mini Mouse Macro\Descargar.bmp::at 750 100 200 300::match quick::move mouse yes::offset 0 0
64 | %MOUSE_X% | %MOUSE_Y% | 500 | Left Click Down
65 | %MOUSE_X% | %MOUSE_Y% | 200 | Left Click Release
66 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN
67 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN
68 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN
69 | %MOUSE_X% | %MOUSE_Y% | 500 | Left Click Down
70 | %MOUSE_X% | %MOUSE_Y% | 200 | Left Click Release

Estas líneas hacen lo siguiente: Tengo abierta una página web con una imagen cuya posición desconozco (varía según el contenido de la página). y que he almacenado en el fichero “Descargar.bmp”. En la línea 63 el cursor se posiciona sobre la imagen, cuyas coordenadas desconozco (son %MOUSE_X% y %MOUSE_Y%). En la línea 64 y 65 hace click sobre la imagen y se despliega un menú. En las líneas 66, 67 y 68 baja el cursor a opción 3 del menú (DOWN es la tecla del movimiento hacia abajo del cursor). En las líneas 69 y 70 hace click en la opción en la que está posicionado el cursor. Cuando escribo las líneas 64 a 70 en MMM, (como son muy parecidas o iguales) intento reutilizarlas. Copio la línea 64 en el portapapeles (por medio de Ctrl+c) y la intento pegar a  continuación mediante Ctrl+v. Este pegado falla y provoca el error que comentaba en el primer post. Con ello me veo obligado a escribir cada línea de nuevo (aunque sea igual que la anterior). Saludos

User: Julio

Date: Jan 7, 2022 10:34:42 GMT

Jan 7, 2022 10:32:44 GMT Julio said: Hola. Lo que intento hacer es lo siguiente:

63 | RUN ACTION | MOUSE TO IMAGE | image path C:\Users\Usuario\OneDrive\Documentos\Mini Mouse Macro\Descargar.bmp::at 750 100 200 300::match quick::move mouse yes::offset 0 0
64 | %MOUSE_X% | %MOUSE_Y% | 500 | Left Click Down
65 | %MOUSE_X% | %MOUSE_Y% | 200 | Left Click Release
66 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN
67 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN
68 | %MOUSE_X% | %MOUSE_Y% | 500 | DOWN
69 | %MOUSE_X% | %MOUSE_Y% | 500 | Left Click Down
70 | %MOUSE_X% | %MOUSE_Y% | 200 | Left Click Release

Estas líneas hacen lo siguiente: Tengo abierta una página web con una imagen cuya posición desconozco (varía según el contenido de la página). y que he almacenado en el fichero “Descargar.bmp”. En la línea 63 el cursor se posiciona sobre la imagen, cuyas coordenadas desconozco (son %MOUSE_X% y %MOUSE_Y%). En la línea 64 y 65 hace click sobre la imagen y se despliega un menú. En las líneas 66, 67 y 68 baja el cursor a opción 3 del menú (DOWN es la tecla del movimiento hacia abajo del cursor). En las líneas 69 y 70 hace click en la opción en la que está posicionado el cursor. Cuando escribo las líneas 64 a 70 en MMM, (como son muy parecidas o iguales) intento reutilizarlas. Copio la línea 64 en el portapapeles (por medio de Ctrl+c) y la intento pegar a  continuación mediante Ctrl+v. Este pegado falla y provoca el error que comentaba en el primer post. Con ello me veo obligado a escribir cada línea de nuevo (aunque sea igual que la anterior). Saludos

User: philranger

Date: Jan 8, 2022 3:40:57 GMT

Une fois que la souris est rendue à la bonne place, pas besoin des %MOUSE, elle est déjà rendue. Remplace-les par des X

À moins que tes 500 down veulent dire de deplacer la souris de 500 pixels vers le bas?


La secuencia “Keypress Alt+ | space” produce error

URL: https://minimousemacro.proboards.com/thread/531/secuencia-keypress-space-produce-error
Date: Dec 14, 2021 9:27:26 GMT

User: Julio

Date: Dec 14, 2021 9:27:26 GMT

Buenos días. Estoy usando la siguiente secuencia de eventos:

9 | 690 | 84 | 332 | Keypress Alt+ | space
10 | 690 | 84 | 200 | Keypress x

para maximizar una ventana de windows, pero me produce el siguiente error: 12/14/2021 10:13:46.09 Playback error: 9 | 690 | 84 | 332 | Keypress Alt+ | space - Not a standard action [not an error]: Palabra clave “ “ no válida. ¿Me podéis ayudar a solucionarlo? Saludos Julio

User: Steve

Date: Jan 3, 2022 1:59:09 GMT

Hi Julio, This is not actually an error, just not a great information prompt. It still will perform the ‘Keypress alt+SPACE’. playback error: 1 | 729 | 853 | 1448 | Keypress Alt+ | SPACE - Not a standard action [not an error]: Keyword “ “ is not valid. I will make a note of this and look to change this information prompt.
Cheers, Steve,


Macro not recording keystrokes

URL: https://minimousemacro.proboards.com/thread/533/macro-recording-keystrokes
Date: Dec 17, 2021 13:14:34 GMT

User: choppa

Date: Dec 17, 2021 13:14:34 GMT

My mouse macro is not recording my keystrokes - everything else seems fine. settings are normal, keyboard capture is enabled. has anyone else encountered this?

User: Steve

Date: Jan 3, 2022 1:55:56 GMT

Hi choppa This can happen when your trying to record over an application that controls the keyboard. For example some games do this or some web based applications.


mini mouse macro for macbook

URL: https://minimousemacro.proboards.com/thread/537/mini-mouse-macro-macbook
Date: Jan 2, 2022 15:22:19 GMT

User: houssdr

Date: Jan 2, 2022 15:22:19 GMT

Hello< i wanted to install mini ouse macro on my macbook but its not working,i got a message that say data is corrupted, i want to know if mini mouse macro work on mac and how to fix the problem that i have. thanks in advance, Attachments: JJjxreuuQaAtwqBySASP.png ksiSYBfDTbXnPCfGQZfD.png Mwd0JmU0wJbFqHHTboeb.png

User: Steve

Date: Jan 3, 2022 1:51:22 GMT

Hi houssdr Mini Mouse Macro is not compatible with MacOS. Just Windows. Its not going to run on your macbook. Cheers, Steve.


Conditional increment of variable

URL: https://minimousemacro.proboards.com/thread/534/conditional-increment-variable
Date: Dec 20, 2021 7:39:01 GMT

User: Estelyen

Date: Dec 20, 2021 7:39:01 GMT

Good day everyone, I just found MMM and it’s perfect for the bulk file editing job I am currently facing. I already recorded a macro that does the operations I want to do and now I’m trying to tweak it to the correct values. I want to check one of my custom variables: If it is greater than or equal to 180, it should be set to -178. If not, it should just be incremented by 2. This is the line I’m trying to do it with:

82 | IF | INTEGER VARIABLE | %DEGREES% | GREATER THAN EQUAL TO | 180 | RUN ACTION | DEFINE INTEGER VARIABLE | %DEGREES%::=-178 | ELSE | 82 | RUN ACTION | DEFINE INTEGER VARIABLE | %DEGREES%::+2

However, once MMM reaches thin line, it simply freezes. Is there something wrong with the syntax? As I said, I’m new to MMM, so I apologize if it’s some really obvious beginner mistake. I studied the conditions page and watched the two tutorial videos, but I can’t figure out where I messed up… Thanks for your time!

User: philranger

Date: Dec 23, 2021 3:29:34 GMT

I never tried a custom named variable, the 1st thing I’d try os to use one of the standard variables such as %integer1%

User: estelyen

Date: Dec 23, 2021 18:44:51 GMT

Thanks very much for the reply! I managed to fix it myself in the meantime by converting it into an IF-THEN construct over multiple lines. Would’ve edited my post, but for some reason I couldn’t register in this forum a few days ago (CAPTCHA kept telling me that I failed tongue.png ) and guests are not allowed to edit. That issue apparently fixed itself too, because I could register fine today   grin.png


Times Out and closes itself

URL: https://minimousemacro.proboards.com/thread/535/times-out-closes
Date: Dec 22, 2021 13:09:01 GMT

User: paulvic

Date: Dec 22, 2021 13:09:01 GMT

Hi, apologies if this is covered elsewhere. My Mini Mouse Macro seems to Time Out after a certain period of time, I am a novice user (not changed any standard settings {that I am aware of}) but would like to keep it on until I shut it down. Is there a setting somewhere I may have accidentally set to cause this, cant find it if there is… Help appreciated.

User: philranger

Date: Dec 23, 2021 3:34:54 GMT

My MMM never closes unless I do it myself, I don’t know what happens with yours. I think the default keyboard to kill MMM is ctrl-k, is that a combi you use?


Loss of mouse control - odd behaviour

URL: https://minimousemacro.proboards.com/thread/528/loss-mouse-control-odd-behaviour
Date: Dec 3, 2021 16:02:06 GMT

User: tempest8008

Date: Dec 3, 2021 16:02:06 GMT

Good morning. To start I’m VERY new to MiniMouse.   I am a competent scripter. My concern is the actual program itself.  Right now I have an exceedingly simple macro running that is simulating mouse clicks. It right clicks, waits a few seconds, then right clicks again, pauses, then repeats.  No big deal. However I have noticed the program suddenly ‘stutter’ sometimes and break the flow of the macro. When I use the hotkeys to stop the macro the application appears to lock up.  I can’t click on anything unless I CTRL+K to kill the application. When I go looking the system tray I see half a dozen MiniMouse icons in there.  They disappear as I hover over them. If I leave it alone, eventually I get mouse control back. OS is Window 10 Pro. With my application running as well as MiniMouse I’m using less that 25% CPU and memory. I have the debug log off. I’m wondering if there are any KBs I should or should NOT have in order for MiniMouse to work correctly?  Or .NET versions, things like that? Thanks for any assistance you can provide!

User: Steve

Date: Dec 12, 2021 0:35:13 GMT

Hi tempest8008 This is a little odd TBH. The ‘stutter’ shouldn’t be occurring at all regardless of the complexity of the macro.
Are you running the latest version of MMM? If not then update. The latest version is built for .net 4.5.
The multiple icons in the system tray may be a bug from an much older version. It could also be that the app is not closing cleanly on it’s own. How are you closing your MMM sessions off? Are you closing the app cleanly each time?
The macro locking up and requiring the ctrl+k is also strange.
Off the bat id be looking at your Win10 host. Do you have problems else where with your system? I mean, could this be caused by a failure somewhere in your system or something you’ve got running? I say this because a generic Win10 Pro OS running an .mmmacro that right clicks and pauses should just ‘work’. Its leading me to think the environment it’s running on is somewhat the issue here.

User: Stefanie

Date: Dec 21, 2021 0:19:46 GMT

This has happened dozens of times to me as well. It seems to be a frequent problem with entire sequences messed up from the loss of 1 or 2 inputs.


Macro recording failure

URL: https://minimousemacro.proboards.com/thread/532/macro-recording-failure
Date: Dec 16, 2021 10:41:46 GMT

User: fmxvxx

Date: Dec 16, 2021 10:41:46 GMT

Hi guys any one else having issue with macro recordings when i hit the record button i get the following message before actually inputting any clicks or key presses and I am not able to record anything after this.

JBJNKxKxzMSlWb0gqLEx.png efujutISGfWWYEyvXvby.png

User: philranger

Date: Dec 16, 2021 17:45:54 GMT

Hello, Do you start your recording by clicking on the record icon or by using a keyboard shortcut ? It looks like MMM is seing that weird key being pressed. It should be easy once the macro is recorded to select the useless lines and delete them though.

User: fmxvxx

Date: Dec 16, 2021 23:20:46 GMT

Hi Phil i start MMM from the record button after i get the message keypress junjamode it will no longer record anything I have to close and reopen minimouse to get it to try and i’m met with the same message i figured it was possible peripheral issue but i have disconnected mouse keyboard and any other peripheral device with no change disabling keyboard capture in MMM does stop it appearing but not really a fix. I have also tested MMM on another machine and it works just fine so i guess there is something specific to my machine that is at fault rather than MMM


How to select the Chrome browser process?

URL: https://minimousemacro.proboards.com/thread/530/como-seleccionar-proceso-navegador-chrome
Date: Dec 6, 2021 10:30:32 GMT

User: Julio

Date: Dec 6, 2021 10:30:32 GMT

Hola.
La condición IF tiene, entre otros, dos objetos:

  • PROCESS NAME
  • PROCESS ID

Con los cuales se puede comprobar si existe un determinado proceso.

Por medio de la condición IF | PROCESS NAME | Chrome | EXIST |... MMM detecta si se está ejecutando el navegador Google Chrome.

Pero para seleccionar dicho navegador por su nombre tengo un problema, porque no existe una condición del tipo RUN ACTION | SELECT WINDOW BY PROCESS NAME.... Solo existe la condición RUN ACTION | SELECT WINDOW BY PROCESS ID.... Con esta última no puedo seleccionar Chrome porque desconozco su ID y tampoco conozco como averiguarla.

¿Cómo puedo hacerlo?
Muchas gracias,
Julio


User: Steve

Date: Dec 12, 2021 0:55:29 GMT

Hello.
The IF condition has, among others, two objects:

  • PROCESS NAME
  • PROCESS ID

With which you can check if there is a certain process.

By means of the condition IF | PROCESS NAME | Chrome | EXIST | ... MMM detects if the Google Chrome browser is running.

But to select said browser by its name I have a problem, because there is no condition of type RUN ACTION | SELECT WINDOW BY PROCESS NAME.... There is only the condition RUN ACTION | SELECT WINDOW BY PROCESS ID.... With the latter I can’t select Chrome because I don’t know its ID and I don’t know how to find it either.

How can I do it?
Thanks a lot.


¿Qué tal SELECT WINDOW BY NAME para seleccionar el navegador? Parece que intentas hacer coincidir un ID de proceso de Chrome con la ventana, pero ¿por qué? Si puede obtener el nombre de la ventana, el título de la ventana en Chrome, entonces puede seleccionar dinámicamente su navegador según esa lógica.

2 | IF | PROCESS NAME | CHROME | EXIST | SELECT WINDOW BY NAME | Google Chrome

How about SELECT WINDOW BY NAME to select the browser. You seem to be trying to match a process ID of Chrome to the window but why? If you can get the window name, the title of the window in Chrome, then you can dynamically select your browser based on that logic.

User: Julio

Date: Dec 12, 2021 21:36:23 GMT

Hola Steve. La solución que propones creo que no es posible debido a que el nombre de la ventana de Chrome depende de la pestaña activa. Por ejemplo, si la pestaña activa es “www.google.com”, el nombre de la ventana es “www.google.com - Google Chrome”. Y la pestaña activa no es previsible, puede ser cualquiera. Tampoco sé cómo obtenerlo Saludos

User: Julio

Date: Dec 12, 2021 21:37:50 GMT

Dec 12, 2021 21:36:23 GMT Julio said: Hola Steve. La solución que propones creo que no es posible debido a que el nombre de la ventana de Chrome depende de la pestaña activa. Por ejemplo, si la pestaña activa es “www.google.com”, el nombre de la ventana es “www.google.com - Google Chrome”. Y la pestaña activa no es previsible, puede ser cualquiera. Tampoco sé cómo obtenerlo Saludos

User: Julio

Date: Dec 13, 2021 9:31:08 GMT

Dec 12, 2021 21:37:50 GMT Julio said: Dec 12, 2021 21:36:23 GMT Julio said: Hola Steve. La solución que propones creo que no es posible debido a que el nombre de la ventana de Chrome depende de la pestaña activa. Por ejemplo, si la pestaña activa es “www.google.com”, el nombre de la ventana es “www.google.com - Google Chrome”. Y la pestaña activa no la conozco. Tampoco sé cómo obtenerla Si está iniciado, Chrome está minimizado en la barra de tareas y necesito que se me abra la pestaña activa. Saludos


Condition action is not valid: mouse movement

URL: https://minimousemacro.proboards.com/thread/529/condition-action-valid-mouse-movement
Date: Dec 4, 2021 15:47:00 GMT

User: gfasulli

Date: Dec 4, 2021 15:47:00 GMT

Hi, when i try to run this code that smoothly moves the mouse…:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %XPOS%::1000
2 | FOR | I | = | 0 TO 15 | NEXT
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0::+%MOUSE_X%::+10
4 | IF | INTEGER VARIABLE | %MOUSE_X% | LESS THAN | %XPOS% | MOUSE MOVEMENT | %INTEGER%-%MOUSE_Y%
5 | FOR | NEXT

…i receive this error Condition action is not valid. This condition action is not found in the ACTION list of valid condition actions: MOUSE MOVEMENT The action is available in the add condition menu, so I don’t understand where is the problem. Helpful links: <www.turnssoft.com/conditions.html#mousemovement> <www.turnssoft.com/conditions.html#for> <www.turnssoft.com/conditions.html#define_integer_variable> <www.turnssoft.com/conditions.html#decimal_variable> How can I solve this problem?

User: Steve

Date: Dec 12, 2021 0:43:38 GMT

Hi gfasulli, Thanks you’ve found a bug. It should work. I’ve logged it as a bug BZ26 <www.turnssoft.com/bugtrack.html#bugs> and I will have it fixed for the next version. Thanks for pointing it out.


Typing from clipboard

URL: https://minimousemacro.proboards.com/thread/525/typing-clipboard
Date: Nov 26, 2021 12:04:14 GMT

User: bruxadosul

Date: Nov 26, 2021 12:04:14 GMT

Hello, I’ve been having osme trouble to find out how to do it. I have an excel file with a list of names to put into a library management software. Some of the info the software will not accept the “ctrl v” command (it’s a dropbox field). It must be typed. I have tried using the keypress command, the define string from clipboard and some other tips I’ve seen here in the forum. They didn’t work. Also, after running a few times, the macro won’t play anymore. I must close and open again. event_log_mmm.txt (6.68 KB) tes.mmmacro (1.26 KB)

2 | RUN ACTION | SELECT WINDOW BY NAME | Excel
25 | 474 | 1066 | 2488 | Keypress Ctrl+ | c
2 | RUN ACTION | SELECT WINDOW BY NAME | Biblioteca Fácil 8.5.1 [Uso Exclusivo de: Colégio Horácio Ribeiro dos Reis]
8 | 755 | 420 | 50 | Keypress Shift+ | HOME
9 | 755 | 420 | 50 | Keypress delete
10 | 755 | 420 | 50 | Keypress Shift+ | END
11 | 755 | 420 | 50 | Keypress delete
7 | 411 | 1019 | 100 | Keypress Ctrl+ | v
8 | 411 | 1019 | 100 | Keypress enter
8 | 411 | 1019 | 100 | Keypress enter
8 | 411 | 1019 | 100 | Keypress enter
2 | RUN ACTION | SELECT WINDOW BY NAME | Excel
15 | 187 | 275 | 680 | Keypress LEFT
16 | 187 | 275 | 1760 | Keypress Ctrl+ | c
2 | RUN ACTION | SELECT WINDOW BY NAME | Biblioteca Fácil 8.5.1 [Uso Exclusivo de: Colégio Horácio Ribeiro dos Reis]
13 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%CLIPBOARD%
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress TAB
18 | 264 | 450 | 50 | Keypress %STRING%

User: Steve

Date: Dec 12, 2021 0:26:15 GMT

Hi bruxadosul Your syntax looks ok. So the issue is that your ctrl+v’s arnt populating your excel spread sheet. Is that correct?


Problema con SELECT WINDOW BY NAME

URL: https://minimousemacro.proboards.com/thread/339/problema-con-select-window-name
Date: Nov 4, 2020 18:39:10 GMT

User: Julio

Date: Nov 4, 2020 18:39:10 GMT

* | Esperar
1 | RUN ACTION | SELECT WINDOW BY NAME | Nueva pestaña
2 | IF | WINDOW TITLE | Nueva pestaña | EXIST | GOTO MACRO LINE | Existe
3 | RUN ACTION | INPUT BOX | No existe::::STRING
4 | RUN ACTION | GOTO MACRO LINE | Esperar
* | Existe
5 | RUN ACTION | INPUT BOX | Existe::::STRING

Estoy utilizando SELECT WINDOW BY NAME en la macro de más arriba conjuntamente con el navegador Chrome y no obtengo el resultado esperado. Teniendo Chrome abierto y con la pestaña “Nueva pestaña” abierta, el programa siempre me dice que “No existe”. Lo mismo ocurre aunque tenga cerrado Chrome. ¿Cual es mi error? Muchas gracias por tu ayuda. Saludos

User: zeak

Date: Nov 9, 2020 0:09:15 GMT

E: Hi Julio, S: Hola Julio, E: From what I can see you have not typed in all the text to select the window by name. S: Por lo que puedo ver, no ha escrito todo el texto para seleccionar la ventana por nombre. E: You have just typed in “New Tab” but what you need to type in is the full name “New Tab - Google Chrome” S: Acaba de escribir “Nueva pestaña”, pero lo que debe escribir es el nombre completo “Nueva pestaña - Google Chrome”. E: An easy way to see the full name of the window you are selecting is to hover you mouse over the window in the taskbar. S: Una manera fácil de ver el nombre completo de la ventana que está seleccionando es colocar el mouse sobre la ventana en la barra de tareas. E: What you are typing in. S: Qué estás escribiendo. RiS2qnn.png E: What you need to be typing in. S: Lo que necesita escribir. 5JcocL0.png E: Hovering over window to see full name. S: Colocando el cursor sobre la ventana para ver el nombre completo. CpOJ3GY.png Espero que esto ayude.

User: Julio

Date: Nov 10, 2020 16:57:28 GMT

Muchas gracias Zeak. He probado lo que me dices con la macro….

* | Esperar
1 | RUN ACTION | SELECT WINDOW BY NAME | Nueva pestaña  - Google Chrome
2 | IF | WINDOW TITLE | Nueva petaña - Google Chrome | EXIST | GOTO MACRO LINE | Existe
3 | RUN ACTION | INPUT BOX | No existe::::STRING
4 | RUN ACTION | GOTO MACRO LINE | Esperar
* | Existe
5 | RUN ACTION | INPUT BOX | Existe::::STRING

…. y el resultado sigue siendo el mismo: Teniendo una Nueva Pestaña de Google Chrome abierta, la macro siempre me dice que esa pestaña no existe. Saludos Julio

User: zeak

Date: Nov 11, 2020 0:10:23 GMT

E: Hi Julio, S: Hola julio, E: There are a few things I found out when testing this, S: Hay algunas cosas que descubrí al probar esto, E: 1. If the only tab open or the tab selected on Google Chrome is the New Tab then MMM will see that it is there and select it. S: 1. Si la única pestaña abierta o la pestaña seleccionada en Google Chrome es Nueva pestaña, MMM verá que está allí y la seleccionará. E: 2. Even if the only tab open or the tab selected is New Tab, If Google Chrome is minimize, Action Select Window by Name will not maximize it. S: 2. Incluso si la única pestaña abierta o la pestaña seleccionada es Nueva pestaña, si Google Chrome está minimizado, la acción Seleccionar ventana por nombre no la maximizará. E: 3. If you have multiple tabs open in Google Chrome and New Tab is not the one selected, Action Select Window by Name will not switch to it and not recognize it. S: 3. Si tiene varias pestañas abiertas en Google Chrome y Nueva pestaña no es la seleccionada, la ventana de selección de acción por nombre no cambiará a ella y no la reconocerá. E: I noticed in your macro that you had Action Input Box, I changed these to Message Prompt. S: Noté en su macro que tenía un cuadro de entrada de acción, lo cambié a Mensaje de solicitud. E: Below I have done a quick video showing what results I was getting. S: A continuación, he hecho un video rápido que muestra los resultados que estaba obteniendo. 112o9GG.gif

User: Julio

Date: Nov 11, 2020 17:45:35 GMT

Muchas gracias Zeak. He  modificado la macro, para dejarla como la tuya…….

* | Esperar
1 | RUN ACTION | SELECT WINDOW BY NAME | Nueva pestaña  - Google Chrome
2 | IF | WINDOW TITLE | Nueva petaña - Google Chrome | EXIST | GOTO MACRO LINE | Existe
3 | RUN ACTION | MESSAGE PROMPT | No existe::::0
4 | RUN ACTION | GOTO MACRO LINE | Esperar
* | Existe
5 | RUN ACTION | MESSAGE PROMPT | Existe::::0

…… y lamento decirte que no me funciona como a ti. En los 3 supuestos tuyos, MMM siempre me dice que “No existe”, tanto si la “Nueva pestaña” esta seleccionada o no. He visto el vídeo tuyo y a mi no me funciona igual. No lo entiendo ¿A qué puede ser debido? Julio

User: Julio

Date: Dec 3, 2021 11:47:42 GMT

Buenos días. Después de más de un año con este problema, sigo sin resolverlo. He simplificado un poco la macro, dejándola así:

1 | IF | WINDOW TITLE | Nueva pestaña - Google Chrome | EXIST | GOTO MACRO LINE | Existe
2 | RUN ACTION | INPUT BOX | No existe::::STRING
3 | RUN ACTION | GOTO MACRO LINE | Fin
* | Existe
5 | RUN ACTION | INPUT BOX | Existe::::STRING
* | Fin

Esta macro me funciona bien con ventanas del Bloc de Notas o Microsoft Excel (poniendo en WINDOW TITLE el nombre correspondiente de la ventana). Me responde si existe o no la ventana. Pero no me funciona en Google Chrome con la ventana “Nueva pestaña” (tal como está en el ejemplo de arriba). Siempre me dice que la ventana Nueva pestaña “No Existe”. Necesito resolverlo porque cuando arranco el Chrome, con frecuencia, se retrasa en la carga de la “Nueva pestaña” y necesito que mi macro sepa cuando esta cargada para continuar. Por favor, ¿me podéis ayudar? Julio

User: Julio

Date: Dec 5, 2021 19:59:41 GMT

Hola de nuevo. Creo que ya he encontrado la explicación. Se trata del caracter “ñ”  que no lo entiende MMM como titulo de ventana (Nueva pestaña). Con otros nombres de ventana que no contengan el caracter “ñ” funciona bien. Esto, si no tiene solucion, es un importante problema de MMM para el español, pues en este idioma la “ñ” es un caracter muy habitual. Saludos Julio


Syntax

URL: https://minimousemacro.proboards.com/thread/526/syntax
Date: Nov 30, 2021 19:28:59 GMT

User: Everett

Date: Nov 30, 2021 19:28:59 GMT

Hey there, New to MMM, wanted to know more about the syntax but I am finding it difficult to locate any basic information online, Specifically I wanted to know more about the numbers at the beginning of each line of script: I know the 2nd and 3rd numbers are the X and Y coordinates, are these necessary, can I omit them if I only want a keystroke to be executed? The 4th number is a timing function that can be limited to “0”, will this effect typing if I were to be tabbing thorough a web page or is it more to allow time for programs to respond to the input? The 1st number I’m still confused, initially it looked like a step number, but when using the move functions with in MMM the numbers appear to not matter what order they are in they will play out in the order they are in the script, also I noticed several threads where the examples showed multiples of the same number used in a row, what is this number for? Thanks for your help!

User: zeak

Date: Dec 1, 2021 5:51:34 GMT

Hi Everett, There is a lot of useful information on the conditions page. I know some things like the numbers at the start of the line isn’t covered but if you also have a scan through this forum then you can uncover some answers you might be seeking. But for reference the numbers at the start of each line to not play a major part in the running of the macro unless you are using the GOTO MACRO LINE up or down conditions. and you can omit the X & Y coordinates by have X in its place.

1 | X | X | 1000 | Keypress Edit_Me

another way to do keystroke without mouse movement is to use a condition called KEYPRESS

2 | RUN ACTION | KEYPRESS | Hello Everett

<www.turnssoft.com/conditions.html> Cheers, Zeak

User: Everett

Date: Dec 2, 2021 13:20:53 GMT

Thanks, I know it might seem dumb, but this level of understanding is the only way I know how to write and code or script to account for all variables.


Homeoffice environment

URL: https://minimousemacro.proboards.com/thread/523/homeoffice-environment
Date: Nov 2, 2021 18:01:16 GMT

User: rollo

Date: Nov 2, 2021 18:01:16 GMT

Hi to everyone, I am new to MMM and am very impressed… As a beginner I have a question: Since I am working at home since corona I have to use a citrix environment to get at my computer at work. This is “simply” done by a browser windows. So I can see and act as if I was really at work but I cannot load files from my home pc to the one at work. Just like some VNC connection. Simply mouse and keyboard macro seem to work. But what happens when I use conditional things like detecting images? Can I define more than one macro and jump from macro1 to macro2 ? Does MMM have a kind of image grabber or do I have to use a third party program? Cheers, Rollo   User: gurttron

Date: Nov 2, 2021 18:20:56 GMT

All i can say here, is that I use VBA Userforms inside Excel, and set macro 1 to complete an action then go to button on form and press it to start macro 2, so on an so forth. Not sure if this helps you at all but thats all I have. (I have no idea how to get macro to detect certain images….) Update: if this sounds like of any interest to you I can explain more so, just didn’t wanna go to deep grin.png

User: Steve

Date: Nov 12, 2021 22:52:44 GMT

defaultavatar.png Nov 2, 2021 18:01:16 GMT

rollo said: Hi to everyone, I am new to MMM and am very impressed… As a beginner I have a question: Since I am working at home since corona I have to use a citrix environment to get at my computer at work. This is “simply” done by a browser windows. So I can see and act as if I was really at work but I cannot load files from my home pc to the one at work. Just like some VNC connection. Simply mouse and keyboard macro seem to work. But what happens when I use conditional things like detecting images? Can I define more than one macro and jump from macro1 to macro2 ? Does MMM have a kind of image grabber or do I have to use a third party program? Cheers, Rollo   Hi rollo

Mini Mouse Macro can detect images, pixel color ranges, and single pixels from a given criteria. These conditions are listed at <www.turnssoft.com/conditions.html> . Here are some more useful condition links:

<www.turnssoft.com/conditions.html#detectimage>

<www.turnssoft.com/conditions.html#pixelcolor>

<www.turnssoft.com/conditions.html#pixelrange>

<www.turnssoft.com/conditions.html#mousetoimage>

<www.turnssoft.com/conditions.html#pixelvariable>

<www.turnssoft.com/conditions.html#definepixelrangevariable>

<www.turnssoft.com/conditions.html#pixelcapture>

<www.turnssoft.com/conditions.html#pixelrangesave> Hope this helps. Steve.

User: bruxadosul

Date: Nov 30, 2021 13:56:10 GMT

When trying to find a solution to my own problem I stumbled at this post that it seems to be something about two macros running together. Take a look and see if it helps: minimousemacro.proboards.com/post/1132


Switching Tabs in Groupy (Stardock) doesn’t work

URL: https://minimousemacro.proboards.com/thread/521/switching-tabs-groupy-stardock-work
Date: Nov 1, 2021 18:01:09 GMT

User: gurttron

Date: Nov 1, 2021 18:01:09 GMT

Clicks are not recognized in macro when trying to switch Groupy tabs, (Groupy has free 30 day trial if you want to troubleshoot for me in no way trying to get people to buy the product, and i get no commissions if you do buy the product, just be sure to select the free trial) Groupy Link (Stardock)  I have tried many ways to get it to work but it doesn’t and it saddens me. To clarify, it will switch tabs inside browsers, but the tabs specific to Groupy it will not. Top Bar is Groupy Tab, Bar below it is Browser Tab (Image is old, but still represents) Groupy4-min.png

User: zeak

Date: Nov 2, 2021 1:01:20 GMT

Hi Gurttron, First off, Welcome to the forum. Without downloading the program and testing it for myself, I can only guess as to what the problem is. With that does the program allow any keyboard shortcuts that could be used in replacement of mouse clicks? Cheers, Zeak. PS. I’ll download it when I get home and test it out.

User: gurttron

Date: Nov 2, 2021 2:08:49 GMT

Hi Zeak!! Thanks for the Response! Yes there are hotkeys for tab movements. ctrl tab goes 1 way and ctrl shift tab goes the other (you have to select this setting in groupy settings (advance settings bottom option) or it’ll just move the browser tabs, not the groupy tabs.) This does appear to effect the Groupy tabs if set as macro, and may be a work around, but would only work if I set the macro to run while i was already on a particular tab. Much more efficient if the mouse click selected the tab so that no matter what tab I was on it would open the right tab as long as I had them ordered properly to start with. I use Groupy because I am cutting down on windows, I use to run 30 windows, now that has been cut down to just 10 thanks to Groupy. I use Groupy mainly for work. FYI I have 4 30inch monitors for my job grin.png

Hope this info helps!!


Help with two simple macros

URL: https://minimousemacro.proboards.com/thread/519/help-simple-macros
Date: Oct 16, 2021 7:37:04 GMT

User: hlynge

Date: Oct 16, 2021 7:37:04 GMT

I make a lot of posts on Discord and would like to have 2 formating macros, but cant figure out how to create them.. the idea is that i highlight a text and trigger the 1 of 2 macros… what is to happen is that the text i cut and the content of the clipboard i wrapped with %CLIPBOARD% and then pasted back alternatively: Python %CLIPBOARD% Think that I got it:

1 | X | X | 50 | Keypress Ctrl+ | x
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%CLIPBOARD%
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::```
4 | RUN ACTION | DEFINE STRING VARIABLE | %CLIPBOARD%::%STRING1%%STRING%%STRING1%
5 | X | X | 50 | Keypress Ctrl+ | v

and:

1 | X | X | 50 | Keypress Ctrl+ | x
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%CLIPBOARD%
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::```
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::PYTHON
5 | RUN ACTION | DEFINE STRING VARIABLE | %CLIPBOARD%::%STRING1%%STRING2%%STRING%%STRING1%
6 | X | X | 50 | Keypress Ctrl+ | v

User: Steve

Date: Oct 16, 2021 22:43:29 GMT

Hi hlynge To write directly to the system keyboard you need to use the ‘COPY TO CLIPBOARD’ action (<www.turnssoft.com/conditions.html#copytoclipboard>).

1 | RUN ACTION | SELECT WINDOW BY NAME | Untitled - Notepad
2 | X | X | 50 | Keypress Ctrl+ | a
3 | X | X | 50 | Keypress Ctrl+ | c
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%CLIPBOARD%
5 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::```
6 | RUN ACTION | COPY TO CLIPBOARD | %STRING1%%STRING%%STRING1%
7 | X | X | 50 | Keypress Ctrl+ | v

minimousemacro_copytoclipboard.gif


Rename files

URL: https://minimousemacro.proboards.com/thread/513/rename-files
Date: Oct 8, 2021 21:51:37 GMT

User: Mike

Date: Oct 8, 2021 21:51:37 GMT

I was wondering if there was a simple way to rename files. I am currently using a complicated set of actions to get it done but it is not reliable. Ideally, renaming a file according to a set variable would be great. Any ideas?

User: philranger

Date: Oct 9, 2021 17:28:58 GMT

Hello, I’d recommend using DOS rename through a batch file commands such as REN. If you can be very specific I can help. Other method would be to create a macro that cuts a name from a text files, alt-tab to the explorer, arriw-down, f2, paste (from memory)

User: Steve

Date: Oct 13, 2021 18:44:18 GMT

Oct 8, 2021 21:51:37 GMT Mike said: I was wondering if there was a simple way to rename files. I am currently using a complicated set of actions to get it done but it is not reliable. Ideally, renaming a file according to a set variable would be great. Any ideas? Hi Mike, To script this out with MMM I’d use the FILE MOVE action ( <www.turnssoft.com/conditions.html#filemove> ).

1 | FOR | EACH | FILE IN | D:\Dropbox\File\myfiles | DO
2 | RUN ACTION | FILE MOVE | %FILE%::%FILE.PATH%\%I%.txt::UI
3 | FOR | NEXT

A FOR EACH FILE loop here is looping through each file in the file directory ‘myfiles’. The FILE MOVE action is using the internal FOR loop file based variables ( <www.turnssoft.com/conditions.html#for> ) for %file% being the full file path, %file.path% being the file folder path, and %I% being the for loop numeric file counter. The FILE MOVE at line 2 picks up the file in the for loop, and moves it to the same directory but with a new name of %I%.txt being the for counter. minimousemacro_forloopfilerename.gif


Apply macro on specific window while PC still usable

URL: https://minimousemacro.proboards.com/thread/514/apply-macro-specific-window-usable
Date: Oct 9, 2021 4:24:00 GMT

User: trezedidico

Date: Oct 9, 2021 4:24:00 GMT

hello im new to this is it possible to apply a macro on a specific window while im still using my pc normally? i did look around this forum about it, but havent found an answer thanks in advance

User: philranger

Date: Oct 9, 2021 17:31:26 GMT

Not that I know because to act in a window it needs to gain focus. Anything you would then type or any mouse move would mix with the macro commands. My workaround was to thoroughly test the macro then let it run in a loop while I was at lunch or in the evening. That’s pretty dangerous though.


IF ELSE using PIXEL COLOR

URL: https://minimousemacro.proboards.com/thread/512/using-pixel-color
Date: Oct 5, 2021 19:46:10 GMT

User: xxxii

Date: Oct 5, 2021 19:46:10 GMT

Hi. Good day. I am trying to make a macro for a game and my triggers are pixel colors of different things (e.g. stamina and buttons). The high-level flow looks like this:

* | CHECK LOADING TO PLAY - PLAY BUTTON WILL APPEAR AFTER LOADING THUS COLOR CHANGE
1 | IF | PIXEL COLOR | Color [R=34, G=31, B=32]::At Location [X:964 Y:746] | IS NOT THE SAME | THEN
   2 | RUN ACTION | WAIT SECONDS | 10
3 | IF | END IF
* | IF STILL LOADING AFTER 10 SECONDS, DO REFRESH - FOR INSTANCES OF LONG LOAD TIMES
4 | IF | PIXEL COLOR | Color [R=34, G=31, B=32]::At Location [X:964 Y:746] | IS THE SAME | THEN
   5 | RUN ACTION | GOTO MACRO LINE | 1
6 | IF | END IF
* | IF PLAY BUTTON IS ALREADY PRESENT - USE COLOR OF PLAY BUTTON TO TRIGGER CLICK
7 | IF | PIXEL COLOR | Color [R=222, G=169, B=62]::At Location [X:964 Y:746] | IS THE SAME | THEN
   * | CLICK PLAY
   8 | 971 | 737 | 460 | Left Click Down
   9 | 971 | 737 | 76 | Left Click Release
10 | IF | END IF
* | CHECK LOADING BAR IF STILL LOADING AFTER 60 SECONDS, DO REFRESH - LOAD BAR STUCK AT CERTAIN PERCENTAGE AFTER HITTING PLAY
11 | IF | PIXEL COLOR | Color [R=214, G=147, B=82]::At Location [X:705 Y:779] | IS THE SAME | THEN
   12 | RUN ACTION | WAIT SECONDS | 60
13 | IF | END IF
14 | IF | PIXEL COLOR | Color [R=214, G=147, B=82]::At Location [X:705 Y:779] | IS THE SAME | THEN
   15 | RUN ACTION | GOTO MACRO LINE | 1
16 | IF | END IF
* | CHECK IF STAMINA BAR IS AT MID (COLOR NOT BROWN)
120 | IF | PIXEL COLOR | Color [R=181, G=142, B=109]::At Location [X:800 Y:438] | IS NOT THE SAME | THEN
   * | CHECK BUTTON - IF GO WORK (COLOR MINT BLUE)
   121 | IF | PIXEL COLOR | Color [R=123, G=198, B=227]::At Location [X:1000 Y:447] | IS THE SAME | THEN
      * | CLICK GO WORK
      122 | 1000 | 447 | 5783 | Left Click Down
      123 | 1000 | 447 | 90 | Left Click Release
      * | CHECK BUTTON - ELSEIF GO HOME (COLOR BROWN)
   124 | IF | ELSE
      * | CLICK GO HOME
      125 | 1000 | 447 | 5783 | Left Click Down
      126 | 1000 | 447 | 90 | Left Click Release
      * | CLOSE
      127 | 1240 | 355 | 3832 | Left Click Down
      128 | 1240 | 355 | 112 | Left Click Release
   129 | IF | END IF
130 | IF | END IF

…the error says that IF-THEN-ENDIF does not work for PIXEL COLOR …IF-ENDIF within an IF-ENDIF Thank you for the help.

User: xxxii

Date: Oct 6, 2021 12:05:37 GMT

For the stamina check, I am using integer variable since it is a 2-layer check (stamina + button)

1 | IF | PIXEL COLOR | Color [R=131, G=162, B=68]::At Location [X:800 Y:439] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::1
2 | IF | PIXEL COLOR | Color [R=123, G=198, B=227]::At Location [X:989 Y:444] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::2
3 | IF | INTEGER VARIABLE | %INTEGER% | = | 2 | RUN ACTION | MOUSE CLICK | Left click at 1002 449 1 times with 10 ms delay
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0

Line 1 checks the stamina Line 2 checks the button Line 3 should do the button click –> current syntax is not working ACTION is not valid Line 4 clears the variable UPDATE: I tried GOTO MACRO LINE and somehow it works

96 | IF | PIXEL COLOR | Color [R=120, G=159, B=57]::At Location [X:800 Y:439] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::1
97 | IF | PIXEL COLOR | Color [R=35, G=201, B=230]::At Location [X:990 Y:443] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::2
98 | IF | INTEGER VARIABLE | %INTEGER% | = | 2 | GOTO MACRO LINE | 99 | ELSE | 131 | IF | INTEGER VARIABLE | %INTEGER% | != | 2 | GOTO MACRO LINE | 101
99 | 1002 | 449 | 136 | Left Click Down
100 | 1002 | 449 | 96 | Left Click Release
101 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0

User: zeak

Date: Oct 7, 2021 22:55:02 GMT

defaultavatar.png Oct 6, 2021 12:05:37 GMT

xxxii said:

1 | IF | PIXEL COLOR | Color [R=131, G=162, B=68]::At Location [X:800 Y:439] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::1
2 | IF | PIXEL COLOR | Color [R=123, G=198, B=227]::At Location [X:989 Y:444] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::2
3 | IF | INTEGER VARIABLE | %INTEGER% | = | 2 | RUN ACTION | MOUSE CLICK | Left click at 1002 449 1 times with 10 ms delay
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0

Hi Xxxii, I would change the DEFINE INTEGER VARIABLE to be an additive and not just a change. the difference is putting a plus in front.

1 | IF | PIXEL COLOR | Color [R=131, G=162, B=68]::At Location [X:800 Y:439] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::+1
2 | IF | PIXEL COLOR | Color [R=123, G=198, B=227]::At Location [X:989 Y:444] | IS THE SAME | DEFINE INTEGER VARIABLE | %INTEGER%::+1
3 | IF | INTEGER VARIABLE | %INTEGER% | = | 2 | RUN ACTION | MOUSE CLICK | Left click at 1002 449 1 times with 10 ms delay
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0

Clicking image after scrolling down not aligning

URL: https://minimousemacro.proboards.com/thread/510/clicking-image-after-scrolling-aligning
Date: Oct 3, 2021 23:00:07 GMT

User: NewbB

Date: Oct 3, 2021 23:00:07 GMT

There’s hundreds of images on the page and I need to open them in a new tab. The first method I tried was to use TAB to go to the next image, but for some reason in Chrome and Firefox the tab function isn’t working to move to the next image (I guess the way the website is coded). The next thing I tried was to use keyboard down 8 times to go to the new row, and while this works for the first two rows, there’s a small space gap that happens and after the third row is misaligned and the mouse is therefore not positioned correctly on the page. This is driving me crazy. Is there any solution to this problem?


Set timer

URL: https://minimousemacro.proboards.com/thread/507/set-timer
Date: Sept 25, 2021 2:27:26 GMT

User: Glen

Date: Sept 25, 2021 2:27:26 GMT

Is there a way to run the loop for example two hours then pauses after, that way if I am away I wouldn’t have to worry about shutting it down on time. Thanks

User: philranger

Date: Sept 30, 2021 20:54:56 GMT

Hello, I’m sure there’s a way. I would ask this in the « Questions and help »’section though…

User: Steve

Date: Oct 3, 2021 0:02:57 GMT

Sept 25, 2021 2:27:26 GMT Glen said: Is there a way to run the loop for example two hours then pauses after, that way if I am away I wouldn’t have to worry about shutting it down on time. Thanks Hi Glen, For this I would use a loop based on the internal %time_macro% variable.
Consider this example where I loop for 10 seconds based on the running macro time:

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %time_macro%::0
* | START
2 | IF | DECIMAL VARIABLE | %time_macro% | LESS THAN | 10 | THEN
   3 | RUN ACTION | MESSAGE PROMPT | Looping for 10 seconds: (%time_macro%)::loop::1::OK
   4 | RUN ACTION | GOTO MACRO LINE | START
5 | IF | ELSE
   6 | RUN ACTION | MESSAGE PROMPT | Total time is %time_macro%::End of Loop::0::Information
7 | IF | END IF

minimousemacro_looponmacrotime.gif Hope this helps.


Startup and autoclose after play

URL: https://minimousemacro.proboards.com/thread/463/startup-autoclose-after-play
Date: Jul 22, 2021 9:28:00 GMT

User: jojobaoil23

Date: Jul 22, 2021 9:28:00 GMT

Hello, I’m using Mini Mouse Macro Pro with a macro to run at startup, but i have to login as soon as my computer starts so the macro will play, if i start my computer and let it sit on the login screen, then the macro won’t play after logging in, i guess this is because Mini Macro Mouse starts when the computer does, not when the user logs in. Also, when setting up a macro for autostart, i cannot open the program anymore as it will automatically play the macro and quit, i have to rename the macro file that plays on start so the program won’t play it and i’m be able to use the program again.

User: Steve

Date: Jul 23, 2021 7:57:55 GMT

Hi jojobaoil23 Yes Mini Mouse Macro will start when the computer does at startup. You could add a delay into the macro or perhaps a condition to trigger the macro start. Have a look at the conditions page for some ideas. defaultavatar.png Jul 22, 2021 9:28:00 GMT

jojobaoil23 said: Also, when setting up a macro for autostart, i cannot open the program anymore as it will automatically play the macro and quit, i have to rename the macro file that plays on start so the program won’t play it and i’m be able to use the program again. Do you have ‘Exit and close after Macro end’ enabled within the options menu? If you do, disable it and it will fix your issue with the auto close. If you are using the macro queue for saved auto macro’s then clear that queue too. Hope it helps, Steve.

User: mrclicker

Date: Jul 23, 2021 8:19:42 GMT

i dont quite understand what you are trying to do so this may be of no use to you at all, but.. you can create a batch file from that macro and add it to your Windows Scheduled Tasks, then use the logon event as trigger to run that batch file.

User: jojobaoil23

Date: Aug 28, 2021 9:46:04 GMT

I bought MMM Pro hoping the autostart and autoclose features would do exactly that but looks like i will still have to use the old task scheduler and batch files, oh well. And how exactly can i do that ? I tried without success. I don’t understand what is the use case for all those features then, if you can’t use the program itself anymore.

User: philranger

Date: Aug 28, 2021 13:43:43 GMT

There is a mmm command called “exit” if I remember

User: jojobaoil23

Date: Aug 31, 2021 11:07:07 GMT

I followed the Task Scheduler tutorial here <www.turnssoft.com/faq2.html#how%20do%20i%20schedule%20my%20macro%20to%20run%20at%20a%20specific%20time> but it doesn’t work, MMM opens for a fraction of a second and instantly closes. I also tried to do it via command line but the MiniMouseMacro command isn’t recognized. (powershell and regular command line) So i found another way to do that, i just have two MiniMouseMacro.exe, one to use, and one that will autostart my .mmmacro file automatically with the help of the two different ini files. Weird way to do it but at least it works.

User: jojobaoil23

Date: Sept 23, 2021 14:18:28 GMT

I don’t know how i managed to do it the first time but now this doesn’t work anymore. I bought this program just to do this and in the end i still can’t do something as simple as having a macro to launch after logging in. How am i the only one here wanting something this trivial ? The program is perfect but there is just THIS little missing feature that ruins it for me. Whatever, i’ll look for something else.

User: Steve

Date: Sept 23, 2021 21:47:56 GMT

Hi jojobaoil23

Im not sure what you are doing wrong, I will lay out the steps for you.

  1. Open MMM and enable file association MMM-File-Ass1.png UAC will need approval MMM-File-Ass22.png Once it has been enabled it will prompt with enabled successfully. MMM-File-Ass2.png
  2. Add a saved macro file to the macro queue.  Ensure to enable it, enable on MMM startup, and save the setting.  I added a delay here to wait until windows is ready. MMM-File-Ass3.png
  3. Go to the windows startup folder for your user. MMM-File-Ass4.png
  4. Copy in minimousemacro.exe.  MMM-File-Ass5.png

Slows down / won’t run multiple

URL: https://minimousemacro.proboards.com/thread/506/slows-run-multiple
Date: Sept 21, 2021 17:32:38 GMT

User: Tnt

Date: Sept 21, 2021 17:32:38 GMT

After running the macro 10 or so times, the runtime slows way down. Almost taking 3 times longer to run to end. I had the exact same macro in the free version and never had this issue. I have disable the event log and reset the clicks to remove the click release steps..no change. I am also having issues with it running different macros. I have them set up in the quick task, they will work as programed a few times, then I get nothing when I hit the hot keys.
I have tried on two different computers one running windows 8 pro the other 10 pro. Both are giving me the same problems. I have the latest release of the MMM Pro software. Any ideas?

User: philranger

Date: Sept 21, 2021 22:27:51 GMT

Hello I read that debug/ log should be off to solve this in another thread


URL: https://minimousemacro.proboards.com/thread/504/download-links
Date: Sept 18, 2021 0:09:25 GMT

User: oengis

Date: Sept 18, 2021 0:09:25 GMT

Hi, i need helo. You download links are not working. I recieve 2 message to my e-mail with link with exe and zio file, but are not working. Always they go to sourceforge.net/projects/minimousemacro/files/MiniMouseMacro.exe/download again.

User: Steve

Date: Sept 19, 2021 23:25:22 GMT

Hi oengis, If you are prompted to update MMM then sourceforge.net/projects/minimousemacro/files/MiniMouseMacro.exe/download is the right place. If you have the pro version then navigate here <www.turnssoft.com/mmm-pro-update.html>, enter your info, and after about 5 mins the automated update system will kick in and send you an updated copy. Regards, Steve.


Play n Times loop

URL: https://minimousemacro.proboards.com/thread/503/play-times-loop
Date: Sept 16, 2021 10:31:55 GMT

User: Bebelaq

Date: Sept 16, 2021 10:31:55 GMT

hey guys I want to play the loop for certain times only for example, just play the loop 8 times, how to do it tho?

User: zeak

Date: Sept 17, 2021 0:46:42 GMT

Hi Bebelaq, The simplest way to do this would be using the macro loop selection in the top right of the program. just click check the loop box and click on the loop text then simply type in ‘8’ for the number of times you want your macro to loop. You can tell if you have done it correctly as the word ‘Loop’ will change to the number of loops you have specified. DdmSCmf.png iV4AfJ0.png If you require any further help or need a different type of loop, please don’t hesitate to let me know. Cheers, Zeak


Random Keypress

URL: https://minimousemacro.proboards.com/thread/502/random-keypress
Date: Sept 13, 2021 21:51:01 GMT

User: Victor

Date: Sept 13, 2021 21:51:01 GMT

Hello once again, i just did a quick macro to do something for my work and realized that by using the IF condition i could do a lot more with this macro. the thing is i don’t know if theres a way to make a random keypress between (for example) F, V, C, A, D. So when the macro randomly presses one of these 5 keys then i copy that letter, and the IF condition will replace that letter with something else. I’ll post here the macro i just made for this.

1 | 252 | 183 | 100 | Keypress Ctrl+ | c
2 | 292 | 263 | 100 | Keypress right | loop 4::150
3 | 1420 | 880 | 150 | Left Click
4 | 75 | 75 | 1000 | Left Click
5 | 244 | 205 | 150 | Keypress Ctrl+ | v
6 | 244 | 205 | 150 | Keypress enter
7 | RUN ACTION | WAIT SECONDS | %random_180-300%
8 | 75 | 75 | 150 | Left Click
9 | 245 | 880 | 150 | Left Click
10 | 241 | 261 | 1000 | Keypress enter
* | --- Here it selects the cell in Excel
11 | 265 | 321 | 250 | Keypress %random_v-f%
* | --- Here i tried using the %random% code for time but insted of pressing the letter itself it just types 0 or 1, 
* | so i just did 2 examples on the IF variable, but if i could make more than 0 and 1 then i'd replace those with something else
12 | 334 | 334 | 150 | Keypress Ctrl+ | a 
13 | 334 | 334 | 150 | Keypress Ctrl+ | c
14 | IF | CLIPBOARD | VALUE | TEXT CONTAINS | 0 | KEYPRESS |  Fast Busy
* | --- And here's what i figured i could do to replace the values (It's also the very first time i actually use this variable)
15 | IF | CLIPBOARD | VALUE | TEXT CONTAINS | 1 | KEYPRESS | Voicemail
16 | 329 | 337 | 250 | Keypress tab
17 | 242 | 357 | 250 | Keypress left | loop 5::150
18 | 242 | 357 | 250 | Keypress down

User: zeak

Date: Sept 14, 2021 4:01:32 GMT

Hi Victor, Until Array’s are added into MMM I can only think of one way of doing this. Below is my example, I used Define Integer instead of using clipboard that way you don’t have to do the extra steps of copying to clipboard.

1 | 252 | 183 | 100 | Keypress Ctrl+ | c
2 | 292 | 263 | 100 | Keypress right | loop 4::150
3 | 1420 | 880 | 150 | Left Click
4 | 75 | 75 | 1000 | Left Click
5 | 244 | 205 | 150 | Keypress Ctrl+ | v
6 | 244 | 205 | 150 | Keypress enter
7 | RUN ACTION | WAIT SECONDS | %random_180-300%
8 | 75 | 75 | 150 | Left Click
9 | 245 | 880 | 150 | Left Click
10 | 241 | 261 | 1000 | Keypress enter
11 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%RANDOM_1-5%
12 | IF | INTEGER VARIABLE | %INTEGER% | IS | 1 | KEYPRESS | F
13 | IF | INTEGER VARIABLE | %INTEGER% | IS | 2 | KEYPRESS | V
14 | IF | INTEGER VARIABLE | %INTEGER% | IS | 3 | KEYPRESS | C
15 | IF | INTEGER VARIABLE | %INTEGER% | IS | 4 | KEYPRESS | A
16 | IF | INTEGER VARIABLE | %INTEGER% | IS | 5 | KEYPRESS | D
17 | 329 | 337 | 250 | Keypress tab
18 | 242 | 357 | 250 | Keypress left | loop 5::150
19 | 242 | 357 | 250 | Keypress down

Hope this helps, If this doesn’t help let me know and I will work through it with you. Cheers, Zeak

User: Victor

Date: Sept 14, 2021 13:51:09 GMT

Thanks Zeak, i’ll work with that, i had not thought of using the integers as i haven’t really taken the time to test and/or use most variables.


Unable to create infinite loop

URL: https://minimousemacro.proboards.com/thread/501/unable-create-infinite-loop
Date: Sept 13, 2021 1:13:37 GMT

User: scorchers1003

Date: Sept 13, 2021 1:13:37 GMT

Hi, I am trying to upload info off a spreadsheet but the loop is repeating the same actions. I want at the end of the sequence to move down 1 cell in the first column so it can repeat the actions for the next set of data not the orignal set. Then I can run the loop ie: 50 times. All help appreciated. Regards

User: zeak

Date: Sept 13, 2021 1:36:50 GMT

Hi Scorchers1003, First of all welcome to the forum, This sounds very similar to what Grigori was trying to achieve, check out the Thread I linked and if that doesn’t help then let me know. minimousemacro.proboards.com/thread/486/adding-extra-keypress-full-macro Cheers, Zeak


Reduced speed after a few runs

URL: https://minimousemacro.proboards.com/thread/497/reduced-speed-after-runs
Date: Sept 1, 2021 11:49:28 GMT

User: mrclicker

Date: Sept 1, 2021 11:49:28 GMT

i noticed my macros reduce in speed dramatically after the app is open for about 30-60 minutes or so. closing the app and restarting it restore the original speed for a while. i am happy to provide logs to support this and to help you understand why that is. are you aware of this ? is this expected behavior ?

User: Steve

Date: Sept 1, 2021 21:44:14 GMT

Hi mrclicker Have you left the MMM event log on?
This is most likely the MMM internal event log getting full. The MMM event log is recommended for debugging only. Either reduce the amount of log entries for the MMM event log within settings or turn it off if you don’t need to debug your macro flow.

User: mrclicker

Date: Sept 2, 2021 11:24:38 GMT

I did. i disabled it now and report back. thanks Steve


macro failing after ENTER

URL: https://minimousemacro.proboards.com/thread/495/macro-failing-after-enter
Date: Aug 30, 2021 14:24:57 GMT

User: Chris

Date: Aug 30, 2021 14:24:57 GMT

Hi all:  The macro shown below use to work properly until 8/13 when it began to malfunction after line 9 (keypress ENTER).  I do not know what could have changed to on my computer to cause this to start failing except for Windows updates being installed.  This macro is run in a virtual machine, but there have been no updates to the vm host either.  Any suggestions on what could have caused this to fail?

47 | 775 | 420 | 200 | Keypress Alt+ | s
48 | 775 | 420 | 200 | Keypress Alt+ | a
49 | 775 | 420 | 20 | Keypress t
50 | 775 | 420 | 20 | Keypress r
50 | 775 | 420 | 20 | Keypress a
50 | 775 | 420 | 20 | Keypress n
77 | 775 | 420 | 2000 | Keypress Alt+ | a
78 | 775 | 420 | 200 | Keypress Alt+ | o
81 | 775 | 420 | 200 | Keypress ENTER
42 | 775 | 420 | 300 | Right Click
46 | 775 | 420 | 300 | Keypress Ctrl+ | END

User: Steve

Date: Aug 30, 2021 22:00:46 GMT

Hi Chris, What do you mean exactly when you say ‘it began to malfunction’? Did you get an error or did the macro play and not do what you expected?

User: Chris

Date: Aug 31, 2021 19:41:47 GMT

By “malfunction”, I mean that this macro worked for well over a year, but then about 1 week ago it simply broke after the 9th step.  If I break the macro into 2 pieces, the first being steps 1-9 and the second being steps 10 and 11, both work.  I have no idea what could have changed to cause this to occur, the application I run it on is the same, the PC/VM I run it on are the same, no new software has been installed.  The only change, which I just can’t see doing anything, is the IPs have changed over the past month or so, but this change does not coincide with the start the issue.

User: Steve

Date: Aug 31, 2021 21:52:49 GMT

Are you running the latest version? If not update to the latest version.
MMM has an internal event logger. If the MMM event logger is not enabled, enable it and have a look at the output it produces. It will give us an indication on what the issue is. Does MMM work for you outside of this application?
Run this test: Open a notepad and position the text editor at 1000 X mouse and 1000 Y mouse so line 1 works to click into the notepad. MMM will then type out HelloWorld, the enter key for new line, and HelloWorld.

1 | 1000 | 1000 | 1000 | Left Click
2 | X | X | 20 | Keypress H
3 | X | X | 20 | Keypress e
4 | X | X | 20 | Keypress l
5 | X | X | 20 | Keypress l
6 | X | X | 20 | Keypress o
7 | X | X | 20 | Keypress World
8 | X | X | 200 | Keypress ENTER
9 | X | X | 20 | Keypress H
10 | X | X | 20 | Keypress e
11 | X | X | 20 | Keypress l
12 | X | X | 20 | Keypress l
13 | X | X | 20 | Keypress o
14 | X | X | 20 | Keypress World

This test will tell us if something has changed within the application your running MMM in. If this works and your sample does not then we can assume that something may have changed within the virtual machine that is causing the issue.

User: philranger

Date: Sept 1, 2021 12:36:02 GMT

Hello Maybe worth trying, maybe not. Whenever I have a macro that stops working, I change the delays to 3000 ms for a few steps before and after where I think it is broken. Our IT guys have a tendency ro randomly “improve our experience”, so delays have to be increased. This allows me to see what happens at each step so I can fix the right one.


Trouble with Integer vs. String Variables

URL: https://minimousemacro.proboards.com/thread/493/trouble-integer-string-variables
Date: Aug 27, 2021 16:08:48 GMT

User: bobmaucher

Date: Aug 27, 2021 16:08:48 GMT

Hi, I’m trying to make a macro that looks for an image on the screen, and when it sees the image, it left-clicks it. Here is my code:

1 | IF | DETECT IMAGE | image path C:\Users\bobma\Desktop\RipeSunflower.png::match quick::move mouse no::save to vars X Y | IMAGE FOUND | CONTINUE
  2 | RUN ACTION | MOUSE CLICK | Left click at %X% %Y%
  3 | RUN ACTION | WAIT SECONDS | 1
  4 | RUN ACTION | MOUSE CLICK | Left click at %X% %Y%
5 | IF | END IF
6 | RUN ACTION | WAIT SECONDS | 1

I’m getting this error:

Playback error:  2 | RUN ACTION | MOUSE CLICK | Left click at %X% %Y% - Condition execution error Conversion from string "%x%" to type 'Integer' is not valid.

I can’t figure out how to make sure the X and Y variables are defined as integers - it seems the program is setting them as strings, and then tries to interpret the strings as integers when it’s getting direction where to click.  What am I doing wrong? Thank you

User: philranger

Date: Aug 28, 2021 13:59:54 GMT

Hello,   I know that mmm is quite strict about spacing, I never tried to put spaces at the beginning of lines and can’t check now, but worth a try.  Also, my clicks are never “run actions” .

Maybe something more like this?

2 | %INTEGER1% | %INTEGER2% | 100 | Left Click

Regards

User: Steve

Date: Aug 29, 2021 22:03:05 GMT

This was an error with version 8.3.1.0. It was patched a couple of weeks ago. Update to the latest version.

User: bobmaucher

Date: Aug 30, 2021 11:26:06 GMT

Upgrading was my problem - thank you!

User: mrclicker

Date: Sept 1, 2021 11:37:43 GMT

i had a similar issue where, after the upgrade to 8.3.2.1, previously made macros where variable were defined as integers failed in an IF statement when comapring them to another integer i got an error saying it is a string and not an integer


Issue with copy and paste LEFT CLICK

URL: https://minimousemacro.proboards.com/thread/489/issue-copy-paste-left-click
Date: Aug 25, 2021 12:55:08 GMT

User: cyberchipz

Date: Aug 25, 2021 12:55:08 GMT

So, I copied and pasted this Left Click that uses variables.

27 | %TL1X% | %TL1Y% | 300 | Left Click

And when I copy it, I get the error message about a malformed click… and the information on how to create it properly.

The error message is “Manual Edit - no number where required, and it shows the simple use of this with actual values.

I haven’t run that code, so I don’t know if it will actually do the click; but, the main problem is I can’t just copy and paste. Ironically, I can enter it manually… it’s just the copy and paste that doesn’t work..

I need this, and variants of this in several places.

I’ve been using %INTEGER% variables for this… for a long time… and am now trying to use the %NAMED% variables…

I don’t declare this variable except I do collect the information in an input box…

24 | RUN ACTION | INPUT BOX | Enter the X Location of the Language Selection %LANGUAGE1% for the TRANSLATE LANGUAGE side:::X Location for TRANSLATE %LANGUAGE1%::TL1X
25 | RUN ACTION | INPUT BOX | Enter the Y Location of the Language Selection %LANGUAGE1% for the TRANSLATE LANGUAGE side:::Y Location for TRANSLATE %LANGUAGE1%::TL1Y

27 | %TL1X% | %TL1Y% | 300 | Left Click

So, I’m not sure what’s going on… as I thought when building the code here, it just treats %TL1X% as a string… and when this would contain a numeric value, it should be valid code… Anyone have any idea what I’m missing here? Thanks for the help! Chip

User: cyberchipz

Date: Aug 25, 2021 19:44:46 GMT

Well, found a couple of workarounds… if it’s only one or two copies I want to make… I CTRL-(left arrow) to comment out the code, then copy and paste it.  Or, If I need extensive, and I am starting to use it more, editing… using the MACRO text editor in the MENU system.. the one with find and replace… and a few other functions. So, if I had to make a guess… the %NAMED% variables and such are in flux… so much so, I’m still on the previous version… of which I’ve also discovered I cannot use a %NAMED% variable if I want to store a variable name in the GOTO MACRO LINE %NAMED% does not work; but, GOTO MACRO LINE %STRING1% or other old style variable still works. I want to move up to the new version. but, I do not know what will and won’t work yet with %NAMED% variables… that’s not clear to me yet… Plus, because of the conversion, I noticed I cannot see the GOTO MACRO LINE huh.png huh.png ? anymore, or the commented labels for the GOTO… But, I’m dying to play with it… so, soon.. I say, soon…

User: Steve

Date: Aug 29, 2021 21:41:27 GMT

KvolAHXIscEA0UEcnLFo.gif Aug 25, 2021 12:55:08 GMT

cyberchipz said: So, I copied and pasted this Left Click that uses variables.

27 | %TL1X% | %TL1Y% | 300 | Left Click

And when I copy it, I get the error message about a malformed click… and the information on how to create it properly. The error message is “Manual Edit - no number where required, and it shows the simple use of this with actual values. I haven’t run that code, so I don’t know if it will actually do the click; but, the main problem is I can’t just copy and paste. Ironically, I can enter it manually… it’s just the copy and paste that doesn’t work.. I need this, and variants of this in several places. Anyone have any idea what I’m missing here? Thanks for the help! Chip Hi cyberchipz , Been awhile, hope you doing well. Thanks for your post on this. The error your seeing there is some old entry validation that has been in MMM since version 1.5. Your not missing anything. Your syntax is fine. The validation is not recognizing your named variables when it should be. I need to update, or get rid of, that validation code behind the line entry. KvolAHXIscEA0UEcnLFo.gif Aug 25, 2021 19:44:46 GMT

cyberchipz said: So, if I had to make a guess… the %NAMED% variables and such are in flux… so much so, I’m still on the previous version… of which I’ve also discovered I cannot use a %NAMED% variable if I want to store a variable name in the GOTO MACRO LINE %NAMED% does not work; but, GOTO MACRO LINE %STRING1% or other old style variable still works. I want to move up to the new version. but, I do not know what will and won’t work yet with %NAMED% variables… that’s not clear to me yet… Plus, because of the conversion, I noticed I cannot see the GOTO MACRO LINE huh.png huh.png ? anymore, or the commented labels for the GOTO… But, I’m dying to play with it… so, soon.. I say, soon… I wouldn’t say named variables are in a ‘flux’. Other than the syntax validation issue above what other things have you seen for named variables for them to be in a ‘flux’? What version are you on that GOTO MACRO LINE %NAMED% does not work? I gave the GOTO MACRO LINE with named variables on a named variable comment line a test with this version and the previous version and its works as expected:

1 | RUN ACTION | DEFINE STRING VARIABLE | fish::carp
2 | RUN ACTION | MESSAGE PROMPT | heading
* | carp
3 | RUN ACTION | MESSAGE PROMPT | start of loop
4 | 1198 | 1460 | 10 | Mouse Movement
5 | 1198 | 1453 | 10 | Mouse Movement
6 | 1198 | 1444 | 70 | Mouse Movement
7 | 1196 | 1440 | 16 | Mouse Movement
8 | 1194 | 1438 | 10 | Mouse Movement
9 | 1194 | 1433 | 10 | Mouse Movement
10 | RUN ACTION | GOTO MACRO LINE | %fish%

Multiple conditions won’t work (Beginner problem)

URL: https://minimousemacro.proboards.com/thread/494/multiple-conditions-work-beginner-problem
Date: Aug 27, 2021 20:17:06 GMT

User: kalambanyonja

Date: Aug 27, 2021 20:17:06 GMT

I’ve already used this app long time ago, but only using it’s basic function (Mouse record) then I’m trying to use the condition list for the first time, and I never got it worked even once.

1 | IF | DETECT IMAGE | image path H:\Test\1.bmp::match quick::move mouse yes | IMAGE FOUND | CONTINUE
2 | RUN | ACTION MOUSE CLICK | Left click at 1051 420 1 times with 0 ms delay
3 | IF | DETECT IMAGE | image path H:\Test\2.bmp::match quick::move mouse yes | IMAGE FOUND | CONTINUE
4 | RUN ACTION | MOUSE CLICK | Left click at 1009 314 1 times with 0 ms delay

It never get the second image, I don’t know if the image wasn’t recognized since the image I used was a screenshot from web, any help? Detect image option: match quick, full screen Also based on other thread about detect image, It also doesn’t contain transparent image. Is it better to use pixel instead of image? Update: Found out that file pathing is messed up by onedrive (instead of normal file pathing, it also add “/onedrive” before the file location), but didn’t know if that really the one causing the problem.

User: philranger

Date: Aug 28, 2021 13:56:34 GMT

Hello,   Continue will happen only when your 1st image is found.  if not found, it will never check for the next one.  Is this what you want?   Here’s an example from one of my macros that check multiple conditions, hoping it cam help!

* | If the copied word doesn't match the list, delete the full line
1 | X | X | 50 | Keypress Ctrl+ | home
2 | X | X | 50 | Keypress Down
* | NextOne
3 | X | X | 50 | Keypress Ctrl+Shift+ | right
4 | RUN ACTION | DEFINE STRING VARIABLE | %CLIPBOARD%::NoMore
5 | X | X | 50 | Keypress Ctrl+ | c
6 | IF | CLIPBOARD | VALUE | TEXT IS | Unit | GOTO MACRO LINE | Unit
7 | IF | CLIPBOARD | VALUE | TEXT IS | Section | GOTO MACRO LINE | Unit
8 | IF | CLIPBOARD | VALUE | TEXT IS | Ex | GOTO MACRO LINE | Exercisex-x
9 | IF | CLIPBOARD | VALUE | TEXT IS | Exercise | GOTO MACRO LINE | Exercisex
10 | IF | CLIPBOARD | VALUE | TEXT IS | Job | GOTO MACRO LINE | JobSheet
11 | IF | CLIPBOARD | VALUE | TEXT IS | Work | GOTO MACRO LINE | JobSheet
12 | IF | CLIPBOARD | VALUE | TEXT IS | Appendix | GOTO MACRO LINE | Resume
13 | IF | CLIPBOARD | VALUE | TEXT IS | NoMore | GOTO MACRO LINE | NoMore
* | Delete this TOC line
14 | X | X | 50 | Keypress Home
15 | X | X | 50 | Keypress Shift+ | DOWN
16 | X | X | 50 | Keypress delete
17 | RUN ACTION | GOTO MACRO LINE | NextONE
* | Unit
18 | X | X | 50 | Keypress Ctrl+Shift+ | right
19 | X | X | 50 | Keypress Shift+ | Right
20 | X | X | 50 | Keypress Del
21 | RUN ACTION | GOTO MACRO LINE | Resume
* | Exercisex
22 | X | X | 50 | Keypress Ctrl+Shift+ | right
23 | X | X | 50 | Keypress Shift+ | Right
24 | X | X | 50 | Keypress Del
25 | RUN ACTION | GOTO MACRO LINE | Resume
* | Exercisex-x
26 | X | X | 50 | Keypress Ctrl+Shift+ | right
27 | X | X | 50 | Keypress Ctrl+Shift+ | right
28 | X | X | 50 | Keypress Ctrl+Shift+ | right
29 | X | X | 50 | Keypress Ctrl+Shift+ | right
30 | X | X | 50 | Keypress Shift+ | Right
31 | X | X | 50 | Keypress Del
32 | RUN ACTION | GOTO MACRO LINE | Resume
* | JobSheet
33 | X | X | 50 | Keypress Ctrl+Shift+ | right
34 | X | X | 50 | Keypress Ctrl+Shift+ | right
35 | X | X | 50 | Keypress Shift+ | Right
36 | X | X | 50 | Keypress Del
37 | RUN ACTION | GOTO MACRO LINE | Resume
* | Resume
38 | X | X | 50 | Keypress End
39 | X | X | 50 | Keypress Ctrl+Shift+ | left
40 | X | X | 50 | Keypress Shift+ | Left
41 | X | X | 50 | Keypress Del
42 | X | X | 50 | Keypress down
43 | X | X | 50 | Keypress home
44 | RUN ACTION | GOTO MACRO LINE | NextOne
* | NoMore
45 | X | X | 100 | Keypress Ctrl+ | h
46 | X | X | 100 | Keypress \t
47 | X | X | 100 | Keypress tab
48 | X | X | 100 | Keypress space
49 | X | X | 100 | Keypress Alt+ | x
50 | X | X | 100 | Keypress Alt+ | a
51 | X | X | 100 | Keypress escape
52 | X | X | 100 | Keypress Ctrl+ | end
53 | X | X | 100 | Keypress backspace

User: kalambanyonja

Date: Aug 28, 2021 14:13:11 GMT

Thanks for the reply, MMM was able detect the first image and execute action, but the second image is not recognisable whatsoever. I tried to use other file type, using simpler image and but it still stuck after the first image was found

User: Steve

Date: Aug 29, 2021 21:16:08 GMT

Hi kalambanyonja What is the difference between 1.bmp and 2.bmp? If MMM can find the first image when its presented on the screen is there a reason why you think the second image is not found on the screen? Have a look at this post minimousemacro.proboards.com/thread/468/detect-image-issues . It has a list of reasons why an image may not be detected:

  1. The image isn’t found on the screen
  2. The image has transparency
  3. The image file is write protected and can’t be loaded (however MMM spews out some errors to the MMM event log when this happens)
  4. The image is not a bitmap
  5. The image has been presented to the screen by an image viewer that changes the bitmap pixel layout slightly Do any of these sound like it could be the reason?

Need help to start Chrome in Kiosk Mode in Table Mode

URL: https://minimousemacro.proboards.com/thread/487/help-start-chrome-kiosk-table
Date: Aug 22, 2021 15:41:37 GMT

User: carrausse

Date: Aug 22, 2021 15:41:37 GMT

Hi, I have been trying to crack a tough nut for a few days: I need to start Chrome in Kiosk mode in Table Mode

  1. I Know how to create my shortcut to start in Kiosk mode
  2. I know how to start Windows in Tablet mode However, once Windows start in Tablet Mode it woud indeed start the shortcut to Chrome placed in the startup folder… but it would start minimized in the task bar! And it would display the Menu Screen (icons)… That’s where I heard of MMM in this post :

<www.tenforums.com/software-apps/22466-startup-program-starts-minimized-when-tablet-mode.html> There is a guy called Tamarack who said he managed to to it using MMM. So I tried also and I managed to create my own macro, but I am struggling to get this Macro running. Here is how my macro looks like :

15 | 486 | 1055 | 10359 | Left Click Down
16 | 486 | 1055 | 107 | Left Click Release

I tried to use Run on startup but later I realise I can use file association and run my macro from the startup folder. So I turn off run on startup but I dont understand why it still run on startup : After reboot MMM is started even though I turned off run on startup and there is mo macro file in the startup folder. ANy idea if I should use run on startup and macro queue or just put a macro file in the startup folder? The help section is really not clear about this. If anyone has already succesfuuly dond a similar setup on Tablet Mode, let me know, that would be really helpful… Thanks Alex

User: Steve

Date: Aug 26, 2021 6:53:31 GMT

Does your macro work and do what you need it to do when running it directly from MMM? If it does then all we need to focus on is the automating this macro to run at startup.
We can do this a few ways, as you mentioned from the macro queue and setting to run the minimousemacro.exe at startup from within the MMM settings is one way, but an easier way is to throw it into a script and drop it into your startup folder. If your comfortable with batch scripting then this is the easiest approach. Drop the call into a batch file and put the script into your startup folder. MMM can accept these command line args: 5491027.png?483.8009049773756 Enabling file association is another way. Here you just need to enable file association within MMM, depending on the version of MMM you are using you might need to run mmm as admin to do this (the latest version uses UAC to prompt for permission), and drop the saved .mmmacro file into your startup folder.


Adding An Extra Tab Keypress With Each Full Macro Loop

URL: https://minimousemacro.proboards.com/thread/486/adding-extra-keypress-full-macro
Date: Aug 22, 2021 7:57:45 GMT

User: grigori

Date: Aug 22, 2021 7:57:45 GMT

Hi All, I was wondering if there was a way to do the following: Record Macro and play it: 1st Run Move Mouse Click and Drag Mouse to Select Text CTRL+C to Copy Move Mouse Click on Table Press TAB to go to Next Link Press Enter to Load It (Iframe window) 2nd Run Move Mouse Click and Drag Mouse to Select Text CTRL+C to Copy Move Mouse Click on Table Press TAB 2 Times to go to Next Link Press Enter to Load It (Iframe window) 3rd Run Move Mouse Click and Drag Mouse to Select Text CTRL+C to Copy Move Mouse Click on Table Press TAB 3 Times to go to Next Link Press Enter to Load It (Iframe window) So with each loop of the full macro it adds one Tab Press to move down the list (The Reason for this is when focus leaves and re-enters the table with the links, the very_first link gets selected again). Thank you in advanced for your help. Regards

User: philranger

Date: Aug 24, 2021 20:13:40 GMT

Hello You need to declare a variable to control a loop and do conditional jumps. This will become quite slow if there are many cells in your table. Are you sure you need to start at the beginning of the table every time?

User: zeak

Date: Aug 24, 2021 23:03:15 GMT

Hi Grigori, Here is the code I would use to do what you have asked but yes I agree with Phil, it sounds like there might be a better way of doing this.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::1
* | LOOP
2 | X | X | 1000 | Mouse Movement
3 | X | X | 1000 | Left Click Down
4 | X | X | 1000 | Left Click Release
5 | X | X | 1000 | Mouse Movement
6 | X | X | 1000 | Left Click
3 | FOR | I | = | %INTEGER% TO %INTEGER1% | NEXT
7 | X | X | 1000 | Keypress tab
5 | FOR | NEXT
8 | X | X | 1000 | Keypress enter
7 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::+1
8 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 3 | STOP
10 | RUN ACTION | GOTO MACRO LINE | LOOP

You will need to change the X | X on the mouse movement and click lines to the X and Y of where you want your mouse, All “1000” on code are the time values you can change and I put in a loop stop function “3” that you can change to how many times you want this to loop. I did try the end of line loop function over the FOR but it couldn’t use %INTEGER% as the loop count. VfSUDh4.gif

User: zeak

Date: Aug 24, 2021 23:31:31 GMT

ovqiSZMQkcHXJsgduMbm.jpg Aug 24, 2021 23:03:15 GMT

zeak said: I did try the end of line loop function over the FOR but it couldn’t use %INTEGER% as the loop count. Sorry looks like I did it wrong first time I tried, you can use end of line loop with %INTEGER%.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1
* | LOOP
2 | X | X | 1000 | Mouse Movement
3 | X | X | 1000 | Left Click Down
4 | X | X | 1000 | Left Click Release
5 | X | X | 1000 | Mouse Movement
6 | X | X | 1000 | Left Click
7 | X | X | 1000 | Keypress tab | loop %INTEGER%::100
8 | X | X | 1000 | Keypress enter
9 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
10 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN | 3 | STOP
11 | RUN ACTION | GOTO MACRO LINE | LOOP

Thinking further on a better way to do this, could you windows tab or windows select to the table and just use a down arrow key to move to next line? YSidQlx.gif


Unable to get a IF with a boolean test to work

URL: https://minimousemacro.proboards.com/thread/484/unable-get-boolean-test-work
Date: Aug 20, 2021 21:11:54 GMT

User: libertytoad

Date: Aug 20, 2021 21:11:54 GMT

Okay, this has been driving me crazy.  When I hit the “Yes” button the macro always returns FALSE. Thanks in advance–I must be missing something obvious. P.S. I’m using the latest version of MMM Pro

1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %TESTBOOL%::%TRUE%
2 | RUN ACTION | INPUT BOX | test::test::PROMPT_YES_NO::%TESTBOOL%
3 | IF | BOOLEAN VARIABLE | %TESTBOOL% | IS TRUE | THEN
4 | RUN ACTION | MESSAGE PROMPT | TRUE
5 | IF | ELSE
6 | RUN ACTION | MESSAGE PROMPT | FALSE
7 | IF | END IF

User: Steve

Date: Aug 20, 2021 22:28:38 GMT

Hi libertytoad

Your syntax is slightly off. This:

1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %TESTBOOL%::%TRUE%
2 | RUN ACTION | INPUT BOX | test::test::PROMPT_YES_NO::%TESTBOOL%
3 | IF | BOOLEAN VARIABLE | %TESTBOOL% | IS TRUE | THEN
4 | RUN ACTION | MESSAGE PROMPT | TRUE
5 | IF | ELSE
6 | RUN ACTION | MESSAGE PROMPT | FALSE
7 | IF | END IF 

Should be this:

1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %TESTBOOL%::TRUE
2 | RUN ACTION | INPUT BOX | test::test::PROMPT_YES_NO::TESTBOOL
3 | IF | BOOLEAN VARIABLE | %TESTBOOL% | IS TRUE | THEN
4 | RUN ACTION | MESSAGE PROMPT | TRUE
5 | IF | ELSE
6 | RUN ACTION | MESSAGE PROMPT | FALSE
7 | IF | END IF

This is what I fixed:

1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %TESTBOOL%::

TRUE

2 | RUN ACTION | INPUT BOX | test::test::PROMPT_YES_NO::

TESTBOOL When creating conditions use the ‘Add Condition’ tool. minimousemacro-add-Conditiontime.png

User: libertytoad

Date: Aug 22, 2021 14:53:54 GMT

Thank you–I’ll change it. In the process of trying to get it to work I was looking at the log and changed some of the vars based on a message saying that TESTBOOL was autocorrected to  %TESTBOOL%.   Thanks again for pointing out where I had gone wrong.


Problem with Run Program

URL: https://minimousemacro.proboards.com/thread/485/problem-run-program
Date: Aug 21, 2021 20:16:45 GMT

User: freddy

Date: Aug 21, 2021 20:16:45 GMT

I am trying to use the Run Program command line? or condition to open my Express Vpn app and connect to a server location. I can make a mouse macro that clicks on the express vpn app and then selects the server location but I think using the Run Program condition to do this instead would be better. If I use the code below that opens the express vpn app only.

1 | RUN ACTION | RUN PROGRAM | C:\Program Files (x86)\ExpressVPN\expressvpn-ui\ExpressVPN.exe

I also tried to use the arguments portion below to make the vpn open the Ukraine server location but that did not work either.

1 | RUN ACTION | RUN PROGRAM | C:\Program Files (x86)\ExpressVPN\expressvpn-ui\ExpressVPN.exe::"ukraine" /e

What am I doing wrong?


Error trying to get to work

URL: https://minimousemacro.proboards.com/thread/481/error-trying-get-space-work
Date: Aug 17, 2021 14:14:00 GMT

User: libertytoad

Date: Aug 17, 2021 14:14:00 GMT

I’ve been trying to maximize a window after opening it using the windows <Alt><Space> command and “x” to maximize it.   I tried <win><up arrow> but it acts more like a toggle between a maximized window and a half screen window. I am getting the following message on my line: 3 | 646 | 456 | 2000 | Keypress Alt+ | space - Not a standard action [not an error]: Keyword “ “ is not valid. Any ideas?  Thanks in advance.

User: libertytoad

Date: Aug 17, 2021 19:48:14 GMT

I wonder if I can just create an AHK macro that issues a WinMaximize to the window, convert it to an exe and maybe call it from MMMPro.  This would also let me specify a partial window name (in AHK) and perhaps grab the full window name and somehow let me then specify the exact window name in MMM since MMM does not support wildcards in window titles.   Edit:  I’m pretty sure I can get this to work by sending the process name to AHK, having AHK do it’s thing (open the process’s window and maximizing it, and then grabbing the full window title via AHK), and then returning the full window name in either the clipboard or a file.  A file might be better so that it doesn’t interfere with the clipboard. I’ll try to mess around with this over the weekend.

User: philranger

Date: Aug 17, 2021 23:05:23 GMT

Hello. Looks like you may have 2 spaces instead of one. What is AHK?

User: zeak

Date: Aug 17, 2021 23:46:54 GMT

USoWV0dWXmFkYDAjTGiw.jpg Aug 17, 2021 23:05:23 GMT

philranger said: What is AHK?

AutoHotKey     its a program for running macroing much like MMM but I find it most useful for remapping key bindings, I use it for gaming.

User: libertytoad

Date: Aug 18, 2021 14:22:34 GMT

AutoHotKey (AHK) is very handy and powerful.  MMM is better for building quick macros, while AHK is a lot more powerful.  AHK is pretty much a simple language on it’s own.


Error Log ‘Index was outside the bounds of the array’

URL: https://minimousemacro.proboards.com/thread/480/error-index-outside-bounds-array
Date: Aug 17, 2021 1:49:26 GMT

User: Kyle

Date: Aug 17, 2021 1:49:26 GMT

Hiya Guys, I wasnt able to find anything about this in other posts, but im having issues with ‘an unexpected error has occured Index was outside the bounds of the array.’ and I’m not entirely sure what the issue is 08/17/2021 02:26:21.32 AM Playback error: 1 | IF | DETECT IMAGE | image path C:\Users\tustaink\Desktop\Macro Root\Assets\Ticket Field Titles PNG\SubCatagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | SUCCESS::Youre not a failure::0::Critical

  • an unexpected error has occured Index was outside the bounds of the array. Things ive already tried
  • a shorter save location for the image
  • I have recreated the bmp with the pixel range tool
  • The ‘image’ I’m searching for is a word on a webpage
  • i have tested this separately with an actual image (spotify icon)
  • I have a triple display setup so I’m not sure if that’s affecting it -ie X position exceeds maximum expected
  • I have tried using the within range functionality
  • The search has been successful on 2 runs using the below, but it is also coming up with the same error
  • Ive googled it (generically) and it mentions invalid formatting, or something being missing but this is using the ‘Add conditon’ tool
1 | IF | DETECT IMAGE | image path C:\Users\tustaink\Desktop\Macro Root\Assets\Ticket Field Titles PNG\SubCatagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | SUCCESS::Youre not a failure::0::Critical

The below is what im trying to get to work for a couple of hours now but i keep getting ‘Index was outside the bounds of the array’, any ideas?

1 | RUN ACTION | MOUSE TO IMAGE | image path C:\Users\tustaink\Desktop\Macro Root\Assets\Ticket Field Titles PNG\SubCatagory.bmp::at 2640 600 90 460::match quick::move mouse yes::offset +250 +0
2 | RUN ACTION | MESSAGE PROMPT | %mouse_x% %mouse_y%::Image find test::0::OK
3 | RUN ACTION | MOUSE CLICK | Left Click at %mouse_x% %mouse_y% 1 times with 10 ms delay

User: Also Kyle

Date: Aug 17, 2021 2:06:50 GMT

UPDATE:  - Testing this on my furthest left monitor (closer to X = 0) works fine  - My monitors are 1080p my maximum X is 5760  - This makes it harder to understand why the ‘Select range’ isn’t working if ive specified the area of the image  - Does MMM work on 2/4k displays? if so my confusion level has shot up another notch  rofl.png

User: alsokyle

Date: Aug 17, 2021 2:19:54 GMT

decided i should make an account so i can follow this - Hi smiley.png

User: Steve

Date: Aug 17, 2021 5:06:19 GMT

Hi alsokyle I’ve got two monitors going only one is 4K at 4K though and I copied your line, changed the path to a local image i have, and ran your line. I got the message prompt for SUCCESS. Are you running the latest version 8.3.2.1?
The only thing I can think of is maybe your running an older version that doesn’t have some of the params but I’d expect a different error.

User: alsokyle

Date: Aug 17, 2021 5:52:15 GMT

I’ll be running some tests later today on a different machine with a  similar monitor setup  & Ill post results on this thread Yeah i should have the latest version as i only brought it from you yesterday  rofl.png

User: alsokyle

Date: Aug 17, 2021 6:25:28 GMT

Okay, on a different machine with a similar monitor configuration I’ve encountered the same issue The detect image function only works on the primary monitor If on any secondary monitor Ill get the dreaded “an unexpected error has occured Index was outside the bounds of the array.” Happens both with and without a specified range on the secondary monitor Placing the image in either non primary monitor:

08/17/2021 07:10:33.44 AM Starting macro playback
 08/17/2021 07:10:33.45 AM Macro condition: 2 | IF | DETECT IMAGE |
image path C:\Users\Kyle XXXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 07:10:33.61 AM Macro Condition - Detect Image : Failed to find image. Time: 154 ms
 08/17/2021 07:10:33.62 AM Macro condition - Condition FALSE
 08/17/2021 07:10:33.64 AM Playback error: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical - an unexpected error has occured Index was outside the bounds of the array.

Placing the image in either non primary monitor with specified range (assuming this is the same as pixel range picking the top left corner as the origin point, i dont believe this is specified on the conditions page)

08/17/2021 07:22:00.32 AM Starting macro playback
 08/17/2021 07:22:00.34 AM Macro condition: 15 | IF | DETECT IMAGE |
image path C:\Users\Kyle XXXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::at 1920 0 1920 1080::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT
 08/17/2021 07:22:02.77 AM Macro Condition - Detect Image : Failed to find image. Time: 2432 ms
 08/17/2021 07:22:02.78 AM Macro condition - Condition FALSE
 08/17/2021 07:22:02.79 AM Playback error: 15 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::at 1920 0 1920 1080::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT - an unexpected error has occured Index was outside the bounds of the array.
 08/17/2021 07:22:02.81 AM Macro playback finished
Placing the image within the primary monitor:
08/17/2021 07:14:11.27 AM Starting macro playback
 08/17/2021 07:14:11.28 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 07:14:11.83 AM Macro Condition - Detect Image : Found image at 341/494. Time: 547 ms
 08/17/2021 07:14:11.84 AM Macro condition - Condition TRUE
 08/17/2021 07:14:11.86 AM Macro action - Running ACTION: MESSAGE PROMPT - Message(It works!::Success::0::Critical)
 08/17/2021 07:14:14.24 AM Macro playback finished

User: Steve

Date: Aug 17, 2021 6:57:12 GMT

Great write up thanks. Really comprehensive. This helps. I’ve tested this and I can’t replicate the error.
My base resolution is 3840 x 2160 for my primary and 1920 x 1080 for my secondary. I can find an image on both screens replicating your syntax using the same test you have.
The only difference may be the native res. Can you run a test dropping your res?

User: alsokyle

Date: Aug 17, 2021 8:29:10 GMT

Alright so ive ran SOME more tests, please see the results below. All tests have been completed with a secondary monitor unless specified otherwise, utilizing the ‘Full Screen’ search option.

Also note, the monitors are all identical.

Acer ED273, Using Nvidea to configure the three displays to work as one (not something i can use with my planned usecase):

1 x (5760x1080) - FAILED

08/17/2021 09:00:01.09 AM Starting macro playback
 08/17/2021 09:00:01.10 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 09:00:06.74 AM Macro Condition - Detect Image : Failed to find image. Time: 5628 ms
 08/17/2021 09:00:06.75 AM Macro condition - Condition FALSE
 08/17/2021 09:00:06.77 AM Playback error:  2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical - an unexpected error has occured Index was outside the bounds of the array.
 08/17/2021 09:00:06.79 AM Macro playback finished

Lowering the native resolution to 1 monitor: 2 x (1920x1080) 1 x (600x800) - New image to search captured due to the scaling change

600x800  - FAILED

08/17/2021 09:06:51.00 AM Starting macro playback
 08/17/2021 09:06:51.01 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\LowResTest.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 09:06:54.94 AM Macro Condition - Detect Image : Failed to find image. Time: 3924 ms
 08/17/2021 09:06:54.95 AM Macro condition - Condition FALSE
 08/17/2021 09:06:54.97 AM Playback error:  2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\LowResTest.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical - an unexpected error has occured Index was outside the bounds of the array.
 08/17/2021 09:06:54.98 AM Macro playback finished

1920x1080 (Primary Monitor) - Failed - Based on the other results, im under the impression windows changed my primary monitor in this case too as i didnt check the other display

08/17/2021 09:07:32.97 AM Starting macro playback
 08/17/2021 09:07:32.99 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 09:07:34.71 AM Macro Condition - Detect Image : Failed to find image. Time: 1720 ms
 08/17/2021 09:07:34.72 AM Macro condition - Condition FALSE
 08/17/2021 09:07:34.74 AM Playback error:  2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical - an unexpected error has occured Index was outside the bounds of the array.
 08/17/2021 09:07:34.75 AM Macro playback finished

Lowering the native resolution to 2 monitors: 1 x (1920x1080) 2 x (600x800) monitors are low res in this case 600x800 - one of the secondary displays worked in this case, one didn’t  - Success (BUT windows changed this to my primary display in the process)

08/17/2021 09:09:20.30 AM Starting macro playback
 08/17/2021 09:09:20.31 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\LowResTest.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 09:09:20.50 AM Macro Condition - Detect Image : Found image at 148/425. Time: 197 ms
 08/17/2021 09:09:20.52 AM Macro condition - Condition TRUE
 08/17/2021 09:09:20.53 AM Macro action - Running ACTION: MESSAGE PROMPT - Message(It works!::Success::0::Critical)
 08/17/2021 09:09:26.33 AM Macro playback finished

1920x1080 (previously primary Monitor) - FAILED

08/17/2021 09:09:30.74 AM Starting macro playback
 08/17/2021 09:09:30.75 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\LowResTest.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 09:09:31.37 AM Macro Condition - Detect Image : Failed to find image. Time: 628 ms
 08/17/2021 09:09:31.37 AM Macro condition - Condition FALSE
 08/17/2021 09:09:31.39 AM Playback error:  2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\LowResTest.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical - an unexpected error has occured Index was outside the bounds of the array.
 08/17/2021 09:09:31.40 AM Macro playback finished

Removing a one of the three displays: 2 x (1920x1080) Primary - SUCCESS

  • This ones curious, i may have not had the webpage in the correct scale for this BUT it doesnt provide an index error, just unable to find the image
08/17/2021 09:21:43.11 AM Starting macro playback
 08/17/2021 09:21:43.12 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 09:21:44.75 AM Macro Condition - Detect Image : Failed to find image. Time: 1626 ms
 08/17/2021 09:21:44.77 AM Macro condition - Condition FALSE
 08/17/2021 09:21:44.78 AM Macro playback finished

Secondary - FAILED

08/17/2021 09:20:51.28 AM Starting macro playback
 08/17/2021 09:20:51.30 AM Macro condition: 2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical
 08/17/2021 09:20:52.86 AM Macro Condition - Detect Image : Failed to find image. Time: 1585 ms
 08/17/2021 09:20:52.88 AM Macro condition - Condition FALSE
 08/17/2021 09:20:52.89 AM Playback error:  2 | IF | DETECT IMAGE | image path C:\Users\Kyle XXXXX\Desktop\Macro Root\Macro Root\Assets\Ticket Field Titles PNG\Catagory.bmp::match quick::move mouse yes::offset +250 +0 | IMAGE FOUND | MESSAGE PROMPT | It works!::Success::0::Critical - an unexpected error has occured Index was outside the bounds of the array.
 08/17/2021 09:20:52.90 AM Macro playback finished

Accuracy of time measurements

URL: https://minimousemacro.proboards.com/thread/479/accuracy-time-measurements
Date: Aug 15, 2021 5:02:29 GMT

User: mksg

Date: Aug 15, 2021 5:02:29 GMT

Hi, I’m trying to accurately measure time interval between events I observe. I do this by creating a Message Box and then pressing the Enter key or Mouse Click on Ok.

However, many times it seems the reported times on the clipboard are very different than I expect, often between 600 and 1000 milliseconds different. The flash of the screen seems correct when hit Enter (i.e. it looks the the Message Box is being clicked at the right time and the program responds to my enters in a prompt matter).

Any idea what I’m missing?

Thanks! Mark S.

The pasted code below is for message box that the user would click six times when they observe the event 6 times. I tried the TIME_feature (pasted below) and the TIME_MACRO feature (not pasted). Both seemed to give inconsistent results.

1 | RUN ACTION | MESSAGE PROMPT | CLICK START ::SPEED::0
2 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL1%::%TIME_S%
3 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL2%::%TIME_MS%
4 | RUN ACTION | MESSAGE PROMPT | CLICK two::SPEED::0
5 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL3%::%TIME_S%
6 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL4%::%TIME_MS%
7 | RUN ACTION | MESSAGE PROMPT | CLICK three:: CLICK::0
8 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL5%::%TIME_S%
9 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL6%::%TIME_MS%
10 | RUN ACTION | MESSAGE PROMPT | CLICK four:: CLICK::0
11 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL7%::%TIME_S%
12 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL8%::%TIME_MS%
13 | RUN ACTION | MESSAGE PROMPT | CLICK five::CLICK::0
14 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL9%::%TIME_S%
15 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL10%::%TIME_MS%
16 | RUN ACTION | MESSAGE PROMPT | CLICK six::CLICK::0
17 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL15%::%TIME_S%
18 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL16%::%TIME_MS%
19 | RUN ACTION | COPY TO CLIPBOARD | %DECIMAL1%.%DECIMAL2%a%DECIMAL3%.%DECIMAL4%b%DECIMAL5%.%DECIMAL6%c%DECIMAL7%.%DECIMAL8%d%DECIMAL9%.%DECIMAL10%e%DECIMAL15%.%DECIMAL16%

User: Steve

Date: Aug 17, 2021 5:17:52 GMT

Hi mksg, A few factors contribute to timing accuracy when using MMM and it can depend entirely on the current state of your running OS environment. MMM takes and makes a lot of calls from and to the local environment depending on the condition your running in MMM. Some of the conditions are pulled directly from your Windows host outside of MMM entirely. If your calculating to the ms you may seem variation based on how your OS is performing at the time.

With the macro you’ve used in your example i’d guess your variation is based on you physically left clicking and releasing the mouse cursor over these message box’s. Its probably not a great metric to determine run time accuracy. I’d cut that actual click out. I’d bet money that your not going to be able to click the same speed to the 100’s ms each time. It will make getting some stable metrics difficult.

What exactly are you trying to achieve? Do you need an accurate measurement for a specific reason in your macro?


Macro not recording the enter/return key action correctly

URL: https://minimousemacro.proboards.com/thread/478/macro-recording-return-action-correctly
Date: Aug 14, 2021 19:54:52 GMT

User: Harry

Date: Aug 14, 2021 19:54:52 GMT

The macro not recording the enter/return key action correctly. It is typing the word enter instead of performing the action enter or return in any app.

User: Steve

Date: Aug 14, 2021 20:58:42 GMT

Thanks Harry for posting this through. I’ll drop a quick patch shortly.

User: Steve

Date: Aug 14, 2021 21:24:01 GMT

I’ve just pushed the patch through. Version 8.3.2.1. Thanks again.


Trouble changing the time!

URL: https://minimousemacro.proboards.com/thread/475/trouble-changing-time
Date: Aug 13, 2021 19:46:05 GMT

User: freddy

Date: Aug 13, 2021 19:46:05 GMT

I am having trouble changing the time when I use the add condition tool. So when I open the add condition tool I click on the circle next to IF. And then in the OBJECT box I select TIME.

To the right of TIME there is a box that has the time 12:00:00 AM and there is a small up and down arrow next to that. When I try to change the time by clicking on the 12 and then pressing the numbers 03 or just 3 on my keyboard and then click on the 00 to the right my 3 turns back into a 12.

I have tried using the little arrows as well and nothing happens. I have had this problem in the past and less than an hour ago I was able to change the time without any issues.

Why does this happen? Has anyone else had this problem?

I bet the first suggestion that I get is “Did you check for updates?” My answer is no because I hate checking for updates.

Is this a case of user error? Lack of checking for updates?

Software bug? Please help.

User: freddy

Date: Aug 13, 2021 20:31:55 GMT

I figured out a fix for my own problem. In the Add Condition tool at the bottom there is the Output box and in there you can change the time. But I think this is still an issue cause the software is not responding the way that it should.

User: Steve

Date: Aug 14, 2021 3:59:09 GMT

defaultavatar.png Aug 13, 2021 19:46:05 GMT

freddy said: I am having trouble changing the time when I use the add condition tool. Why does this happen? Has anyone else had this problem? I bet the first suggestion that I get is “Did you check for updates?” My answer is no because I hate checking for updates. Is this a case of user error? Lack of checking for updates? Software bug? Please help. Hi freddy , Your gonna love this….so I had a look at the code behind this TIME function and the problem turned out to be that I had left a MAX date value of DEC 31st 2020.  Don’t ask me why…maybe it was the default TIME max date range when I wrote this function back in 2015.  Anyway, I’ve fixed it and set it forward to DEC 31st 2040.  If we’re still using MMM in 2040 then I’ll set it forward again lol.  Surly we would have all been replaced by Skynet by then…. I’ve added this as BZ25 ( <www.turnssoft.com/bugtrack.html#bugs> ) and have a fix ready for the next update.  The next update is probs a day or two away.  A few bugfixes in this one. Thanks again for taking the time to point this one out.  Oh and yeah always check for updates  wink.png    If you’ve disabled update checking from the settings at ‘OPTIONS - Updates’ then I recommend you enable it. 


Issues with “Playback error: Line 2 - Enumeration error….”

URL: https://minimousemacro.proboards.com/thread/446/issues-playback-error-line-enumeration
Date: Jul 6, 2021 14:40:29 GMT

User: debo

Date: Jul 6, 2021 14:40:29 GMT

Hi I’m super new to this and I really appologise if this has been sorted out already or if it’s a super basic question, but with that said I’m having issues with random errors / fails : “Playback error: Line 2 - Enumeration error: Macro edit detected. A macro cannot be edited during playback.” Now I haven’t been able to figure out what happens or when and it’s a tad bit random, but even my most basic macros have failed on occasion TXryZwuOEYTVYtBtngz0.png And I have hyet to figure out what it thinks is / has been edited. Tried setting the pc to never sleep, and no other apps or anything running that might cause issues or wright to those folders. Tried mocing the “install” folder and the macro folder with no effect. Trying to figure out what I’m doing wrong or what I’m missing / forgetting. Can anyone help me out a tad? I’ve searched the forum and not really found anything that helps. Cheers and thanks in advance! D

User: philranger

Date: Jul 7, 2021 2:07:10 GMT

Hi It looks like you are trying to edit the macro while it is running

User: debo

Date: Jul 8, 2021 13:05:31 GMT

Yeah, I inferred that from the error message, but the odd thing is I’m not touching it, no one is and as far as I can see the computer isn’t doing anything special . I just load the macro and press play. As mentioned it also seems a tad random.  I’ve tried different paramteres and no mater what I do it fails (randomly, might run fine the first 3-4 times and then suddenly fails with that error)

User: philranger

Date: Jul 8, 2021 15:43:57 GMT

Would there be a way to be sure that you are in the correct window when it clicks? Maybe using something like

1 | RUN ACTION | SELECT WINDOW BY NAME | New Tab - Mozilla Firefox

Ref: <www.turnssoft.com/conditions.html#selectwindowbyname>

User: debo

Date: Jul 9, 2021 0:25:38 GMT

Hi I’ll give that shot, not sure that’s the issue, but doesn’t hurt to try at this point.

User: Steve

Date: Jul 9, 2021 6:13:38 GMT

Hi debo

This error occurs when a running macro detects that the macro list has been edited during playback. “Playback error: Line 2

  • Enumeration error: Macro edit detected. A macro cannot be edited during playback.” The “Line 2” in your enumeration error tells us that this edit happened between line 1 and line 2 executing.  This error makes sense considering your macro is waiting 6 hours  ‘WAIT HOURS | 6’.   Are you sure you didn’t edit the macro sometime in the 6 hours after line 1 executed? minimousemacro-wait6hours-lineenum.png

User: debo

Date: Jul 11, 2021 23:07:21 GMT

Hi 100% sure I didn’t edit it or touht as it’s suppsoed to run at night I trigger it at 11 PM and it’s supposed to wait for 6 hours before triggering a single action ( in this particualr case it’s only a single action, it’s actually supposed to do a whole set of actions and triggers, but I made it simple for troubleshooting sake). I’ve also set it to lower wait times and seen it fail while I’m not doing anything to it. It seems there is a chance for it to fail when the wait time is longer than hour, with that said it’s very random. What my screenshot doesn’t show is that it actually completes the wait and than fails, regardless of the length of wait condition.. Note as mentioned this is random, I’ve had it run fine with conditions running from 1 hour to 12 hours, often multiple times, while at random it would fail with no rhyme or reason. Ps your image link seems broken

User: Steve

Date: Jul 12, 2021 9:56:56 GMT

Ok that is odd. I can’t think of another way to get an error like this without clicking into the macro whilst it’s running. Maybe its something the macro is doing. Are you doing anything advanced or complicated with your macro? For example, are you calling multiple macro’s at the same time or running any of MMM’s remote control actions? Are you running MMM from within a VM, VNC, or remote desktop session? Is the MMM event log running during these long running macro’s? The event log is great for troubleshooting macro’s but not great for heavy condition based macro’s running for a long time. Your saying it occurs randomly too. That again is odd. Mini Mouse Macro takes a lot of queues from the local running environment. Would you say your local windows running environment is fairly consistent? Can you think of anything from the environment running, say any other software or bespoke windows tools, that could be getting in the way of MMM?

User: debo

Date: Jul 30, 2021 23:24:12 GMT

Hi Sorry for going quiet for so long, been busy with work these last few weeks. I’d also like to thank both of you for taking the time to reply to my post and help me troubleshoot the issue. @ Steve There doesn’t seem to be a clear pattern between the complexity of the macro and failure rate. At times a really complex and convoluted macro might work just fine a few times and then fail, while a really simple one (i.e. like the one I screenshotted, wait for X time and move mouse to XY and click) I’ve been running it on a server and a vm (note the vm is running on a dedicated hyper -v host but is in many ways almost a clone of the aforementioned server) I’ve also been running the MMM logging tool, but it only says the same thing, “Playback error: Line “x”- Enumeration error: Macro edit detected. A macro cannot be edited during playback” so it’s not super helpful in figuring out what might be interrupting the macro. Additionally I’ve tried running them at different times of day, different scaling (CPU / mem/SSD combos) and even spun up a “cleaner cloned image” same issue. It’s boggling my mind that I can’t figure this out. I have a bare-bones unit that connects to either the server or the host –> vm (RDP or via viewer), but I’m planning on getting a laptop to test this on. My current one died a little while ago, haven’t gotten around to buying a new one. In short, getting rather stuck …. sad.png

User: Steve

Date: Jul 31, 2021 6:00:39 GMT

debo Have you tried running MMM minimized? or with the ‘Auto shrink on play’ option enabled?
With MMM minimized there is no way this error can occur. The error only occurs when the macro list changes during playback by something, or someone, changing the list. This is usually a person unintentionally. If the macro is minimized during playback then we have a 0% chance of this being caused by a person….well unless you’ve got multiple people VNC’ing into your VM. It’s just you that logs in right? Running within a VM shouldn’t cause this type of error but still it’s something to keep in mind. I’d be keen to see if you get this error in and out of a VM.

User: philranger

Date: Jul 31, 2021 12:31:26 GMT

On the first macro you screen captured you click at one place and release at a quite different place. Could that click be in the mmm editor, making it believe you want to edit the macro?

User: debo

Date: Aug 1, 2021 15:24:41 GMT

@steve I think I’ve tried it minimized, but I’ll give it another shot or two. ( with the setting you mentioned) And yes, only little old me logging on to the vm and the server. philranger

I’ve considered that aswell , but when I re-play the macro(s) they don’t get anywhere near the mmm window

User: debo

Date: Aug 10, 2021 23:53:37 GMT

Hi Just wanted to give you guys a little update. None of the tricks worked and I’ve also taken the time to test the mmm + macro combo on a few other servers and laptops with far more consistency / success. Which leads me to believe there is something specific with that Image one image / server. The sad part is this image is in essence the golden image from which a part of our server park is based off, so leaves us a tad stuck. With that said the app has worked much more consistently the last 5 days, which I’m attributing to the new mmm update. What it did to (for the most part) sort out the issue is beyond me. And it would be nice to know what was causing mmm to sense a macro change/ interference, just in case the issue keeps cropping up again. It’s been running for just over 5 days and only failed 1 time. The macro is triggered approx. 3 times a day, so failed only 1 out of 15, which obviously is a big improvement. Used to be closer to a 60/40 ( pass / fail) What I’m getting at is , the issue seems “fixed”, tough for the life of me I can’t figure out what was the issue , nor can I find anything in the release notes that could have inadvertently fixed my issue. I’d like to thank both of you for your suggestions and assistance grin.png With some luck this is the end of the story, but please to chime in if you have an idea or two on what might have been the culprit. As of now it is running on our devtest server and will be deployed to the others later on, just a tad nervous it will fail again at the worst possible moment. Cheers D

User: Steve

Date: Aug 11, 2021 8:57:57 GMT

Hi debo

One thing did catch my eye… None of the tricks worked and I’ve also taken the time to test the mmm + macro combo on a few other servers and laptops with far more consistency / success. Which leads me to believe there is something specific with that Image one image / server. The sad part is this image is in essence the golden image from which a part of our server park is based off, so leaves us a tad stuck. It might be something with the .NET framework version on that one image.  If its your golden image then yeah that would mean the problem would be replicated everywhere when MMM runs on that image base.  Do you think it could be the versions of the .NET framework?  Are they different across the images you’ve tested with?  MMM is target at .NET 4.5.2 and built on a latest Windows 10 image.

User: debo

Date: Aug 11, 2021 15:15:53 GMT

A very interesting theory. Just checked the dot.net framework version on the golden image as well as one of the laptops I used to test on and it seems they have more or less the same version Framework 4.8.4.x.x ( slight variation between the laptop and servers, but as good as the same gen) As far as I can tell no update has happend on the servers golden image for the last 30 days ( our logs don’t go further back than that), so not sure if it got updated recently and I might have deplyed an updated version to our servers over the last few weeks. We update the images approx 1-3 times every 2 months ( sec updates mostly) and than deploy the updated golden image as needed. The servers them selfs run on a system center controlled update schedule.


Detect to image issues

URL: https://minimousemacro.proboards.com/thread/468/detect-image-issues
Date: Jul 29, 2021 15:53:39 GMT

User: mrclicker

Date: Jul 29, 2021 15:53:39 GMT

Hi, I am struggling with the “mouse to image” and “detect image” features. I want my macro to wait untill it detects the image in a certain area, then click in the centre of it and continue with the macro. I am testing it by adding the line :

1 | IF | DETECT IMAGE | image path D:\test.bmp::at 442 252 400 401::match quick::move mouse yes | IMAGE FOUND | CONTINUE

The logic I am testing here is “If the image: test.bmp can be matched anywhere between 442,252 and 842,453 then continue..” I took a screen clipping of the image I am looking for with in that range, i pasted it in to paint, and cropped it so there is no margins apart from the small image, and saved it as D:\test.bmp I run the macro, and trigger the screen to show that image and the macro never continues. Can any one help me with the syntax ? Or why this is happening , and more important of all - how do I get this to work ? Thanks smiley.png

ps. when i tab between the X,Y,width,hight of the “detect image condition” dialogue box i am getting an unhandled  exception saying cant convert string to integer but if i hit continue it allows me to complete the entries. i opened a bug report for it . i dont think its related to the fail but am putting it in here for completeness

User: mrclicker

Date: Jul 29, 2021 15:58:14 GMT

this line:

1 | IF | DETECT IMAGE | image path D:\test.bmp::match quick::move mouse yes | IMAGE FOUND | CONTINUE

also fails

User: zeak

Date: Jul 30, 2021 2:54:36 GMT

defaultavatar.png Jul 29, 2021 15:58:14 GMT

mrclicker said: this line:

1 | IF | DETECT IMAGE | image path D:\test.bmp::match quick::move mouse yes | IMAGE FOUND | CONTINUE

also fails Hi MrClicker, just our of curiosity, have to tried the image path in a different drive location? and have to you tried match full? Does your image contain any transparent parts that might change?

User: mrclicker

Date: Jul 30, 2021 11:20:08 GMT

have to tried the image path in a different drive location? tried it now - no change. and have to you tried match full? tried both full screen or section - still fails. Does your image contain any transparent parts that might change? there is nothing PARTIALLY transparent that i can see, no. By way of update i just discovered the #TEST button on the “Detect image - Configure” box. and when i use that, the mouse jumps to the centre of the image no problems. However, when i close and save the macro, and then run it, the macro runs indefinitely and even when i keep triggering that test image. it doesn’t pass that line. Any thoughts on why the test option detects the image but the macro doesn’t seem to ?

User: Steve

Date: Jul 30, 2021 22:35:05 GMT

defaultavatar.png Jul 30, 2021 11:20:08 GMT

mrclicker said: By way of update i just discovered the #TEST button on the “Detect image - Configure” box. and when i use that, the mouse jumps to the centre of the image no problems. However, when i close and save the macro, and then run it, the macro runs indefinitely and even when i keep triggering that test image. it doesn’t pass that line. Any thoughts on why the test option detects the image but the macro doesn’t seem to ? Hi mrclicker If the #TEST finds the image and moves the mouse then it should very well find the image during playback.  This might be a silly question but I have to ask, are you sure the image exist on screen when you play the macro?  I mean, it just should work.  The reason why the image shouldn’t match are the things that zeak covered off on.  1. The image isn’t found on the screen  2. The image has transparency  3. The image file is write protected and can’t be loaded (however MMM spews out some errors to the MMM event log when this happens)  4. The image is not a bitmap   5. The image has been presented to the screen by an image viewer that changes the bitmap pixel layout slightly As I type this I figure number 5 might be the problem.  How are you presenting this image to the screen?  Some image viewers load the image and change the size slightly to match the viewer.  Could this be happening? How does the image from your file look as a pixel variable when loaded into MMM? Try this. Build a DEFINE PIXEL RANGE variable and select to load the var from the image file, click on the beaker (bottom left) in the ‘Define Pixel Range’ dialog box to load the variable in, and then click on the ‘image’ picture (next to the beaker).  minimousemacro-mousetoimage.png   User: mrclicker

Date: Aug 3, 2021 13:46:38 GMT

thanks for the reply.. yeah i am a bit confused myself smiley.png The reason why the image shouldn’t match are the things that zeak covered off on.

  1. The image isn’t found on the screen i think it is , otherwise the test wouldnt have found it.
  2. The image has transparency you mean the image in the screen? or the image i saved and am using as the image to look for? either way, i dont think there is. is there a way to test for this ?
  3. The image file is write protected and can’t be loaded (however MMM spews out some errors to the MMM event log when this happens) i dont think thats the case (and again, the test is working so it must be able to read it then. there are no errors in the log
  4. The image is not a bitmap Definitely saved as bmp
  5. The image has been presented to the screen by an image viewer that changes the bitmap pixel layout slightly As I type this I figure number 5 might be the problem. How are you presenting this image to the screen? Some image viewers load the image and change the size slightly to match the viewer. Could this be happening? How does the image from your file look as a pixel variable when loaded into MMM? Try this. Build a DEFINE PIXEL RANGE variable and select to load the var from the image file, click on the beaker (bottom left) in the ‘Define Pixel Range’ dialog box to load the variable in, and then click on the ‘image’ picture (next to the beaker). i dont understand this option. can you explain that in more details (and make it simpler for a simpleton like myself to understand ?  tongue.png

How does the image from your file look as a pixel variable when loaded into MMM? again.. not folowing this bit, apologies, but can you explain that again?

User: mrclicker

Date: Aug 3, 2021 13:59:42 GMT

ok, perhaps i should have tried a bit harder to follow the instructions smiley.png now i did.. and when i load the image from file during the define pixel range, i get to see the image and the following variables: %PIXEL_RANGE%: 0 %PIXEL_RANGE.XPOS%: 0 %PIXEL_RANGE.YPOS%: 0 %PIXEL_RANGE.WIDTH%: 243 %PIXEL_RANGE.HEIGHT%: 62 %PIXEL_RANGE.TIME%: 14:54:31 %PIXEL_RANGE.DATE%: 03/08/2021 what does that mean ?

User: mrclicker

Date: Aug 3, 2021 16:24:10 GMT

so a bit more info might help. the image i am saving is a 96DPI, 24bit bmp image. its 82pixels by 19. (saved from WIN+SHIFT+S screen clipping that is pasted, cropped and saved via paint) My screen settings: lQRrcXyUejkiGGMyRERh.png the image appears on a few locations on the page, and when i test on full screen it detects one but not another . a few questions..

  1. does the image have to be *.bmp ?
  2. if i save the image as 24bit bmp and my screen’s colour depth is set to 32 does that matter ?
  3. is there a way to tweek how accurate a match the image needs to be ?

User: Steve

Date: Aug 4, 2021 21:33:15 GMT

defaultavatar.png Aug 3, 2021 13:46:38 GMT

mrclicker said:

  1. The image has transparency you mean the image in the screen? or the image i saved and am using as the image to look for? either way, i dont think there is. is there a way to test for this ?
  2. The image has been presented to the screen by an image viewer that changes the bitmap pixel layout slightly As I type this I figure number 5 might be the problem. How are you presenting this image to the screen? Some image viewers load the image and change the size slightly to match the viewer. Could this be happening? How does the image from your file look as a pixel variable when loaded into MMM? Try this. Build a DEFINE PIXEL RANGE variable and select to load the var from the image file, click on the beaker (bottom left) in the ‘Define Pixel Range’ dialog box to load the variable in, and then click on the ‘image’ picture (next to the beaker). i dont understand this option. can you explain that in more details (and make it simpler for a simpleton like myself to understand ?  tongue.png

  3. I’m not sure how to test for this. Transparency is when parts of the image may be ‘see through’. Transparent images often blend into the background. For example, the big “Mini Mouse Macro” logo at the top of the forum page is transparent and blends into the blue background tile at the top. If I were to try and detect this image with MMM I would need to save this image as a bmp image and loose the transparency.
  4. How the image is presented on screen matters.  The image from the file must be the same pixel by pixel as it is presented on screen.  The image within the file will always be loaded as a bitmap pixel array however on screen when it is not always the same.  How are you seeing the image on screen to compare it?  Is it in a web browser?  Is it using an image viewer?  Is it in a game?  Is it on the desktop background?  It matters because we are at the mercy of how the image is rendered by anyone of these.  I know if I use windows image viewer to open a bitmap It may stretch the bitmap pixel layout to match the border of the viewer.  This ‘stretching’ is bad because it changes the pixel mapping.  Stretching the image to match the viewer border means it no longer looks exactly pixel by pixel as it did in the file.   I hope this explains what I mean. defaultavatar.png Aug 3, 2021 13:59:42 GMT

mrclicker said: ok, perhaps i should have tried a bit harder to follow the instructions smiley.png now i did.. and when i load the image from file during the define pixel range, i get to see the image and the following variables: %PIXEL_RANGE%: 0 %PIXEL_RANGE.XPOS%: 0 %PIXEL_RANGE.YPOS%: 0 %PIXEL_RANGE.WIDTH%: 243 %PIXEL_RANGE.HEIGHT%: 62 %PIXEL_RANGE.TIME%: 14:54:31 %PIXEL_RANGE.DATE%: 03/08/2021 what does that mean ? This means that the PIXEL_RANGE variable you defined has content and loaded your pixel range. defaultavatar.png Aug 3, 2021 16:24:10 GMT

mrclicker said: the image i am saving is a 96DPI, 24bit bmp image. its 82pixels by 19. (saved from WIN+SHIFT+S screen clipping that is pasted, cropped and saved via paint) the image appears on a few locations on the page, and when i test on full screen it detects one but not another . a few questions..

  1. does the image have to be *.bmp ?
  2. if i save the image as 24bit bmp and my screen’s colour depth is set to 32 does that matter ?
  3. is there a way to tweek how accurate a match the image needs to be ?
  4. Yes but technically no.  YES because the closer we can get to a bitmap pixel mapping the better.  MMM takes the image and converts it to a bitmap pixel array.  BMP files are most likely to have the greatest chance of success here for a positive true match.   NO because i’ve had success with jpg and some other image formats during my testing.  However I strongly recommend true BMP bitmap files.
  5. No that doesn’t matter.  I replicated your WIN+SHIFT+S - crop in paint - save as 24bit bmp and had success in matching with the macro.  I did notice it prompted for transparency when I saved it in paint.  If the image is transparent we will never get a match.  So at that option I said ‘no’ to transparency. 
  6. Yes.  Two ways.  Firstly select ‘Match Quick’ rather than ‘Match Full’.  Secondly create the saved bmp file you want to detect with MMM.  This way we can ensure that the image file bmp is a a true bitmap file compatible with MMM detect image. Using the PIXEL RANGE dialog draw out the location and save the image as a bmp. minimousemacro-pixelrangedialog.png

User: mrclicker

Date: Aug 5, 2021 12:29:01 GMT

Thank you for the long and detailed response.. i’ll get back to the drawing board(literally) and respond with results shortly

User: mrclicker

Date: Aug 5, 2021 13:04:52 GMT

this is in a website. i use brave, but i tried it on chrome too (both use the same engine i think). i tried using developer tools to isolate the image to find if there is any transparancy but the way this site is coded i cant just right click on a screen element and inspect it. so in short, i can’t figure out if there’s a blend of multiple images to create the button.. i tried saving the bitmap directly from the pixel range dialogue box . exact same results, ie another failure smiley.png what i did was : drawn the pixel range around the image; saved to file; created a new condition detect image; clicked the test; no detection sad.png im at my wits end.. any ideas what else i could try ?

User: mrclicker

Date: Aug 5, 2021 14:06:25 GMT

found a workaround, and when i look for only half the button the detection works every time - so hooray !! i then completed the condition operator and added image detect ACTION of mouse click on %X% and %Y%

2 | IF | DETECT IMAGE | image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse no::save to vars X Y | IMAGE FOUND | MOUSE CLICK | Left click at %X% %Y% 1 times with 0 ms delay

(also tried without the “1 times with 0 ms delay” like its documented here: detect image)

when i do that i get this in the event log: Event Time Text:

 08/05/2021 02:53:45.20 PM Macro re-listed
 08/05/2021 02:53:45.21 PM Starting macro playback
 08/05/2021 02:53:45.23 PM Macro condition: 1 | IF | DETECT IMAGE | image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse no::save to vars X Y | IMAGE FOUND | MOUSE CLICK | Left click at %X% %Y% 1 times with 0 ms delay
 08/05/2021 02:53:45.25 PM Macro condition - Condition FALSE
 08/05/2021 02:53:45.28 PM Playback error:  1 | IF | DETECT IMAGE | image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse no::save to vars X Y | IMAGE FOUND | MOUSE CLICK | Left click at %X% %Y% 1 times with 0 ms delay - Condition action is not valid.  This condition action is not found in the ACTION list of valid condition actions: MOUSE CLICK
 08/05/2021 02:53:45.32 PM Macro playback finished

from my limited understanding it says that that the condition is false so i take it it still isnt detecting the image ? even though the tests are now all good. Events from Test:

 08/05/2021 02:56:46.33 PM Macro condition: X  | RUN ACTION | MOUSE TO IMAGE | image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse yes
 08/05/2021 02:56:46.40 PM Macro condition - Condition TRUE
 08/05/2021 02:56:46.50 PM Macro action - MOUSE TO IMAGE: (image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse yes)
 08/05/2021 02:56:46.58 PM Macro action - Mouse To Image : Found image at 249/685. Time: 58 ms

and finally, if i set the action to move mouse to image the condition is now showing true and the action completes successfully:

 08/05/2021 02:59:48.14 PM Starting macro playback
 08/05/2021 02:59:48.20 PM Macro condition: 2 | IF | DETECT IMAGE |image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse yes | IMAGE FOUND | MOUSE TO IMAGE |image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse yes
 08/05/2021 02:59:48.24 PM Macro Condition - Detect Image : Found image at 249/685. Time: 41 ms
 08/05/2021 02:59:48.28 PM Macro condition - Condition TRUE
 08/05/2021 02:59:48.33 PM Macro action - MOUSE TO IMAGE: (image path D:\Play.bmp::at 50 525 600 400::match quick::move mouse yes)
 08/05/2021 02:59:48.37 PM Macro action - Mouse To Image : Found image at 249/685. Time: 50 ms
 08/05/2021 02:59:48.43 PM Macro playback finished

can you tell me if i have the wrong syntax in my original detect image and click on %X% %Y% ? or is there something else i missed ?

User: Steve

Date: Aug 11, 2021 9:01:31 GMT

Hi mrclicker

Sorry for the delay here on this thread.
Your not crazy, the MOUSE CLICK action with version 8.3.1 at the moment can only be called from an ACTION and not from an IF condition ( <www.turnssoft.com/bugtrack.html#bugs> ). Have a look at this thread minimousemacro.proboards.com/post/1944/thread for a work around with MOUSE CLICK and Detect image. Note - mouse click has been fixed in version 8.3.1.2

User: mrclicker

Date: Aug 11, 2021 15:04:15 GMT

thanks Steve, yeah, i just saw this thread as i logged on. i tried what martin did exactly and it didnt work for me too - so maybe it is a bug ? i’ll try the work around you suggested now many thnks


Trouble with playback errors

URL: https://minimousemacro.proboards.com/thread/471/trouble-playback-errors
Date: Aug 2, 2021 4:49:41 GMT

User: freddy

Date: Aug 2, 2021 4:49:41 GMT

I can not get my macros to work with the task scheduler so I tried creating a macro that would run within the Mini Mouse Macro app. My goal is to have 1.mmmacro run 12:25 am and 2.mmmacro run at 12:27 am every night but as soon as I hit play 1.mmmacro runs, then 2.mmmacro runs, and then I receive these two playback errors:

1 | IF | TIME | 12:25:00 AM | CONTINUE - Condition execution error [Unexpected Internal Error]:Index was outside the bounds of the array.
3 | IF | TIME | 12:27:00 AM | CONTINUE - Condition execution error [Unexpected Internal Error]:Index was outside the bounds of the array.

And this is the macro that I created to run macros 1 and 2:

1 | IF | TIME | 12:25:00 AM | CONTINUE
2 | RUN ACTION | RUN MACRO INLINE | C:\Users\josep\Desktop\MiniMouseMacros\1.mmmacro
3 | IF | TIME | 12:27:00 AM | CONTINUE
4 | RUN ACTION | RUN MACRO INLINE | C:\Users\josep\Desktop\MiniMouseMacros\2.mmmacro

What am I doing wrong?

User: Steve

Date: Aug 3, 2021 6:54:09 GMT

freddy the problem is that the syntax is wrong. Your IF condition is failing because it has no ‘operator’. Have a look here for some example of the TIME condition <www.turnssoft.com/conditions.html#time> . When you build your IF condition use the ‘Add Condition’ tool.
minimousemacro-add-Conditiontime.png

User: freddy

Date: Aug 3, 2021 19:32:30 GMT

Steve, I was trying to type the code in. I didn’t realize that there was the Add Condition tool. Thanks!

User: freddy

Date: Aug 3, 2021 20:35:42 GMT

Thanks for your help Steve, that fixed my problem! Below is the macro that you just helped me with. I plan on creating an If Time code line a Run Action code for each hour of the day and let that run most of the time on my laptop, and as I mentioned before these macros will be running in the Mini Mouse Macro app. My concern is that running these macros all the time inside of the Mini Mouse Macro app will cause more wear and tear of my laptop than using the Microsoft Task Scheduler. If I run a macro every hour is it better to use the Microsoft Task Scheduler or run the macros inside of the Mini Mouse Macro app?

1 | IF | TIME | 04:15:00 PM | IS | CONTINUE
2 | RUN ACTION | RUN MACRO INLINE | C:\Users\josep\Desktop\MiniMouseMacros\1.mmmacro
3 | IF | TIME | 4:20:00 PM | IS | CONTINUE
4 | RUN ACTION | RUN MACRO INLINE | C:\Users\josep\Desktop\MiniMouseMacros\2.mmmacro

Thanks again Steve!

User: mrclicker

Date: Aug 4, 2021 12:07:05 GMT

Just a thought .. it occurs to me that this job is better suited to be replaced by the built in windows Task Scheduler.. create a scheduled task that is triggered by whatever event you want, in your case the time of day, and call the macro(s) then. this way you dont need to have the MMM running all day everyday, it would just be called upon by Windows. and will be less prone to errors.


There was an error. Unable to find and load the file…

URL: https://minimousemacro.proboards.com/thread/465/error-unable-find-load-file
Date: Jul 25, 2021 16:15:02 GMT

User: freddy

Date: Jul 25, 2021 16:15:02 GMT

I keep getting the above error when the task scheduler tries to run a scheduled macro. My macro will run when I load it into the Mini Mouse Macro program and press play. But there seems to be something wrong with the way the macro is named because my task scheduler can not find and load the file. This is what I put in the program/script box of the task scheduler: C:\Users\josep\Desktop\MiniMouseMacro.exe This is what I put in the arguments box of the task scheduler: /m /e “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” Can someone please help me with this?

User: philranger

Date: Jul 26, 2021 23:10:55 GMT

Hello,   Never did this myself, but here’s some (hopefully helpful) pointers: I’d first try a simple task defined as : C:\Users\josep\Desktop\MiniMouseMacro.exe ”C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” or look through this info source: <www.turnssoft.com/faq2.html#how%20do%20i%20schedule%20my%20macro%20to%20run%20at%20a%20specific%20time>

User: freddy

Date: Jul 28, 2021 3:43:27 GMT

Hello Phil, First I really appreciate that you took the time to try and help me. Second, when you say try a simple task defined as…Do you mean put that in the task scheduler? I tried that already. I opened the task scheduler, clicked create a basic task, then when it got to the part where the program/script box opened up I put: C:\Users\josep\Desktop\MiniMouseMacro.exe and then under that in the arguments (optional) box I put: /m /e “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” And I also try it without the /m /e part as well but I still got the same error. The macro files that I created also have the same logo as the Mini Mouse Macro app so they appear to be saved in the right format.

User: Steve

Date: Jul 30, 2021 21:57:19 GMT

freddy

Can you paste the full output of the error please. It should be like this: “There was an error. Unable to find and load the file: “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” This error in MMM means it simply can’t find the file or that the command line arguments are wrong. Its more likely though that the .mmmacro file is not getting passed as a command line argument. What this means is that task scheduler has loaded minimousemacro however something is wrong with the commands passed to MMM.

User: freddy

Date: Jul 31, 2021 1:36:43 GMT

Hi Steve, This is the error message I received: Error loading with arguments There was an error. Unable to find and load the file: “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro”

User: Steve

Date: Jul 31, 2021 6:23:46 GMT

defaultavatar.png Jul 31, 2021 1:36:43 GMT

freddy said: Hi Steve, This is the error message I received: Error loading with arguments There was an error. Unable to find and load the file: “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” Thanks.
freddy this error only occurs when MMM can’t open the file or can’t find the file. Are you sure the file exists and the MMM can read it? Have you tried, for a test, running MMM from the command line? For this test make sure you’ve got no macro’s loading with your ‘macro queue’, and turn off the setting ‘Load Last Saved Macro’ if you have it enabled. Your using task scheduler so I can assume you know how to open the command line and change directory to where the minimousemacro.exe executable file is. Do that.. Then run this from the command shell: type “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” This should type out the text of the file.  If this types out the file then we know the file is on disk and readable. Then run this: minimousemacro.exe “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” If this fails then we know its something with MMM and the file. Create another macro and try the test again. Let me know how you go. I’m keen to see where this goes. Cheers, Steve.

User: freddy

Date: Jul 31, 2021 21:56:10 GMT

Steve, I know how to open the command prompt app but I’m not sure what you mean by “change directory to where the minimousemacro.exe executable file is.”. I went ahead and copy and pasted ”C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” into my command prompt and hit enter and then the Mini Mouse Macro app open up and played the OpenAndPlay1.mmmacro file. After that I put the following into my command prompt: minimousemacro.exe “C:\Users\josep\Desktop\MiniMouseMacros\OpenAndPlay1.mmmacro” And then the command prompt gave me this error: ‘minimousemacro.exe’ is not recognized as an internal or external command, operable program, or batch file. After this I created a new macro file that I named Test1 and I ran the two test with the command prompt and I got the same results as above.


How do I add the Wait Minutes line to a macro?

URL: https://minimousemacro.proboards.com/thread/467/add-wait-minutes-line-macro
Date: Jul 28, 2021 22:45:07 GMT

User: freddy

Date: Jul 28, 2021 22:45:07 GMT

I am trying to add the WAIT MINUTES line to a macro but I keep getting a playback error that says “Unable to process macro line. Check the entry, check the delim value between entries [|]” What am I doing wrong? Do I need the paid version to add something like this?

User: philranger

Date: Jul 29, 2021 11:57:28 GMT

Hello, No need for the paid version AFAIK. Should be something like:

1 | RUN ACTION | WAIT MINUTES | 20

Please let us know!

User: freddy

Date: Jul 30, 2021 2:27:47 GMT

Thank you Phil, this helps!


Macro that runs other macros

URL: https://minimousemacro.proboards.com/thread/457/macro-runs-macros
Date: Jul 19, 2021 22:52:32 GMT

User: freddy

Date: Jul 19, 2021 22:52:32 GMT

I have several macros that I would like to run one after the other and I was trying to create a macro that would do that. I have not been able to create this macro yet. Does anyone know how to do this? If so could you please show me an example? Thanks

User: zeak

Date: Jul 20, 2021 0:38:37 GMT

Hi Freddy, My suggestion would be to check out the Conditions page, there are a lot of examples on there. Here is the part about run program. <www.turnssoft.com/conditions.html#runprogram>

User: freddy

Date: Jul 20, 2021 22:25:40 GMT

Thanks Zeak.

User: Steve

Date: Jul 21, 2021 6:10:27 GMT

Maybe you don’t need a macro to call other macro’s. Maybe what you need is the Macro Queue. The macro queue lets you stack up multiple macro’s to run after each other. Also, this thread might help if you don’t want to go down the macro queue route ‘ minimousemacro.proboards.com/thread/343/call-macro ‘. macroqueue_orig.jpg

User: mrclicker

Date: Jul 29, 2021 16:23:23 GMT

the way i do it is by adding this line to call another macro:

10 | RUN ACTION | RUN MACRO INLINE | C:\Users\HH\Documents\Macros\macro1.mmmacro
11 | RUN ACTION | RUN MACRO INLINE | C:\Users\HH\Documents\Macros\macro2.mmmacro

hope it helps


Random Coordinates

URL: https://minimousemacro.proboards.com/thread/464/random-coordinates
Date: Jul 23, 2021 8:53:02 GMT

User: mrclicker

Date: Jul 23, 2021 8:53:02 GMT

i tried adding this line:

1 | 300+%RANDOM_1-100%  | 428 | 510 | Mouse Movement

expecting it to go to a location between 301 and 400 , but this doesnt seem to work is the a simple way of achieving this ?

User: Steve

Date: Jul 23, 2021 10:15:37 GMT

Hi mrclicker

Your syntax for a RANDOM variable ( <www.turnssoft.com/conditions.html#random_integer_variable> ) is a little off. This is what you need:

1 | %random_300-400% | 428 | 510 | Mouse Movement

Here is another post with something similar minimousemacro.proboards.com/thread/321/make-macro-random-number-seconds . Here is some random image creation with Mini Mouse Macro minimousemacro.proboards.com/thread/177/string-loop , and here’s another one minimousemacro.proboards.com/thread/428/hold-key-random-amount-seconds . Hope this helps.

User: mrclicker

Date: Jul 23, 2021 10:22:24 GMT

yeah.. cant believe i never thought about it .. randomise the entire range instead of using a point and add random makes perfect sense


Can I specify a loop time for the macro?

URL: https://minimousemacro.proboards.com/thread/461/specify-loop-time-macro
Date: Jul 21, 2021 13:30:32 GMT

User: chyachyamaru

Date: Jul 21, 2021 13:30:32 GMT

I often use simple macros such as continuous clicks at 300 ms intervals (150 ms for down and up respectively), but I find that the actual interval when playing the macro is dependent on the condition of my system, i.e. playing the same number of loops results in different playback times, with longer playback times when the system is busier. So can I specify a duration of playback to stop the macro playing?

User: philranger

Date: Jul 22, 2021 8:27:23 GMT

Hello, I don’t think you can do exactly that, but this thread might help you: minimousemacro.proboards.com/thread/358/time-calculation-macro-running

User: zeak

Date: Jul 22, 2021 23:07:10 GMT

defaultavatar.png Jul 21, 2021 13:30:32 GMT

chyachyamaru said: So can I specify a duration of playback to stop the macro playing? Hi Chyachyamaru, First off, Welcome to the Forum. Yes you can use the internal macro time to determine how long the macro has run for and put a simple stop action if it goes over your desired time. In the example below line 4 is a if statement that checks against my defined 30 second time.

4 | IF | DECIMAL VARIABLE | %TIME_MACRO% | GREATER THAN | %INTEGER% | STOP

you can also use the below if your not interested in the decimal places.

4 | IF | INTEGER VARIABLE | %TIME_MACRO% | GREATER THAN | %INTEGER% | STOP

RSGfVXd.gif

User: chyachyamaru

Date: Jul 23, 2021 1:12:47 GMT

Thank you for the suggestion, I think this will solve my problem.


Multiple loops within single macro

URL: https://minimousemacro.proboards.com/thread/459/multiple-loops-single-macro
Date: Jul 20, 2021 18:40:47 GMT

User: fmxvxx

Date: Jul 20, 2021 18:40:47 GMT

Good Evening I am wondering if anyone can assist as i’m struggling my code is below at the moment the script works as it should with lines 11-22 looping 10 times after this 10th loop it proceeds as planned with the series of clicks but i need to loop lines 11-29 a further 10 times with lines 11-22 being looped the 10 times in between at the moment I’ve tried to do this with a different integer variable and a for loop but neither are working which i can only assume is user error as this is all quite new to me.

1 | 914 | 330 | 2500 | Left Click
2 | 1875 | 332 | 500 | Left Click
3 | 2833 | 329 | 500 | Left Click
4 | 3796 | 332 | 500 | Left Click
5 | RUN ACTION | WAIT MILLISECONDS | 2000
6 | 646 | 332 | 0 | Left Click
7 | 1607 | 334 | 0 | Left Click
8 | 2574 | 333 | 0 | Left Click
9 | 3531 | 336 | 0 | Left Click
10 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::10
11 | RUN ACTION | WAIT MILLISECONDS | 1000
12 | 915 | 353 | 500 | Left Click
13 | 1875 | 350 | 500 | Left Click
14 | 2834 | 352 | 500 | Left Click
15 | 3796 | 352 | 500 | Left Click
16 | RUN ACTION | WAIT MILLISECONDS | 2000
17 | 652 | 357 | 0 | Left Click
18 | 1611 | 359 | 0 | Left Click
19 | 2571 | 355 | 0 | Left Click
20 | 3535 | 357 | 0 | Left Click
21 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-1
22 | IF | INTEGER VARIABLE | %INTEGER% | IS NOT | 0 | GOTO MACRO LINE | 11
23 | 924 | 837 | 500 | Left Click
24 | 924 | 837 | 500 | Left Click
25 | 1883 | 838 | 500 | Left Click
26 | 1883 | 838 | 500 | Left Click
27 | 2842 | 838 | 500 | Left Click
28 | 2842 | 838 | 500 | Left Click
29 | 3805 | 839 | 500 | Left Click
30 | 3805 | 839 | 500 | Left Click

User: zeak

Date: Jul 20, 2021 23:43:11 GMT

Hi fmxvxx, If I understand correctly, are you trying to loop lines 11-22 10 times with another loop of lines 11-29 that loops 10 times as well? So this would mean lines 11-22 loop 100 times? I have an idea on how to code it if that is what you are wanting and if you are wanting something different then I’m sure we can help with that too. My recommendation for the first one would be a GOTO loop inside a FOR loop. Cheers, Zeak

User: philranger

Date: Jul 21, 2021 1:55:20 GMT

I had a similar problem a couple months back and Steve provided me an elegant solution. Please beware that these imbricated loops are quite long to run!

User: Steve

Date: Jul 21, 2021 6:04:52 GMT

Checkout this post for an example of nesting some for loops ‘ minimousemacro.proboards.com/post/1533 ‘, here is another one minimousemacro.proboards.com/thread/377/simple-pixel-test-loop , this one has some good links too ‘ minimousemacro.proboards.com/thread/267/repeat-macro ‘. A FOR LOOP ( <www.turnssoft.com/conditions.html#for> ) might be what you need. Below in the code block is the basic structure of a counting for loop. This for loop runs through 5 times bringing up a message prompt.

1 | FOR | I | = | 0 TO 5  | NEXT
2 | RUN ACTION | MESSAGE PROMPT | %i%::FOR LOOP %I%::1
3 | FOR | NEXT

Here’s a simple example: minimousemacro_basicloop.gif And here’s an advanced example: minimousemacro_forloop.gif

User: fmxvxx

Date: Jul 21, 2021 12:06:48 GMT

ovqiSZMQkcHXJsgduMbm.jpg Jul 20, 2021 23:43:11 GMT

zeak said: Hi fmxvxx, If I understand correctly, are you trying to loop lines 11-22 10 times with another loop of lines 11-29 that loops 10 times as well? So this would mean lines 11-22 loop 100 times? I have an idea on how to code it if that is what you are wanting and if you are wanting something different then I’m sure we can help with that too. My recommendation for the first one would be a GOTO loop inside a FOR loop. Cheers, Zeak Yes  that is correct lines 1-9 are only played once Lines 11-22 are looped 100 times total and lines 11-29 are looped 10 times

User: fmxvxx

Date: Jul 21, 2021 12:11:02 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jul 21, 2021 6:04:52 GMT

Steve said: Checkout this post for an example of nesting some for loops ‘ minimousemacro.proboards.com/post/1533 ‘, here is another one minimousemacro.proboards.com/thread/377/simple-pixel-test-loop , this one has some good links too ‘ minimousemacro.proboards.com/thread/267/repeat-macro ‘. A FOR LOOP ( <www.turnssoft.com/conditions.html#for> ) might be what you need. Below in the code block is the basic structure of a counting for loop. This for loop runs through 5 times bringing up a message prompt.

1 | FOR | I | = | 0 TO 5  | NEXT
2 | RUN ACTION | MESSAGE PROMPT | %i%::FOR LOOP %I%::1
3 | FOR | NEXT

Here’s a simple example: minimousemacro_basicloop.gif And here’s an advanced example: minimousemacro_forloop.gif Yes i did try the FOR loop shown as i found it while searching the forum before posting but it seemed to put line 11-22 into an infinite loop never going to line 23-29 maybe down to user error tho as this is a learning curve for me.


Any hotkey to add entry?

URL: https://minimousemacro.proboards.com/thread/456/any-hotkey-add-entry
Date: Jul 17, 2021 22:56:07 GMT

User: Luis

Date: Jul 17, 2021 22:56:07 GMT

As the suject says, is there any list of hotkeys to add entry so that i can leave the mouse where i want the entry to be placed at and just hotkey the entry in MMM so that i just have to adjust time and the action itself?

User: Steve

Date: Jul 18, 2021 3:38:07 GMT

No unfortunately not. No hotkey for ‘Add Entry’ but instead of mouse moving to create an new entry you could use the alt key to access the menu and then drill down to ‘add entry’.
Alt - right - right - down - enter.

User: philranger

Date: Jul 18, 2021 12:17:15 GMT

I guess you could create a first line in your macro that adds an entry and delete it once done? Also, when you move the mouse, the x and y positions are displayed in the lower band of mmm.


How to recenter mouse

URL: https://minimousemacro.proboards.com/thread/449/recenter-mouse
Date: Jul 14, 2021 9:12:10 GMT

User: mantis72

Date: Jul 14, 2021 9:12:10 GMT

I am using Mini Mouse Macro to help with being AFK and not kicked in a game.  During the execution of the script my perspective in game shifts upwards as bots are hitting me.  Is there a way to “recenter” the mouse?  Basically it would be like scrolling down on the touhpad on my laptop but I was wondering if there would be a way to bring the screen back to center in my 1st person game.

User: Steve

Date: Jul 14, 2021 23:46:09 GMT

If bringing the screen back to center in the game is the same key presses or mouse movements every time then yes, MMM can do this. MMM is good at replaying a series of static instructions.
If it’s not the same every time, sometimes you need to move the mouse or keyboard press more or less than other times to bring it back center to the player, then it might be a lot more complicated. You would need to program in some logic to determine how many presses/movements are required. MMM takes its queues from the environment that are needed to build this logic and then evaluates them with CONDITIONS statements ( <www.turnssoft.com/conditions.html> ).
Hope this helps.


Multiple macros

URL: https://minimousemacro.proboards.com/thread/451/multiple-macros
Date: Jul 14, 2021 16:39:01 GMT

User: Gee

Date: Jul 14, 2021 16:39:01 GMT

I want to know if can i run multiple macros at once like 4 macros at the split screen in same time 4 different web sites

User: Steve

Date: Jul 14, 2021 23:35:18 GMT

Yes, you can run multiple macro’s at the same time but you need to run multiple instances of Mini Mouse Macro.  You can run multiple instances by running minimousemacro.exe more than once at a time. When multiple macro’s run at the same time you might find that one of the macro’s may interrupt or interfere with the other running macro’s. For example, lets just say macro 1 is moving the mouse and macro 2 is also moving the mouse. Macro 1 and macro 2 will both try and move the mouse and the winner will be the macro that triggers the move after the first. Its not just mouse movements though, the same can be said about competing conditionals and declared %INTEGER%, %STRING%, %BOOLEAN%, %DECIMAL% variable ranges (so use unique names if you can). Also, multiple instances don’t respond to multiple hotkey presses such as the hotkeys to stop and start the macro. A better way would be to have one macro run that calls other macro’s when they are needed based on some conditions ( <www.turnssoft.com/conditions.html> ).
The RUN PROGRAM ( <www.turnssoft.com/conditions.html#runprogram> ) action can be used to run other instances of MMM with program options . LOAD MACRO FROM URL ( <www.turnssoft.com/conditions.html#loadmacrofromurl> ) and RUN MACRO INLINE ( <www.turnssoft.com/conditions.html#runmacroinline> ) are a couple of other examples of how to load macro’s in.


Macro time seemingly not the sum of the individual steps

URL: https://minimousemacro.proboards.com/thread/426/macro-time-seemingly-individual-steps
Date: Jun 4, 2021 20:30:34 GMT

User: smith legit

Date: Jun 4, 2021 20:30:34 GMT

The sum of the individual times of my Macro is 900 milliseconds. It took me 113 seconds to run 100 iterations of the macro in a loop. Shouldn’t it only take 90 seconds? Context: The following Macro clicks a button that saves a file and appends the time to the filename. I want to save at least one file per second. Even though the Macro should be .9 seconds long, it took me an average of 1.13 seconds to save each file. I cannot reduce the “wait” time on line 3 because I need to wait for the window to open. Any suggestions? Thanks!

1 | 212 | 307 | 10 | Left Click Down
2 | 212 | 307 | 10 | Left Click Release
3 | RUN ACTION |  |  |  | WAIT SECONDS | .6
4 | 376 | 420 | 10 | Keypress %STRING1% %TIME_H% %TIME_M% %TIME_S% %TIME_MS%
6 | 721 | 759 | 10 | Left Click Down
7 | 721 | 759 | 10 | Left Click Release
8 | RUN ACTION |  |  |  | WAIT SECONDS | .25

User: philranger

Date: Jun 5, 2021 19:23:28 GMT

I think that time is quite approximative in MMM, especially time to loop.

User: Steve

Date: Jun 5, 2021 20:37:26 GMT

Hi Smith, The short answer is no. The total running time is the MMM event wait time

+

Mini Mouse Macro event execution time

+

Windows event execution time . Lets take your first two action for example:

1 | 212 | 307 | 10 | Left Click Down
2 | 212 | 307 | 10 | Left Click Release

The event wait time here is the 10ms timer that executes prior to the command occurring. The Mini Mouse Macro event execution time is the time that the app takes to process and pass the command to Windows. This is a very small time, but still a time. The Windows execution time is the time Windows takes to process the event. This takes as long as the operating system needs and can be effected by other operating system events. I do have some suggestions for your macro :

  1. The first one is to abandon the old ‘three pipe’ syntax . This ‘| | |’ is deprecated. It still works but one day I might rip that code out and it will stop working.
  2. Your use of WAIT SECONDS | .6 is better to be WAIT MILLISECONDS | 600. It will save MMM from having to do any conversion and it’s just cleaner for the app.
  3. the ‘Left Click Down/Up’ can be replaced by a single ‘ Left Click ‘ if you don’t intend to do any mouse dragging whilst the mouse is down. Its faster this way and saves on execution time.
  4. You mention you “need to wait for the window to open.”, MMM has some conditions to detect and and wait for specific windows to open. Have a look at these for help on Window detection:

<www.turnssoft.com/conditions.html#windowtitle> <www.turnssoft.com/conditions.html#selectwindowbyname> minimousemacro.proboards.com/thread/351/pop-window minimousemacro.proboards.com/board/3/help?q=select+window This is how I would format your macro:

1 | 212 | 307 | 10 | Left Click
2 | RUN ACTION | WAIT MILLISECONDS | 600
3 | 376 | 420 | 10 | Keypress %STRING1% %TIME_H% %TIME_M% %TIME_S% %TIME_MS%
4 | 721 | 759 | 10 | Left Click
5 | RUN ACTION | WAIT MILLISECONDS | 250

Hope this helps.

User: smith legit

Date: Jul 12, 2021 19:08:15 GMT

This was really helpful. Thank you!

User: trey

Date: Jul 14, 2021 14:28:24 GMT

Steve Relevant additional question without needing to start a new thread: Is it possible to do math operations with %date% and %time%?  My use case is that at the start of my macro sequence I want to define %start_time% and at the end I want to generate a report file that includes some notion of %exec_time% where %exec_time% = %time% - %start_time%

User: Steve

Date: Jul 14, 2021 23:18:53 GMT

defaultavatar.png Jul 14, 2021 14:28:24 GMT

trey said: Steve

Is it possible to do math operations with %date% and %time%? My use case is that at the start of my macro sequence I want to define %start_time% and at the end I want to generate a report file that includes some notion of %exec_time% where %exec_time% = %time% - %start_time% A good way to calculate the running time is to use the internal %time_macro% variables.  We don’t have the option in MMM to evaluate full time values like in your example.  To evaluate time you would need to break it down into H M S and evaluate based on the integer value.  The %time_macro% variables make this easier if all you want the total macro playback time. minimousemacro-time-macro.png


wait for a specific screen triger

URL: https://minimousemacro.proboards.com/thread/448/wait-specific-screen-triger
Date: Jul 12, 2021 12:53:11 GMT

User: mrclicker

Date: Jul 12, 2021 12:53:11 GMT

i tried creating a macro to click a button on webpage when that button appears in a webpage. trouble is the button is using a complex colour blend, which is not easily captured as its not a full block of a single RGB code it has shades and gradient in it which prevent me from capturing it right. the page is also not built that i can tab between elements in the page to reach that button. i thought of using pixel range but i dont think i understand it properly and not sure it will do what i need.. any ideas on how i can create that trigger?

User: zeak

Date: Jul 13, 2021 0:41:20 GMT

Hi Mr. Clicker, The new update coming out should be able to solve your issue. MOUSE TO IMAGE DETECT IMAGE Read up on it here. minimousemacro.proboards.com/thread/400/update-coming-next-mouse-macro

User: mrclicker

Date: Jul 14, 2021 8:20:58 GMT

brilliant smiley.png


timing errors

URL: https://minimousemacro.proboards.com/thread/202/timing-errors
Date: Oct 14, 2019 11:31:55 GMT

User: mrclicker

Date: Oct 14, 2019 11:31:55 GMT

i have a macro to complete a boring series of mouse clicks  (i suppose every one is). i fine tuned it down to the millisecond, and the series contain about 40 steps with timing ranging from 30ms to 500ms per click with release set at 1ms. After invoking the macros 10-20 times in a row fusing a hot key mapped in the quicklaunch section the timings start to go wrong and things slow down considerably. can this be fixed ?

User: zeak

Date: Oct 16, 2019 20:26:38 GMT

Hi MrClicker, Welcome to the forums I would suggest changing the mouse click to just “Click” instead of Click Down, Click Release where it isn’t necessary to click drag. That way you can remove the line for click release, This should make the macro run better over the long run. Also I have noticed that if you have your mouse clicks to quickly (<100ms) that the system can sometimes get bogged down particularly when doing a lot of clicks in succession, I would suggest increasing your minium click time to no less then 100ms.

User: mrclicker

Date: Oct 17, 2019 16:28:17 GMT

is there a way to make the system do it automatically? the macros are created by CTRL+3 to record so clickdown and release are created automatically. can i change the way the system records the macros so instead of down/release it just creates click unless i drag ?

User: zeak

Date: Oct 20, 2019 22:39:52 GMT

Mr Clicker, Do you have Event log enabled? If you do I would recommend disabling it unless bug checking as this can also slow down your macro.

User: Steve

Date: Oct 27, 2019 4:32:53 GMT

defaultavatar.png Oct 17, 2019 16:28:17 GMT

mrclicker said: is there a way to make the system do it automatically? the macros are created by CTRL+3 to record so clickdown and release are created automatically. can i change the way the system records the macros so instead of down/release it just creates click unless i drag ? Do disable ‘Click Down/Release’ go to Options - Record Options - Disable drag and drop minimousemacro-clickdown.png

User: mrclicker

Date: Jul 12, 2021 11:45:06 GMT

thanks smiley.png (a little late , but still )


Time interval in milliseconds between pixels turning white

URL: https://minimousemacro.proboards.com/thread/445/interval-milliseconds-pixels-turning-white
Date: Jul 5, 2021 17:34:06 GMT

User: mksg

Date: Jul 5, 2021 17:34:06 GMT

Hi, I’m new to this so I’m sorry if this is not clear or a dumb question. I know how to monitor a range of pixels for a specific colour change, but not sure about how to record the times at which the change occurs. I am monitoring a certain pixel range, let’s say it is generally black and sometimes turns white. I would like to report/record back to me the times that it turns white. For example:

  1. The pixels are black. Then it turns white for first time. This should trigger the first instance at ‘t1’ = time of day at which black turns white. Or this could trigger a counter that starts at time=0.
  2. Then wait say 50 milliseconds because I know it turns black again. This is just a waiting parameter meant to allow pixels to change back to black. No recording of times needed.
  3. The pixels are black. Then it turns white for second time. This should trigger the second instance at ‘t2’ = time of day at which black turns white again. Or this could stop the counter that was started at 0.
  4. So ultimately I get two times (t1 and t2) when the pixel turned white, so I can in excel take t2-t1 to get the time interval between the white occurences. I would need the level of accuracy for t1 and t2 be recorded in milliseconds. Thanks! MS

User: Steve

Date: Jul 6, 2021 10:13:25 GMT

Hi mksg, We can do this a few ways in MMM and with this example I’m putting the pixel condition ( <www.turnssoft.com/conditions.html#pixelcolor> ) between a loop based on the %time_macro% internal counter. This variable holds the current running time of the macro in seconds.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %intC%::1
* | PIXEL CHECK
2 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1004 Y:394] | IS THE SAME | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | LOOP
  3RUN ACTIONOUTPUT TO FILEC:\Users\steph\Dropbox\Macro\File\pixel changes.txt::APPEND_NEWLINE::T%intC%=%TIME_H%:%TIME_M%:%TIME_S%:%TIME_MS%
  4RUN ACTIONWAIT MILLISECONDS50
  5RUN ACTIONDEFINE INTEGER VARIABLE%intC%::+1
* | LOOP
6 | IF | INTEGER VARIABLE | %TIME_MACRO% | LESS THAN | 10 | GOTO MACRO LINE | 2

At line 1 we declare your instance counter At line 2 we start the pixel evaluation. If a pixel is white (255,255,255) then goto line 3 else then goto line label ‘LOOP’. At line 3 we output our instance count followed by the time. At line 4 we wait 50 ms At line 5 we increment our counter At line 6 we evaluate the %time_macro% variable. If we have been running for less than 10 seconds then loop back to line 2. In the demo below we run the macro.  Every couple of seconds I move a white background over the pixel target area and trigger line 2 to evaluate to TRUE.  This then runs line 3, 4, and 5 which writes to our log file and continues the loop. minimousemacro_pixelcolorchange.gif

User: mksg

Date: Jul 6, 2021 15:15:12 GMT

That is really helpful and solves my question. Thanks!

User: mksg

Date: Jul 8, 2021 23:14:01 GMT

Hi, It turns out I have run into another complication. The pixels I monitor are generally dark (but not perfectly black and not a constant RGB value). They are video content so the pixels stay darkish but are constantly changing ever so slightly. Then the pixels turn white (or close to white, again not a constant RGB value) and when change from darkish to lightish that is when I want to record the time of occurence. So, in Steve’s sample code line below for a pixel color of white, is there some way to introduce some tolerance to the pixel color? ie, the following line is a bit too stringent:

2 | IF | PIXEL COLOR | Color [

R=255, G=255, B=255 ]::At Location [X:1004 Y:394] | IS THE SAME | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | LOOP Are there some more tolerable options like:

2 | IF | PIXEL COLOR | Color [

R>200, G>200, B>200 ]::At Location [X:1004 Y:394] | IS THE SAME | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | LOOP PIXEL RANGE condition was also not solving my problem because the slight changes in dark pixels triggers the command, while I am wanting it to wait for the bigger change to lightish pixels. Thanks a bunch! MS

User: Steve

Date: Jul 9, 2021 6:26:33 GMT

Jul 8, 2021 23:14:01 GMT mksg said: Hi, It turns out I have run into another complication. The pixels I monitor are generally dark (but not perfectly black and not a constant RGB value). They are video content so the pixels stay darkish but are constantly changing ever so slightly. Then the pixels turn white (or close to white, again not a constant RGB value) and when change from darkish to lightish that is when I want to record the time of occurence. So, in Steve’s sample code line below for a pixel color of white, is there some way to introduce some tolerance to the pixel color? ie, the following line is a bit too stringent:

2 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1004 Y:394] | IS THE SAME | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | LOOP

Are there some more tolerable options like:

2 | IF | PIXEL COLOR | Color [R=200, G=200, B=200]::At Location [X:1004 Y:394] | IS THE SAME | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | LOOP

PIXEL RANGE condition was also not solving my problem because the slight changes in dark pixels triggers the command, while I am wanting it to wait for the bigger change to lightish pixels. Thanks a bunch!

MS No unfortunately not but I really like the concept.

2 | IF | PIXEL COLOR | Color [R=200, G=200, B=200]::At Location [X:1004 Y:394] | IS THE SAME | GOTO MACRO LINE | 3 | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | LOOP

I’ll have a look at the code and see if I can add this in for the next update.  Such a small change could have a big impact.  I’ll look into adding < and > modifiers to the command.

Great idea wink.png

User: Steve

Date: Jul 9, 2021 23:06:06 GMT

Ive added this as an improvement to the next update. More info here minimousemacro.proboards.com/thread/400/update-coming-next-mouse-macro . Thanks again for the idea.

User: mksg

Date: Jul 11, 2021 4:49:43 GMT

That is great news!


Race conditions when loading INPUT.txt

URL: https://minimousemacro.proboards.com/thread/447/race-conditions-when-loading-input
Date: Jul 7, 2021 3:35:18 GMT

User: Trey

Date: Jul 7, 2021 3:35:18 GMT

I’m loading variables using the INPUT FROM FILE method, and the next lines after I load the variables have a dependency on some of the variables.  Has anyone else experienced this?   My sequence goes like this:

  1. I run a python script via RUN VIA CMD /c that pulls a set of variables from a table row and writes them out to INPUT.txt
  2. I then INPUT FROM FILE those variables, one of them is some INTEGER n
  3. I then run a MESSAGE PROMPT that displays something like “The value of n  is %INTEGER%!” If I just run those in three lines, it’d tell me the value of %INTEGER% is zero or null, even though I can check the INPUT.txt file I output and see that %INTEGER% is not zero! Now, you’re probably thinking that the macro is running the next line before the python script writes out INPUT.txt!  Yeah, I figured that might be the case too, so now I do this:
  4. I define a %BOOLEAN% variable to be FALSE
  5. I run my python script, which writes out %BOOLEAN% as TRUE now, in addition to my %INTEGER%
  6. I INPUT FROM FILE with VARIABLES::REFRESH from my INPUT.txt
  7. I then use IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | CONTINUE to hold until %BOOLEAN% is TRUE, meaning INPUT.txt was written out by my script and had to have been imported to the variables. Unfortunately, I’m still running into race conditions, it’s almost as though in some cases, where there’s a lot of variables to pull in from INPUT.txt, %BOOLEAN% gets written and acted on before the other values.  That seems weird to me, but I don’t have any other ideas.  I know my python script is writing the correct variables into INPUT.txt.   Please help, this is driving me crazy.

User: philranger

Date: Jul 7, 2021 12:01:26 GMT

Hello, I may be wrong, but I would think that the file isn’t re-read at every input, but kinda buffered so your python actualises the file but mmm doesn’t know it?

User: Trey

Date: Jul 7, 2021 13:57:18 GMT

Hi Phil, Yeah, it seems like MMM isn’t fully reading the file and loading all the variables before it moves on to the next line in the macro.  There’s some race condition going on here, I have my variables open while my macro runs and the values I can see in the variables are not being passed to the macro line. This is really frustrating.

User: trey

Date: Jul 7, 2021 14:31:09 GMT

Edit: Just for completeness, adding a screengrab of the sequence where you can see I’m paused at Line 6, and you can see the Variables have been set from INPUT.txt.  Also, embedding images doesn’t seem to work, so another link to imgur for this one. dErpUzO.png Imgur link: imgur.com/a/p5hu0cE DFmgt8N.jpeg Hopefully you can see this screengrab, otherwise I posted it on imgur here: imgur.com/gallery/5amhLKv This macro has run all the way to Line 11, where I paused it. You can see in Line 3 I run a python script with a cmd line arg. This script outputs an INPUT.txt that looks like:

INTEGER::2 INTEGER1::2 BOOLEAN1::FALSE BOOLEAN2::TRUE BOOLEAN::TRUE

You can see in the screengrab that Line 4 used INPUT FROM FILE to load those variables, and you can see looking at the Variables displayed that yes, those variables are loaded by the time I get to Line 11.

At Line 8, because %INTEGER1% is greater than 0, it goes to MACRO LINE Reset, where it runs a message prompt that uses %INTEGER1%. Now remember, in order to even get to Line 11, %INTEGER1% HAD TO BE GREATER THAN 0! But look at the message prompt, it’s saying %INTEGER1% is 0, even though in the Variables it clearly isn’t. What is going on here?!?!

I’m fairly new to MMM, so please let me know if it’s my macro scripting syntax. I’ve meticulously gone through the documentation, but in some places it feels like it doesn’t quite cover all the use cases in the examples.

Steve

 Here's my Event Logger output, where again, %INTEGER1% is definitely 2 but the Message Prompt says 0
 07/07/2021 01:23:16.38 PM Macro condition: 22 | RUN ACTION | DEBUG | logger::INFO::INTEGER - %INTEGER%
 07/07/2021 01:23:16.41 PM Macro condition - Condition TRUE
 07/07/2021 01:23:16.44 PM Macro action - DEBUG (logger::INFO::INTEGER - 2)
 07/07/2021 01:23:16.47 PM INTEGER - 2
 07/07/2021 01:23:16.49 PM Macro condition: 23 | RUN ACTION | DEBUG | logger::INFO::INTEGER1 - %INTEGER1%
 07/07/2021 01:23:16.52 PM Macro condition - Condition TRUE
 07/07/2021 01:23:16.55 PM Macro action - DEBUG (logger::INFO::INTEGER1 - 2)
 07/07/2021 01:23:16.58 PM INTEGER1 - 2
 07/07/2021 01:23:16.60 PM Macro condition: 24 | RUN ACTION | DEBUG | logger::INFO::STRING1 - %STRING1%
 07/07/2021 01:23:16.63 PM Macro condition - Condition TRUE
 07/07/2021 01:23:16.66 PM Macro action - DEBUG (logger::INFO::STRING1 - )
 07/07/2021 01:23:16.68 PM STRING1 - 
 07/07/2021 01:23:16.71 PM Macro condition: 25 | RUN ACTION | DEBUG | logger::INFO::STRING2 - %STRING2%
 07/07/2021 01:23:16.74 PM Macro condition - Condition TRUE
 07/07/2021 01:23:16.76 PM Macro action - DEBUG (logger::INFO::STRING2 - )
 07/07/2021 01:23:16.79 PM STRING2 - 
 07/07/2021 01:23:16.82 PM Macro condition: 26 | RUN ACTION | DEBUG | logger::INFO::STRING3 - %STRING3%
 07/07/2021 01:23:16.84 PM Macro condition - Condition TRUE
 07/07/2021 01:23:16.87 PM Macro action - DEBUG (logger::INFO::STRING3 - )
 07/07/2021 01:23:16.90 PM STRING3 - 
 07/07/2021 01:23:16.92 PM Macro condition: 27 | RUN ACTION | DEBUG | logger::INFO::STRING4 - %STRING4%
 07/07/2021 01:23:16.95 PM Macro condition - Condition TRUE
 07/07/2021 01:23:16.97 PM Macro action - DEBUG (logger::INFO::STRING4 - )
 07/07/2021 01:23:17.00 PM STRING4 - 
 07/07/2021 01:23:17.02 PM Macro condition: 28 | RUN ACTION | PAUSE
 07/07/2021 01:23:17.05 PM Macro condition - Condition TRUE
 07/07/2021 01:23:17.08 PM Macro action - Running ACTION: PAUSE - Pause=False
 07/07/2021 01:23:25.61 PM Macro resumed
 07/07/2021 01:23:25.67 PM Macro condition: 29 | IF | BOOLEAN VARIABLE | %BOOLEAN1% | IS TRUE | GOTO MACRO LINE | Complete
 07/07/2021 01:23:25.74 PM Macro condition - Condition FALSE
 07/07/2021 01:23:25.80 PM Macro condition: 30 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 0 | GOTO MACRO LINE | Reset
 07/07/2021 01:23:25.86 PM Macro condition - 2&gt;0
 07/07/2021 01:23:25.90 PM Macro condition - Condition TRUE
 07/07/2021 01:23:25.94 PM Macro action - Running ACTION: GOTO MACRO LINE - Macro line(Reset)
 07/07/2021 01:23:26.03 PM Macro condition: 33 | RUN ACTION | MESSAGE PROMPT | Found %INTEGER1% reset emails!::xxxxx::0::OK
 07/07/2021 01:23:26.08 PM Macro condition - Condition TRUE
 07/07/2021 01:23:26.14 PM Macro action - Running ACTION: MESSAGE PROMPT - Message(Found 0 reset emails!::xxxxx::0::OK)

User: trey

Date: Jul 7, 2021 17:39:50 GMT

I think I see what might be happening… Does GOTO MACRO LINE re-initialize the variables???

 07/07/2021 01:33:45.93 PM Macro action - DEBUG (logger::INFO::verbose::Ran pw_reset.py -1 and set variables...)
 07/07/2021 01:33:45.96 PM RAN PW_RESET.PY -1 AND SET VARIABLES...
 07/07/2021 01:33:45.99 PM Macro condition: 21 | RUN ACTION | DEBUG | logger::INFO::BOOLEAN - %BOOLEAN%
 07/07/2021 01:33:46.02 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.05 PM Macro action - DEBUG (logger::INFO::BOOLEAN - TRUE)
 07/07/2021 01:33:46.08 PM BOOLEAN - TRUE
 07/07/2021 01:33:46.11 PM Macro condition: 22 | RUN ACTION | DEBUG | logger::INFO::BOOLEAN1 - %BOOLEAN1%
 07/07/2021 01:33:46.13 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.16 PM Macro action - DEBUG (logger::INFO::BOOLEAN1 - FALSE)
 07/07/2021 01:33:46.19 PM BOOLEAN1 - FALSE
 07/07/2021 01:33:46.21 PM Macro condition: 23 | RUN ACTION | DEBUG | logger::INFO::BOOLEAN2 - %BOOLEAN2%
 07/07/2021 01:33:46.24 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.27 PM Macro action - DEBUG (logger::INFO::BOOLEAN2 - TRUE)
 07/07/2021 01:33:46.30 PM BOOLEAN2 - TRUE
 07/07/2021 01:33:46.33 PM Macro condition: 24 | RUN ACTION | DEBUG | logger::INFO::INTEGER - %INTEGER%
 07/07/2021 01:33:46.35 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.38 PM Macro action - DEBUG (logger::INFO::INTEGER - 2)
 07/07/2021 01:33:46.40 PM INTEGER - 2
 07/07/2021 01:33:46.43 PM Macro condition: 25 | RUN ACTION | DEBUG | logger::INFO::INTEGER1 - %INTEGER1%
 07/07/2021 01:33:46.46 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.48 PM Macro action - DEBUG (logger::INFO::INTEGER1 - 2)
 07/07/2021 01:33:46.51 PM INTEGER1 - 2
 07/07/2021 01:33:46.53 PM Macro condition: 26 | RUN ACTION | DEBUG | logger::INFO::STRING1 - %STRING1%
 07/07/2021 01:33:46.56 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.58 PM Macro action - DEBUG (logger::INFO::STRING1 - )
 07/07/2021 01:33:46.61 PM STRING1 -
 07/07/2021 01:33:46.64 PM Macro condition: 27 | RUN ACTION | DEBUG | logger::INFO::STRING2 - %STRING2%
 07/07/2021 01:33:46.66 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.69 PM Macro action - DEBUG (logger::INFO::STRING2 - )
 07/07/2021 01:33:46.72 PM STRING2 -
 07/07/2021 01:33:46.75 PM Macro condition: 28 | RUN ACTION | DEBUG | logger::INFO::STRING3 - %STRING3%
 07/07/2021 01:33:46.77 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.80 PM Macro action - DEBUG (logger::INFO::STRING3 - )
 07/07/2021 01:33:46.83 PM STRING3 -
 07/07/2021 01:33:46.86 PM Macro condition: 29 | RUN ACTION | DEBUG | logger::INFO::STRING4 - %STRING4%
 07/07/2021 01:33:46.90 PM Macro condition - Condition TRUE
 07/07/2021 01:33:46.92 PM Macro action - DEBUG (logger::INFO::STRING4 - )
 07/07/2021 01:33:46.95 PM STRING4 -
 07/07/2021 01:33:46.98 PM Macro condition: 30 | RUN ACTION | PAUSE
 07/07/2021 01:33:47.00 PM Macro condition - Condition TRUE
 07/07/2021 01:33:47.03 PM Macro action - Running ACTION: PAUSE - Pause=False
 07/07/2021 01:35:38.85 PM Macro resumed
 07/07/2021 01:35:38.93 PM Macro condition: 31 | RUN ACTION | DEBUG | logger::INFO:: Checking if BOOLEAN1 is TRUE. Current value - %BOOLEAN1%
 07/07/2021 01:35:39.01 PM Macro condition - Condition TRUE
 07/07/2021 01:35:39.06 PM Macro action - DEBUG (logger::INFO:: Checking if BOOLEAN1 is TRUE. Current value - FALSE)
 07/07/2021 01:35:39.11 PM  CHECKING IF BOOLEAN1 IS TRUE. CURRENT VALUE - FALSE
 07/07/2021 01:35:39.15 PM Macro condition: 32 | IF | BOOLEAN VARIABLE | %BOOLEAN1% | IS TRUE | GOTO MACRO LINE | Complete
 07/07/2021 01:35:39.18 PM Macro condition - Condition FALSE
 07/07/2021 01:35:39.21 PM Macro condition: 33 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 0 | GOTO MACRO LINE | Reset
 07/07/2021 01:35:39.24 PM Macro condition - 2&gt;0
 07/07/2021 01:35:39.27 PM Macro condition - Condition TRUE
 07/07/2021 01:35:39.29 PM Macro action - Running ACTION: GOTO MACRO LINE - Macro line(Reset)
AT THIS POINT, ALL MY VARIABLES ARE GOOD, THEN I RUN GOTO MACRO LINEReset…
 07/07/2021 01:35:39.36 PM Macro condition: 36 | RUN ACTION | DEBUG | logger::INFO::INTEGER1 - %INTEGER1%
 07/07/2021 01:35:39.40 PM Macro condition - Condition TRUE
 07/07/2021 01:35:39.47 PM Macro action - DEBUG (logger::INFO::INTEGER1 - 0)
 07/07/2021 01:35:39.51 PM INTEGER1 - 0 

———- MY %INTEGER1% VARIABLE IS SUDDENLY 0

 07/07/2021 01:35:39.55 PM Macro condition: 37 | RUN ACTION | MESSAGE PROMPT | Found %INTEGER1% reset emails!::Nike PW Reset Sequence::0::OK
 07/07/2021 01:35:39.58 PM Macro condition - Condition TRUE
 07/07/2021 01:35:39.62 PM Macro action - Running ACTION: MESSAGE PROMPT - Message(Found 0 reset emails!::Nike PW Reset Sequence::0::OK)
 07/07/2021 01:35:56.87 PM Macro playback ended

User: Steve

Date: Jul 8, 2021 3:36:16 GMT

Hi trey

I hope you don’t mind but I edited your post to include the images you embedded. Imgur.com provides a link like this imgur.com/gallery/5amhLKv but this forum needs the full path “https://i.imgur.com/DFmgt8N.jpeg”. To import it from Imgur I needed to right click the image and copy the image location. I prefer postimages.org/ for posting images. They provide the full path. You can also just type in the path of your image like this without the quotes “https://i.imgur.com/DFmgt8N.jpeg”. Without the quotes it will automatically add it to the post. Its not a race condition and your not crazy. Yes, it is the GOTO sending your macro back to the start effectively clearing your variables.  You need to ‘ Enable variable saves ‘ and yes you need the pro version to do this for now.  I’m adding this option to the free version with the release of the next version and turning it on by default.  It shouldn’t be muted.  GOTO effectively searches for your goto pattern top-down.  If it can’t find it down from your line number it will hit the top and go back down the list.  This ‘hitting the top’ and starting  from line number 1, from MMM’s perspective is a fresh macro run. I’m trying to think how you can get around it now without purchasing the pro version or waiting for the next release but it’s not going to be pretty. minimousemacro-options-enablevarsaves.png

User: trey

Date: Jul 8, 2021 17:48:52 GMT

Thanks so much Steve ! Good news, I’m working with Mini Mouse Macro Pro, so I’m looking forward to testing it with enabling variable saves later today smiley.png Quick question I hope you see without me having to start a new thread… I know I can define custom variables using

1 | RUN ACTION | DEFINE STRING VARIABLE | %farm%::barn 

but can I do it similarly using INPUT FROM FILE if I have a file input.txt that looks like this…? farm::barn status::TRUE count::4

User: Steve

Date: Jul 9, 2021 6:19:46 GMT

defaultavatar.png Jul 8, 2021 17:48:52 GMT

trey said: Thanks so much Steve ! Good news, I’m working with Mini Mouse Macro Pro, so I’m looking forward to testing it with enabling variable saves later today smiley.png Quick question I hope you see without me having to start a new thread… I know I can define custom variables using

1 | RUN ACTION | DEFINE STRING VARIABLE | %farm%::barn 

but can I do it similarly using INPUT FROM FILE if I have a file input.txt that looks like this…? farm::barn status::TRUE count::4 Yes that will work.

1 | RUN ACTION | INPUT FROM FILE | VARIABLES::NO_REFRESH::C:\Macro\File\input.txt
2 | RUN ACTION | MESSAGE PROMPT | farm: %farm%'\n'status: %status%'\n'count: %count%::input.txt Input Check::0::Information

Marco taking numbers from txt or excel

URL: https://minimousemacro.proboards.com/thread/444/marco-numbers-txt-excel
Date: Jul 5, 2021 16:21:14 GMT

User: din

Date: Jul 5, 2021 16:21:14 GMT

Hello need some help. Below the code I have a txt file containing below numbers. Where you see Keypress Ctrl+v the first nr need to be.

5660889379 5661140380 5661140381 5661153207 5661175966 5661185825 5661186241 5661186585 5661186654

What I would like to archive is that the code goes the the txt file runs the macro but where Ctrl+v it will take the first nr. When done it loops and takes the second nr from txt file and so on.

Hope someone can help me. Million thanks already

Din

1 | 760 | 842 | 8137 | Left Click Down
2 | 760 | 842 | 127 | Left Click Release
3 | 190 | 262 | 1759 | Keypress Ctrl+ | v
4 | 190 | 262 | 1772 | Keypress enter
5 | 206 | 295 | 5405 | Keypress f4
6 | 206 | 295 | 1237 | Keypress f4

User: philranger

Date: Jul 5, 2021 18:43:55 GMT

Hello, Although I know that you can take them directly from the file, I have never done it myself so all I can say is that there seems to be examples on the mini mouse macro “conditions” page. What I would do is:

  • open the text file in a notepad
  • do a keypress ctrl+home to be sure I’m at the beginning of the document
  • do a shift-down (selects the full line)
  • ctrl-x cuts it so it is in the clipboard
  • click, paste, etc.

then alt-tab to come back to the notepad

User: Steve

Date: Jul 6, 2021 8:07:06 GMT

Hi din

This would be best handled with a FOR condition ( <www.turnssoft.com/conditions.html#for> ).
The example below I loop through the numbers in numbers.txt and paste each line to a notepad document:

1 | FOR | EACH | LINE IN | C:\Users\steph\Dropbox\Macro\File\numbers.txt | DO
2 | 760 | 842 | 350 | Left Click Down
3 | 760 | 842 | 350 | Left Click Release
4 | 190 | 262 | 350 | Keypress %line%
5 | 190 | 262 | 350 | Keypress enter
6 | 206 | 295 | 350 | Keypress f4
7 | 206 | 295 | 350 | Keypress f4
8 | FOR | NEXT

minimousemacro_foreachlineinfilepaste.gif

User: din

Date: Jul 7, 2021 12:00:15 GMT

OMG this is awesome ! Thanks a million for helping out !!!


Macro Priority

URL: https://minimousemacro.proboards.com/thread/440/macro-priority
Date: Jun 22, 2021 8:27:35 GMT

User: syu

Date: Jun 22, 2021 8:27:35 GMT

Hi, so I basically has 2 sets of macro that runs at specific intervals for a program, and 1 macro that will relaunch the program when it crashes. The macro has different priority, Macro 1 (6 minutes) is more important than Macro 2 (1 minute). That’s easy enough to do, I just do a window title check, if macro 1 is running, macro 2 will auto exit. But this isn’t perfect because if macro 1 starts when macro 2 is in process, then it gets screwed up. Now my issue is that, I want the restart Macro to be more important than Macro 1 and 2. But there’s a risk of Macro 1 and 2 launching when it’s in the restart process (which takes about 1 minute). The macro cannot be combined because it’s dealing with time sensitive stuff that is not divisible by each other. There must be a more elegant solution, but I am not able to see it. Doing a window title check is an imperfect solution. The behaviour I am looking for is: Restart macro > Macro 1 > Macro 2 So even if Macro 1 is in progress, when the program crashes, restart macro takes priority and macro 1 can just end its own task. Is there some evaluation priority setting somewhere? Does anyone has a better solution?

User: Steve

Date: Jun 22, 2021 9:41:07 GMT

If you can’t use Window Title to control your macro have you considered using variables passed between the running instances? Once way to do this is by using INPUT FROM FILE ( <www.turnssoft.com/conditions.html#inputfromfile> ), here’s an example minimousemacro.proboards.com/thread/245/input-file-string-multiple-lines . You say you can’t do this with MMM because it’s dealing with time sensitive stuff.  Can you give me an example of what exactly it’s trying to do?  just a small snippet of how your working with the three macros together will help.

User: syu

Date: Jun 22, 2021 11:29:28 GMT

It’s nothing complicated for the macro itself, everything is just mouse clicks and mouse movement for all the macros. I don’t think you need to see snippets because it’s all mouse movement and mouse left click down and release mostly. The slightly complicated part is just that macro 2 has to be performed every 8 minutes and will take 1 minute to finish. Macro 1 every 70 minutes and takes 6 minutes. Each macro does different actions, so if they run together they will move the mouse in different directions and clicking different things. The restart macro is also mostly mouse movement, clicks, with a little typing. Hmm, I saw the input from file and I am thinking how to incorporate it with my macro. I am not seeing it yet.

User: philranger

Date: Jun 24, 2021 14:56:21 GMT

Hello 8x9=72 so you can’t mathematically run a 6 minutes macro at 70 minutes On top of that, timing is not exact in MMM as it depends on extra time needed to run the commands themselves + whatever delays Windows adds. What I would do is a macro that calls macro 1 seven times (7*(8+1) is roughly 64 minutes when counting additional delays) then wait 6 minutes, call macro 2, wait for it to end, then start again. But I would put ir all in a single macro to avoid those kind of issues. Your mileage may vary ;-)

User: syu

Date: Jun 25, 2021 7:01:50 GMT

Sorry I am a bit confused. Maybe there is a miscomm somewhere. Let me try to re-explain the problem. Macro 1: 6 minutes running duration, activates every 70 minutes. So it only run once every 70th minute. Macro 2: 1 minute running duration, activates every 8.5 minutes. Only runs once every 8th minute and 30 seconds in. The 2 macro will run indefinitely. Because they are indefinite, at one point macro 2 will clash with macro 1. That’s why I want to have some sort of priority where Macro 1 will always be prioritized. So for example, when macro 1 is running, macro 2 will check window title when it starts and if it detects macro 1 window title, it will end its own task (macro 2 end task). The small hiccup is when macro 2 is running and macro 1 starts. How do I make sure that macro 1 will always be prioritized? This is the crux of the issue for me. While I am typing this, I am wondering if it’s possible to do a condition inside macro 1 (IF macro 2 window title exists, kill macro 2 window) Maybe I will try it out. I hope I explain it better now.

User: Steve

Date: Jun 25, 2021 9:52:11 GMT

How are you launching macro 1? I’m assuming your using windows task scheduler or something the like? How about forcibly killing off any current running minimousemacro.exe instances prior to calling macro 1: C:\Users\steve\minimousemacro>taskkill /F /IM minimousemacro.exe /T & MiniMouseMacro /m /e /d:2000 “d:\Macro Files\mymacro.mmmacro” Here’s some info on command line switches taken from the FAQ page : 5491027.png?483.8009049773756

User: syu

Date: Jun 25, 2021 11:37:27 GMT

Yes, Task scheduler. Sounds like a solution! I’ll try it out.


Loading variables programmatically

URL: https://minimousemacro.proboards.com/thread/434/loading-variables-programmatically
Date: Jun 19, 2021 17:14:14 GMT

User: Trey

Date: Jun 19, 2021 17:14:14 GMT

Use Case: I’ve got a table, and I’d like to loop through each row in the table, running a macro for each iteration. Each iteration, I want to update the variables using the values of the row for that iteration. How do I pass a new set of variables on each macro run?  Ideally, I’d like to call the macro from the command line with a new set of variables for that macro iteration.

User: philranger

Date: Jun 19, 2021 23:54:35 GMT

Hello, I often treat table elements from MS-Word or Excel. I place my cursor in the first cell, do a ctrl-c, paste in a notepad to get rid of the formatting and recopy, then do my treatment and paste to my destination. I then do a keypress tab to move to the next cell in the source table. You could also get your data from a file, but since I never did that I can’t help much. Let us know!

User: zeak

Date: Jun 23, 2021 3:22:09 GMT

Hi Trey & Phil, I am also keen for this as most of my work in in Excel, the main problem is when trying to copy from Excel sometimes it copies as a picture format and therefore cannot be pasted as text. I’ve been trying to work the over way around also, copy something from another source and paste in Excel.

User: philranger

Date: Jun 24, 2021 15:02:43 GMT

Hello To copy from excel or word, i first paste to a notepad to get rid of the formatting, then ctrl-x from there. Slow and cumbersome but works. Saving your excel file as a coma delimited (csv if I remember) may allow you to take calues directly from that file. Microsoft ain’t gonna make it easy for you!


MMM Pro

URL: https://minimousemacro.proboards.com/thread/437/mmm-pro
Date: Jun 21, 2021 3:03:56 GMT

User: tylerciggy

Date: Jun 21, 2021 3:03:56 GMT

Hi. I just bought MMM Pro yesterday, but Windows said it was a risky program. I’m not very sure if this was supposed to happen, I tried to look for it at the forum, but the search wasn’t much help. Thanks in advance.

User: Steve

Date: Jun 21, 2021 6:56:24 GMT

Hi tylerciggy

Windows flags any uncommon unsigned downloadable executable’s as ‘risky programs’. It’s window’s way of ensuring that the person running it is aware that it’s not a Windows well known file. I’ve got a write up at this link on the Mini Mouse Macro FAQ page about the ‘ SmartScreen filter ‘ if you want to take a look at it. I’ve looked into Code Signing MMM Pro in the past and haven’t got around to purchasing a code signing certificate yet. It’s a little expensive but it will probably help stop these SmartScreen warnings from Windows. Mini Mouse Macro is safe and fine to run on your machine.
Here is the latest Virus Total detection if your keen to check it out. If it were bad and a virus or malware things like this forum wouldn’t exist and we’ve been going for years now here. Any questions on this one please send them through. Cheers, Steve.

User: tylerciggy

Date: Jun 22, 2021 0:10:13 GMT

I’m confident in your program. I just wanted to know if this was “normal”. I’ve seen lots of news of business that got ransomware and I just wanted to confirm this was due to the certificate being too expensive as I already thought.

User: tylerciggy

Date: Jun 22, 2021 0:21:52 GMT

Well, I don’t want to create any heat but I found different results about the hash. My free (old 8.0.0.0) version of MMM when I uploaded to VirusTotal recognizes it as: virussign.com_e1e98a458b998230d96bfe6aa227d530.vir strange name, although I don’t really know how virustotal works about names. b9d6ca1e0f.png ——-

The MMM Pro is recognized as MiniMouseMacro.exe (even that I renamed it to MMM.exe) 870a5818b8.png The hash of my MMM Pro doesn’t coincide with yours (although yours is probably the Free version, because of the size)

User: Steve

Date: Jun 22, 2021 6:54:49 GMT

defaultavatar.png Jun 22, 2021 0:21:52 GMT

tylerciggy said: Well, I don’t want to create any heat but I found different results about the hash. My free (old 8.0.0.0) version of MMM when I uploaded to VirusTotal recognizes it as: virussign.com_e1e98a458b998230d96bfe6aa227d530.vir strange name, although I don’t really know how virustotal works about names. The MMM Pro is recognized as MiniMouseMacro.exe (even that I renamed it to MMM.exe) The hash of my MMM Pro doesn’t coincide with yours (although yours is probably the Free version, because of the size) Yes the hash I have is for the free version.  The sha256 for the latest pro (8.2) is 0894174d4c47b9ab6d829907c3dce9e79ce9c138b213cb673c7005c5d4de9d52 .


How to wait for a window to exist without fixed wait time

URL: https://minimousemacro.proboards.com/thread/438/wait-window-exist-fixed-time
Date: Jun 21, 2021 7:15:48 GMT

User: iris

Date: Jun 21, 2021 7:15:48 GMT

Hi all, in my Macro I’d like to wait for a window to exist. The scenario is that I’m starting software from the desktop, and want to click a button in the software as soon as it has started. However, it takes a bit of time for the software to start. I don’t want to specify a fixed wait time, because it would need to be unnecessarily large in order to be sure that the Window exists by the time the Macro continues. I do not understand how to create this functionality with the condition options that MMM provides. I can check for a Window to exist or not, but if it doesn’t exist (YET), how do I wait? Pausing the Macro requires user input to resume it. Ideally I would like to have a ‘WHILE’ type condition. Does anyone have a clue on how to achieve this? Thanks in advance.

User: Steve

Date: Jun 21, 2021 8:12:07 GMT

Hi iris

What you need is the CONTINUE ( <www.turnssoft.com/conditions.html#continue> ) action with WINDOW TITLE ( <www.turnssoft.com/conditions.html#windowtitle> )

1 | IF | WINDOW TITLE | Untitled - Notepad | EXIST | CONTINUE
2 | RUN ACTION | MESSAGE PROMPT | The window title was Found!::Found!::0::Information

In the example above we wait for the new notepad document with the window title ‘Untitled - Notepad’ to open. When MMM finds the window title we go to line 2 and run a message prompt. minimousemacro_windowtitlewait.gif

User: iris

Date: Jun 21, 2021 13:55:20 GMT

Hi Steve, thank you for your reply. I’d swear that’s the first thing I tried, because it makes most sense to me. Whatever I did before, it failed, but now it works. Thanks!


pixel range

URL: https://minimousemacro.proboards.com/thread/436/pixel-range
Date: Jun 20, 2021 15:16:17 GMT

User: asemmohsen

Date: Jun 20, 2021 15:16:17 GMT

hello im kinda new to mmm when i use pixel range in a wide range for example  1 | IF | PIXEL RANGE | At Location [X:754 Y:14]::Size [W:200 H:150] | CHANGES::1::0::0 | continue it continues but i need to move my mouse location to the exact location where it changed

User: Steve

Date: Jun 21, 2021 8:02:25 GMT

Hi asemmohsen Moving to the change pixel can’t be done with MMM at the moment (version 8.2 and below).
I’ve been working on pixel and image conditions for version 8.3 and have most likely have that feature for the next release . Keep an eye out for the next release. Hopefully I can get it out in a few weeks. Cheers, Steve.


Shortcut specific keys to open specific macros

URL: https://minimousemacro.proboards.com/thread/435/shortcut-specific-keys-open-macros
Date: Jun 19, 2021 22:42:53 GMT

User: Jaeger

Date: Jun 19, 2021 22:42:53 GMT

Hey, is there a way to create a shortcut within MMM to open a specific macro when pressing that key or combination of keys? Like for example: MOUSE4 automatically opens a macro that stops/resumes the music and then continue the macro itself until Action Exit or something like that. If that’s not possible, is there any workarounds to achieve something like this? (More specifically what i want it to do is pause/resume music and press Ctrl + M)

User: philranger

Date: Jun 19, 2021 23:59:18 GMT

Play and pause a macro can be done using standard “hotkeys” that you assign to whichever key you want. If you want to be able to launch different macros, you’ll need the “pro” version, for a whopping 10$

User: Steve

Date: Jun 20, 2021 0:21:27 GMT

Jun 19, 2021 22:42:53 GMT Jaeger said: Hey, is there a way to create a shortcut within MMM to open a specific macro when pressing that key or combination of keys? Like for example: MOUSE4 automatically opens a macro that stops/resumes the music and then continue the macro itself until Action Exit or something like that. If that’s not possible, is there any workarounds to achieve something like this? (More specifically what i want it to do is pause/resume music and press Ctrl + M) Hi Jaeger, I think you might be after ‘Quick Launch’ (program options - quick launch). Have a look at this thread on how to use it minimousemacro.proboards.com/thread/243/multiple-hotkeys .


Run Action wait does not work

URL: https://minimousemacro.proboards.com/thread/317/run-action-wait-work
Date: Oct 12, 2020 12:44:54 GMT

User: syu

Date: Oct 12, 2020 12:44:54 GMT

I am trying to run a macro within a game that’s on windowed mode. I record the action as expected, and stop by clicking the stop button (because im connecting through remote desktop, the F8 and F10 doesn’t work, but the mini macro is within the remote computer so it should be counted as local). After I am done, I want to have the action repeated every 70 minutes. The action is kind of complex, and i recorded 7k lines for it (mouse option ticked). They play back as expected when it’s an immediate loop. But I am trying to have it repeat every 70 minutes so I used the Add Condition at the very last, Run Action, Wait 70 minutes. It makes sense that it’s waiting and it should loop when the last line is done, but it isn’t. I am using mini mouse macro pro. I verified that the last line of waiting is completed by looking at the code lines, they finished the course, but they just don’t loop. I tried waiting in seconds, also no dice. There are logging in and off the remote computer, but that computer has a proper monitor and mouse and everything so I assumed as long as the mini mouse macro is locally run there, i shouldn’t encounter any issue. Any ideas what I might’ve done wrong?

User: Steve

Date: Oct 17, 2020 21:48:27 GMT

Hi syu

I don’t think that your connection through remote desktop should be a contributing factor to this failing.
You say your macro is complex with 7K lines. Have you tried a simple loop test just to confirm your syntax is ok?
Check the ‘loop’ checkbox and run this:

1 | X | X | 500 | Mouse Movement
2 | X | X | 500 | Mouse Movement
3 | X | X | 500 | Mouse Movement
4 | X | X | 500 | Mouse Movement
5 | RUN ACTION | WAIT SECONDS | 5

This should loop fine with no errors. If this works through your remote desktop then i’d say the problem might sit somewhere with your 7K macro. Have you tried an alternative to loop? Do not check the ‘loop’ checkbox and instead use a GOTO statement:

1 | X | X | 500 | Mouse Movement
2 | X | X | 500 | Mouse Movement
3 | X | X | 500 | Mouse Movement
4 | X | X | 500 | Mouse Movement
5 | RUN ACTION | WAIT SECONDS | 5
6 | RUN ACTION | GOTO MACRO LINE | 1

GOTO conditions only work if your macro is sorted correctly (right click ‘relist rows’). GOTO reads the line numbers at the beginning of each line. Give these a try. Let me know how you go. I’d be interested to see if the problem is somehow related to the remote desktop session.
Regards, Steve.

User: philranger

Date: Oct 23, 2020 13:49:25 GMT

Could it be that the remote computer goes to screen saver or logs off during those 70 minutes?  If so, maybe just moving the mouse every 5 minutes would do the trick.

User: syu

Date: Jun 19, 2021 4:15:38 GMT

Hi, sorry it is a very late reply. I found a solution and forgot about this thread. Basically I just kill the Mini Mouse Macro at the end of the macro and instead of trying to loop every 70 minutes, I just schedule the task in task scheduler to start a new instance every 70 minutes. That works perfectly. Regarding the F7 or F8 not working, that’s just the shortcoming of the program i’m trying to automate. No shortcut works as long as that window is in focus. Thanks though, for the possible solutions offered. I hope this thread can help anyone who stumbled upon it while googling.

User: philranger

Date: Jun 19, 2021 14:01:02 GMT

Hello Syu, Thank you very much for coming back with a working solution for all of us. The more we know, the better we can help. Have a great day!


How do I make my macro wait a random number of seconds?

URL: https://minimousemacro.proboards.com/thread/321/make-macro-random-number-seconds
Date: Oct 20, 2020 21:07:39 GMT

User: cark

Date: Oct 20, 2020 21:07:39 GMT

I have been stumbling around on the forums, the website and youtube to try and get my macro working, but I appear to be doing something incorrectly as my macro seems to fail at the second line and dow The code snippet I am trying to run is below:

1 | 446 | 225 | 100 |  Left Click Down
2 | 446 | 225 | 103 |  Left Click Release
3 | RUN ACTION | WAIT SECONDS | %random_5-10%
4 | 446 | 225 | 359 |  Left Click Down
5 | 446 | 225 | 127 |  Left Click Release
6 | RUN ACTION | WAIT SECONDS | %random_5-10%
7 | 926 | 225 | 100 |  Left Click Down
8 | 926 | 225 | 102 |  Left Click Release
9 | RUN ACTION | WAIT SECONDS | %random_5-10%
10 | 926 | 225 | 295 |  Left Click Down
11 | 926 | 225 | 112 |  Left Click Release
12 | RUN ACTION | WAIT SECONDS | %random_5-10%
13 | 1406 | 225 | 100 |  Left Click Down
14 | 1406 | 225 | 126 |  Left Click Release
15 | RUN ACTION | WAIT SECONDS | %random_5-10%
16 | 1406 | 225 | 312 |  Left Click Down
17 | 1406 | 225 | 104 |  Left Click Release
18 | RUN ACTION | WAIT SECONDS | %random_5-10%

The intent is to make the macro wait a random number of seconds (somewhere between 5 and 10 seconds) between each mouse click down and mouse click release. Any tips or advice on how to fix it would be greatly appreciated.

User: Steve

Date: Oct 21, 2020 8:32:02 GMT

Hi cark

At first glance your code looks ok.
I noticed the errors after I ran it. Its your space after the delim char for all your Left Click lines. You have this:

1 | 446 | 225 | 100 |  Left Click Down
2 | 446 | 225 | 103 |  Left Click Release

You should have this:

1 | 446 | 225 | 100 | Left Click Down
2 | 446 | 225 | 103 | Left Click Release

Alternatively you could also combine the down and release into one line like this:

1 | 446 | 225 | 100 | Left Click

Hope this helps. Steve.

User: Steve

Date: Oct 21, 2020 8:41:25 GMT

defaultavatar.png Oct 20, 2020 21:07:39 GMT

cark said: The intent is to make the macro wait a random number of seconds (somewhere between 5 and 10 seconds) between each mouse click down and mouse click release. Any tips or advice on how to fix it would be greatly appreciated. Oh - to answer off the main question “How do i make my macro wait a random number of seconds?” Your syntax was good for that:

1 | RUN ACTION | WAIT SECONDS | %random_5-10%

I’d say this was failing in your macro because of your errors in the lines prior. A tip would be to use a for loop with this macro to loop through your five clicks. Your macro could be condensed down to this:

1 | FOR | I | = | 0 TO 5 | NEXT
2 | 446 | 225 | 100 | Left Click
3 | RUN ACTION | WAIT SECONDS | %random_5-10%
4 | FOR | NEXT

User: Victor

Date: Jun 9, 2021 16:31:00 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Oct 21, 2020 8:32:02 GMT

Steve said: Hi cark

At first glance your code looks ok.
I noticed the errors after I ran it. Its your space after the delim char for all your Left Click lines. You have this:

1 | 446 | 225 | 100 |  Left Click Down
2 | 446 | 225 | 103 |  Left Click Release

You should have this:

1 | 446 | 225 | 100 | Left Click Down
2 | 446 | 225 | 103 | Left Click Release

Alternatively you could also combine the down and release into one line like this:

1 | 446 | 225 | 100 | Left Click

Hope this helps. Steve.

Hey Steve, i’m pretty much new to coding macros but i want to learn some stuff to make my work a bit easier. I already have a macro made for a part of my work and i did it as best as possible, but, i would like to make it more complex by adding some extra steps with some conditions and variables, for example, i need to code the macro to press Right key for a random amount of seconds before releasing it. Could i do it this way in order for it to work as i intend it to? (I’ll just copy paste the lines already used on this thread just to make the example)

1 | 446 | 225 | 100 | Left Click Down
2 | RUN ACTION | WAIT SECONDS | %random_5-10%
3 | 446 | 225 | 103 | Left Click Release

I think i explained it correctly, idk, but if you think there’s a better way to do it let me know smiley.png

User: philranger

Date: Jun 12, 2021 19:19:14 GMT

Hello Do you mean right click or the « arrow right » on the keyboard Case 1: use right click instead of left. Rest of your code looks ok Case 2: use Keypress right.

Edit: ever mind, I see Steve answered the new topic

User: Steve

Date: Jun 13, 2021 1:15:38 GMT

yep answered here minimousemacro.proboards.com/post/1777/thread


Macro run from scheduler not progressing

URL: https://minimousemacro.proboards.com/thread/427/macro-run-scheduler-progressing
Date: Jun 5, 2021 8:34:40 GMT

User: Unknown User

Date: Jun 5, 2021 8:34:40 GMT

I am using MMM Pro and have set up a macro to click on a “connect” button in a window on a PC used as a logger for solar and weather data. The macro works fine when I am logged on although I have to run as an Administrator and allow permission when running the macro for the click to activate. I have the macro running in Scheduler with the highest permissions so it will start up with the other programs when unattended. However although the macro starts and shows completed the curser has only gone to the button without progressing the click. Is there a solution to my problem or is this a limitation of the program and windows UAC.

User: philranger

Date: Jun 5, 2021 19:21:41 GMT

Hello, Troubleshooting unattended stations is always difficult. Are you sure it Is completely logged in and that the button had time to both display and come into focus? Maybe adding a second click 1/2 second later?

User: Steve

Date: Jun 5, 2021 21:13:06 GMT

defaultavatar.png Jun 5, 2021 8:34:40 GMT @apple8 said: I am using MMM Pro and have set up a macro to click on a “connect” button in a window on a PC used as a logger for solar and weather data. The macro works fine when I am logged on although I have to run as an Administrator and allow permission when running the macro for the click to activate. I have the macro running in Scheduler with the highest permissions so it will start up with the other programs when unattended. However although the macro starts and shows completed the curser has only gone to the button without progressing the click. Hi @apple8 I have to agree with philranger here. It can be difficult to troubleshoot these kinds of issues. Saying that though, this thread here has some good discussion on it minimousemacro.proboards.com/thread/161/remote-apps-receive-keystrokes that might help. defaultavatar.png Jun 5, 2021 8:34:40 GMT @apple8 said: Is there a solution to my problem or is this a limitation of the program and windows UAC. Some windows events MMM needs to be run with Administrator permissions ‘run as administrator’. I’ve seen this as a requirement when MMM clicks into some system dialogs. If your running MMM as administrator then we can remove UAC from the most part of this issue.

User: Unknown User

Date: Jun 6, 2021 6:48:37 GMT

USoWV0dWXmFkYDAjTGiw.jpg Jun 5, 2021 19:21:41 GMT

philranger said: Hello, Troubleshooting unattended stations is always difficult. Are you sure it Is completely logged in and that the button had time to both display and come into focus? Maybe adding a second click 1/2 second later? I had thought of a second click and do have it in the macro but to no avail. I also have a delay before the click to ensure the other program has started. Your comment on being completely logged in is interesting as when I manually log in before the programs finish loading from scheduler everything works ok as it does if I run the macro manually from scheduler. I thought that as the scheduler runs the macro on log in that windows has started with the user logged in. Maybe there is more to this that I’m aware of. zYUXthOzrjcewgAIreZO.png

User: Unknown User

Date: Jun 8, 2021 23:40:36 GMT

This has just about got me beat. I have tried a number of settings and get the same result. The log files show the macro runs and completes all the commands but in reality the cursor moves to the designated position stops there with any mouse click initiated. I have tried on a PC and a laptop to start different windows with no result. I had tried another macro recorder that did work satisfactorily but was an on going three month subscription which made it uneconomic for sporadic use. So my question is has anyone been able to replicate with success what I am trying to achieve that might give me some hope? If it can’t be achieved in the current version of MMM is there likely to be an update to include it in a future version?

User: Steve

Date: Jun 9, 2021 6:33:39 GMT

defaultavatar.png Jun 8, 2021 23:40:36 GMT @apple8 said: So my question is has anyone been able to replicate with success what I am trying to achieve that might give me some hope? If it can’t be achieved in the current version of MMM is there likely to be an update to include it in a future version? @apple8 have a look at this post about MMM on a Win VPS minimousemacro.proboards.com/thread/291/mmm-on-vps , some success was had here on this thread minimousemacro.proboards.com/post/1292/thread . It might help. Is it likely to be in an update to a future version? Probs not. MMM needs to hook into aspects of the environment that are not present in an unattended session. To put it another way, MMM needs a real active desktop and a live functioning user for mouse events. MMM has a few remote like features. Have a look here <www.turnssoft.com/remote.html> and here <www.turnssoft.com/conditions.html#remote> . It might trigger some ideas.

User: Unknown User

Date: Jun 10, 2021 1:29:24 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jun 9, 2021 6:33:39 GMT

Steve said: defaultavatar.png Jun 8, 2021 23:40:36 GMT @apple8 said: So my question is has anyone been able to replicate with success what I am trying to achieve that might give me some hope? If it can’t be achieved in the current version of MMM is there likely to be an update to include it in a future version? @apple8   Is it likely to be in an update to a future version? Probs not. MMM needs to hook into aspects of the environment that are not present in an unattended session. To put it another way, MMM needs a real active desktop and a live functioning user for mouse events. Ok, I understand now, the screen has to be displayed to achieve my idea. It did give a thought that a transparent screen lock  might work but I don’t think I will bother. It would be nice to have full auto but I can manually install Windows updates that need a restart and then restart the inverter software at the time or use a remote desktop in the event of an extended power failure if I am away.


Error processing a line, Index outside the bounds…

URL: https://minimousemacro.proboards.com/thread/418/error-processing-index-outside-bounds
Date: May 17, 2021 19:02:26 GMT

User: arcylix

Date: May 17, 2021 19:02:26 GMT

I have a macro that does work, but I get the error listed below. It doesn’t seem to mess anything up, but I’m curious why it produces the error. Any thoughts?

27 | IF | INTEGER VARIABLE | %INTEGER2% | GREATER THAN | %INTEGER3% | CLEAR | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::1 | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::180 | ELSE | 27 | CONTINUE - An unexpected error occured processing this line: Index was outside the bounds of the array.

N.B. - “occured” is misspelled. It should be “occurred”.

User: Steve

Date: Jun 5, 2021 20:56:40 GMT

Hi arcylix

Firstly, sorry for the delay on the reply here. This thread has been up for a couple of few weeks now and I do appreciate you taking the time to create an account and share your comments with the MMM community here. It looks like you’ve got a syntax error here. This :

27 | IF | INTEGER VARIABLE | %INTEGER2% | GREATER THAN | %INTEGER3% | CLEAR | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::1 | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::180 | ELSE | 
27 | CONTINUE

should be :

27 | IF | INTEGER VARIABLE | %INTEGER2% | GREATER THAN | %INTEGER3% | CLEAR | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::1 | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::180 | ELSE | 
27 | RUN ACTION | CONTINUE

but it is effectively this :

27 | IF | INTEGER VARIABLE | %INTEGER2% | GREATER THAN | %INTEGER3% | CLEAR | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::1 | AND | 27 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::180

You don’t need the final else statement for CONTINUE in your statement. If the ‘IF’ condition were to be false you would be moving to line 28 which is the same as the ‘CONTINUE’ action. Why did it produce the error? MMM has some real strict syntax checking. It is expecting the

27 | RUN ACTION | CONTINUE

but it gets

27 | CONTINUE

. At run time MMM loads the statement reading it into an event array where it is expecting the syntax to be a specific length. When it’s not that length we get “ Index was outside the bounds of the array. “ Which is really saying “ This macro line has incorrect syntax. “. Hope that helps.

User: arcylix

Date: Jun 7, 2021 15:20:39 GMT

Ah, that makes sense. I will point out, however, that I was using the examples found here. CONTINUE action is used for macro flow control. Consider the CONTINUE example statement below taken from a macro condition:

1 | IF | FILE | C:\rescue.log | EXIST | CONTINUE

This reads - IF the FILE c:\rescue.log does EXIST then CONTINUE the macro.  So if the file is present on the system at the time of the condition evaluation then continue running the macro.  The macro will only continue if the file exists. Note: Continue is a useful action to apply if you want to wait until an object is evaluated as true.  Take the example above, this will only evaluate and continue to the next macro line once the file c:\rescue.log does exist. Consider this CONTINUE example statement below taken from a macro PIXEL condition:

1 | IF | PIXEL COLOR | At Location [X:2768 Y:602] | CHANGES::2::0::200 | CONTINUE

This reads - IF the PIXEL COLOR at mouse location X 2768 and Y 602 does change 2 times, with 0 timeout value, and with a 200 milliseconds delay between changes, then CONTINUE the macro. Consider this CONTINUE statement as a further example:

1 | IF | FILE | C:\rescue.log | FILE CONTAINS STRING | Hello | CONTINUE

This reads - IF the FILE c:\rescue.log does CONTAIN the STRING ‘Hello’ then CONTINUE.  Only if the word ‘Hello’ is within the file will the macro continue.  The macro will continue to read the file on a loop until the word Hello is found.  Only then will the macro continue. I don’t know if it was an oversight, or if the ELSE condition makes it require RUN ACTION, but I will modify it based off what your suggestions are. Thanks for the assist, and I’m quite happy with MMM being my go-to at work. Cuts out over an hour of day of manual labor!

User: Steve

Date: Jun 7, 2021 20:40:33 GMT

Thanks arcylix . I think i see where the confusion is. The CONTINUE doco examples you point out are the correct syntax for continue and show some typical use cases.  The difference here is your use of the ELSE statement. Your line 27 has continue evaluating after an ELSE statement.  MMM is expecting a full condition statement after an ELSE. Have a look at the ELSE doco ( <www.turnssoft.com/conditions.html#else> ) this might help clarify.  ELSE ELSE is used with either IF or the IF NOT conditions to allow further evaluation to continue if the condition does not evaluate to TRUE.  To put it another way, ELSE can be thought of as ‘otherwise do this’ if the first condition fails.  An ELSE condition can not be used when the initial condition has the CONTINUE action.  This is because with the CONTINUE action the condition must evaluate to TRUE prior to continuing the macro. Consider the following example:

1 | IF | FILE | C:\MMM\Skip.mmmacro | EXIST | GOTO MACRO LINE | 5 | ELSE | 1 | RUN ACTION | GOTO MACRO LINE | 2

So if the file C:\MMM\Skip.mmmacro does EXIST then the macro will GOTO MACRO LINE 5 but if the file does not exist then RUN the ACTION to GOTO MACRO LINE 2. ELSE can further be used to evaluate subsequent conditions.  For example: IF | FILE | C:\MMM\Skip.mmmacro | EXIST | GOTO MACRO LINE | 5 | ELSE | 1 | IF | FILE | C:\MMM\Skip2.mmmacro | EXIST | GOTO MACRO LINE | 10 Here if the first condition evaluates to false, the file does not exist, then the second condition will be evaluated. Note: To add ELSE to a condition select the ‘ELSE’ checkbox option within the ‘Add Condition’ window.  It is best to do this after you set your first condition.  For example:    Create your initial IF or IF NOT condition - do not click ok.    Check the ‘ELSE’ checkbox.    Now select either IF, IF NOT, or RUN ACTION condition - This will add the condition after the ELSE.        [LINE #] | [FIRST CONDITION] | ELSE | [LINE #] | [CONDITION]        or for a RUN ACTION condition: [LINE #] | [FIRST CONDITION] | ELSE | [LINE #] | [ACTION]    Select your OBJECT - this will add an object condition after the condition.        [LINE #] | [FIRST CONDITION] | ELSE | [LINE #] | [CONDITION] | [OBJECT]    Now complete the ELSE line by selecting the OPERATOR and ACTION.        [LINE #] | [FIRST CONDITION] | ELSE | [LINE #] | [CONDITION] | [OBJECT] | [OPERATOR] | [ACTION]    It is best to follow this procedure for each ELSE condition added.


Save the name of the focus windows

URL: https://minimousemacro.proboards.com/thread/419/save-name-focus-windows
Date: May 20, 2021 15:04:41 GMT

User: emirolopez

Date: May 20, 2021 15:04:41 GMT

Somebody know how to copy the name of the focus windows or save in a %STRING%, that help me a lot.

User: philranger

Date: May 20, 2021 20:54:06 GMT

Hello! I don’t know how to do that but I do use a keypress of alt+ | tab to switch from one window to another. I think the other combo is the windows key + tab, and then the arriw keys (can’t check now, I’m on my phone). Hope that will work for y’all!

User: Steve

Date: Jun 5, 2021 21:01:54 GMT

defaultavatar.png May 20, 2021 15:04:41 GMT

emirolopez said: Somebody know how to copy the name of the focus windows or save in a %STRING%, that help me a lot. emirolopez MMM can’t do this natively but if you figure it out, maybe using something external, i would love to know how you did it. I see where this could really be useful for MMM.


Remote apps do not receive keystrokes

URL: https://minimousemacro.proboards.com/thread/161/remote-apps-receive-keystrokes
Date: Apr 25, 2019 7:56:50 GMT

User: julianr

Date: Apr 25, 2019 7:56:50 GMT

Hi! I have run into a weird problem, I have some remote apps on my system (client Windows 7 x64 pro, apps on Windows Server 2012 R2), and while I can send mouse movement and mouse clicks without a problem, keystrokes recorded by a macro do not work. I have tried to send keystrokes to several remote apps including notepad, but to no avail. Keystrokes work fine on local apps. The only way I can send keystrokes to remote apps is by using an onscreen keyboard and clicking on necessary keys. Is there a way to fix this issue?

User: Steve

Date: Apr 27, 2019 1:00:47 GMT

Hi, I’m always interested in working with MMM remotely. I’ve added several conditions to work with remote MMM instances over a network: IF Network Host Ping Reply IF Network Packet Detected IF Received UDP Packet String IF TCP Port Open ACTION Send UDP Packet String I’ve been slowly working on the terminal to provide some extra network functionality. To answer you question, firstly it all depends on how you are working remotely with MMM. How are you working with your ‘remote apps’? You mention a 2012 Server. Are you using a remote desktop session via windows RDP from your Windows 7 host? If so, MMM and clicking into remote desktop session will not work. MMM internally works by referencing the ‘local hosts’ windows library to make function calls to the desktop. In short it can only ‘click’ on the local machine and not through a virtual machine. Interaction with a remote host though it can do through the network as explained above in the list. It can be more complicated through. It can push and run a .mmmacro file or directly push mouse and keyboard actions to the remote host.

User: julianr

Date: May 9, 2019 8:46:38 GMT

Hi, MMM is running locally on my desktop, and those remote apps are running without remote desktop, just like normal local desktop apps. The only noticeable difference between them and the rest of my desktop apps is that they look like windows 8 edgy gui instead of windows 7 areo gui. And they stop working if connection drops on either side. I don’t have access to remote desktop on that server, I can only run remote apps, and through ctrl+alt+end I can run remote task manager and run some extra apps, like remote notepad. MMM can do mouse clicks on those windows (so I can use right click menu to copy and paste data into and from those apps), like on any other local app, but keystrokes don’t work, unless i use onscreen keyboard (local desktop app) and click each key with a macro (which is sometimes problematic due to limited screen space).

User: Steve

Date: May 10, 2019 5:52:05 GMT

Im not really sure on this one julian. i’m not familiar with running apps like that with Windows systems.
The fact that mouse works and not keyboard is a bit strange. Usually symptoms like you are describing are the result of trying to run MMM on a target that is not using the local windows environment for it’s system calls. Such as like embedded Java, or a host virtual machine. I suspect that the remote apps are somewhat virtualized?? (again, im not familiar with running remote apps on windows). If that is the case then I would guess it falls into this category.

User: julianr

Date: May 10, 2019 6:44:24 GMT

Seems to be the case. Microsoft indeed calls this app virtualization.

User: KenD

Date: Jul 30, 2019 6:12:35 GMT

I copied Mini Mouse .exe to the server and all keystrokes and mouse movements work

User: rockytdr

Date: Sept 13, 2019 8:13:06 GMT

defaultavatar.png Apr 25, 2019 7:56:50 GMT

julianr said: I have some remote apps on my system, and while I can send mouse movement and mouse clicks without a problem, keystrokes recorded by a macro do not work. I have tried to send keystrokes to several remote apps including notepad, but to no avail. Keystrokes work fine on local apps. The only way I can send keystrokes to remote apps is by using an onscreen keyboard and clicking on necessary keys. Is there a way to fix this issue? I have experienced the same problems while using remote apps via “Citrix Workspace”. Normal keys are working (letters, numbers), but arrow keys or enter key don’t work. Using the “Tiny Task” app however, all keys DO work. Apparently, there is a difference in the way keys are recorded or sent to the system. At the moment i’m using MMM because of its versatility, so I just work around the arrow and enter issue by using mouse clicks. I would love to see this fixed though!

User: BKSteve

Date: May 28, 2021 3:36:27 GMT

I have the same problem while using remote SAP apps via “Citrix Workspace”. Normal keys work (letters, numbers), but arrow keys or enter key don’t work. Using the “Tiny Task” app however, also does NOT work and using mouse movements is somewhat troublesome as the screen position moves based on a number of instances. I am also unable to install mmm on the remote machine per other posts. Any suggestions on what to try?

User: philranger

Date: May 31, 2021 18:09:19 GMT

For consistent windows position, you can maybe try to maximize them (windows key + up, twice)


Looking for an image

URL: https://minimousemacro.proboards.com/thread/422/looking-image
Date: May 30, 2021 23:14:19 GMT

User: fmxvxx

Date: May 30, 2021 23:14:19 GMT

Hey guys Apologies if this is basic but i’m just starting out with these sorts of macros. I am trying to get a macro to start at the bottom of a page and page up until it finds the image and then repeat onto the next tab, as far as i can from the help I want to use if not statement but i cannot get it to play ball anyone able to offer any insight? This is what i’ve come up with so far lines 1-5 are setting the page correctly  line 6 is the action line 7 the condition then line 8 is to go to the next tab to repeat the process

1 | 674 | 216 | 1008 | Left Click
2 | 638 | 781 | 1482 | Left Click
3 | 898 | 222 | 1482 | Left Click
4 | 963 | 291 | 1117 | Left Click
5 | 663 | 229 | 1500 | Keypress END
6 | 963 | 291 | 10 | Keypress UP
7 | IF NOT | PIXEL RANGE | At Location [X:740 Y:536]::Size [W:100 H:50] | CHANGES::1::0::0 | KEYPRESS | GOTO MACRO LINE  | 6
8 | 963 | 291 | 1500 | Keypress Ctrl+ | tab

User: philranger

Date: May 31, 2021 18:07:04 GMT

Hello, I don’t think this wouldn’t know the difference between text and an actual picture. Are you looking through a web page, a word document, a folder?


Keypresses not working properly?

URL: https://minimousemacro.proboards.com/thread/417/keypresses-working-properly
Date: May 12, 2021 16:21:42 GMT

User: arcylix

Date: May 12, 2021 16:21:42 GMT

So, I’m relatively new to MMM, and I have to say I’m already a big fan. I do a lot of repetitive motion at work, and I’ve learned how to increment x/y positions so all I have to do is set it and forget it, generally. Today, I’ve decided to create a new macro that copies a name as well as the initial of the last name. However, it does not seem to be working as intended. Here is the code.

1 | 47 | 195 | 1061 | Left Click
2 | 47 | 195 | 1171 | Keypress Ctrl+ | c
3 | 66 | 228 | 531 | Left Click
4 | 66 | 228 | 317 | Keypress Ctrl+ | v
5 | 416 | 191 | 1172 | Left Click
6 | 414 | 193 | 932 | Keypress home
7 | 414 | 193 | 703 | Keypress Shift+ | RIGHT
8 | 414 | 193 | 844 | Keypress Ctrl+ | c
9 | 110 | 224 | 1265 | Left Click
10 | 110 | 224 | 1153 | Keypress right
11 | 110 | 224 | 506 | Keypress space
12 | 110 | 224 | 1375 | Keypress Ctrl+ | v
13 | 26 | 50 | 3185 | Left Click

This is from creating the macro (excepting that I removed the Left Click Down/Release lines and just replaced with Left click). It will click in the appropriate fields, and it pasted, but did not seem to “copy”. I have verified that Ctrl+ c copies, but it seems to completely bypass that, and I’m not sure what is going on. Am I missing something?

User: philranger

Date: May 17, 2021 12:24:01 GMT

Hello,   Sometimes I have this kind of issues and they go away by delaying the action after the ctrl-c. This happens to me mostly on cloud-based applications, or in Microsoft office (but then typically 300 ms is enough).     You could check that the %CLIPBOARD% variable really contains what you want by looking at its content in the variable sub-window.  Microsoft does some funny things to what should look like a simple text as it embeds it into lots of junk that don’t translate well through MMM.  To work around this, I first paste the content into a notepad then recopy it to be sure it is properly formatted. Best of lucks!

User: arcylix

Date: May 17, 2021 18:58:11 GMT

USoWV0dWXmFkYDAjTGiw.jpg May 17, 2021 12:24:01 GMT

philranger said: Hello,   Sometimes I have this kind of issues and they go away by delaying the action after the ctrl-c. This happens to me mostly on cloud-based applications, or in Microsoft office (but then typically 300 ms is enough).     You could check that the %CLIPBOARD% variable really contains what you want by looking at its content in the variable sub-window.  Microsoft does some funny things to what should look like a simple text as it embeds it into lots of junk that don’t translate well through MMM.  To work around this, I first paste the content into a notepad then recopy it to be sure it is properly formatted. Best of lucks! Thanks! I will give this a try and see if adding the delays helps!


Keep button held while doing other things

URL: https://minimousemacro.proboards.com/thread/414/keep-button-held-doing
Date: May 8, 2021 5:33:26 GMT

User: gavinne

Date: May 8, 2021 5:33:26 GMT

I would keep a button pressed, for example d, the entire time the macro is running. For example hold down the letter d and left click here left-click there release the letter d. Any help would be greatly appreciated. I have tried this and it doesn’t hold 2 down

1 | 913 | 573 | 100 | Keypress 2 | Key Down
2 | 918 | 578 | 10 | Mouse Movement
3 | 926 | 601 | 10 | Mouse Movement
4 | 926 | 617 | 91  | Left Click Down
5 | 926 | 617 | 110 | Left Click Release
6 | 917 | 617 | 10 | Mouse Movement
7 | 800 | 622 | 10 | Mouse Movement
8 | 714 | 621 | 10 | Mouse Movement
9 | 689 | 618 | 10 | Mouse Movement
10 | 572 | 593 | 10 | Mouse Movement
11 | 511 | 597 | 10 | Mouse Movement
12 | 428 | 627 | 10 | Mouse Movement
13 | 424 | 628 | 10 | Mouse Movement
14 | 419 | 629 | 10 | Mouse Movement
15 | 417 | 629 | 100 | Left Click Down
16 | 417 | 629 | 80 | Left Click Release
17 | 419 | 629 | 10 | Mouse Movement
18 | 913 | 573 | 10 | Keypress 2 | Key Release

User: zeak

Date: May 9, 2021 22:59:36 GMT

Hi Gavinne, First of all welcome to the forum. I had just tried something simple and similar, with the same result.

1 | X | X | 1000 | Keypress a | Key Down
2 | X | X | 1000 | Keypress a | Key Release

This should have made line of a’s in notepad but only one showed up. Steve Is this not working anymore?

User: gavinne

Date: May 10, 2021 3:29:35 GMT

Yeah I’m about at my wits end LOL I’m just trying to keep one key held down while moving the mouse around and clicking

User: philranger

Date: May 11, 2021 21:12:04 GMT

Hello,   A quick Google revealed that AutoHotKey seems to provide that feature.  I don’t know if it would be good enough by itself or if a combo with MMM would be needed for your specific application.

User: zeak

Date: May 12, 2021 3:46:02 GMT

Hi Phil, From what I remember MMM use to do this.

User: Steve

Date: May 12, 2021 5:43:41 GMT

Im sure keydown and release for single keys works but I’m having some issues testing it out.
How are you guys testing this?


run macro inline problem

URL: https://minimousemacro.proboards.com/thread/411/run-macro-inline-problem
Date: May 5, 2021 18:25:51 GMT

User: sipsniper

Date: May 5, 2021 18:25:51 GMT

hello.. i have problem triggering macro in aother macro 2 | IF | PIXEL COLOR | Color [R=2, G=122, B=219]::At Location [X:1265 Y:899] | IS THE SAME | GOTO MACRO LINE | 20 when running the macro containing the GOTO command alone does not cause a problem it work perfect but i trigger this macro whith another macro with the this command :

2 | IF | PIXEL COLOR | Color [R=4, G=66, B=185]::At Location [X:1820 Y:945] | IS NOT THE SAME | RUN MACRO INLINE |

goto macro line order  does not work. it doesnt going to macro line. it continious to next line like this command not exist. any idea would help. thanks.

User: zeak

Date: May 5, 2021 22:43:12 GMT

Hi Sipsniper, First of all, welcome to the forum. It is a bit hard to tell the context of what you are trying to do with what you have shared, I personally use remarks when using the ACTION | GOTO MACRO LINE. I have an example below.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::40
2 | RUN ACTION | WAIT SECONDS | 3
* | Action
3 | X | X | 500 | Keypress Ctrl+ | c
4 | X | X | 500 | Keypress Alt+ | tab
5 | X | X | 500 | Keypress Ctrl+ | v
6 | X | X | 500 | Keypress enter
7 | X | X | 500 | Keypress enter
8 | X | X | 500 | Keypress Alt+ | tab
9 | X | X | 500 | Keypress down
10 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-1
11 | IF | INTEGER VARIABLE | %INTEGER% | IS | 0 | STOP
12 | RUN ACTION | GOTO MACRO LINE | Action

In this example I’m using the remark “Action” as an anchor point for the GOTO MACRO LINE. Hope this helps.

User: sipsniper

Date: May 6, 2021 0:32:58 GMT

thanks for the answer and sorry for my bad english smiley.png

i complete the macro contains this command :

2 | IF | PIXEL COLOR | Color [R=2, G=122, B=219]::At Location [X:1265 Y:899] | IS THE SAME | GOTO MACRO LINE | 20

named “xyz.macro” its working perfect. its goes to macro line 20 when its needed but i trigger this macro with another macro named asd.macro with using this command :

2 | IF | PIXEL COLOR | Color [R=4, G=66, B=185]::At Location [X:1820 Y:945] | IS NOT THE SAME | RUN MACRO INLINE | C:\xyz.macro

when i start asd.macro its working, triggers the xyz.macro when needed but “goto marco line” command in xyz.macro not working. its continuous line 3 like this command not exist.

User: Steve

Date: May 6, 2021 7:48:37 GMT

Hi sipsniper

“RUN MACRO INLINE” runs a saved macro file inline before continuing on with the macro.

1 | RUN ACTION | MESSAGE PROMPT | Start
2 | RUN ACTION | RUN MACRO INLINE | D:\Macro\xyz.macro
3 | RUN ACTION | MESSAGE PROMPT | End

At line 2 in the example above we run xyz.macro inline and then proceed to line 3. No flow control actions, such as loops and GOTO’s, can run whilst we run a macro inline. This is because the only flow control that can occur within Mini Mouse Macro is within the current macro list. More on ‘Run macro inline’ here <www.turnssoft.com/conditions.html#runmacroinline> . An alternate would be to run xyz.macro in another instance of MMM. Like this:

1 | RUN ACTION | MESSAGE PROMPT | Start
2 | RUN ACTION | RUN PROGRAM | D:\Macro\MiniMouseMacro.exe::"D:\Macro\xyz.mmmacro" /e
3 | RUN ACTION | MESSAGE PROMPT | End

At line 2 in the above example we start an new instance of MiniMouseMacro and pass that instance the command line option to launch xyz.mmmacro.
More on ‘Run Program’ here <www.turnssoft.com/conditions.html#runprogram> , and more on MMM command line switches here on the FAQ page . Hope this helps. Regards, Steve.

User: sipsniper

Date: May 6, 2021 9:37:29 GMT

hello, thanks for the answer but i cant use RUN PROGRAM it must be runned with inline command because i use infinity loop. this is a conditional automation macro. It should work smoothly on its own. if ı use RUN PROGRAM,

2 | IF | PIXEL COLOR | Color [R=2, G=122, B=219]::At Location [X:1265 Y:899] | IS THE SAME | RUN PROGRAM | c:\xyz.mmmacro

when condition is met on abc.macro’s this line , unlimited new xyz.macro windows open and i dont want to any new window so i must use RUN MACRO İNLİNE command. so there is no way to doing it i think sad.png

User: zeak

Date: May 6, 2021 22:50:03 GMT

defaultavatar.png May 6, 2021 9:37:29 GMT

sipsniper said: hello, thanks for the answer but i cant use RUN PROGRAM it must be runned with inline command because i use infinity loop. this is a conditional automation macro. It should work smoothly on its own. if ı use RUN PROGRAM,

2 | IF | PIXEL COLOR | Color [R=2, G=122, B=219]::At Location [X:1265 Y:899] | IS THE SAME | RUN PROGRAM | c:\xyz.mmmacro

when condition is met on abc.macro’s this line , unlimited new xyz.macro windows open and i dont want to any new window so i must use RUN MACRO İNLİNE command. so there is no way to doing it i think sad.png Hi Sipsniper, Are you able to paste up your two codes so we can understand how your macro flows and functions.


Undo

URL: https://minimousemacro.proboards.com/thread/412/undo
Date: May 6, 2021 17:18:23 GMT

User: philranger

Date: May 6, 2021 17:18:23 GMT

Hello, I have found a thread in the “improvements” section, but in the main window I am not able to “undo” when I for example delete a line. Thanks!


Simple question, probably a simple answer

URL: https://minimousemacro.proboards.com/thread/408/simple-question-probably-answer
Date: Apr 24, 2021 21:15:33 GMT

User: bob3d

Date: Apr 24, 2021 21:15:33 GMT

I have one simple action I want MMM to do.  Left Click a button on a specific part of my display just once, then exit. What happens is the mouse pointer moves to the exact spot I want and then does NOT click at all.  The code for doing this is extraordinarily simple, yet it does not work. The code I am using is:

1 | 925 | 290 | 500 | Left Click

That’s the only line of code in the whole script.  It couldn’t be any simpler.  Yet the mouse moves to the position I want it to be in and then the mouse does not perform the left click. Any ideas why it wouldn’t work?  I am running this on a Windows 10 Pro machine running .NET version 4.8. -  bob

User: Steve

Date: Apr 25, 2021 1:29:46 GMT

Hi bob3d What are you clicking into? I say that because you are right, it should work and the syntax is fine. I think the issue might be whatever you are clicking into is not allowing MMM to hook into it. This might be because the MMM is running under a user context that is not permitted to perform this hook.
Try running MMM as administrator. If this doesn’t work I’d suggest the issue is in the application MMM is clicking into.
Let me know how you go.
Cheers, Steve.

User: bob3d

Date: Apr 25, 2021 8:19:20 GMT

Hi Steve! Good to hear from you after all these years. I am clicking a Minimize button on an application that comes up when I start my laptop, because that program doesn’t have an option to start itself minimized.  So I thought ahh; this is a job for MMM; to click the minimize button at startup.  Very simple command line as I have stated in an earlier post. Except it just doesn’t work.  I tried running MMM as administrator as you suggested, but no luck. It just doesn’t perform the click. EDIT 1: It does perform at least the left click down since I tried it on an icon that is on my desktop and it grabs the icon. On a window, it just refuses to select the minimize button. EDIT 3: It does in fact perform the left click down.  What it is not doing is performing a left click up or left click release. I have one more question: how do you have a MMM script self terminate and close its own window.  I assume it would be an easy command like “exit”, but I haven’t yet experimented with it. EDIT 2: Nevermind on that question. I used the /e switch while running the script and it now self-terminates.

  • bob

User: philranger

Date: Apr 25, 2021 13:40:36 GMT

Hello, A few ideas: 1-    You can split your action in 2, like

1 | 925 | 290 | 500 | Left Click Down
2 | 925 | 290 | 50 | Left Click Release

Which may need a longer 2nd delay 2- Try a keyboard shortcut such as:  1 | X | X | 200 | Keypress lwin+ | d (show desktop by minimizing all windows) or 1 | X | X | 200 | Keypress lwin+ | down (minimizing active window) I guess closing the window with ctrl+F4 or alt+F4 isn’t an option? Good luck and let us know!

User: philranger

Date: Apr 25, 2021 14:02:13 GMT

To get out of MMM, the following works too.

1 | RUN ACTION | EXIT 

User: bob3d

Date: Apr 25, 2021 16:08:13 GMT

1 | x | x | 200 | Keypress lwin+ | M

works well and will do for what I am after. Thanks for the advice!

  • bob

User: bob3d

Date: Apr 25, 2021 19:35:59 GMT

You know I thought it was working, but now it is not working at all. I am using this simple command to display the Desktop:

1 | 100 | 100 | 200 | Keypress lwin+ | D

Is this the correct syntax for pressing the Windows Key and the letter D?

  • bob

User: philranger

Date: Apr 26, 2021 11:03:10 GMT

For an unknown reason your code doesn’t work on my machine either but this work:

1 | 128 | 165 | 100 | Keypress lwin+ | d

as well as

1 | X | X | 100 | Keypress lwin+ | d

I guess it’s the lowercase instead of uppercase?

User: bob3d

Date: Apr 28, 2021 17:04:31 GMT

I tried a competing product, AutoHotKey, and have the same result.  That is the window will not minimize.  Therefore, the problem lies with the application itself and not with the key-press software or syntax. I’ve moved on to other tweaks I’d like to make.  Thank you for your ideas and suggestions.

  • bob

Keyboard shortcuts

URL: https://minimousemacro.proboards.com/thread/409/keyboard-shortcuts
Date: Apr 25, 2021 15:38:27 GMT

User: philranger

Date: Apr 25, 2021 15:38:27 GMT

Hello,   There are often items that can’t easily be clicked or selected, for example if their position or size (length) change. This makes writing a macro based on clicking only impossible.  In these cases, knowing keyboard shortcuts is a life saver.  Using keyboard shortcuts also allows not losing your actual mouse position, which is sometimes useful, for example if you want to go to another software to copy from stuff and then come back to the exact position you were at.   Here’s a list of a few of them, with the ones I use the most first. Please add yours, so we have even more capabilities! 1-

Switch between open windows or documents :     - Alt+ | Tab     - Alt+ | Shift+ | Tab     - Ctrl+ | Alt+ | Tab then arrows     - Replacing Alt by Ctrl allows switching between documents inside the same program.     - Other option: Alt+ | escape 2-

Copy selected Item: Ctrl+ |  c

Paste selected Item: Ctrl+ | v

Cut selected Item: Ctrl+ | x 3-

Selection:     - Ctrl+ | A

= select all     - Shift+ | left or right     = select 1 character     - Shift+ | Ctrl+ | left or right = Select words     - Shift+ | up or down     = select line     - Ctrl+ | up or down

= move to next (or previous) paragraph     - Home                         =  go to the beginning of this line.  Can be combined with shift to select from home to actual position.  Combining with CTRL will go to the beginning of the document.     - End                         =  go to the end of this line.  Can be combined with shift.  Combining with CTRL will go to the end of the  document.    -  Ctrl+ | arrow then spacebar =  Select multiple individual items in a window or on the desktop.     - Be creative.  Combine them!     - To select a full line, it is often safer to first go to home, then shift-end (or the opposite).     - I often copy a big list into the notepad for example, and then cut lines one by one to paste them (with additional stuff around it) in another software where button clicking is required between each item. 4- Ctrl + F = find (in many software )     Ctrl + H = replace   (in many software )     - Typical use: find a specific name, escape, then select everything on that line and deleting it.  Or cut everything from the beginning  to that name, etc. 5-

Undo an action: Ctrl+ | Z

Redo
Ctrl+ | shift+ | z or Ctrl+ | y 6- Windows manipulation:     lwin+ | d     =
Minimize everything and show desktop
    lwin+ | down = Minimize window
    lwin+ | up =
    M
aximize window
    lwin+ | left or right = Semi-maximize window as left half screen.  Can be done several times to move the current window to another screen.
7- Navigate through the software menus:
    -
Hitting the Alt key will, in many newer software, show you what is the next key to press to activate that item. 
    - Most software have
 a letter underlined in each menu.  Example: alt+f = file menu.  Once that menu is open, there will be letters underlined for the submenus.  They may even list direct shortcuts after their names.
    - If there are no underlined letters, hitting alt and releasing it will most of the time switch you to menu navigation option.  Navigate then with the arrow keys, space bar, enter, etc.
    - An additional shortcut to open the menus is F10, or alt+ | space
8- Navigate through buttons in windows and browsers:
    - tab or Shift+ | tab
    - spacebar to select
    - Alt+ | Whatever letter is underlined in that window
    - Some software will allow navigation with F6 or F7
9- A clipboard with more features
lwin+ | v 10- Style manipulation:     - Bold: Ctrl+ | b     - Underline: Ctrl+ | u     - Italicize: Ctrl+ | i 11- Random additional shortcuts:     - Rename selected file in Windows Explorer: F2  This can be useful to copy the name of the file into the clipboard: F2, ctrl-c, escape     - Open: Ctrl+ | o     - Close: Ctrl+ | w or ctrl+ | F4     - Save: Ctrl+ | s     - Delete permanently: Shift+ | delete     - Open properties for selected item: Alt+ | Enter     - Close current window: Alt+ | F4     - Open the Start Menu: Ctrl+ | Esc     - Lock your PC or switch users: Windows Key+ | l (this is a lowercase L)     - Zoom in and out: Windows Key and plus or minus sign ———————————————————————-

Sources:

it.nmu.edu/docs/useful-keyboard-shortcuts Keyboard shortcuts in Windows:   support.microsoft.com/en-us/windows/keyboard-shortcuts-in-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec#keyboard-shortcuts=windows-7 Keyboard shortcuts in apps:  support.microsoft.com/en-us/windows/keyboard-shortcuts-in-apps-139014e7-177b-d1f3-eb2e-7298b2599a34


If hour is xx then go to macro line

URL: https://minimousemacro.proboards.com/thread/407/hour-xx-macro-line
Date: Apr 22, 2021 6:53:11 GMT

User: mats

Date: Apr 22, 2021 6:53:11 GMT

Good day I’m trying to create a macro that runs as a loop infinitely (from LOOP_START to line 15) but during the night and at least once every day it should go to line STANG_FONSTER and then go back to LOOP_START and so on. My problem is to get the “if hour equals to xx then to go line yy” working. I tried using the current hour as a string value and if this equals to 03 then go to STANG_FONSTER but this doesn’t work for me. There is probably some better idea to have an “if then action” to run once a day at a certain time. Current macro:

* | LOOP_START
1 | RUN ACTION | WAIT SECONDS | 5
2 | IF NOT | WINDOW TITLE | Daglig styrning | EXIST | MESSAGE PROMPT | Fönstret "Daglig styrning" hittas inte. | AND | 3 | RUN ACTION | STOP
3 | IF | WINDOW TITLE | Daglig styrning | EXIST | SELECT WINDOW BY NAME | Daglig styrning
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%TIME_H%
5 | IF | STRING VARIABLE | %STRING% | IS | 03 | GOTO MACRO LINE | STANG_FONSTER
6 | 500 | 883 | 1251 | Keypress escape
7 | RUN ACTION | WAIT SECONDS | 1
8 | 20 | 172 | 7797 | Left Click Down
9 | 20 | 172 | 16 | Left Click Release
10 | RUN ACTION | WAIT SECONDS | 1
11 | 20 | 128 | 4594 | Left Click Down
12 | 20 | 128 | 47 | Left Click Release
13 | 1919 | 0 | 10 | Mouse movement
14 | RUN ACTION | WAIT SECONDS | 300
15 | RUN ACTION | GOTO MACRO LINE | LOOP_START
* | STANG_FONSTER
16 | 500 | 883 | 1251 | Keypress escape
17 | RUN ACTION | WAIT SECONDS | 2
18 | 1909 | 20 | 3422 | Left Click Down
19 | 1909 | 20 | 140 | Left Click Release
20 | RUN ACTION | WAIT SECONDS | 2
21 | 103 | 69 | 9297 | Left Click Down
22 | 103 | 69 | 140 | Left Click Release
23 | RUN ACTION | WAIT SECONDS | 2
24 | 84 | 154 | 7281 | Left Click Down
25 | 84 | 154 | 78 | Left Click Release
26 | RUN ACTION | WAIT SECONDS | 2
27 | 20 | 131 | 9531 | Left Click Down
28 | 20 | 131 | 47 | Left Click Release
29 | RUN ACTION | GOTO MACRO LINE | LOOP_START

Would appreciate some guidance here! Thanks, Mats

User: Steve

Date: Apr 23, 2021 4:59:47 GMT

Hi mats

The %TIME_H% value at 3am is 3 not 03.
Change the 03 to be 3 in your line 5:

5 | IF | STRING VARIABLE | %STRING% | IS | 3 | GOTO MACRO LINE | STANG_FONSTER

Other than that your macro looks ok.  There are a few ways to to loop this but the way your doing it reads well and looks good. Cheers, Steve.

User: mats

Date: Apr 23, 2021 9:18:20 GMT

Thank you Steve! I was so close - now it works like a charm. Cheers, Mats


Basic for loop behaving strangely

URL: https://minimousemacro.proboards.com/thread/406/basic-loop-behaving-strangely
Date: Apr 9, 2021 13:14:26 GMT

User: philranger

Date: Apr 9, 2021 13:14:26 GMT

Hello! MMM pro 8.2.0.0

1 | FOR | I | = | 1 TO 5 | NEXT
2 | RUN ACTION | MESSAGE PROMPT | %I%
3 | FOR | NEXT

1st message is “2”, not “1” as expected.  Anyone else has the same? Thanks!

User: Steve

Date: Apr 10, 2021 5:06:33 GMT

Hi philranger Are you trying to count from 1 to 5?
If so start at 0. The first iteration increments the FOR loop %I% counter.

1 | FOR | I | = | 0 TO 5 | NEXT
2 | RUN ACTION | MESSAGE PROMPT | %I%
3 | FOR | NEXT

User: philranger

Date: Apr 11, 2021 18:26:00 GMT

Thanks!  Can you put a for loop inside a for loop, the code below doesn’t work…

1 | FOR | I | = | 1 TO 5 | NEXT
2 | FOR | J | = | 10 TO 13 | NEXT
3 | RUN ACTION | MESSAGE PROMPT | I=%I%,J=%J%
4 | FOR | NEXT J
5 | FOR | NEXT I

User: Steve

Date: Apr 18, 2021 0:41:50 GMT

Hi Phil,

Yes you can.

Basic FOR LOOPS can be nested but they don’t work as your have them in your example.

They work more like this:

1 | FOR | I | = | 0 TO 3 | NEXT
   2 | RUN ACTION | DEFINE STRING VARIABLE | %parent%::%I%
   3 | FOR | I | = | 0 TO 5 | NEXT
      4 | RUN ACTION | DEFINE STRING VARIABLE | %child%::%I%
      5 | RUN ACTION | MESSAGE PROMPT | Parent=%PARENT%of5 Child=%CHILD%::loop status::1
   6 | FOR | NEXT
7 | FOR | NEXT

User: philranger

Date: Apr 19, 2021 17:21:46 GMT

Thanks Steve, I wouldn’t have guessed that alone!


Auto Queue

URL: https://minimousemacro.proboards.com/thread/404/auto-queue
Date: Apr 8, 2021 6:52:14 GMT

User: paj5152

Date: Apr 8, 2021 6:52:14 GMT

Hi, Can anyone tell me how to start the Auto Queue as I assume you can add a number of macros to the queue and it will run them accordingly. Thanks Peter

User: philranger

Date: Apr 8, 2021 15:59:33 GMT

Hello Peter,   Welcome to the Forum!   I would suggest that you place your questions about how to use MMM (mini Moue Macro) in the “Questions and help” section of the forum, as more people would see it.  The “general” section isn’t visited as much.   Maybe this link can help: <www.turnssoft.com/faq2.html#how%20do%20i%20run%20a%20saved%20macro%20at%20windows%20startup> Regards, Phil

User: zeak

Date: Apr 8, 2021 22:30:42 GMT

I have moved this Thread to ‘Questions and Help’


GOTO MACRO LINE in Conditional Statement

URL: https://minimousemacro.proboards.com/thread/403/goto-macro-line-conditional-statement
Date: Mar 27, 2021 19:23:05 GMT

User: jeff

Date: Mar 27, 2021 19:23:05 GMT

I am running a macro that in turns calls macros which in turn either call macros or do simple things like clicks. I am trying to create a loop based on a pixel color telling it to jump to Line 7 otherwise continue. It worked in its standalone case, but it seems the “GOTO MACRO LINE” function jumps to the very top rather than line 7. I’m going to now attempt to solve the issue with a for loop and an exit case based on the pixel color, but it is strange to me that the GOTO function isn’t working as I believe it does? Debug Info:

 03/27/2021 01:48:26.18 PM Macro condition: 13 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:377 Y:447] | IS THE SAME | GOTO MACRO LINE | 7 | ELSE | 13 | RUN ACTION |  |  |  | CONTINUE
 03/27/2021 01:48:26.23 PM Macro condition - Pixel color MATCH
 03/27/2021 01:48:26.28 PM Macro condition - Condition TRUE
 03/27/2021 01:48:26.31 PM Macro action - Running ACTION: GOTO MACRO LINE - Macro line(7)
 03/27/2021 01:48:26.33 PM Macro condition: 1 | RUN ACTION | OUTPUT TO FILE | C:\Users\Me\Desktop\MacroLog.txt::APPEND_NEWLINE::
 03/27/2021 01:48:26.36 PM Macro condition - Condition TRUE
 03/27/2021 01:48:26.38 PM Macro action - Output to File: (C:\Users\ME\Desktop\MacroLog.txt::APPEND_NEWLINE:

smiley.png …etc

User: Steve

Date: Mar 27, 2021 23:11:27 GMT

Hi jeff

For GOTO ( <www.turnssoft.com/conditions.html#gotomacroline> ) to work correctly the macro must be listed in numeric order ( minimousemacro.proboards.com/thread/227/recognizing-goto-linelabels-relist ). Are your macro lines in numeric order?
I notice your running some old syntax. This line:

13 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:377 Y:447] | IS THE SAME | GOTO MACRO LINE | 7 | ELSE | 13 | RUN ACTION | | | | CONTINUE

Should be:

13 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:377 Y:447] | IS THE SAME | GOTO MACRO LINE | 7 | ELSE | 13 | RUN ACTION | CONTINUE

We don’t need to include the old style action item breaks, like this | | | , in the macro lines anymore.  Whilst they may still work in some situations they are depreciated and some next line features may break when the macro machine reads the line in.  I recommend replacing all the old syntax with the new syntax. Are you running the latest version of Mini Mouse Macro ( <www.turnssoft.com/update-log2.html> )? A few versions ago we had some bugs in GOTO ( <www.turnssoft.com/bugtrack.html> ) that have now been patched. Are you running the GOTO from within your FOR loop ( <www.turnssoft.com/conditions.html#for> )? Breaking out of the FOR loop without exiting the FOR loop might lead to some unexpected behavior. Hope this helps. Steve.

User: jeff

Date: Mar 28, 2021 1:21:56 GMT

I have them in numerical order, I always relist rows, and it worked fine when it was the only lines in the script. But when I implemented into the main loop, which calls other scripts with the “Run Macro in Line commands”, it seems to ignore the goto macro line. I am using 7.4, so that could be the issue. I’ll update it and try it again. There are no for loops in the any of the scripts I am using currently, but I did implement the same basic functionality with a for loop from i 1 to 99999 and an exit condition based on the pixel color. That has been working very well as of now smiley.png Thanks for your response!


Does hotkeys work outside MMM?

URL: https://minimousemacro.proboards.com/thread/402/hotkeys-work-outside-mmm
Date: Mar 23, 2021 20:38:56 GMT

User: jjzones

Date: Mar 23, 2021 20:38:56 GMT

Hi Guys, I love Steve’s work on this software. It’s better than most by far and I intend buying him a cupper someday. I am about to buy the pro version, I just wanted to know if my favourite feature “Hotkeys” for individual macros will run if MMM is running or not. What I mean is, do I have to run MMM on the screen for the hotkeys to work or does MMM just have to be running in the background?

User: Steve

Date: Mar 24, 2021 8:32:43 GMT

Hi jjzones

Thanks for your comments on the software. I’m always up for a cuppa. Yes. Hotkeys will work if MMM is running in the background. The hotkey just needs to be enabled. Take this example below. The hotkey is enabled as ctrl+t for the draw macro. MMM is minimized to the background, the hotkeys is pressed, and the macro loads and draw’s the pictures. Hope this helps. minimousemacro_macroqueue_draw.gif


D0

URL: https://minimousemacro.proboards.com/thread/401/d0
Date: Mar 22, 2021 5:50:59 GMT

User: paj5152

Date: Mar 22, 2021 5:50:59 GMT

Hi, Sorry can someone explain D0 - D9 to slow down or speedup. I know it is going to be simple but cannot work out. Peter

User: Steve

Date: Mar 22, 2021 9:38:01 GMT

Hi, Check out this forum post here minimousemacro.proboards.com/thread/287/which-playback-speed-effec t it explains it with a demo. Simply, D0 and D9 are the default hotkeys to slow down and speed up macro playback.


Detect caps lock on?

URL: https://minimousemacro.proboards.com/thread/391/detect-caps-lock-on
Date: Mar 5, 2021 11:44:55 GMT

User: WWO

Date: Mar 5, 2021 11:44:55 GMT

I have seen minimousemacro.proboards.com/thread/283/keypress-inconsistent-behaviour Is there a way to detect that caps lock is on? [I have other (non-mmm) scripts that check for caps lock and sleeps for a second - gives the user an ability to ‘pause’ a script that uses the mouse, then unpause when ready. Looking to effect the same behaviour here in mmm. Yes, it must be caps lock - no sense making the user have to remember which key in which program they’re in.] ^F9 doesn’t do it, as the user has no way to know where in the script things are, to know where to return to. Caps Locks detection can wait for an innocuous spot (e.g. sleep point at end of a sequence of steps).

User: Steve

Date: Mar 15, 2021 9:00:41 GMT

Hi WWO

Not easily and not without doing something like I suggested here minimousemacro.proboards.com/thread/283/keypress-inconsistent-behaviour JFoc0jEJzNqTrrLxeLBk.jpg Sept 25, 2020 3:03:37 GMT

Steve said: defaultavatar.png Sept 24, 2020 21:30:36 GMT

ak said: Hi Steve, On a related note: is there a way to check for or ideally toggle Caps Lock in a MMM script? To help programmatically avoid issues like danman mentioned? Because I’ve had Caps Lock adversely affect my scripts as well. Hi, Yeah this is what I’ve got to detect a caps and prompt. You could prob compress this down to a few lines:

1 | RUN ACTION | FILE CREATE | C:\Users\test\Desktop\caps.txt
2 | RUN ACTION | WAIT SECONDS | 1
3 | RUN ACTION | RUN PROGRAM | C:\Users\test\Desktop\caps.txt
4 | RUN ACTION | WAIT SECONDS | 1
5 | x | x | 500 | Keypress test
6 | X | X | 500 | Keypress Ctrl+ | a
7 | X | X | 500 | Keypress Ctrl+ | c
8 | X | X | 500 | Keypress Alt+ | f
9 | X | X | 500 | Keypress x
10 | X | X | 500 | Keypress n
11 | IF | CLIPBOARD | VALUE | TEXT IS | test | MESSAGE PROMPT | Caps is not on::CAPS - Status::0 | ELSE | 11 | RUN ACTION | MESSAGE PROMPT | Caps is on::CAPS - Status::0

This detects and toggles capslock:

1 | RUN ACTION | FILE CREATE | C:\Users\test\Desktop\caps.txt
2 | RUN ACTION | WAIT SECONDS | 1
3 | RUN ACTION | RUN PROGRAM | C:\Users\test\Desktop\caps.txt
4 | RUN ACTION | WAIT SECONDS | 1
5 | x | x | 500 | Keypress test
6 | X | X | 500 | Keypress Ctrl+ | a
7 | X | X | 500 | Keypress Ctrl+ | c
8 | X | X | 500 | Keypress Alt+ | f
9 | X | X | 500 | Keypress x
10 | X | X | 500 | Keypress n
11 | IF | STRING VARIABLE | %CLIPBOARD% | CONTAINS | test | GOTO MACRO LINE | Down 2
12 | X | X | 500 | Keypress capslock
13 | RUN ACTION | MESSAGE PROMPT | End of the macro::The End::1

User: WWO

Date: Mar 15, 2021 19:35:24 GMT

Yeah, I saw that. Ick. I did come across ( _WinAPI_GetKeyState(0x14) & 0x01 ) = 0x01 ? True : False but I haven’t dug into it for a mmm equivalent.


Scan a pixel line to click when pixel change

URL: https://minimousemacro.proboards.com/thread/209/scan-pixel-line-click-change
Date: Nov 17, 2019 6:29:54 GMT

User: band84

Date: Nov 17, 2019 6:29:54 GMT

Hello I have the need to click  an icon who move horizontally each time First problem with for next i don’t know if it work with negative steps then when reached the pixel with the desired colr (part of the icon) how to click  at the found cordinates? the lines 10 and 11 can’t work (i can’t enter) it) There is any other way to reach the goal? this icon is the last on the right then scanning from right to left each pxel i’m sure to click it correctly Many thanks in advance Beppe insert code here

7 | FOR | I | = | 1000 TO 500 | NEXT
8 | IF | PIXEL COLOR | Color [R=38, G=38, B=38]::At Location [X:%i% Y:235] | IS THE SAME | EXIT FOR
9 | FOR | NEXT
10 | %i% | 235 | 1000 | Left Click Down
11 | %i% | 235 | 49 | Left Click Release

User: zeak

Date: Nov 17, 2019 23:47:23 GMT

Hi Band, I’m not sure what you mean by negative steps, Mouse locations can’t handle %I% but they can handle %INTEGER% I also added an extra bit so that it doesn’t click on the edge of the button and change Click Down/Released to just Click.

1 | FOR | I | = | 1000 TO 500 | NEXT
2 | IF | PIXEL COLOR | Color [R=38, G=38, B=38]::At Location [X:%i% Y:235] | IS THE SAME | EXIT FOR
3 | FOR | NEXT
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%i%
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-5
6 | %INTEGER% | 235 | 1000 | Left Click

Give it a try and let me know if you need anything else.   smiley.png Zeak

User: zeak

Date: Nov 18, 2019 3:01:55 GMT

ovqiSZMQkcHXJsgduMbm.jpg Nov 17, 2019 23:47:23 GMT

zeak said: Hi Band, I’m not sure what you mean by negative steps, Mouse locations can’t handle %I% but they can handle %INTEGER% I also added an extra bit so that it doesn’t click on the edge of the button and change Click Down/Released to just Click.

1 | FOR | I | = | 1000 TO 500 | NEXT
2 | IF | PIXEL COLOR | Color [R=38, G=38, B=38]::At Location [X:%i% Y:235] | IS THE SAME | EXIT FOR
3 | FOR | NEXT
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%i%
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-5
6 | %INTEGER% | 235 | 1000 | Left Click

Give it a try and let me know if you need anything else.   smiley.png Zeak So this wont work with %i% counting down. Try using this below, It uses GOTO MACRO LINE instead of FOR Loop.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1000
* | FOR LOOP
2 | IF | PIXEL COLOR | Color [R=38, G=38, B=38]::At Location [X:%INTEGER% Y:235] | IS THE SAME | GOTO MACRO LINE | ACTION
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-1
4 | IF | INTEGER VARIABLE | %INTEGER% | IS | 500 | GOTO MACRO LINE | ACTION
5 | RUN ACTION | GOTO MACRO LINE | FOR LOOP
* | ACTION
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%INTEGER%
7 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-5
8 | %INTEGER% | 235 | 1000 | Left Click

User: WWO

Date: Mar 7, 2021 11:46:48 GMT

ovqiSZMQkcHXJsgduMbm.jpg Nov 17, 2019 23:47:23 GMT

zeak said: Hi Band, I’m not sure what you mean by negative steps, … aka

7 | FOR | I | = | 100 TO 0 | STEP -1 | NEXT
8 | RUN ACTION | DEBUG | logger::INFO::Countdown timer now at %I%
9 | FOR | NEXT

User: philranger

Date: Mar 8, 2021 12:04:39 GMT

Hello, Most (but not all) software support keyboard shortcuts, which can often be reached by holding the ALT key + the letter that becomes underlined in the menu (for example, alt-f opens the file menu, then alt-SomeOtherLetter opens that sub-menu or action). Maybe that would be a way to get around the problem? Once the menus are opened, you can often navigate through them using the arrow keys as well.


Demonstration: mmmacro subs / subroutines.

URL: https://minimousemacro.proboards.com/thread/397/demonstration-mmmacro-subs-subroutines
Date: Mar 8, 2021 9:52:28 GMT

User: WWO

Date: Mar 8, 2021 9:52:28 GMT

(Untested) example mmmacro sub / subroutines so search engines can get a useful hit.

  • including subs that call other subs. [Untested in the sense that working code taken and simplified for demonstration may have left typos such as variable or label name inconsistencies.]
* | .
* | .
* | Globals:
* | .
1 | RUN ACTION | DEBUG | CLEAR CUSTOM VARIABLES
* | .
2 | RUN ACTION | DEFINE integer VARIABLE | %StageLeftXXforDisplay%::0
3 | RUN ACTION | DEFINE integer VARIABLE | %StageLeftXXforDisplay%::-100
4 | RUN ACTION | DEFINE integer VARIABLE | %StageLeftYYforDisplay%::0
5 | RUN ACTION | DEFINE integer VARIABLE | %StageLeftYYforDisplay%::+10
* | .
* | Coming soon:
* | 6 | RUN ACTION | DEFINE integer VARIABLE | %StageLeftXXforDisplay%::=-100
* | .
7 | RUN ACTION | DEFINE integer VARIABLE | %ZeroWait%::10
8 | RUN ACTION | DEFINE integer VARIABLE | %ClickWait%::100
* | .
* | .
* | _main_
* | .
* | .
* | ~Click_Button
* | .
9 | RUN ACTION | DEFINE integer VARIABLE | %XX%::0
10 | RUN ACTION | DEFINE integer VARIABLE | %XX%::-429
11 | RUN ACTION | DEFINE integer VARIABLE | %YY%::848
* | .
* | 0x9c2215
12 | RUN ACTION | DEFINE integer VARIABLE | %RGB-R%::156
13 | RUN ACTION | DEFINE integer VARIABLE | %RGB-G%::34
14 | RUN ACTION | DEFINE integer VARIABLE | %RGB-B%::21
* | .
15 | RUN ACTION | DEFINE STRING VARIABLE | %_RETLABEL%::~Button_Clicked
16 | RUN ACTION | GOTO MACRO LINE | _ClickWhenRGB_
* | .
* | ~Button_Clicked
* | .
* | .
* | Sample debug methods.
* | .
17 | RUN ACTION | DEBUG | logger::INFO::verbose::Button Clicked
* | 18 | RUN ACTION | PLAY SYSTEM SOUND | Beep::ASYNC
* | 19 | RUN ACTION | PAUSE
* | 20 | RUN ACTION | MESSAGE PROMPT | Button Clicked
* | .
* | .
* | ~ShowAllDone
* | Move mouse further away so user sees we really think we are done..
21 | RUN ACTION | DEFINE STRING VARIABLE | %_RETLABEL%::~AllDone
22 | RUN ACTION | GOTO MACRO LINE | _MoveMouseByStageLeft_
* | ~AllDone
* | .
* | .
23 | RUN ACTION | GOTO MACRO LINE | _END
* | .
* | .
* | .
* | _subs_ ...
* | .
* | _MoveMouseByStageLeft_
* | Mouse mouse left so user can see click impact.
24 | RUN ACTION | DEFINE integer VARIABLE | %XX%::+%StageLeftXXforDisplay%
25 | RUN ACTION | DEFINE integer VARIABLE | %YY%::+%StageLeftYYforDisplay%
26 | %XX% | %YY% | %ZeroWait% | Mouse Movement
27 | RUN ACTION | GOTO MACRO LINE | %_RETLABEL%
* | .
* | .
* | _ClickWhenRGB_
28 | RUN ACTION | DEFINE STRING VARIABLE | %_SAVED-RETLABEL_%::%_RETLABEL%
29 | RUN ACTION | DEBUG | logger::INFO::_ClickWhenRGB_: waiting for (%RGB-R%, %RGB-G%, %RGB-B%) @ (%XX%, %YY%).
30 | if | pixel color | Color [R=%RGB-R%, G=%RGB-G%, B=%RGB-B%]::at location [X:%XX% Y:%YY%] | is the same | continue
31 | %XX% | %YY% | %ZeroWait% | Mouse Movement
32 | X | X | %ClickWait% | Left Click
* | .
33 | RUN ACTION | DEFINE STRING VARIABLE | %_RETLABEL%::~_ClickWhenRGB-1_
34 | RUN ACTION | GOTO MACRO LINE | _MoveMouseByStageLeft_
* | ~_ClickWhenRGB-1_
35 | RUN ACTION | GOTO MACRO LINE | %_SAVED-RETLABEL_%
* | .
* | .
* | .
* | _END
* | .
* | .
36 | RUN ACTION | DEBUG | SHOW CUSTOM VARIABLES
* | .
* | .

Mouse Pointer doubling - confusing to debug.

URL: https://minimousemacro.proboards.com/thread/289/mouse-pointer-doubling-confusing-debug
Date: Jul 26, 2020 20:57:07 GMT

User: WWO

Date: Jul 26, 2020 20:57:07 GMT

It seems that actions occur before the mouse pointer catches up. It seems that the mouse is moved to X:Y, then the time delay applied, then the action effected. The mouse pointer is displayed at the new location after the action is effected. Am I understanding that / things correctly? Even if I move the mouse, then move it one more pixel, the mouse pointer is still showing at the old location, prior to the first move, as well as at the new location. How do I delay / keep the mouse pointer in sync with the currently executing line? [Loops are getting out of sync. I’m trying to figure out which line needs additional time allowed to give things time to catch up, but with duplicate mouse pointers on screen at the same time, I’m going bug-eyed trying to discern which line I need to change.]

User: Steve

Date: Jul 29, 2020 6:52:48 GMT

av_default_male.png Jul 26, 2020 20:57:07 GMT

WWO said: [Loops are getting out of sync. I’m trying to figure out which line needs additional time allowed to give things time to catch up, but with duplicate mouse pointers on screen at the same time, I’m going bug-eyed trying to discern which line I need to change.] Can you expand on this? duplicate mouse pointers? This might help:

1 | 100 | 200 | 1000 | Mouse Movement
2 | RUN ACTION | MESSAGE PROMPT | Hello
3 | 200 | 400 | 2000 | Mouse Movement
4 | RUN ACTION | MESSAGE PROMPT | Goodbye
5 | 400 | 600 | 3000 | Mouse Movement

Line 1 reads like this: 

1 | 100 | 200 | 1000 | Mouse Movement

1 = The number of the line. In MMM this helps to visualize and sort the macro and also is a reference for GOTO actions that reference a line number value. 100 = The mouse X value 200 = The mouse Y value 1000 = Execute this line with a 1 second delay. Meaning to wait 1 second before running this line. Mouse Movement = Move the mouse to the X Y. The whole macro reads like this: 1 - Move the mouse to 100/200 pos after 1 second 2 - message prompt the word hello 3 - Move the mouse to 200/400 pos after 2 seconds 4 - message prompt the word goodbye 5 - Move the mouse to 400/600 pos after 3 seconds

User: WWO

Date: Mar 5, 2021 14:03:03 GMT

Here is an example: Attachments: WjyGdIcREwbxaLerNmI0.png

User: Steve

Date: Mar 5, 2021 22:06:26 GMT

Thanks for your example.
Does this behavior occur outside of the game/app your in?

User: WWO

Date: Mar 8, 2021 8:49:44 GMT

I’ll have to see and get back to you. If I never do, the answer is no. (i.e. issue specific to the WebGL app, so it’s the app’s problem, not mmm.) When I get near it next, I’ll try to remember to add some timeout (# | X | X | 3000 | Mouse Movement), see if it’s just a matter of the app catching up / ‘network’ lag. I’m also starting to wonder if it isn’t video card / driver related - but I can’t easily test that. [Only the one windows computer.]


List of ‘system sound’s?

URL: https://minimousemacro.proboards.com/thread/392/list-system-sounds
Date: Mar 7, 2021 4:11:14 GMT

User: WWO

Date: Mar 7, 2021 4:11:14 GMT

‘play system sound’ is documented at <www.turnssoft.com/conditions.html#playsystemsound> Is there a list of the available system sounds somewhere? ‘beep’ is shown - are there others? ‘sync’ and ‘async’ are noted for after the ‘::’ - is there other syntax for the line? (Not looking for anything, just looking to make sure I understand any available syntax.)

User: Steve

Date: Mar 7, 2021 9:16:30 GMT

Hi WWO

The ‘Play System Sounds’ dialog page from the ‘Add Condition’ tool lists all the available sounds and helps to build the right syntax. minimousemacro-playsystemsound.gif Hope this helps. Regards, Steve.

User: WWO

Date: Mar 7, 2021 22:41:22 GMT

Nice. Thanks.

1 | RUN ACTION | PLAY SYSTEM SOUND | Beep::SYNC
2 | RUN ACTION | MESSAGE PROMPT | Beep
3 | RUN ACTION | PLAY SYSTEM SOUND | Question::SYNC
4 | RUN ACTION | MESSAGE PROMPT | Question
5 | RUN ACTION | PLAY SYSTEM SOUND | Success high::SYNC
6 | RUN ACTION | MESSAGE PROMPT | Success high
7 | RUN ACTION | PLAY SYSTEM SOUND | Success low::SYNC
8 | RUN ACTION | MESSAGE PROMPT | Success low
9 | RUN ACTION | PLAY SYSTEM SOUND | Fail high::SYNC
10 | RUN ACTION | MESSAGE PROMPT | Fail high
11 | RUN ACTION | PLAY SYSTEM SOUND | Fail low::SYNC
12 | RUN ACTION | MESSAGE PROMPT | Fail low
13 | RUN ACTION | PLAY SYSTEM SOUND | Error high::SYNC
14 | RUN ACTION | MESSAGE PROMPT | Error high
15 | RUN ACTION | PLAY SYSTEM SOUND | Error low::SYNC
16 | RUN ACTION | MESSAGE PROMPT | Error low
17 | RUN ACTION | MESSAGE PROMPT | Done.

Running Files from Multiple Folders

URL: https://minimousemacro.proboards.com/thread/385/running-files-multiple-folders
Date: Feb 24, 2021 8:32:23 GMT

User: Rambo-X

Date: Feb 24, 2021 8:32:23 GMT

Hello Everyone, This was given to me by Steve related to a previous Question.

1 | FOR | EACH | FILE IN | D:\Macro\macro_folder | DO
2 | FOR | EACH | LINE IN | %FILE% | RUN
3 | FOR | NEXT

This helps me to run a set of mmmacro files one after the other from a specific folder. But now I have stumbled upon a more complex scenario. Let me explain what I Have, what I Run and what I need your help on. What I Have : Folder 01. Individual email addresses ( txt files - multiple ) Folder 02. A set up change ( mmmacro files - multiple ) Folder 03. The Set up ( only 02 mmmacro files : before and after files ) What I Run : I have a Macro which runs in below sequence. Line 01. Mmmacro file ( from Folder 03. ) - runs what happens before we enter email. ( some clicks to get things in place ) Line 02. Mmmacro file ( from Folder 03. ) - to pick the email from Folder 01. And paste it. Line 03. Mmmacro file ( from Folder 03. ) - runs what needs to happen after pasting the email. This is replicated again and again for over 700 lines to pick various emails IDs I need. So the code goes 3 lines by 3 lines and only the line 2 changes to pick that respective email. address. But in some scenarios, I need to switch on an Extension in the browser like after every 5 emails sent (every 15 lines) , or 10 emails sent (every 30 lines) etc. So I have to always insert that mmmacro code to this line depending requirement. And that code is taken from Folder 02. And that has around 50 files as well. What I Need : Taking the Solution for “Each File in Folder” can something like below be done to tackle the issue at hand. What my requirement would be in sequence.

  1. Read the Macro and Execute what happens before pasting email address.
  2. Paste the email address by “Each File in Folder” system not having to be specific.
  3. Read the Macro and Execute what happens after we have pasted the email.
  4. The above to go on loop.
  5. A variable to be assigned like lets say for the set up change, after like every 5 emails sent, or every 10 emails sent run the macro from Folder 2 and this should also keep going not according to number of files in its folder but on a sequence reading each set up file (as said previously I got around 50) from its folder until the above loop stops.( So in a given scenario not all files in it may run, because we may not have so many emails to be sent).
  6. The above to go on loop until first loop ends. Therefore emails would go according to the number of txt files in the Folder 01. And the Variable will decide after how many emails should it launch the broswer extension. Thanks a lot again for all of you.

User: Rambo-X

Date: Feb 24, 2021 9:04:42 GMT

And also, Please be kind enough to let me know if we could also control the number of emails sent from Point No. 03 onwards via a variable as well. So that I may not have to physically remove the emails. Meaning even though I want this Macro to run depending on number of files, can we also control it via a variable to put a stop if we want to.

User: philranger

Date: Feb 25, 2021 12:25:10 GMT

I hope I’m not helping a spammer, but… I would either create a copy from all these files into the same folder, or even better, just extract all of their content in a single text file to read from. To do so, open a Windows Explorer and navigate to the folder you want. Then, in the address bar, type « cmd » and hit enter. In the black window that opens, type your dos command (example: copy /b *.txt newfile.txt). Repeat for your 3 folders, then work from there.

User: Steve

Date: Feb 26, 2021 5:29:23 GMT

OrPMJslAMtScYqPUpgHc.jpg Feb 24, 2021 8:32:23 GMT

Rambo-X said: What I Need : Taking the Solution for “Each File in Folder” can something like below be done to tackle the issue at hand. What my requirement would be in sequence.

  1. Read the Macro and Execute what happens before pasting email address.
  2. Paste the email address by “Each File in Folder” system not having to be specific.
  3. Read the Macro and Execute what happens after we have pasted the email.
  4. The above to go on loop.
  5. A variable to be assigned like lets say for the set up change, after like every 5 emails sent, or every 10 emails sent run the macro from Folder 2 and this should also keep going not according to number of files in its folder but on a sequence reading each set up file (as said previously I got around 50) from its folder until the above loop stops.( So in a given scenario not all files in it may run, because we may not have so many emails to be sent).
  6. The above to go on loop until first loop ends. Wow Rambo-X this is pretty busy. I don’t think I’m following on quite right. Can you break your problem down a little further? Sometimes it helps to address one issue at a time. Your question is good timing though. I am working on some email functions with MMM right now for the next version. I’m almost done. I’ve got the code down I just need to write a GUI for it for the condition page:
1 | RUN ACTION | SEND EMAIL | SETUP::C:\the\file\path\mail_setup.txt
2 | RUN ACTION | SEND EMAIL | SEND::FROM=fromemail@gmail.com::TO=toemail@gmail.com::SUBJECT::MMM - email test::HTML=FALSE::FILE=c:\the\file\path\mailsend_body.txt

SETUP - will load in the SMTP mail settings SEND - will send the the email body.
I have some variations of the commands.
The next release, if you don’t mind sending emails from MMM, will probably change the solution to your email scripts.

User: Rambo-X

Date: Mar 1, 2021 4:16:05 GMT

Hi Philranger,

shocked.png  Nope…Not involved into any way of spam here. OMG.  rofl.png  It’s to get send some unique set of numbers to get them a code. Anyways I didn’t understand your solution. I am not that good with dealing within the cmd prompt.

User: Rambo-X

Date: Mar 1, 2021 5:49:24 GMT

Hello Steve… rofl.png

Apologies for my late Response. I don’t allow you to catch a break huh…. rofl.png

rofl.png

rofl.png  hahaha. I hope you are in good health and safe. Okay let me explain it further with some examples What I Have : Folder 01. Individual email addresses ( txt files - multiple ) Example : Cus-0001.txt, Cus-0002.txt, Cus-0003.txt ( Holds a single email address )

Note :

It doesn’t always have to be the case though, because I will refer to this note later on why I use one text file at a time for each customer. I wouldn’t mind All respective Customer Emails to be in one Txt file, but prefer if they are as they are which are stored in separate txt Files. Folder 02. Proof ( mmmacro files - multiple ) Example : Screenshot-0001.mmmacro, Screenshot-0002.mmmacro, Screenshot-0003.mmmacro     Note :

This is an extension I wake from the browser to capture a proof that I have generated and sent the requested codes to our Customer Groups. I don’t want an alternative to this. This codes are different to one another due to the email bodies and details we capture. Folder 03. The Set up ( mmmacro files - multiple : before and after files ) Example : Presend.mmmacro - Does the work required before pasting the Email Address Postsend.mmmacro - Does the work required after pasting the Email Address Folder 04.  Customer Email Copy and Paste Purpose ( mmmacro files -

Multiple ) Paste-Cus-0001.mmmacro - Copies and Pastes the email address of Cus-0001 from Cus-0001.txt Paste-Cus-0002.mmmacro - Copies and Pastes the email address of Cus-0002 from Cus-0002.txt Paste-Cus-0003.mmmacro - Copies and Pastes the email address of Cus-0003 from Cus-0003.txt . . . . . What I Run : ( For purpose of keeping things simple I have not mentioned the Folders I pull the macros from )

1 | RUN ACTION | RUN MACRO INLINE | C:\work\Presend.mmmacro
2 | RUN ACTION | RUN MACRO INLINE | C:\work\Paste-Cus-0001.mmmacro
3 | RUN ACTION | RUN MACRO INLINE | C:\work\Postsend.mmmacro
4 | RUN ACTION | RUN MACRO INLINE | C:\work\Presend.mmmacro
5 | RUN ACTION | RUN MACRO INLINE | C:\work\Paste-Cus-0002.mmmacro
6 | RUN ACTION | RUN MACRO INLINE | C:\work\Postsend.mmmacro
7 | RUN ACTION | RUN MACRO INLINE | C:\work\Presend.mmmacro
8 | RUN ACTION | RUN MACRO INLINE | C:\work\Paste-Cus-0003.mmmacro
9 | RUN ACTION | RUN MACRO INLINE | C:\work\Postsend.mmmacro
* | Screenshot 01
10 | RUN ACTION | RUN MACRO INLINE | C:\Proof\Screenshot-0001.mmmacro
* | Screenshot 01
11 | RUN ACTION | RUN MACRO INLINE | C:\work\Presend.mmmacro
12 | RUN ACTION | RUN MACRO INLINE | C:\work\Paste-Cus-0004.mmmacro
13 | RUN ACTION | RUN MACRO INLINE | C:\work\Postsend.mmmacro
14 | RUN ACTION | RUN MACRO INLINE | C:\work\Presend.mmmacro
15 | RUN ACTION | RUN MACRO INLINE | C:\work\Paste-Cus-0005.mmmacro
16 | RUN ACTION | RUN MACRO INLINE | C:\work\Postsend.mmmacro
17 | RUN ACTION | RUN MACRO INLINE | C:\work\Presend.mmmacro
18 | RUN ACTION | RUN MACRO INLINE | C:\work\Paste-Cus-0006.mmmacro
19 | RUN ACTION | RUN MACRO INLINE | C:\work\Postsend.mmmacro
* | Screenshot 01
20 | RUN ACTION | RUN MACRO INLINE | C:\Proof\Screenshot-0002.mmmacro
* | Screenshot 01

. . .

Note :     ( It doesn’t always have to be the case though, because I will refer to this note later - is now explained ) If you look at the above code, you’d realize it’s the same code which is repeating except the Paste-Cus-xxxx Code & the screenshot Code. Therefore from a previous solution you had given me, I dissect all Customer contacts to individual text files ( on how ever the sequence  I want ) and call them and paste them between Presend.mmmacro & a Postsend.mmmacro, and then the biggest issue I have is to keep deleting the Screenshot lines and apply them again and again if my next Clientele  needs proof from let’s say 6 by 6, 9 by 9, or 20 by 20 which can get extremely tiresome if they are like a team of 200 or above and on a specific  day if I have to send this to around different 30+ teams. . . . What I Need : Taking the Solution for “Each File in Folder (preferable ) over Each Line in File” can something like below be done to tackle the issue at hand. What my requirement would be in sequence.

  1. Let’s say I have 03 Components and 02 points of Variable feeds to control the Macro.
    Components at hand would be : ( a, b & c ) Variable feeds I would want to manually control would be ( b & c )

a. Number of all Customers in the Group ( Ex : 100 )

    b. Number of x by x for Proof ( Ex : 3 by 3 )

    c. Number of Customers I actually have to send Emails ( Ex : 50 ) - Lets call them Top performers

  1. So assuming I would only need to send emails to the Top 50 performers - assuming I dissected the Cus-0001 to Cus-0050 to be the Top performers,
  2. The Main-Macro sends emails via the above setup files and after every 3 emails which are sent, it runs only one screenshot macro file in sequence from Screenshot Folder. ( Screenshot-0001.mmmacro, Screenshot-0002.mmmacro, Screenshot-0003 etc.)
  3. The above goes on loop until the number of customers required to send emails in the Batch is met which is 50 in this Example.

Note :

Varieties of Screenshots are like 10, and it could keep going on a loop as far as required. Thanks a lot again to all of you. Have a Great Day.

User: Steve

Date: Mar 5, 2021 8:24:40 GMT

OrPMJslAMtScYqPUpgHc.jpg Mar 1, 2021 5:49:24 GMT

Rambo-X said: What I Need : Taking the Solution for “Each File in Folder (preferable ) over Each Line in File” can something like below be done to tackle the issue at hand. What my requirement would be in sequence.

  1. Let’s say I have 03 Components and 02 points of Variable feeds to control the Macro.
    Components at hand would be : ( a, b & c ) Variable feeds I would want to manually control would be ( b & c )

a. Number of all Customers in the Group ( Ex : 100 )

    b. Number of x by x for Proof ( Ex : 3 by 3 )

    c. Number of Customers I actually have to send Emails ( Ex : 50 ) - Lets call them Top performers

  1. So assuming I would only need to send emails to the Top 50 performers - assuming I dissected the Cus-0001 to Cus-0050 to be the Top performers,
  2. The Main-Macro sends emails via the above setup files and after every 3 emails which are sent, it runs only one screenshot macro file in sequence from Screenshot Folder. ( Screenshot-0001.mmmacro, Screenshot-0002.mmmacro, Screenshot-0003 etc.)
  3. The above goes on loop until the number of customers required to send emails in the Batch is met which is 50 in this Example.

Note :

Varieties of Screenshots are like 10, and it could keep going on a loop as far as required. Okay…so really you need some help with loop control?  You’ve got a lot of macro files your calling here so I’m assuming your ok with some of the basic FOR syntax.  The search function of this forum is pretty good.  Have a look here for some loop examples from this forum .  I have to level with you Rambo-X …I don’t really have the time at the moment to work through the detail you’ve posted.  Sorry about that.  Is there anyway you can break down your issue into something easier to digest?


Ctrl+V not working

URL: https://minimousemacro.proboards.com/thread/390/ctrl-working
Date: Mar 2, 2021 16:06:57 GMT

User: mk90

Date: Mar 2, 2021 16:06:57 GMT

Hi When I run macro Ctrl+V is not working Please help me to short it out Thanx

User: philranger

Date: Mar 2, 2021 20:53:42 GMT

Hello! I’d be happy to assist but I’m afraid you’ll need to be more specific Did you record a sequence or wrote the code? A couple hints: 1- spacing and separators do matter, doublecheck your syntax (it got me several times) 2- copying from some applications i to some others doesn’t work great (example: excel)

User: Key

Date: Mar 4, 2021 7:29:39 GMT

Hi When I run macro Ctrl+A/Ctrl+V/Enter is not working, too. Please help me

User: Key

Date: Mar 5, 2021 6:12:53 GMT

The problem has been resolved. It arose due to the installation of a different default language in Windows.

User: Steve

Date: Mar 5, 2021 7:34:13 GMT

Mar 5, 2021 6:12:53 GMT Key said: The problem has been resolved. It arose due to the installation of a different default language in Windows. Ahh yep that would do it. Thanks for posting the resolution through
smiley.png


Looping through a list

URL: https://minimousemacro.proboards.com/thread/389/looping-list
Date: Mar 1, 2021 13:46:50 GMT

User: Chaba

Date: Mar 1, 2021 13:46:50 GMT

Is there a way to loop through a list of variables so that each time it is using a different set of values? Something like this: Define S[value 1, value 2, value 3, value 4] S1[2, 5, 0, 1] S2[5, 2, 0, 3] S3… For element in list

run program It would be great if I could put all the values into the macro, but it would also work if I could call them from another document (if that is easier).

User: Steve

Date: Mar 2, 2021 7:28:14 GMT

Hi Chaba, String functions in MMM are quite basic at the moment. Looping through lists how you’ve outlined requires jumping through a few hoops in MMM as it is now. Im working on adding more functionality to add some core scripting logic into the app but I’ve been getting distracted with new ACTION functions. At the moment you are limited to solutions like this minimousemacro.proboards.com/thread/381/using-arrays-version-8-1 with this minimousemacro.proboards.com/thread/374/split-string and some basic looping <www.turnssoft.com/conditions.html#for> like this minimousemacro.proboards.com/thread/356/looping-macro .


Hold a Number larger than 10 Digits in a Variable ( Too big)

URL: https://minimousemacro.proboards.com/thread/387/hold-number-larger-digits-variable
Date: Feb 25, 2021 9:54:15 GMT

User: Rambo-X

Date: Feb 25, 2021 9:54:15 GMT

Hi Guys, Probably I’m doing something wrong here… I wanted to hold a number larger than 10 digits and the variable integer is failing at that. Which of course should happen considering the case. But I then tried to pull a number larger than 10 digits via String and also Decimal, still failed as it supposed to be. Is there anyway to get a Number larger than 10 digits to a Variable without directly getting it into the clipboard? Thank you.

User: Steve

Date: Feb 26, 2021 5:20:48 GMT

Hi Rambo-X

A value outside of -2,147,483,648 to 2,147,483,647 is either too big or too small for an integer in MMM. Under the hood MMM is declaring these as strict 4-byte integer values. It is not possible to do any arithmetic with an integer larger than 2,147,483,647 in MMM regardless of how you get the variable in. Defining a string in MMM to be a larger number than 10 digits and then trying arithmetic will also fail.
It depends really on what you are trying to achieve with the value. Do you just need it as a text because strings though can easily take 10 characters so will have no problem holding that 10 digit value. OrPMJslAMtScYqPUpgHc.jpg Feb 25, 2021 9:54:15 GMT

Rambo-X said: But I then tried to pull a number larger than 10 digits via String and also Decimal, still failed as it supposed to be. When you say you had trouble pulling the number larger than 10 digits via a string what exactly did you mean?

OrPMJslAMtScYqPUpgHc.jpg Feb 25, 2021 9:54:15 GMT

Rambo-X said: Is there anyway to get a Number larger than 10 digits to a Variable without directly getting it into the clipboard? A string can take it. But again, it depends what you need it for. Getting values into MMM can come from file, have a look at <www.turnssoft.com/conditions.html#inputfromfile> .

User: philranger

Date: Feb 28, 2021 0:46:40 GMT

What do you want to do with that variable? Could it be temporarily truncated for processing then reassembled?

User: Rambo-X

Date: Mar 1, 2021 4:09:18 GMT

Hello Steve, Sorry for my late response. Thank God, String Worked. My bad that I had an Integer somewhere in the long code it messed up the entire loop as well as some other minor issues and I misunderstood that String wasn’t picking it up. Sorry for that.

User: Rambo-X

Date: Mar 1, 2021 4:10:58 GMT

Hi Philranger, It was just to get to another file and merge it with some other numbers to make a unique code buddy. Tc.


Ignore Clicking certain words or phrases?

URL: https://minimousemacro.proboards.com/thread/388/ignore-clicking-certain-words-phrases
Date: Feb 27, 2021 12:42:47 GMT

User: kgoerbig

Date: Feb 27, 2021 12:42:47 GMT

My workplace has a real-time dashboard. On that dashboard, realtime tasks load on the screen. Each task has a title, and we can click on them to work a task. Certain tasks I cannot work, so it is a bit of a pain accidently clicking on that task. Is there a way for MMM to ignore keywords, and not click if that keyword or phrase shows up? I have a macro setup to click automatically on a set X Y coord on the screen to click as each task comes in, so I would like it to ignore clicking on tasks with the below keywords. Example keywords: Unassigned ,  Hour , and Verify.

User: philranger

Date: Feb 27, 2021 15:07:25 GMT

Hello, Here’s how I would try to tackle it. If the text can be selected with the mouse, doing a keypress ctrl-c to put it in the clipboard variable may allow you to further process it and take decisions accordingly. Since MMM doesn’t have strong string manipulation yet, you may have to paste the string into a notepad or something else to process it before though (find the keyword, copy it to the clipboard and check if the clipboard matches) Good luck!

User: Steve

Date: Feb 28, 2021 2:07:29 GMT

Could “WINDOW TITLE” and “SELECT WINDOW BY NAME” condition help? If you can click into the task does it bring the name up in a window? (more here <www.turnssoft.com/conditions.html#windowtitle> and here <www.turnssoft.com/conditions.html#selectwindowbyname> ).


Is there a way to set a Windows Size and Position?

URL: https://minimousemacro.proboards.com/thread/382/set-windows-size-position
Date: Feb 12, 2021 18:33:51 GMT

User: mattmc

Date: Feb 12, 2021 18:33:51 GMT

Hello All, I am new to Mini Mouse Macro and am trying to figure out how to set a widows size and position. Is this possible with Mini Mouse Macro? thanks

User: loop41

Date: Feb 12, 2021 22:11:17 GMT

I think there is no function capable of doing what you want to do ,,,,, but you can always solve manualy  with this: If you want to change the dimensions of a window, you can always position yourself in one of the corners, LEFT CLICK DOWN, move to the position you want and then LEFT CLICK RELEASE, like this: ******

1 | 100 | 50 | 500 | Left Click Down
2 | 100 | 500 | 200 | Left Click Release

And to change the position of the window you have to positioned on the head of the window and apply the same principle ….. Hopefully and with this you have solved your problem.

User: Steve

Date: Feb 12, 2021 22:15:19 GMT

Hi mattmc

If you can do it manually with your mouse and keyboard then Mini Mouse Macro (MMM) can replay that back. If you can’t do it manually then MMM might be able to do it with condition based logic ( <www.turnssoft.com/conditions.html> ).
A demo on how to do basic macro recording (it’s an older version on MMM but the steps are the same): Basic conditions : Some community demo’s : <www.turnssoft.com/mmmyoutube.html> If you can’t find what you are after, this forum has a lot of code and usage examples. The ‘search’ function works pretty well here. If you need further help try and detail exactly what you are trying to achieve. The more detail the better
wink.png Hope this helps!

User: Steve

Date: Feb 12, 2021 22:17:56 GMT

hgoGvuyUU0mnOSFtjGuE.jpg Feb 12, 2021 22:11:17 GMT

loop41 said: I think there is no function capable of doing what you want to do ,,,,, but you can always solve with this: If you want to change the dimensions of a window, you can always position yourself in one of the corners, LEFT CLICK DOWN, move to the position you want and then LEFT CLICK RELEASE, like this: ******

1 | 100 | 50 | 500 | Left Click Down
2 | 100 | 500 | 200 | Left Click Release

And to change the position of the window you have to positioned on the head of the window and apply the same principle ….. Hopefully and with this you have solved your problem. Thanks loop41 ! Yep, classic drag and drop recording.

User: philranger

Date: Feb 13, 2021 13:12:42 GMT

One way to move a window to a known position is to hold the “windows” key and use the arrows to make it either half left or half right for example.

User: zeak

Date: Feb 15, 2021 5:24:56 GMT

If you have access and knowledge of PowerShell, It is possible to program it with that and using MMM to input the size and position.

User: mattmc

Date: Feb 16, 2021 16:22:53 GMT

Hello Everyone, Thanks for all the input. I am not sure if this is a great approach, but in the meantime I found a program called “WindowManger” <www.desksoft.com/WindowManager.htm> that allows you to save the position and size of a windows and allows you to recall them with a hotkey or command line argument. Cheers Matt


How do you use a keypress and keep the key pressed

URL: https://minimousemacro.proboards.com/thread/383/use-keypress-keep-key-pressed
Date: Feb 14, 2021 3:16:52 GMT

User: Ben M

Date: Feb 14, 2021 3:16:52 GMT

I am trying to create a macro for a game and need to move forward for 2 seconds, jump, and then backwards for 4 seconds. The macro is something like this:

1 | 1072 | 1040 | 3736 | Keypress w
2 | 865 | 440 | 889 | Keypress space
3 | 1112 | 1038 | 848 | Keypress s

But what I think it’s doing is a single key down/up for w, then space, then s. Is there a way to signal that ‘w’ should be pressed for 2 seconds, then press space (which can just be an instant key down/up) and then press ‘s’ for 4 seconds? Thanks for any assistance! Ben

User: Steve

Date: Feb 14, 2021 8:26:55 GMT

Key Down/Key Up is the way to go for this

1 | 1072 | 1040 | 3736 | Keypress w | Key Down
1 | 1072 | 1040 | 2000 | Keypress w | Key Up
2 | 865 | 440 | 100 | Keypress space
3 | 1112 | 1038 | 100 | Keypress s | Key Down
4 | 1112 | 1038 | 4000 | Keypress s | Key Up

Line 1 - ‘w’ down Line 2 - ‘w’ up after 2 seconds Line 3 - ‘space’ 100 ms after Line 4 - ‘s’ down Line 5 - ‘s’ up after 4 seconds This post ( minimousemacro.proboards.com/thread/205/multi-key-pressing ) has another example. Hope this helps!

User: philranger

Date: Feb 14, 2021 16:16:53 GMT

Does this work with modifier keys such as shift or alt?

User: Steve

Date: Feb 15, 2021 7:09:15 GMT

USoWV0dWXmFkYDAjTGiw.jpg Feb 14, 2021 16:16:53 GMT

philranger said: Does this work with modifier keys such as shift or alt? No unfortunately not. Modifier keys such as shift and alt are treated differently in MMM.

User: philranger

Date: Feb 15, 2021 22:36:38 GMT

Thanks!


Simple Math Functions

URL: https://minimousemacro.proboards.com/thread/308/simple-math-functions
Date: Sept 22, 2020 1:05:16 GMT

User: jeff

Date: Sept 22, 2020 1:05:16 GMT

How do you do simple math in MMM? I am trying to add 1 to an int and then divide it by 2. This doesn’t seem to work easily in MMM. I even struggle to define int2 based on int1 and a constant. For instance

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::3
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+1%INTEGER1%

Gives me 13 instead of two. And putting the 1 at the end gives me 31. I’ve also tried chaining variables together via the 7.4 update i.e.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::3
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::1
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+%INTEGER%+%INTEGER1%
5 | RUN ACTION | MESSAGE PROMPT | %INTEGER2%::::0

but that just throws me an error.

User: Steve

Date: Sept 22, 2020 10:12:40 GMT

Hi jeff

XmNdYKhXPVKcjehSJmta.jpg Sept 22, 2020 1:05:16 GMT

jeff said: How do you do simple math in MMM? I am trying to add 1 to an int and then divide it by 2. This doesn’t seem to work easily in MMM. I even struggle to define int2 based on int1 and a constant. For instance

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::3
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+1%INTEGER1%

Prior to a macro line being executed any variables that are used in the line are converted to its value. Your line 1 declares INTEGER1 as 3 and at line 2 we are essentially doing this:

RUN the ACTION to DEFINE the INTEGER VARIABLE of INTEGER2 to +13 So the results is going to be INTEGER2 + 13. If INTEGER2 is 0 (undefined) then 0+13=13. XmNdYKhXPVKcjehSJmta.jpg Sept 22, 2020 1:05:16 GMT

jeff said: How do you do simple math in MMM? I am trying to add 1 to an int and then divide it by 2. This doesn’t seem to work easily in MMM. Simple math is done like this:    Define Variable INTEGER (9=9)

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::9

   Add 1 to an INT (9+1=10)

2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1

   Divide it by 2 (10/2=5)

3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::/2

XmNdYKhXPVKcjehSJmta.jpg Sept 22, 2020 1:05:16 GMT

jeff said: I’ve also tried chaining variables together via the 7.4 update i.e.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::3
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::1
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+%INTEGER%+%INTEGER1%
5 | RUN ACTION | MESSAGE PROMPT | %INTEGER2%::::0

but that just throws me an error. The line 3 syntax should be this:

3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+%INTEGER%::+%INTEGER1%

But that doesn’t seem to be working as expected.  I’ll have a look at the source code and figure out why.  You’ve found a bug, thanks for pointing that out. More on integer math can be found here <www.turnssoft.com/conditions.html#define_integer_variable> I hope this helps.

User: Chaba

Date: Dec 3, 2020 21:23:02 GMT

The line 3 syntax should be this:

3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+%INTEGER%::+%INTEGER1%

But that doesn’t seem to be working as expected. I’ll have a look at the source code and figure out why. You’ve found a bug, thanks for pointing that out. Has this been fixed? I’m running version 8.0 and can’t seem to get any of the chaining to work properly (it only evaluates the first value). Thanks

User: Steve

Date: Dec 5, 2020 1:23:53 GMT

Dec 3, 2020 21:23:02 GMT Chaba said: The line 3 syntax should be this:

3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+%INTEGER%::+%INTEGER1%

But that doesn’t seem to be working as expected. I’ll have a look at the source code and figure out why. You’ve found a bug, thanks for pointing that out. Has this been fixed? I’m running version 8.0 and can’t seem to get any of the chaining to work properly (it only evaluates the first value). Thanks No sorry it hasn’t. It’s going to be with the next update. I will be dropping a minor update before the end of year. I’ve logged an internal bug BZ for it here MMM_BZ4 (https://www.turnssoft.com/bugtrack.html#bugs). Edit

  • I’ve fixed the issue in the code today. It’s been added to “Fixes” minimousemacro.proboards.com/thread/278/update-coming-next-mouse-macro

User: Chaba

Date: Dec 6, 2020 21:35:30 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Dec 5, 2020 1:23:53 GMT

Steve said: Dec 3, 2020 21:23:02 GMT Chaba said: Great! This app just gets better and better. Thanks for your hard work.

User: Chaba

Date: Feb 13, 2021 21:31:55 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Dec 5, 2020 1:23:53 GMT

Steve said: Dec 3, 2020 21:23:02 GMT Chaba said: Hey Steve, thanks for the 8.1 update! I see that now my code is working for the chaining math with integer variables, but it seems to still be broken for the decimal variables. For example, if I type:

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::3::*2
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::3::*2

DECIMAL evaluates to 3, while integer evaluates to 6.

User: Steve

Date: Feb 14, 2021 7:26:50 GMT

Feb 13, 2021 21:31:55 GMT Chaba said: JFoc0jEJzNqTrrLxeLBk.jpg Dec 5, 2020 1:23:53 GMT

Steve said: Hey Steve, thanks for the 8.1 update! I see that now my code is working for the chaining math with integer variables, but it seems to still be broken for the decimal variables. For example, if I type:

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::3::*2
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::3::*2

DECIMAL evaluates to 3, while integer evaluates to 6. Ah yep. Looks like I missed that one. I’ve added it to the bug list as MMM_BZ18 . I’ll look into fixing it for the next update.


Using Arrays in Version 8.1

URL: https://minimousemacro.proboards.com/thread/381/using-arrays-version-8-1
Date: Feb 8, 2021 19:16:01 GMT

User: Steve

Date: Feb 8, 2021 19:16:01 GMT

Arrays are coming in version 8.2 and are still a work in progress but can still be used in version 8.1.
The code under the hood exists however it’s just not available in the ‘Add Condition’ page. For those keen to give it a try you would need to add them in manually.  Find some syntax below to try. If you’ve got some feedback on how you’d like to see arrays used then please comment below. Cheers, Steve.

* | *******
* | DEFINE
* | *******
   1 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::bat
   2 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::cat
   3 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::ant
   4 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::dog
   5 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::egg
* | *******
* | CLEAR
* | *******
   6 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%.clear
* | *******
* | DEFINE
* | *******
   7 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::ant
   8 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::bat
   9 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::cat
   10 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::dog
   11 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%::egg
* | *******
* | REVERSE
* | *******
   12 | RUN ACTION | MESSAGE PROMPT | Reverse the Array::reverse::1
   13 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%.reverse
* | *******
* | ITERATE
* | *******
   14 | FOR | EACH | I IN | %ARRAY% | next
   15 | RUN ACTION | MESSAGE PROMPT | %ARRAY%I%%::%i%::1
   16 | FOR | NEXT
* | *******
* | SORT
* | *******
   17 | RUN ACTION | MESSAGE PROMPT | Sort the Array::sort::1
   18 | RUN ACTION | DEFINE ARRAY VARIABLE | %ARRAY%.sort
* | *******
* | ITERATE
* | *******
   19 | FOR | EACH | I IN | %ARRAY% | next
   20 | RUN ACTION | MESSAGE PROMPT | %ARRAY%I%%::%i%::1
   21 | FOR | NEXT
* | *******
* | END
* | *******

minimousemacro-arrays.gif

User: loop41

Date: Feb 10, 2021 18:33:42 GMT

Hi Steve

One of the things that I like the most about the ARRAYS is that you can move at will through their positions, and you can take a piece of data that is located in position 30, or something like that.

With the example you showed us in the previous comment:

   7 | RUN ACTION | DEFINE ARRAY VARIABLE | % ARRAY% :: ant
   8 | RUN ACTION | DEFINE ARRAY VARIABLE | % ARRAY% :: bat
   9 | RUN ACTION | DEFINE ARRAY VARIABLE | % ARRAY% :: cat
   10 | RUN ACTION | DEFINE ARRAY VARIABLE | % ARRAY% :: dog
   11 | RUN ACTION | DEFINE ARRAY VARIABLE | % ARRAY% :: egg

There could be a function to designate a variable (STRING1) the word “dog”, in the previous definition, we define “dog” as the fourth definition. The function could be:

1 | RUN ACTION | DEFINE STRING VARIABLE | % STRING1% ::% ARRAY% :: POSITION :: 4

or something like that,, I know I can get this with this cycle (It’s just a guess, I haven’t tried it)

   14 | FOR | EACH | I IN | % ARRAY% | next
2 | IF | ARRAY VARIABLE | % ARRAY% | IS | dog | DEFINE STRING VARIABLE | % STRING1% ::% ARRAY% | ELSE | CONTINUE
   16 | FOR | NEXT

But,,,It would be a more direct way ,,,, and with that, we managed to win in time when the ARRAY is very large.

User: loop41

Date: Feb 10, 2021 18:49:01 GMT

Another thing that I would like is the work between ARRAY, for example: Have an ARRAY1 of INTEGER ARRAY1 = 1,2,3,4,5,6,7,8,9,0 There could be functions to select and save in another ARRAY (ARRAY2) the even numbers, odd numbers, multiples of 10, etc.


How to close error box

URL: https://minimousemacro.proboards.com/thread/379/close-error-box
Date: Feb 5, 2021 14:30:45 GMT

User: eddy

Date: Feb 5, 2021 14:30:45 GMT

I have a simple task but have tried many things and no luck. Just looking for a way for the macro to wait and when error box pops up to then go to next line clear the error box go back to top wait until error box comes back and repeat: tried by color and no luck the error box is always same color same location. Any suggestions? And action tried pixel color tab space think that would see color change and continue but sadly not.

User: loop41

Date: Feb 5, 2021 15:06:13 GMT

you should be able to solve by checking the pixel color ,,,,,,, the error box is from the MMM? or from some other program in which you are running the MMM code? Sometimes to check the pixel color, when we are going to declare the function, we select the pixel ,,,,, and in some cases when we position the mouse over the pixel the color changes … This may be a possible cause of your error . Example: we have a black button, when we are going to activate it we move the mouse over it and at that moment the button changes from black to gray ,,,, you may want to check the black color, but what you are checking is gray .. Could this be your mistake? I apologize for the explanation, I don’t know if I confused you more than you were ,, smiley.png

User: Steve

Date: Feb 5, 2021 22:29:51 GMT

defaultavatar.png Feb 5, 2021 14:30:45 GMT

eddy said: I have a simple task but have tried many things and no luck. Just looking for a way for the macro to wait and when error box pops up to then go to next line clear the error box go back to top wait until error box comes back and repeat: tried by color and no luck the error box is always same color same location. Any suggestions? And action tried pixel color tab space think that would see color change and continue but sadly not. Sometimes you can catch the title of a popup window and use that as your action tiger. Have a look at this post minimousemacro.proboards.com/thread/253/select-window-name-wildcard-text and this one minimousemacro.proboards.com/thread/339/problema-con-select-window-name . Have a look at this condition <www.turnssoft.com/conditions.html#windowtitle> and this one <www.turnssoft.com/conditions.html#selectwindowbyname> . Hope it helps.

User: eddy

Date: Feb 5, 2021 23:58:39 GMT

Thanks found success but also updated from version 7 to 8. Version 7 I’m guessing may have some glitches also unknown but working now thanks Only worked also when got new version.

User: Steve

Date: Feb 6, 2021 1:22:42 GMT

Hi eddy I’d definitely recommend upgrading to the latest version, especially between major release versions like 7 to 8.
Can I ask, what was your solution? Did you go with Pixel or Window Title conditions?


Split a string

URL: https://minimousemacro.proboards.com/thread/374/split-string
Date: Jan 22, 2021 20:28:53 GMT

User: loop41

Date: Jan 22, 2021 20:28:53 GMT

I need a little help with a detail that I have. In short. What I need is to divide a string. Ex: % STRING1% = BLUE RED I need % STRING2% = BLUE and % STRING3% = RED Any possible help is welcome. Thanks a lot

User: Steve

Date: Jan 24, 2021 4:34:30 GMT

Hi loop41

MMM is not great at any real string functions. I’m working on adding it in but its not made it’s way into a release. I’d had a bit of time off releasing any updates for MMM however i’m getting back on the wagon and will try to get a minor release out with some more string functions. In the meantime, to get variables into MMM you have a few options; 1 - Define them via an action (see string <www.turnssoft.com/conditions.html#string_variable> ) 2 - Define them dynamically (see input from file <www.turnssoft.com/conditions.html#inputfromfile> ) Option 2 here is your best bet. You will need to get them formatted out to file in a manner where MMM can read them back and assign them to vars. For this see <www.turnssoft.com/conditions.html#runviacmdc> (you’ll probs needs to format them out using an external script with the MMM var passed as a param) and/or <www.turnssoft.com/conditions.html#filecreate> .

User: loop41

Date: Jan 29, 2021 22:50:15 GMT

Hi Steve I am very grateful for all your effort, I will see what I can do with those 2 options that you mentioned ,,,, however I already found another way of solution., which does not involve Split a string I’m very excited about the new update, especially with the arrays. Thank you very much

User: philranger

Date: Jan 30, 2021 13:36:44 GMT

One way to do it is to paste the string in a notepad, do ctrl+home to be sure you’re at the beginning, hit ctrl+shift+right to select a whole word, cut it and store wherever you want., then repeat as needed.

User: loop41

Date: Jan 31, 2021 15:03:57 GMT

exactly, but that’s the ugly and annoying part, I know I can solve it by opening the txt file, but I don’t like it suggestion Steve : Create function divide string

1 | RUN ACTION | Split_String | "%txt%", "%STRINGX%", etc | Character to locate to make the cut | part before cutting %STRINGY% | part after cut % STRINGZ%

or instead of locating the character in the string to perform the cut, it could be by position. If we had a string with a length of 80 characters, we could do a function that cuts for example in the character 50 and in the 1st string we would have the first 50 characters and in the 2nd string the other 30 …… thanks for reading this …. bye

User: philranger

Date: Feb 2, 2021 12:38:15 GMT

Where is your original string located? Maybe you could split it from there as if it were in a notepad instead of copying it all at once? This would work for MS Word, Excel, any input box, etc.

User: zeak

Date: Feb 3, 2021 6:20:11 GMT

USoWV0dWXmFkYDAjTGiw.jpg Feb 2, 2021 12:38:15 GMT

philranger said: Where is your original string located? Maybe you could split it from there as if it were in a notepad instead of copying it all at once? This would work for MS Word, Excel, any input box, etc. Hi Phil, I’ve tried doing something like this before, The issue I ran into was telling MMM where to make the cut. Can I ask how you have coded MMM to decide where to make the cut depending on what text it is looking at?

User: philranger

Date: Feb 3, 2021 12:10:21 GMT

Hi Zeak, Firstly I’d like to thank you for all of the help you provide on this forum, always nice respectful and helpful, even on very basic repetitive questions. I use 3 ways: 1- The simple one.

  • Alt-Tab to the window where my text source is
  • Ctrl-home to be at the beginning of the text
  • Ctrl-shift-right to select one word (or shift-down if I need the full line)
  • Ctrl-x to cut it so my text is ready for next pass. Sometimes I need to add a “delete” to remove a space or a line feed.
  • Decide in MMM what to do with the content of the clipboard
  • Repeat 2- same thing but if the delimiter is not a space I first replace all delimiters by a space (or a line feed if I want to use the full line selection method. I then replace all double delimiters by a single one a couple tomes just to be sure. If my sources are in text files, I use Notepad++ to pretreat them as it has the ability to do a replace for all of the files in a folder at once, as well as doing complex searches (special characters, regex, variable length search, etc. ) as well as its own macro system (limited to Notepad++ though)

3- I used to use MS-Excel and formulas or macros for the tokenization, but didn’t need it for quite a while now as I am getting better with MMM and Notepad++. Excel is a bit of a bummer as you cannot easily copy from it and expect just text as an output depending on where you paste. I often needed to first paste in a notepad, then re-copy from there. That’s just one of the reasons why being able to do alt-tab-tab would be nice ;-)

User: loop41

Date: Feb 3, 2021 16:35:47 GMT

The string emerges as the code flows ,,,, let’s say it is an http address ,,, example: http: // xxxxxxxx / xxxx / 5248759532 What I need is the number ,,,,,,, solution that I use: 1- pass the http address to a STRING 2- Open .txt and copy it there 3- I know the exact position of the number 4- with a LEFT CLICK DOWN from the initial position of the number, I move to the end, then LEFT CLICK RELEASE, with this I select the number 5- With a PRESSKEY CTRL + C, I copy the number 6- Then I designate a STRINGX what is in the CLIPBOARD 7- Done Haha ,,,, this works for me, but it is not what I want … the idea would be not to have to interact with the txt file …. The program should only do it with a function …. That is where we should arrive ,,,, with steve’s wit my sincere thanks to all of you guys, for making this community have this level of dynamism I really like it when I enter this forum and I see how many responses my comment has … wink.png

User: zeak

Date: Feb 4, 2021 23:37:47 GMT

Thank you Phil. Both of those look to be good methods, unfortunately the string I am working with is mixed numbers and letters with no spaces. eg. 2014SKU20220312, 908SKU20211130 or 20210325SKU992, 20220904SKU5001. I need to pull the numbers on each side of the SKU text and then determined if its the item number or the date. I couldn’t work out how to do this via MMM.

User: philranger

Date: Feb 5, 2021 3:14:11 GMT

Sorry if I say dumb stuff as I don’t know all of your variables… In a notepad or something else: find “SKU”, escape, ctrl-shift-left, cut into an int variable, compare to plausible year span, find sku again (same one), ctrl-shift-right, cut into another numeric variable?

User: Steve

Date: Feb 5, 2021 5:55:40 GMT

I’ve got this…. Its going to look like this at variable declaration: In the STRING example we have CAT DOG FISH and we want them to be split by the delimiter of ‘ ‘ (a space) and assigned in sequence to string vars. In the CUSTOM VAR (%ANIMALS%) we have the same example, with edition of cow and goat.

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::test
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::
5 | RUN ACTION | DEFINE STRING VARIABLE | %STRING4%::
6 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::CAT DOG FISH::DELIM= ::LIMIT=0
7 | RUN ACTION | MESSAGE PROMPT | %string% %string1% %string2% %string3% %string4%
* | Custom Vars ***********************
8 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::CAT DOG FISH COW GOAT
9 | RUN ACTION | DEFINE STRING VARIABLE | %ANIMALS%::%STRING%::DELIM= ::LIMIT=0
10 | RUN ACTION | MESSAGE PROMPT | %ANIMALS% %ANIMALS1% %ANIMALS2% %ANIMALS3% %ANIMALS4%

At line 1 we define string to test At line 2 through 5 we define string1/2/3/4 to be empty. This is so we can clear the vars for the test. At line 6 we define our string list. It reads like this:

  • Starting from STRING1
  • Apply ‘CAT DOG FISH’, split by the delim of ‘ ‘ (a space)
  • Do not limit the variable assignment.
    At line 7 we output the result. Notice that the variable assignment started at string1 and went up to string3. STRING4 was still the empty variable. At line 8 we do the same thing using a custom variable name (custom variables are coming in the next version upgrade). Now, this is just a quick implementation at this stage. I hope to add a little more to this. For now, so I can get this update out, Im going to keep it simple. Think it will work? minimousemacro_splitastring.gif

User: loop41

Date: Feb 5, 2021 14:48:21 GMT

NICEEEEE


Scheduler

URL: https://minimousemacro.proboards.com/thread/378/scheduler
Date: Feb 4, 2021 23:23:46 GMT

User: SLM

Date: Feb 4, 2021 23:23:46 GMT

I’ve browsed around a bit, but wasn’t able to find anything definitive. Is there a way to set up a set schedule, so a macro plays at a specific time? Thank you in advance.

User: philranger

Date: Feb 5, 2021 3:06:56 GMT

Yes, Windows has a “scheduler” so you can start mini mouse macro through it.

User: SLM

Date: Feb 5, 2021 6:10:53 GMT

How does that play the macro at that specific time if “Windows Scheduler” just launches MMM?

User: Steve

Date: Feb 5, 2021 8:34:47 GMT

Mini Mouse Macro has some command line options that can be used to pass parameters. 5491027.png?483.8009049773756 Have a look at the FAQ ( <www.turnssoft.com/faq2.html> ). I have some examples here on how to enable file association, pass parameters, and schedule a macro to run with task scheduler.


Simple pixel test loop

URL: https://minimousemacro.proboards.com/thread/377/simple-pixel-test-loop
Date: Jan 31, 2021 1:06:58 GMT

User: Chris

Date: Jan 31, 2021 1:06:58 GMT

My macro seems to stop after only 1 iteration. The pixel in question is normally [R=221, G=74, B=112]. I want to keep clicking a button 100 times again until it changes. However, it only clicks the first 100 times, and then stops. If as a test I change the pixel to some other color, it properly clicks 100 times, and then clicks the  400|600 before exiting. What am I doing wrong?

15 | FOR | I | = | 0 TO 100  | NEXT
20 | 1000 | 350 | 25 | Left Click
25 | FOR | NEXT
30 | IF | PIXEL COLOR | Color [R=221, G=74, B=112]::At Location [X:450 Y:600] | IS THE SAME | GOTO MACRO LINE | 15
35 | 450 | 600 | 25 | Left Click

User: Chris

Date: Jan 31, 2021 1:33:32 GMT

After reading other posts, it works fine when I GOTO a label, and not a functional line. This is a nuisance!

* | Label
15 | FOR | I | = | 0 TO 100 | NEXT
20 | 1000 | 350 | 25 | Left Click
25 | FOR | NEXT
30 | IF | PIXEL COLOR | Color [R=221, G=74, B=112]::At Location [X:450 Y:600] | IS THE SAME | GOTO MACRO LINE | Label
35 | 450 | 600 | 25 | Left Click

User: zeak

Date: Feb 1, 2021 4:42:04 GMT

Hi Chris, I cannot seem to replicate this problem, I noticed your lines are 15,20,25,30,35. Can I ask if you have manually changed these line number? Because I feel that could be causing a issue, to correct this - click on one of your lines and right click then ‘Relist Rows’, you will have to redirect your GoTo Macro Line after. But personally I use labels all the time so that if at a future point I update the macro, I don’t have to remember which lines were pointing to a particular line. SKW6Us6.gif

User: zeak

Date: Feb 1, 2021 4:44:26 GMT

To confirm, the action GoTo Macro Line will not see a line that has been manually changed to a different number. If you have the first line as 15 but tell GoTo Macro Line 1, the first line will still be selected.


Using multiple keypress in one Macro…

URL: https://minimousemacro.proboards.com/thread/375/using-multiple-keypress-macro
Date: Jan 22, 2021 21:27:58 GMT

User: Sanjoe

Date: Jan 22, 2021 21:27:58 GMT

Hey guys, I have the following problem. I would like to use the subtract key to perform one function and the multiply key to execute another. If none of the keys have been pressed, nothing should happen and it should also be waited all the time for something to be done. Anyway… It doesn’t work. The functions work wonderfully in themselves, but I can’t trigger them by keypress. This is what I created. Any tips or suggestions?

* | KEYS
1 | IF | KEYBOARD KEYPRESS | Keypress subtract | IS | GOTO MACRO LINE | MS_REWARDS_BONUS_QUIZ | ELSE | 1 | IF | KEYBOARD KEYPRESS | Keypress multiply | IS | GOTO MACRO LINE | * | MS_REWARDS_WEB SEARCH
2 | RUN ACTION | GOTO MACRO LINE | 1
* | MS_REWARDS_BONUS_QUIZ
3 | 405 | 978 | 1500 | Left Click
4 | 378 | 972 | 1500 | Left Click
5 | 478 | 972 | 1500 | Left Click
6 | 578 | 972 | 1500 | Left Click
7 | 678 | 972 | 1500 | Left Click
8 | 778 | 972 | 1500 | Left Click
9 | 878 | 972 | 1500 | Left Click
10 | 978 | 972 | 1500 | Left Click
11 | 1078 | 972 | 1500 | Left Click
12 | 1178 | 972 | 1500 | Left Click
13 | 378 | 972 | 1500 | Left Click
14 | 478 | 972 | 1500 | Left Click
15 | 578 | 972 | 1500 | Left Click
16 | 678 | 972 | 1500 | Left Click
17 | 778 | 972 | 1500 | Left Click
18 | 878 | 972 | 1500 | Left Click
19 | 978 | 972 | 1500 | Left Click
20 | 1078 | 972 | 1500 | Left Click
21 | 1178 | 972 | 1500 | Left Click
22 | 378 | 972 | 1500 | Left Click
23 | 478 | 972 | 1500 | Left Click
24 | 578 | 972 | 1500 | Left Click
25 | 678 | 972 | 1500 | Left Click
26 | 778 | 972 | 1500 | Left Click
27 | 878 | 972 | 1500 | Left Click
28 | 978 | 972 | 1500 | Left Click
29 | 1078 | 972 | 1500 | Left Click
30 | 1178 | 972 | 1500 | Left Click
31 | RUN ACTION | GOTO MACRO LINE | 1
* | MS_REWARDS_WEB SEARCH
32 | 883 | 53 | 1000 | Left Click
33 | X | X | 1000 | Keypress 1234567891011121314151617181920
34 | X | X | 500 | Keypress enter
35 | 570 | 146 | 1000 | Left Click
36 | X | X | 500 | Keypress backspace
37 | X | X | 500 | Keypress enter
38 | 570 | 146 | 1000 | Left Click
39 | X | X | 1000 | Keypress delete
40 | X | X | 500 | Keypress backspace
41 | X | X | 500 | Keypress enter
42 | 570 | 146 | 1000 | Left Click
43 | X | X | 1000 | Keypress delete
44 | X | X | 500 | Keypress backspace
45 | X | X | 500 | Keypress enter
46 | 570 | 146 | 1000 | Left Click
47 | X | X | 1000 | Keypress delete
48 | X | X | 500 | Keypress backspace
49 | X | X | 500 | Keypress enter
50 | 570 | 146 | 1000 | Left Click
51 | X | X | 1000 | Keypress delete
52 | X | X | 500 | Keypress backspace
53 | X | X | 500 | Keypress enter
54 | 570 | 146 | 1000 | Left Click
55 | X | X | 1000 | Keypress delete
56 | X | X | 500 | Keypress backspace
57 | X | X | 500 | Keypress enter
58 | 570 | 146 | 1000 | Left Click
59 | X | X | 1000 | Keypress delete
60 | X | X | 500 | Keypress backspace
61 | X | X | 500 | Keypress enter
62 | 570 | 146 | 1000 | Left Click
63 | X | X | 1000 | Keypress delete
64 | X | X | 500 | Keypress backspace
65 | X | X | 500 | Keypress enter
66 | 570 | 146 | 1000 | Left Click
67 | X | X | 1000 | Keypress delete
68 | X | X | 500 | Keypress backspace
69 | X | X | 500 | Keypress enter
70 | 570 | 146 | 1000 | Left Click
71 | X | X | 1000 | Keypress delete
72 | X | X | 500 | Keypress backspace
73 | X | X | 500 | Keypress enter
74 | 570 | 146 | 1000 | Left Click
75 | X | X | 1000 | Keypress delete
76 | X | X | 500 | Keypress backspace
77 | X | X | 500 | Keypress enter
78 | 570 | 146 | 1000 | Left Click
79 | X | X | 1000 | Keypress delete
80 | X | X | 500 | Keypress backspace
81 | X | X | 500 | Keypress enter
82 | 570 | 146 | 1000 | Left Click
83 | X | X | 1000 | Keypress delete
84 | X | X | 500 | Keypress backspace
85 | X | X | 500 | Keypress enter
86 | 570 | 146 | 1000 | Left Click
87 | X | X | 1000 | Keypress delete
88 | X | X | 500 | Keypress backspace
89 | X | X | 500 | Keypress enter
90 | 570 | 146 | 1000 | Left Click
91 | X | X | 1000 | Keypress delete
92 | X | X | 500 | Keypress backspace
93 | X | X | 500 | Keypress enter
94 | 570 | 146 | 1000 | Left Click
95 | X | X | 1000 | Keypress delete
96 | X | X | 500 | Keypress backspace
97 | X | X | 500 | Keypress enter
98 | 570 | 146 | 1000 | Left Click
99 | X | X | 1000 | Keypress delete
100 | X | X | 500 | Keypress backspace
101 | X | X | 500 | Keypress enter
102 | 570 | 146 | 1000 | Left Click
103 | X | X | 1000 | Keypress delete
104 | X | X | 500 | Keypress backspace
105 | X | X | 500 | Keypress enter
106 | 570 | 146 | 1000 | Left Click
107 | X | X | 1000 | Keypress delete
108 | X | X | 500 | Keypress backspace
109 | X | X | 500 | Keypress enter
110 | 570 | 146 | 1000 | Left Click
111 | X | X | 1000 | Keypress delete
112 | X | X | 500 | Keypress backspace
113 | X | X | 500 | Keypress enter
114 | 570 | 146 | 1000 | Left Click
115 | X | X | 1000 | Keypress delete
116 | X | X | 500 | Keypress backspace
117 | X | X | 500 | Keypress enter
118 | 570 | 146 | 1000 | Left Click
119 | X | X | 1000 | Keypress delete
120 | X | X | 500 | Keypress backspace
121 | X | X | 500 | Keypress enter
122 | 570 | 146 | 1000 | Left Click
123 | X | X | 1000 | Keypress delete
124 | X | X | 500 | Keypress backspace
125 | X | X | 500 | Keypress enter
126 | 570 | 146 | 1000 | Left Click
127 | X | X | 1000 | Keypress delete
128 | X | X | 500 | Keypress backspace
129 | X | X | 500 | Keypress enter
130 | 570 | 146 | 1000 | Left Click
131 | X | X | 1000 | Keypress delete
132 | X | X | 500 | Keypress backspace
133 | X | X | 500 | Keypress enter
134 | 570 | 146 | 1000 | Left Click
135 | X | X | 1000 | Keypress delete
136 | X | X | 500 | Keypress backspace
137 | X | X | 500 | Keypress enter
138 | 570 | 146 | 1000 | Left Click
139 | X | X | 1000 | Keypress delete
140 | X | X | 500 | Keypress backspace
141 | X | X | 500 | Keypress enter
142 | 570 | 146 | 1000 | Left Click
143 | X | X | 1000 | Keypress delete
144 | X | X | 500 | Keypress backspace
145 | X | X | 500 | Keypress enter
146 | 570 | 146 | 1000 | Left Click
147 | X | X | 1000 | Keypress delete
148 | X | X | 500 | Keypress backspace
149 | X | X | 500 | Keypress enter
150 | 570 | 146 | 500 | Left Click
151 | X | X | 1000 | Keypress delete
152 | X | X | 500 | Keypress backspace
153 | X | X | 500 | Keypress enter
154 | RUN ACTION | GOTO MACRO LINE | 1

User: philranger

Date: Jan 23, 2021 21:04:22 GMT

Hello! I think that if you have the « pro » version you could create 2 macros a d assign different shortcut keys to each one (to be confirmed, I still run on the free version).

User: Steve

Date: Jan 24, 2021 4:21:48 GMT

Jan 22, 2021 21:27:58 GMT Sanjoe said: Hey guys, I have the following problem. I would like to use the subtract key to perform one function and the multiply key to execute another. If none of the keys have been pressed, nothing should happen and it should also be waited all the time for something to be done. Anyway… It doesn’t work. The functions work wonderfully in themselves, but I can’t trigger them by keypress. This is what I created. Any tips or suggestions?

* | KEYS
1 | IF | KEYBOARD KEYPRESS | Keypress subtract | IS | GOTO MACRO LINE | MS_REWARDS_BONUS_QUIZ | ELSE | 1 | IF | KEYBOARD KEYPRESS | Keypress multiply | IS | GOTO MACRO LINE | * | MS_REWARDS_WEB SEARCH
2 | RUN ACTION | GOTO MACRO LINE | 1
* | MS_REWARDS_BONUS_QUIZ
3 | 405 | 978 | 1500 | Left Click

<snip>

30 | 1178 | 972 | 1500 | Left Click
31 | RUN ACTION | GOTO MACRO LINE | 1
* | MS_REWARDS_WEB SEARCH
32 | 883 | 53 | 1000 | Left Click

<snip>

153 | X | X | 500 | Keypress enter
154 | RUN ACTION | GOTO MACRO LINE | 1

Hi Sanjoe, First, I’ve spotted an error in your macro. Your line 1 should be this:

1 | IF | KEYBOARD KEYPRESS | Keypress subtract | IS | GOTO MACRO LINE | MS_REWARDS_BONUS_QUIZ | ELSE | 1 | IF | KEYBOARD KEYPRESS | Keypress multiply | IS | GOTO MACRO LINE | 

MS_REWARDS_WEB SEARCH Keyboard Keypress ( <www.turnssoft.com/conditions.html#keyboardkeypress> ) is not going to work well here for what you are after. Keyboard Keypress evaluates really fast and is better suited for a CONTINUE ( <www.turnssoft.com/conditions.html#continue> ) action condition. Also, while ‘subtract’ or ‘-‘ works ok ‘multiply’ or ‘shift + 8’ (on a standard keyboard) won’t. Multiply on most keyboards requires the shift key to be held down for it to register. The Keyboard Keypress IF condition is not capable of detecting the shift when used this way. Perhaps try a different key.

1 | IF | KEYBOARD KEYPRESS | Keypress - | IS | GOTO MACRO LINE | SUBTRACT | ELSE | 2 | IF | KEYBOARD KEYPRESS | Keypress 8 | IS | GOTO MACRO LINE | MULTIPLY
2 | RUN ACTION | GOTO MACRO LINE | 1
* | -----
* | SUBTRACT
* | -----
3 | RUN ACTION | MESSAGE PROMPT | Subtract::- pressed::0
4 | RUN ACTION | GOTO MACRO LINE | 1
* | -----
* | MULTIPLY
* | -----
5 | RUN ACTION | MESSAGE PROMPT | Multiply::8 pressed::0
6 | RUN ACTION | GOTO MACRO LINE | 1

The above macro works to detect a keypress and run the GOTO MACRO LINE actions. Due to Keyboard Keypress being better suited for CONTINUE conditions, I needed to tap ‘-‘ (for minus) and ‘8’ (for multiply) several times for it to catch the keypress.


What does the extra number in IF/ELSE do?

URL: https://minimousemacro.proboards.com/thread/369/extra-number
Date: Jan 7, 2021 17:41:45 GMT

User: snowday

Date: Jan 7, 2021 17:41:45 GMT

As seen in this example.

1 | IF | FILE | C:\MMM\Skip.mmmacro | EXIST | GOTO MACRO LINE | 5 | ELSE | 1 | RUN ACTION | GOTO MACRO LINE | 2

Right after ELSE there’s a 1, but I don’t understand what it does.

User: Steve

Date: Jan 9, 2021 9:31:17 GMT

Hi snowday The ‘1’ doesn’t perform a function it’s really just visually for reference. Writing out line 1’s condition statement in words here might help explain:

1 | IF | FILE | C:\MMM\Skip.mmmacro | EXIST | GOTO MACRO LINE | 5 | ELSE | 1 | RUN ACTION | GOTO MACRO LINE | 2

Macro line 1 - If the file c:\mmm\skip.mmmacro exists then goto macro line 5.
If this evaluates to true (the file exists) then we perform the action to go to macro list line 5.
If this evaluates to false (the file does not exist) then we start a new line 1 condition being to run the action to go to the macro list line 2. Hope this helps….hope i haven’t confused it further.

User: snowday

Date: Jan 14, 2021 16:55:48 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Jan 9, 2021 9:31:17 GMT

Steve said: Hi snowday

The ‘1’ doesn’t perform a function it’s really just visually for reference. Writing out line 1’s condition statement in words here might help explain:

1 | IF | FILE | C:\MMM\Skip.mmmacro | EXIST | GOTO MACRO LINE | 5 | ELSE | 1 | RUN ACTION | GOTO MACRO LINE | 2

Macro line 1 - If the file c:\mmm\skip.mmmacro exists then goto macro line 5.
If this evaluates to true (the file exists) then we perform the action to go to macro list line 5.
If this evaluates to false (the file does not exist) then we start a new line 1 condition being to run the action to go to the macro list line 2. Hope this helps….hope i haven’t confused it further. So it’s necessary to have as filler for the correct syntax but its value is irrelevant? I just wanted to be sure the number wasn’t specifically necessary to be of a certain value for debugging purposes. If having it “1” was important for correct referencing, like, it had to be the same as the number at the beginning of the IF/ELSE. At one point I had actually wondered if it’s treated like a brand new line that simply didn’t get its own entry, and therefore specifically shouldn’t have the same number as any other line. I’m certain I once wrote a macro that was something like this following when I was trying to figure out why IF/ELSE wasn’t working.

1 | Some stuff
2 | IF some stuff | GOTO MACRO LINE | 4 | ELSE | 3 | GOTO MACRO LINE | 5
4 | Do some stuff
5 | Do some other stuff

(I think later I figured out it was the absence of RUN ACTION following ELSE)

User: Steve

Date: Jan 19, 2021 9:46:28 GMT

defaultavatar.png Jan 14, 2021 16:55:48 GMT

snowday said: So it’s necessary to have as filler for the correct syntax but its value is irrelevant? I just wanted to be sure the number wasn’t specifically necessary to be of a certain value for debugging purposes. If having it “1” was important for correct referencing, like, it had to be the same as the number at the beginning of the IF/ELSE. At one point I had actually wondered if it’s treated like a brand new line that simply didn’t get its own entry, and therefore specifically shouldn’t have the same number as any other line. I’m certain I once wrote a macro that was something like this following when I was trying to figure out why IF/ELSE wasn’t working.

1 | Some stuff
2 | IF some stuff | GOTO MACRO LINE | 4 | ELSE | 3 | GOTO MACRO LINE | 5
4 | Do some stuff
5 | Do some other stuff

(I think later I figured out it was the absence of RUN ACTION following ELSE) Yes you are right on the money here.  It’s necessary for the syntax but the value is irrelevant however, as your 5 line macro shows, its useful to visual display the macro flow and can be helpful in debugging to keep the value in sequence.

User: zeak

Date: Jan 22, 2021 4:05:57 GMT

Hi Snowday, If you are not concerned with the number after the ELSE then you can change it to X and the else will still run.

1 | IF | FILE | C:\MMM\Skip.mmmacro | EXIST | GOTO MACRO LINE | 5 | ELSE | X | RUN ACTION | GOTO MACRO LINE | 2

This also works when relisting rows.


Does MiniMouseMacro have the capability to find an image?

URL: https://minimousemacro.proboards.com/thread/373/minimousemacro-capability-find-image
Date: Jan 16, 2021 22:29:23 GMT

User: cark

Date: Jan 16, 2021 22:29:23 GMT

I have seen a number of competitor macro tools offer the feature to find an image that is displayed on the screen or a group of pixels. Is this a feature in MiniMouseMacro? If not, is there an item of software or website that could be suggested that offers this feature?

User: Steve

Date: Jan 19, 2021 9:25:17 GMT

Hi cark Mini Mouse Macro can detect changes in a single pixel or a pixel range over a varied time length but doesn’t have the capability to capture and compare fixed images as they appear on the screen. Check out these two conditions for more info on some Pixel operations: <www.turnssoft.com/conditions.html#pixelcolor> <www.turnssoft.com/conditions.html#pixelrange> Have a look at this thread minimousemacro.proboards.com/thread/229/get-color-sample-pixel-operation . This demo might help explain: minimousemacro_pixeloperations.gif


Mouse Movment

URL: https://minimousemacro.proboards.com/thread/371/mouse-movment
Date: Jan 10, 2021 12:06:43 GMT

User: Edvin

Date: Jan 10, 2021 12:06:43 GMT

Hello! I have a question reguarding macros inside an fps game. This issue might be with the game and not the macro software. Im trying to writr a macro that looks to thw right a bit, does some keyboard presses and the look at left and press some other keyboardkeys. But the game doesnt look around at all even though i can see the mouse movment events being executed in the macro. Is this an issue with the game or can I work around this some how? Thanks! Loving the software. Edvin

User: Steve

Date: Jan 10, 2021 21:05:36 GMT

Hi Edvin, Some fps game’s don’t allow calls from the desktop, made from tools like MMM, to make mouse movements or clicks within game.
Some do but a lot of the newer style games don’t. If you can see MMM run through the macro and nothing is happening in game then id say it’s the game preventing the macro. Some more detail on this can be found on this post minimousemacro.proboards.com/thread/32/run-game . Hope this helps.

User: Edvin

Date: Jan 10, 2021 23:33:39 GMT

Hello Steve! Thanks for your quick reply. Yes, I was affriad that would be the case. If I open up the game inventory the mouse movement works great. So its only the FPS part that doesnt work… I’ll look into your suggestions. Thanks! //Edvin


mouse movement

URL: https://minimousemacro.proboards.com/thread/366/mouse-movement
Date: Dec 28, 2020 15:11:08 GMT

User: loop41

Date: Dec 28, 2020 15:11:08 GMT

hi i’m new I am trying to use a sequence but it is not working for me, in short, what I am trying to do is move the mouse with the left click held down from one x,y position to another, I am using this code:

1 | 797 | 316 | 500 | MOUSE MOVEMENT
2 | RUN ACTION | WAIT SECONDS | 2
3 | 797 | 316 | 500 | LEFT CLICK DOWN
4 | RUN ACTION | WAIT SECONDS | 2
5 | 936 | 183 | 500 | MOUSE MOVEMENT
6 | RUN ACTION | WAIT SECONDS | 2
7 | 936 | 183 | 500 | LEFT CLICK RELEASE

I do not know if it is correct ,,, any help will be well received, thank you ,, I am very happy to belong to this community.

User: zeak

Date: Dec 28, 2020 23:20:06 GMT

hgoGvuyUU0mnOSFtjGuE.jpg Dec 28, 2020 15:11:08 GMT

loop41 said: hi i’m new I am trying to use a sequence but it is not working for me, in short, what I am trying to do is move the mouse with the left click held down from one x,y position to another, I am using this code:

1 | 797 | 316 | 500 | MOUSE MOVEMENT
2 | RUN ACTION | WAIT SECONDS | 2
3 | 797 | 316 | 500 | LEFT CLICK DOWN
4 | RUN ACTION | WAIT SECONDS | 2
5 | 936 | 183 | 500 | MOUSE MOVEMENT
6 | RUN ACTION | WAIT SECONDS | 2
7 | 936 | 183 | 500 | LEFT CLICK RELEASE

I do not know if it is correct ,,, any help will be well received, thank you ,, I am very happy to belong to this community. Hi Loop41, First of all welcome to the forum, I believe you might be over complicating it. try the below and let me know if it works.

1 | 797 | 316 | 500 | LEFT CLICK DOWN
2 | 936 | 183 | 500 | LEFT CLICK RELEASE

User: loop41

Date: Jan 2, 2021 15:15:40 GMT

OK I already tried that it works. The delays I introduced were purely to test, to see what the hell I was doing, more calmly. in the end I solved by doing 2 times “left click down”, it seems that the with first time, the program did not catch it .. it seems that the mouse changed shape when it was positioned above the object it was trying to drag. That’s why it seems that with the first “left click down” It didn’t understand it ,or at least that’s what I think….. Well, anyway, thank you very much … I solved my problem…. HAPPY NEW YEAR!!


Ayuda! condicional en bucle

URL: https://minimousemacro.proboards.com/thread/367/ayuda-condicional-en-bucle
Date: Dec 30, 2020 21:12:24 GMT

User: rayfusha

Date: Dec 30, 2020 21:12:24 GMT

Buenas tardes, estoy haciendo un macro que tiene condicionantes de IF y ELSE usando PIXEL COLOR , si es VERDADERO corre un MACRO INLINE en un archivo, SI ES FALSO (ELSE) me regresa a la linea activa

5 | IF | PIXEL COLOR | Color [R=111, G=96, B=248]::At Location [X:555 Y:123] | IS THE SAME | RUN MACRO INLINE | C:\Users\arqmi\OneDrive\Escritorio\MEGA\5.mmmacro | ELSE | 5 | RUN ACTION | GOTO MACRO LINE | 5

Este script me funciona porque no pierde tiempo al momento que el pixel color cambia ** pero A veces el programa 3ro no carga el PIXEL COLOR por lo que no se cumple la primera condicionante causando un bucle *Quisiera que cuando no se cumpla la condicionante y se quede en bucle me reinicie el macro list ó  corra otra MACRO LINE  en un cierto lapso de tiempo

User: Steve

Date: Dec 31, 2020 1:00:51 GMT

defaultavatar.png Dec 30, 2020 21:12:24 GMT

rayfusha said: Good afternoon, I am making a macro that has IF and ELSE conditions using PIXEL COLOR, if it is TRUE it runs an INLINE MACRO in a file, IF IT IS FALSE (ELSE) it returns me to the active line

5 | IF | PIXEL COLOR | Color [R=111, G=96, B=248]::At Location [X:555 Y:123] | IS THE SAME | RUN MACRO INLINE | C:\Users\arqmi\OneDrive\Escritorio\MEGA\5.mmmacro | ELSE | 5 | RUN ACTION | GOTO MACRO LINE | 5

This script works for me because it doesn’t waste time when the pixel color changes ** but sometimes the 3rd program does not load the PIXEL COLOR so the first condition is not met causing a loop

  • I would like that when the conditioner is not met and it remains in a loop, I restart the macro list or run another MACRO LINE in a certain period of time Creo que lo que necesitas es la acción ‘CONTINUAR’ (

<www.turnssoft.com/conditions.html#continue> ). CONTINUE solo continuará la macro cuando la condición sea verdadera. Efectivamente, esto hace su mini bucle por sí solo. I think what you need is the ‘CONTINUE’ action ( <www.turnssoft.com/conditions.html#continue> ).
CONTINUE will only continue the macro when the condition is true.
Effectively this does your mini loop on it’s own.

5 | IF | PIXEL COLOR | Color [R=111, G=96, B=248]::At Location [X:555 Y:123] | IS THE SAME | CONTINUE
6 | RUN ACTION | RUN MACRO INLINE | C:\Users\arqmi\OneDrive\Escritorio\MEGA\5.mmmacro

User: rayfusha

Date: Dec 31, 2020 19:47:10 GMT

Hi Steve , thx, but how can I get/write a condition like if NOT THE SAME COLOR in 1 minute REPEAT ALL MACRO , te lo agradecería y feliz Año Nuevo Steve !!

User: rayfusha

Date: Dec 31, 2020 20:10:45 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Dec 31, 2020 1:00:51 GMT

Steve said: defaultavatar.png Dec 30, 2020 21:12:24 GMT

rayfusha said: Good afternoon, I am making a macro that has IF and ELSE conditions using PIXEL COLOR, if it is TRUE it runs an INLINE MACRO in a file, IF IT IS FALSE (ELSE) it returns me to the active line

5 | IF | PIXEL COLOR | Color [R=111, G=96, B=248]::At Location [X:555 Y:123] | IS THE SAME | RUN MACRO INLINE | C:\Users\arqmi\OneDrive\Escritorio\MEGA\5.mmmacro | ELSE | 5 | RUN ACTION | GOTO MACRO LINE | 5

This script works for me because it doesn’t waste time when the pixel color changes ** but sometimes the 3rd program does not load the PIXEL COLOR so the first condition is not met causing a loop

  • I would like that when the conditioner is not met and it remains in a loop, I restart the macro list or run another MACRO LINE in a certain period of time Creo que lo que necesitas es la acción ‘CONTINUAR’ (

<www.turnssoft.com/conditions.html#continue> ). CONTINUE solo continuará la macro cuando la condición sea verdadera. Efectivamente, esto hace su mini bucle por sí solo. I think what you need is the ‘CONTINUE’ action ( <www.turnssoft.com/conditions.html#continue> ).
CONTINUE will only continue the macro when the condition is true.
Effectively this does your mini loop on it’s own.

5 | IF | PIXEL COLOR | Color [R=111, G=96, B=248]::At Location [X:555 Y:123] | IS THE SAME | CONTINUE
6 | RUN ACTION | RUN MACRO INLINE | C:\Users\arqmi\OneDrive\Escritorio\MEGA\5.mmmacro

STEVE

User: Steve

Date: Jan 1, 2021 3:20:41 GMT

defaultavatar.png Dec 31, 2020 19:47:10 GMT

rayfusha said: Hi Steve , thx, but how can I get/write a condition like if NOT THE SAME COLOR in 1 minute REPEAT ALL MACRO , te lo agradecería y feliz Año Nuevo Steve !! A combination of PIXEL COLOR ( <www.turnssoft.com/conditions.html#pixelcolor> ) and PIXEL RANGE ( <www.turnssoft.com/conditions.html#pixelrange> ):

1 | IF | PIXEL COLOR | Color [R=111, G=96, B=248]::At Location [X:555 Y:123] | IS THE SAME | CONTINUE
2 | IF | PIXEL RANGE | At Location [X:555 Y:123]::Size [W:1 H:1] | CHANGES::1::60::0 | RUN MACRO INLINE | C:\Users\arqmi\OneDrive\Escritorio\MEGA\5.mmmacro

Purchased Mini Mouse Macro Pro but unable to download

URL: https://minimousemacro.proboards.com/thread/364/purchased-mouse-macro-unable-download
Date: Dec 22, 2020 21:20:40 GMT

User: Cris

Date: Dec 22, 2020 21:20:40 GMT

Hi, I’ve purchased Mini Mouse Macro Pro but I only got a download link to a readme file. Also no email (except for PayPal receipt). Am I missing something, is there a way to activate the license? It doesn’t seem so. Any help would be appreciated. Thanks, Cris 49bk3Ik.png

User: Cris

Date: Dec 22, 2020 21:25:45 GMT

Nevermind, email was in Spam folder. My bad.


Message Box - Position & Float

URL: https://minimousemacro.proboards.com/thread/362/message-box-position-float
Date: Dec 21, 2020 21:21:54 GMT

User: Rambo-X

Date: Dec 21, 2020 21:21:54 GMT

Dear All, Position Issue :- Can someone help me out to know if there is a way to move the Message Box from the Center of the Screen, ie : like the Top Left Corner of the Message Box to be at a X | Y coordinate? The problem is I have this Macro worked out for an issue we face when I process some work. The timer which determines if I can move forward or not is at the center of the screen I have to keep moving it to have a look at it to know if I can press OK or not. Float Issue :- What are the possibilities of being able to keep the Message Box without Minimizing if we click somewhere else apart from it?


Time Calculation of Macro Running Time

URL: https://minimousemacro.proboards.com/thread/358/time-calculation-macro-running
Date: Dec 15, 2020 2:04:02 GMT

User: Rambo-X

Date: Dec 15, 2020 2:04:02 GMT

Good Day Dear All, I have a requirement to know a time comparison between the Macro’s I run to help me make them more efficient. My exact requirement is that I want to get the run time of my current Macro ( Generally found in the Bottom Right Hand Corner in the App ) ex : 1:52:33:281 ( H:MM:SS:MS ) And then a message box to appear stating,

  1. The current Run time of the Macro I ran.
  2. That time multiplied by 100
  3. That time multiplied by 200 so on until 500 up to 6 Lines. Plus let’s say I change my mind to multiply the Point No. 02 by 10 then how could I assign it to change from 100 to 10 etc. Is that Possible? Then I would know how long would I need to run a script and so on. Thank you very much for this Wonderful place. Stay safe and Tc.

User: zeak

Date: Dec 15, 2020 6:27:53 GMT

Hi Rambox, I believe what you are looking for is %TIME_MACRO%. Example below.

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL1%::%TIME_MACRO%
2 | RUN ACTION | MESSAGE PROMPT | %DECIMAL1%::Time::0

DIftzdx.gif

User: Rambo-X

Date: Dec 15, 2020 17:45:08 GMT

Hello Zeak, Yeah but a little bit more detailed than that. Like I don’t want the Macro to stop in the Middle. Let me take a small example. Lets say My Macro is 10 lines long. Doing some basic stuff clicks and all, yeah. then at the end it stops. That’s when I need the message Box. This message Box needs me to give me information line by line. ( wouldn’t mind even if it’s message Box after message Box at the end either ) But what should they contain, Box 1 / Line 1 : The Entire Run time of the 10 Lines Box 2 / Line 2 : ( Now this should get generated after a calculation, because physically the coding lines aren’t available ) The Entire Run time “IF” it was 100 Lines ( Like if I had copy pasted these 10 lines one after the other 10 times, it would be 100 lines ) Box 3 / Line 3 : ( Now this should get generated after a calculation, because physically the coding lines aren’t available ) The Entire Run time “IF” it was 200 Lines ( Like if I had copy pasted these 10 lines one after the other 20 times, it would be 200 lines ) So on until 500. Is this possible Brother?

User: Steve

Date: Dec 18, 2020 4:08:25 GMT

Hi Rambo-X

Is this possible, well…sorta but not really with MMM how it is currently.
zeak pointed out the %TIME_MACRO% variable. This is ok for getting the running time but thats about it. It not great for doing any logic around it. There are other TIME variables: %TIME% - The current time in full %TIME_MS% - The current ms %TIME_S% - the current second %TIME_M% - the current minute %TIME_H% - the current hour I’d suggest doing you time logic outside of MMM. Probs a simple bash script could handle it, or powershell. Then feed this value back in to MMM using INPUT FROM FILE ( <www.turnssoft.com/conditions.html#inputfromfile> ).

User: Steve

Date: Dec 18, 2020 20:05:30 GMT

I’ve expanded the internal TIME_MACRO variable to be more granular for time calculations. It’s made it’s way in the next update (version 8.1) under improvement 2 ( minimousemacro.proboards.com/thread/278/update-coming-next-mouse-macro ). The %TIME_MACRO% internal variable is now expanded to include granular total output: %TIME_MACRO_H% - The total running time in hours %TIME_MACRO_M% - The total running time in minutes %TIME_MACRO_S% - The total running time in seconds %TIME_MACRO_MS% - The total running time in milliseconds The new variables will allow for logic like this:

10 | IF | INTEGER VARIABLE | %TIME_MACRO_M% | LESS THAN | 5 | GOTO MACRO LINE | PROCESS | ELSE | 10 | RUN ACTION | GOTO MACRO LINE | STAGE

The new variables will also make it easier to do some math operations against the time:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%TIME_MACRO_M%::*100

Thank you Rambo-X for the idea.

User: Rambo-X

Date: Dec 20, 2020 22:42:40 GMT

Thanks a lot for your Feedback and Update Steve. It’s nothing but a humongous pleasure to have helped you with this little thought to a GREAT GREAT APP.  smiley.png

smiley.png

smiley.png

smiley.png

smiley.png   ——————————————————————————–

call macro from macro

URL: https://minimousemacro.proboards.com/thread/343/call-macro
Date: Nov 17, 2020 15:38:09 GMT

User: mrclicker

Date: Nov 17, 2020 15:38:09 GMT

I’m sure this is covered somewhere in the forum but i can find it.. i want to create a macro that will call another macro how do i do that ? ps. if it helps , this is the logice of what i want to do:

  1. mouse click on x,y  2. call macro 1   3. mouse click on X+100,y    4. call macro 2     5. mouse click on X+200,y      6. call macro 1

User: philranger

Date: Nov 17, 2020 15:51:06 GMT

Hello! Easiest/dirtiest is to copy and paste all in a single macro, but if you have the “pro” version there is a “macro queue” that does it.

User: mrclicker

Date: Nov 17, 2020 17:00:28 GMT

I have the pro version, i dont want to copy and and paste, the varios macros i want to call are changing often, so copying and pasting wouldnt suit me i just want to be able to call other macros and treat them like functions

User: zeak

Date: Nov 18, 2020 0:15:29 GMT

<www.turnssoft.com/conditions.html#runmacroinline>

User: Steve

Date: Nov 18, 2020 8:56:48 GMT

Another way is the addmacrofromfile <www.turnssoft.com/conditions.html#addmacrofromurl> or addmacrofromurl <www.turnssoft.com/conditions.html#addmacrofromurl> These two actions add a macro in from file during a running macro.
It looks like this: minimousemacro-addmacrofromfileurl_orig.gif

User: mrclicker

Date: Dec 19, 2020 13:50:22 GMT

these two options look promising. i’ll give that  whirl - thanks !


Tray FILLED with mmmicons

URL: https://minimousemacro.proboards.com/thread/360/tray-filled-mmmicons
Date: Dec 16, 2020 13:18:16 GMT

User: milktea

Date: Dec 16, 2020 13:18:16 GMT

1 | IF | PIXEL COLOR | Color [R=0, G=0, B=0]::At Location [X:1500 Y:250] | IS NOT THE SAME | EXIT 

>>> this line —–^^ ^^— gives this —-vv vv—— … any sugestions how to solve this? mmmbug.jpg

User: Steve

Date: Dec 18, 2020 3:47:04 GMT

Hi milktea , Yeah that’s the EXIT action internally not closing the application correctly.
EXIT ( <www.turnssoft.com/conditions.html#exit> ) stops the macro immediately and exits the macro in a pretty rude way.
It should be considered the bug. Whilst it does what it’s suppose to do, exit immediately, it should not leave tray icons. I’ll add it to the bug tracker <www.turnssoft.com/bugtrack.html#bugs> . How can it be fixed in the short term… Change EXIT to GOTO like this:

1 | IF | PIXEL COLOR | Color [R=0, G=0, B=0]::At Location [X:1500 Y:250] | IS NOT THE SAME | GOTO MACRO LINE | END

You don’t need an END remark for this to work. MMM, if END does not exist, will go to the end of the file and stop the macro but not exit. Change EXIT to KILL PROCESS NAME like this:

1 | IF | PIXEL COLOR | Color [R=0, G=0, B=0]::At Location [X:1500 Y:250] | IS NOT THE SAME | KILL PROCESS NAME | MiniMouseMacro

This will do a system level kill of the minimousemacro running process. Again, its a pretty rude kill. Or run MMM with some command line options to close after run: 5491027.png?483.8009049773756

User: Steve

Date: Dec 18, 2020 18:58:06 GMT

This has been fixed and will be in the next update. Thanks for pointing it out.


The macro dont do anything

URL: https://minimousemacro.proboards.com/thread/353/macro
Date: Dec 10, 2020 3:00:27 GMT

User: Badduar

Date: Dec 10, 2020 3:00:27 GMT

Hello, i recorded a macro and according to the entries the recording worked. unfortunately the clicks do not take place. when i start the macro nothing happens. the mouse pointer stays at its place and nothing happens. i have the problem since the last update. before that it worked without any problems. does anybody have an idea what the problem could be?

User: Steve

Date: Dec 11, 2020 8:54:26 GMT

Hi Badduar, It might be your version of the .NET framework. Version 8 is built using the .NET version 4.5.2 and prior versions with .NET 4.
Give your system an update and try again. More info on the last update is listed under the update notes minimousemacro.proboards.com/thread/181/update-8-release-info

User: Badduar

Date: Dec 12, 2020 3:16:00 GMT

Hey, thanks for the tip but i have windows 10 and the current .net version is 4.8. too bad I can’t use the program anymore. A program that should make a mouse click and does nothing is not so useful sad.png I’ll look around for another possibility. thanks again anyway smiley.png Badduar

User: Steve

Date: Dec 12, 2020 5:38:06 GMT

Sorry to hear your having issues with your macro. Hope you find what your looking for. Cheers, Steve.

User: Koctrway

Date: Dec 17, 2020 14:57:14 GMT

Same here… Windows 10 and the .net version 4.8, mmm is also doing nothing. But I have tested with my other computers and they worked normally, I don’t know what’s the different with them yet. lol Any clues about what is disturbing mmm to assume control of mouse & keyboard? ECpzYI4 ECpzYI4

User: Steve

Date: Dec 18, 2020 4:01:17 GMT

Oh ok interesting.
Do any macro’s at all work on the Win10 box your having issues with?
Are you running your macro’s in a clean desktop? I mean, are you testing some simple macro’s with nothing else open on the Win10 box? Are you running the macro within a virtual machine or against any virtualization? (within a VMWare host, Hyper-V, Remote Desktop session, etc) Are you running the macro in a game, be it a full screen game or not? Are you running the macro within a web browser, application, something with Java/flash? Why do you think it works on your others Windows 10 boxes but not this one? Do you have any guesses why? Is there something different between this box and your other boxes? Cheers, Steve.

User: Koctrway

Date: Dec 18, 2020 9:03:27 GMT

Hello, I just found and tried this, it worked. <www.bleepingcomputer.com/forums/t/603097/macro-software-not-working-on-windows-10/> “Control Panel > System and Security > Administrative Tools > Local Security Policy Local Policies (in the left side-bar) by clicking on the > Security Options > User Account Control: Run all administrators in Admin Approval Mode Right click on it and select “Properties”, then set it to Disabled. Click on Apply, then on OK to exit the dialog. Then reboot the system for the changes to take effect” Although I still don’t know why system don’t let macro to control the computer (I didn’t change those settings), now mini mouse macro is working normally, then it’s fine. FYI Koctrway

User: Steve

Date: Dec 18, 2020 18:38:21 GMT

+1 Thanks Koctrway!


Alt failing ?

URL: https://minimousemacro.proboards.com/thread/361/alt-failing
Date: Dec 16, 2020 17:26:34 GMT

User: Nachtwacht

Date: Dec 16, 2020 17:26:34 GMT

Hello, I think the macro I wrote explains itself…. but it fails to work. When I try to record the macro, when I press the Alt key, the macro recorder does not record my alt key. The entry you see in the script I entered manualy. Unfortunatly it does not work… the Alt key does not get pressed. I searched your help files but fail to find problems with that. Any idea ? tia ! minimacro.jpg

User: nachtwacht

Date: Dec 16, 2020 17:30:01 GMT

minimacro.jpg Image failed to work, trying again. Attachments: 0JwDCjzccqGsbjNUYKCl.png

User: Steve

Date: Dec 18, 2020 3:55:32 GMT

Hi, Mini Mouse Macro treats modifier keys (alt, ctrl, shift) a bit differently to other keys when recording. This is because usually they are recorded in combination with other keys. Such as SHIFT+A or CTRL+Z, or a combination. The default setting in MMM is to not record single key presses with modifiers. This can be changed in the Recording Options - Multi-key Capture setting: minimousemacro-multi-key-recording.png The output of recording a single ALT key looks like this:

1 | 421 | 985 | 1000 | Keypress lmenu
2 | 421 | 985 | 1000 | Keypress rmenu
3 | 421 | 985 | 1000 | Keypress menu

1 - The left ALT 2 - The right ALT 3 - The system ALT

User: nachtwacht

Date: Dec 18, 2020 9:10:45 GMT

Thanks, I had actualy found those settings and because it showed they were “on” I expected it to capture the key’s. Understand now that the “on” means “multiple key’s at the same time” which disables the single key press smiley.png Used the lines you put there, works now. Thanks !


Pauses in mouse movement are not fully recorded

URL: https://minimousemacro.proboards.com/thread/357/pauses-mouse-movement-fully-recorded
Date: Dec 14, 2020 19:09:56 GMT

User: tron359

Date: Dec 14, 2020 19:09:56 GMT

When recording mouse movements, keeping the mouse still will result in the program recording a shorter pause period than actual, leading to playback with early clicks and premature movements. It does not matter when the mouse is held still.

User: Steve

Date: Dec 15, 2020 9:29:45 GMT

Hi, Time recording for mouse movement is fairly accurate but its not exact. When an event is recorded a timer starts counting and stops on the next recorded event. This results in the near like record time between events.

1 | 71 | 94 | 21 | Mouse Movement
2 | 70 | 91 | 1500 | Mouse Movement
3 | 68 | 88 | 10 | Mouse Movement

User: Tron359

Date: Dec 16, 2020 19:04:25 GMT

That is the desired behavior, yes, but it is not occurring properly when the mouse is ‘at rest’. The timer often skips the entire time period the mouse spent unmoving, instead recording as if the mouse never stopped moving (time delay of 35ms or w/e instead of the 6000ms pause).


Looping within a macro?

URL: https://minimousemacro.proboards.com/thread/356/looping-macro
Date: Dec 11, 2020 12:12:32 GMT

User: zeemzee

Date: Dec 11, 2020 12:12:32 GMT

Hi, Love the macro. Just bought it two weeks ago. I was hoping i could get some help. I want the macro to click in, do a series of 5 keystrokes looped 20 times, then click out THEN wait an hour and do it all again. I tried just copy and pasting the keystrokes after the initial keystrokes in note pad but I think there might be a time aspect to it because it just didn’t work. Keystroked the wrong stuff. Just a disaster.  The first 5 keystrokes worked like a charm but as you can see I just copied it three times. When it came to the 3 other sets, it didn’t do it right. I’m also assuming I could just change run action to Minutes put to 60 or maybe Seconds and put to (whatever amount of seconds is in 1 hour) Worse case scenario, I could just record the whole thing myself, but I was hoping there was a way to loop the 5 keystrokes.

106 | 96 | 482 | 1226 | Left Click Release
107 | 703 | 228 | 2467 | Left Click Down
108 | 703 | 228 | 164 | Left Click Release
109 | 703 | 228 | 4398 | Keypress 1
110 | 703 | 228 | 7938 | Keypress 4
111 | 703 | 228 | 3064 | Keypress 5
112 | 703 | 228 | 3817 | Keypress 1
113 | 703 | 228 | 4768 | Keypress 6
114 | 703 | 228 | 4398 | Keypress 1
115 | 703 | 228 | 7938 | Keypress 4
116 | 703 | 228 | 3064 | Keypress 5
117 | 703 | 228 | 3817 | Keypress 1
118 | 703 | 228 | 4768 | Keypress 6
119 | 703 | 228 | 4398 | Keypress 1
120 | 703 | 228 | 7938 | Keypress 4
121 | 703 | 228 | 3064 | Keypress 5
122 | 703 | 228 | 3817 | Keypress 1
123 | 703 | 228 | 4768 | Keypress 6
124 | 703 | 228 | 4398 | Keypress 1
125 | 703 | 228 | 7938 | Keypress 4
126 | 703 | 228 | 3064 | Keypress 5
127 | 703 | 228 | 3817 | Keypress 1
128 | 703 | 228 | 4768 | Keypress 6
129 | 518 | 11 | 10201 | Left Click Down
130 | 518 | 11 | 102 | Left Click Release
130 | RUN ACTION | WAIT SECONDS | 30

Any help would be appreciated.

User: philranger

Date: Dec 11, 2020 12:33:48 GMT

Hello. Sorry for the short answer but I’m on a cell phone. What you need is a “for” loop.

User: Steve

Date: Dec 12, 2020 5:47:41 GMT

Yep a FOR LOOP ( <www.turnssoft.com/conditions.html#for> ) is what you need for this. Below in the code block is the basic structure of a counting for loop. This for loop runs through 5 times bringing up a message prompt.

1 | FOR | I | = | 0 TO 5  | NEXT
2 | RUN ACTION | MESSAGE PROMPT | %i%::FOR LOOP %I%::1
3 | FOR | NEXT

Here’s a simple example: minimousemacro_basicloop.gif And here’s an advanced example: minimousemacro_forloop.gif


Multi-key (3 key sequence) mapped to mouse

URL: https://minimousemacro.proboards.com/thread/354/multi-key-sequence-mapped-mouse
Date: Dec 10, 2020 22:55:28 GMT

User: mhow9605

Date: Dec 10, 2020 22:55:28 GMT

Hello, I am trying to figure out how to use this program. All I want to do is program a single button on my mouse to execute CTRL+ALT+D to execute a task on my work phone dialer to streamline my work. I can not figure out for the life of me how to do that.

User: zeak

Date: Dec 10, 2020 23:24:11 GMT

Hi mhow9605, Welcome to the forum, I believe it is possible to do this but tricky to setup, Personally I use a program called Key Remapper.

User: Steve

Date: Dec 11, 2020 9:05:28 GMT

defaultavatar.png Dec 10, 2020 22:55:28 GMT

mhow9605 said: Hello, I am trying to figure out how to use this program. All I want to do is program a single button on my mouse to execute CTRL+ALT+D to execute a task on my work phone dialer to streamline my work. I can not figure out for the life of me how to do that. Hi mhow9605 , Ctrl+alt+D is easy enough (syntax below), but to get that to run on a mouse button click your going to need something to bind the button on the mouse to the macro script. I suggest a .mmmacro script with some of the MMM command line options to run it on load.

1 | x | x | 1 | Keypress Ctrl+Alt+ | D

Macro Queue problem

URL: https://minimousemacro.proboards.com/thread/342/macro-queue-problem
Date: Nov 13, 2020 8:56:51 GMT

User: pablom

Date: Nov 13, 2020 8:56:51 GMT

Hello,  I have written 5 macros that I need to run one after the other. I use “notepad ++” to write the macros. I have tested them several times by separate and they all work fine. I tried to schedule all of them with macro queue and they started to behave different. Meaning that they are doing clicks on places they are not supposed to click. Also one of them started to work in a loop but there is no loop on that code section. I tried to schedule only one macro using the “macro queue” and the same thing happened. I believe that it is related to the way the queue loads the files. Perhaps it changes something or interpret the code different? The reason I am saying this is because as a different test y copied the macro I created into the mmm application and saved it as mmmacro file. Then I loaded it and it worked perfectly. This is why I believe it could be related to the “macro queue” functioning. What could be wrong? Thanks in advance for your help.

User: philranger

Date: Nov 13, 2020 14:28:12 GMT

Did you try to just copy and paste everything in a single macro (and maybe also “relist rows” so numbering is ok)?

User: For loop

Date: Nov 20, 2020 9:00:59 GMT

It was the relisting! It looks like its not automatic on scheduler. One thing, i realized that FOR loops in scheduler, takes like x3 time to complete, copared to regular running scripts, what could be the reason?

User: pablom

Date: Nov 20, 2020 9:01:25 GMT

Sorry, forgot to login.

User: Steve

Date: Nov 22, 2020 6:00:50 GMT

Hi pablom Autorelist can be enabled in settings: minimousemacro_autorelistonplay.JPG Nov 20, 2020 9:00:59 GMT For loop said: It was the relisting! It looks like its not automatic on scheduler. One thing, i realized that FOR loops in scheduler, takes like x3 time to complete, copared to regular running scripts, what could be the reason? Your FOR loops take longer when scheduled?

User: pablom

Date: Nov 25, 2020 21:05:35 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Nov 22, 2020 6:00:50 GMT

Steve said: Hi pablom

Autorelist can be enabled in settings: minimousemacro_autorelistonplay.JPG I have that option, but it looks like it does not work with scheduler. Nov 20, 2020 9:00:59 GMT For loop said: It was the relisting! It looks like its not automatic on scheduler. One thing, i realized that FOR loops in scheduler, takes like x3 time to complete, copared to regular running scripts, what could be the reason? Your FOR loops take longer when scheduled? Yes, i will do more tests, but for some reason it takes more time.

User: Steve

Date: Nov 26, 2020 5:51:12 GMT

Do the 5 macro’s all work ok when they are run independently?

User: pablom

Date: Dec 2, 2020 8:32:13 GMT

Hi, so we did more testing, when there is a FOR in the script, in scheduler it takes x2-3 more time, compared to doing it outside scheduler, so i don’t know, why, but there is clearly something wrong.

User: Steve

Date: Dec 5, 2020 1:14:26 GMT

Hi pablom

Do you have MMM event logging on ( <www.turnssoft.com/faq2.html#eventlog> )? And if you do have you tried reducing the logging limits down and dropping the verbosity? eventlog2-settings_orig.jpg If you have the eventlog enabled for MMM and your macro’s with FOR loops are logic heavy (for example your macro’s are using a lot of conditions) then this could effect your running macro’s.
The eventlog for MMM is useful for debugging but should be disabled, or run with reduced log limits, for logic heavy macro’s. A large macro, or series of macro’s in the macro queue, could cause the eventlog to slow your macro flow. An internal BZ is logged for this here MMM_BZ2 . This could potentially be your problem.

User: pablom

Date: Dec 5, 2020 10:08:10 GMT

Hi, i have that option disabled. Any other ideas?

User: Steve

Date: Dec 5, 2020 22:55:38 GMT

Yeah maybe it’s your macro’s. Could they be incorrectly formatted? Could you post them in a code block here and I’ll have a look at them for syntax issues. Cheers

User: pablom

Date: Dec 9, 2020 15:36:30 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Dec 5, 2020 22:55:38 GMT

Steve said: Yeah maybe it’s your macro’s. Could they be incorrectly formatted? Could you post them in a code block here and I’ll have a look at them for syntax issues. Cheers Hi Steve, please check priv.


X Y Coordinate Issue | Screen Size Difference | Reconfigure

URL: https://minimousemacro.proboards.com/thread/340/coordinate-issue-screen-size-reconfigure
Date: Nov 6, 2020 15:36:44 GMT

User: Rambo-X

Date: Nov 6, 2020 15:36:44 GMT

Good Day Everyone ! I hope all of you are safe and sound with your families from Covid19. Even before I ask my Question I’d like to thank the Creators of this software as this is my first question in here. I also have asked support from Mr. Excel forum hoping some form of support may come from the excel community of Macro. But going through the forum questions I realized the answer must be simple but my search words are all wrong or I do not understand the solutions presented here. So I’d like to apologize if I sound really Newbie. My problem is simple to understand. I have recorded heaps and heaps of Macros. And I recently wanted to share some of them with my team mates to make our day to day work easier. But they don’t run the same in different screen sizes. Mine is a 15inch laptop. One other friend has 24inch Monitor and another has a 13inch laptop. How do I change 1000+ lines long Macro’s X and Y coordinates which has minor changes every few lines because “replace” option doesn’t seem like the Solution. Many Thanks.

User: Rambo-X

Date: Nov 6, 2020 16:34:51 GMT

Trying to do some math I realized, No matter the Screen Sizes change the Ratios are consistent. For an Example, If my Laptop is, X0 as Old - 1376 Y0 as Old - 768 X1 as New - 1920 Y1 as New - 1080 if my Laptop Mouse Pointer is at, 836 | 50, New Coordinates would be, 1920/1376 x 836 - 1166 ( X1 ) Percentage = 139% 1080/768 x 50 - 70 ( Y1 ) = 140% 139%=%INTEGER1% 140%=%INTEGER2% Having a looked at User ID: Johnc’s recent question can we not to something like below?

220 | 836 x %INTEGER1% | 50 x %INTEGER2% | 500 | Left Click Down 

Just suggesting smiley.png

User: Steve

Date: Nov 10, 2020 6:54:42 GMT

Hi Rambo-X Great question. Thank you for posting this one to the forum. Unfortunately the solution is not a simple one and knowing what MMM is capable of i’d say it would be better to do it outside of MMM. I’ve been delayed in getting some of the updates out for MMM but a focus of mine is improving some of these math functions. For now i’d recommend running a script over your .mmmacro saved file that converts your mouse X and Y coords to the environment you need. Id prob say something in python. Hope this helps.

User: Rambo-X

Date: Nov 23, 2020 0:43:22 GMT

Hello Steve, Thank you very much for your reply. But unfortunately I have no any knowledge in Python or it’s functions. Or even how to apply it. sad.png

User: Rambo-X

Date: Nov 23, 2020 0:56:02 GMT

Furthermore to your suggestion, Is it possible to run mmmacro codes (if I have given macro’s within macro’s without any flow control) as a python script if screen sizes are same keep changing the mmmacro file name and get a job done? Because most my work is web based work and emails. Wish I can code in mmmacro and run them via Python as far as I can do some other work in background.

User: Steve

Date: Nov 23, 2020 9:19:08 GMT

Hi Rambo-X This macro should do the trick.

1 | RUN ACTION | RUN VIA CMD /C | wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution > w:\macro\output\res.txt
2 | RUN ACTION | INPUT FROM FILE | STRING::NO_REFRESH::W:\Macro\OUTPUT\res.txt
3 | IF | STRING VARIABLE | %STRING% | CONTAINS | 1 9 2 0 | ADD MACRO FROM FILE | W:\Macro\desktop_res.mmmacro | ELSE | 3 | RUN ACTION | ADD MACRO FROM FILE | W:\Macro\laptop_res.mmmacro

Line 1 - We get the current resolution from the command line and write it out to a file called w:\macro\output\res.txt Line 2 - We load that file (res.txt) into the variable %STRING% Line 3 - If %STRING% contains 1 9 2 0 (the spaces are needed. the output at res.txt has spaces for some reason) then we add macro our desktop_res.mmmacro file in and run it. If the file does not contain 1 9 2 0 then the resolution must not be 1920 by 1080 so ELSE load in the laptop_res.mmmacro file. I think this is probably your best bet. Have two macro files one with your 1920 res and one with your laptop res. Hope this helps.

User: Rambo-X

Date: Nov 23, 2020 9:58:39 GMT

Steve Hi, I am not an expert so bit lost in here… How should I apply this to my existing mmmacro file? Because I have Macros running within macros with no flow control? If you could give some more clarity on how should I apply this, I’d be extremely grateful. Thank you again for this great App.

User: Rambo-X

Date: Nov 23, 2020 10:00:15 GMT

Also If I am using &String% variables in my Macro, could that mess this resolution coding?  

User: Steve

Date: Nov 23, 2020 18:52:14 GMT

Ok Step 1: Create a .mmmacro saved macro called checkres.mmmacro and paste in the three macro lines I posted Step 2: Create a .mmmacro saved macro called desktop_res.mmmacro. This macro has the X and Y coordinates needed for your Desktop setup. Step 3: Create a .mmmacro saved macro called laptop_res.mmmacro. This macro has the X and Y coordinates needed for your laptop setup. Step 4: Run checkres.mmmacro. This will determine what screen res you currently have and run desktop_res or laptop_res depending on your current res. OrPMJslAMtScYqPUpgHc.jpg Nov 23, 2020 9:58:39 GMT

Rambo-X said: Steve Hi, I am not an expert so bit lost in here… How should I apply this to my existing mmmacro file? Because I have Macros running within macros with no flow control? If you could give some more clarity on how should I apply this, I’d be extremely grateful. Thank you again for this great App. Flow control will be fine because the add macro from file action appends the file to the current macro. Check out <www.turnssoft.com/conditions.html#addmacrofromfile> , and create yourself a test to check it out. OrPMJslAMtScYqPUpgHc.jpg Nov 23, 2020 10:00:15 GMT

Rambo-X said: Also If I am using &String% variables in my Macro, could that mess this resolution coding?   Yes. If your using %STRING% somewhere else then either overwrite the variable or use a different variable. Perhaps %STRING99%.

User: Rambo-X

Date: Nov 24, 2020 12:32:52 GMT

Hi Steve, Could you please be kind enough to advise me a bit more further? I am lost on Step 2 and 3, Step 2: Create a .mmmacro saved macro called desktop_res.mmmacro. This macro has the X and Y coordinates needed for your Desktop setup. I don’t understand what exactly you mean or suggested me here. Do you mean to say I have to change all my current Laptop Resolution X|Y Numbers to Desktop X|Y Resolution numbers?  embarrassed.png

embarrassed.png

embarrassed.png

That was my issue in the first place… Not to change my existing X|Y Coordinates because it’s not just a code or two I did in my laptop. There are hundreds of coding we are talking here over 500-1000 lines each. Step 3: Create a .mmmacro saved macro called laptop_res.mmmacro. This macro has the X and Y coordinates needed for your laptop setup. This is just a renaming which I can do and make it run from file. So there are no issues in here. So am I missing something here?

User: Rambo-X

Date: Nov 24, 2020 12:50:24 GMT

Further more to add, I was worried about the Macro’s within Macros given as RUN MACRO INLINE because they too have the Laptop Resolutions given. From How I understood or misunderstood your 3 line codings was it determines which ones to run from an existing set of codes yeah? I sincerely hope Not and what you have suggested here is misinterpreted by me. And my biggest challenge is how to change those X|Y Coordinates in the first place to fit the Desktop resolution.  embarrassed.png

I stay fingers crossed hoping your answer to this would be the solution I have been waiting. Thank you.

User: Steve

Date: Nov 24, 2020 22:15:33 GMT

OrPMJslAMtScYqPUpgHc.jpg Nov 24, 2020 12:32:52 GMT

Rambo-X said: I am lost on Step 2 and 3, Step 2: Create a .mmmacro saved macro called desktop_res.mmmacro. This macro has the X and Y coordinates needed for your Desktop setup. I don’t understand what exactly you mean or suggested me here. Do you mean to say I have to change all my current Laptop Resolution X|Y Numbers to Desktop X|Y Resolution numbers?  embarrassed.png

embarrassed.png

embarrassed.png

That was my issue in the first place… Not to change my existing X|Y Coordinates because it’s not just a code or two I did in my laptop. There are hundreds of coding we are talking here over 500-1000 lines each. Yes I as suggesting this. I am suggesting you have three macro files in total. One that drives the logic that determines your current resolution and then one for each of the resolution types. I think you may have misunderstood my original comments here: JFoc0jEJzNqTrrLxeLBk.jpg Nov 10, 2020 6:54:42 GMT

Steve said: Hi Rambo-X

Great question. Thank you for posting this one to the forum. Unfortunately the solution is not a simple one and knowing what MMM is capable of i’d say it would be better to do it outside of MMM. I’ve been delayed in getting some of the updates out for MMM but a focus of mine is improving some of these math functions. For now i’d recommend running a script over your .mmmacro saved file that converts your mouse X and Y coords to the environment you need. Id prob say something in python. Hope this helps. To dynamically change the X and Y coords of a saved .mmmacro file is better suited for a fully fledged scripting language such as Python or Powershell. MMM is not a scripting language, it is a macro tool with some scripting functionality. In order to do what you are after dynamically (and by dynamically I mean programmatically) you need proper string manipulation outside the current capability of MMM.
You’ve mentioned in a previous post your not familiar with scripting languages like Python. So I can see your predicament. You have three options the way I see it. The first being to manually create that other macro to match your different resolution and then implement the solution above. The second being to learn the basics of scripting and give it a go in Python or Powershell…maybe even a clever batch script. The third is to visit some Python forums and ask for some scripting help. OrPMJslAMtScYqPUpgHc.jpg Nov 24, 2020 12:50:24 GMT

Rambo-X said: Further more to add, I was worried about the Macro’s within Macros given as RUN MACRO INLINE because they too have the Laptop Resolutions given. From How I understood or misunderstood your 3 line codings was it determines which ones to run from an existing set of codes yeah? I sincerely hope Not and what you have suggested here is misinterpreted by me. And my biggest challenge is how to change those X|Y Coordinates in the first place to fit the Desktop resolution.  embarrassed.png

I stay fingers crossed hoping your answer to this would be the solution I have been waiting. Thank you. This command run from the windows command shell outputs your current screen resolution:       wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution The output of this command fed into %STRING% allows us to run some logic to determine which macro to load. If your current screen res is your desktop res then we load your macro with the desktop res. If you current screen res is your laptop res then we load your macro with the laptop res. Hope this helps.

User: Rambo-X

Date: Nov 24, 2020 23:26:58 GMT

Thanks for your detailed explanation. I will give it a try at some forums from Python. Thank you again for your support. Means a lot.  smiley.png

User: zeak

Date: Dec 7, 2020 6:48:09 GMT

So I had a random thought about checking screen size and here is what I came up with.

1 | 9999 | 9999 | 100 | Mouse Movement
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%MOUSE_X%
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%MOUSE_Y%
4 | RUN ACTION | MESSAGE PROMPT | Screen Width - %INTEGER%, Screen Height - %INTEGER1%::Screen Size::0

 Then using the Integer’s you could use calculations to determined where you want to click.

User: zeak

Date: Dec 7, 2020 6:54:39 GMT

I just refined it a bit further.

1 | 9999 | 9999 | 100 | Mouse Movement
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%MOUSE_X%
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%MOUSE_Y%
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::+1
6 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN | 2500 | DEFINE INTEGER VARIABLE | %INTEGER%::/2
7 | RUN ACTION | MESSAGE PROMPT | Screen Width - %INTEGER%, Screen Height - %INTEGER1%::Screen Size::0

I noticed that is was 1 pixel off the proper size and this will look at the X and if over 2500 it will halve it to say the size of one screen.

User: Rambo-X

Date: Dec 7, 2020 19:05:52 GMT

After All the “Triple M” might managed to one day crack this if we can run a code for a macro to read line by line and then apply the calculated X and Y’s to each of those lines to fit the resolution.  smiley.png   ——————————————————————————–

Possibilities of Playing all mmmacro files on a Folder

URL: https://minimousemacro.proboards.com/thread/352/possibilities-playing-mmmacro-files-folder
Date: Nov 29, 2020 1:04:36 GMT

User: Rambo-X

Date: Nov 29, 2020 1:04:36 GMT

Hello Everybody, Good Morning to you all  smiley.png

Can I kindly know if all mmmacro files on a Folder can be played one after the other in some similar fashion like below code? The Reason is that I have like 200 Files on a Folder and they just can keep running one after the other without having to specifically add each file individually. I remove and add many files to it and having to rename the codes and stuff can become exhausting at times.

1 | FOR | EACH | FILE IN -R | D:\Macro\TX | DO
2 | RUN ACTION | RUN MACRO INLINE
3 | FOR | NEXT

Thank you.

User: Steve

Date: Dec 5, 2020 1:05:12 GMT

Hi Rambo-X

For this id use FOR EACH FILE IN with FOR EACH LINE IN. More on FOR here: <www.turnssoft.com/conditions.html#for> . In this example I have three files in the folder D:\Macro\macro_folder: File 1.mmmacro

1 | RUN ACTION | MESSAGE PROMPT | %time%::File 1::1

File 2.mmmacro

1 | RUN ACTION | MESSAGE PROMPT | %time%::File 2::1

File 3.mmmacro

1 | RUN ACTION | MESSAGE PROMPT | %time%::File 3::1

Each file is a 1 line macro that runs a message prompt with the current time, using the %time% variable. The simple macro below runs each file.
At line 1: Here we initialize the FOR file loop, iterating through each file in the D:\macro\macro_folder directory. At line 2: A FOR line loop runs each line in current file iteration. The %FILE% variable holds the current file path variable. At line 3: We close the for loop for the iteration.

1 | FOR | EACH | FILE IN | D:\Macro\macro_folder | DO
2 | FOR | EACH | LINE IN | %FILE% | RUN
3 | FOR | NEXT

minimousemacro_forfilelinein.gif

User: Rambo-X

Date: Dec 7, 2020 18:56:06 GMT

Thanks a lot Steve. This has been the exact answer I have been looking for. Thanks a lot.


X Y Coordinate Issue | Screen Magnification Offset

URL: https://minimousemacro.proboards.com/thread/350/coordinate-issue-screen-magnification-offset
Date: Nov 26, 2020 6:08:11 GMT

User: 3M-Fan

Date: Nov 26, 2020 6:08:11 GMT

Hello all, Gotta good one for you Steve. (I’m an old-time DOS Era coder who spent countless days debugging. It seemed digital bugs were always attracted to me…) Anyway I have to say you’ve done a fantastic job here with 3M (I gave it a large corporate nickname… sorry.) You really deserve kudos for following up with everyone’s questions and problems for years now (What patience you have, believe me I know). So here is mine… Having spent over 3 1/2 decades staring at computer screens my eyes aren’t what they used to be, so rather than admit to glasses I use the text magnification setting in windows_screen and appearance. I have it set to 133%. 3M is having trouble playing back recorded mouse clicks when the setting isn’t at normal (100%). The coordinates are recorded correctly but are played back at an offset that equals (you guessed it) 33%. So when I move the mouse to location 100,500 and click, that’s what 3M records. But when I play back the macro the pointer ends up at 75, 376 and of course misses it’s intended target. There may be a work around, but I certainly am not versed well enough in 3M to know what it is. Of course if it is a bug (ok, maybe just an over-site) you’ll probably know exactly where to look. Right know I’m basically entering corrected coordinates manually for some small macros, maybe if they get really long I’ll cheat and fix them with excel or something (I haven’t done d-base work in ages). Continue the fantastic job you do… Cheers.

User: Steve

Date: Nov 27, 2020 9:17:24 GMT

Hi, Thanks for your comments.
There is not much we can do for this one. Screen magnification doesn’t change the screen resolution. When MMM plays back the mouse X and Y coordinates it’s finding the X and Y pixel location as determined by the current resolution. I think you can see where I’m going with this….Unfortunately MMM can’t auto-adjust for screen magnification. Thats a rabbit-hole im not looking to go down. An alternative is to do away with mouse X and Y coords all together if possible. Try to make use of some MMM <www.turnssoft.com/conditions.html> and add some logic to take queues from the environment. Instead of a mouse movement and click, maybe you can select and press enter for example. Hope this helps. Oh and 3M…its growing on me. I’ve never had someone refer to it like that, i like it.

User: 3M-Fan

Date: Dec 1, 2020 7:59:57 GMT

Good Evening all, Thank you Steve for getting to my question during the holiday weekend. (I see we roughly keep the same hours, as I for one get more done when everyone else is asleep). I had a feeling that magnification might be something there isn’t a big demand for, although I didn’t think it was going to be as complex as you mention. (Oh well, maybe I’ll give in and get a pair of glasses… we’ll SEE). As far as your recommendation to give up the mouse and go with logic and coding (you are preaching to the choir) I also consider that more elegant. I took a long look at the help link you posted and was very impressed how detailed it is. I recognize much of the syntax even though it’s been a very long time that I actively worked with that. If by chance your like me and at some point you “have to try” (and go down that rabbit hole) I’d love to hear how difficult (or not) you found it to be. Also, I would like to reiterate again, what a nice job you’ve done with all this software, especially the time you put in to help the end users. And of course, I’m glad you got a kick out of the 3M nickname, although the larger 3M corp might have something to say one day (when you get really big). After all, there stock symbol is: MMM. 3M(acro) - Fan


Pop-up window

URL: https://minimousemacro.proboards.com/thread/351/pop-window
Date: Nov 26, 2020 18:54:55 GMT

User: tansu

Date: Nov 26, 2020 18:54:55 GMT

I’m new to the MMM program. The program is very useful. I want to use the program in the cargo acceptance process. Problem is pop-up window. When we call the barcode in the cargo acceptance program we use, the computer keeps waiting for the pop-up window. So can the condition be created when the pop up screen is opened in the MMM program since the time is not determined? Thanks for help

User: Steve

Date: Nov 27, 2020 9:28:30 GMT

Hi tansu

What your after is the “WINDOW TITLE” and “SELECT WINDOW BY NAME” condition (more here <www.turnssoft.com/conditions.html#windowtitle> and here <www.turnssoft.com/conditions.html#selectwindowbyname> ). window title The WINDOW TITLE object evaluates a condition based on the presence of a window title name. The Window Title condition is useful to check if a program window is open. Consider the WINDOW TITLE example statement below taken from a macro condition:

1 | IF | WINDOW TITLE | index.txt - Notepad | EXIST | SELECT WINDOW BY NAME | index.txt - Notepad | ELSE | 1 | RUN ACTION | RUN PROGRAM | D:\Macro\index.txt

This reads - IF a WINDOW with the TITLE named index.txt - Notepad does EXIST (meaning that a window is open that does have that title name) then SELECT the WINDOW BY its NAME. index.txt - Notepad. If the window title named index.txt does not exist, ELSE, then RUN the ACTION to RUN the PROGRAM at D:\Macro\index.txt opening the file. select window by name SELECT WINDOW BY NAME action selects the open window with the title value that matches the SELECT WINDOW BY NAME value. By selecting a window it is given active scope, for example when clicking into a window that program is given active scope. Consider the SELECT WINDOW BY NAME example statement below taken from a macro condition:

1 | RUN ACTION | SELECT WINDOW BY NAME | New Tab - Mozilla Firefox

This reads - RUN the ACTION SELECT WINDOW BY NAME the window title ‘New Tab - Mozilla Firefox’. So this action will run and select the window with the window title ‘New Tab - Mozilla Firefox’. If there is no window with that title then the condition action is skipped. Consider the WINDOW TITLE example statement below used to SELECT WINDOW:

1 | IF | WINDOW TITLE | index.txt - Notepad | EXIST | SELECT WINDOW BY NAME | index.txt - Notepad | ELSE | 1 | RUN ACTION | RUN PROGRAM | D:\Macro\index.txt

This reads - IF a WINDOW with the TITLE named index.txt - Notepad does EXIST (meaning that a window is open that does have that title) then SELECT the WINDOW BY its NAME. index.txt - Notepad. The the windows title named index.txt does not exist, ELSE then RUN the ACTION to RUN the PROGRAM at D:\Macro\index.txt


OUTPUT to Many Files

URL: https://minimousemacro.proboards.com/thread/348/output-files
Date: Nov 23, 2020 3:08:03 GMT

User: Rambo-X

Date: Nov 23, 2020 3:08:03 GMT

Dear All, Good Day smiley.png I am trying to get few numbers I have typed in 3 separate lines into 3 different txt files. I wrote this but guess my understanding is wrong the last number keeps getting to all 3 files. Can someone help me to get the line items separated to separate text files please? My Code

1 | FOR | EACH | LINE IN | F:\Test-in.txt | DO
2 | RUN ACTION | OUTPUT TO FILE | E:\out1.txt::APPEND::%LINE%
3 | FOR | NEXT
4 | RUN ACTION | OUTPUT TO FILE | F:\output2.txt::APPEND::%INTEGER%
5 | FOR | NEXT
6 | RUN ACTION | OUTPUT TO FILE | F:\output3.txt::APPEND::%INTEGER%

User: Steve

Date: Nov 23, 2020 9:25:57 GMT

Hi Rambo-X

Yes your syntax is wrong. FORNEXT is the end of for block. More on FOR looping syntax is located on the condition page here <www.turnssoft.com/conditions.html#for>

e:\out1.txt:

1
2
3
4
5

f:\test-in.txt:

100
200
300
400
500
1 | FOR | EACH | LINE IN | F:\Test-in.txt | DO
2 | RUN ACTION | OUTPUT TO FILE | E:\out1.txt::APPEND::%LINE%
3 | FOR | NEXT

e:\out1.txt:

1
2
3
4
5
100
200
300
400
500

User: Rambo-X

Date: Nov 23, 2020 10:09:44 GMT

Unfortunately I think there was a communication error here… What I have in my “test-in.txt” File, 123 456 789 112 556 887 968 What I need the Macro to do is break them into separate Files. So the example would be like, “out1.txt” contains : 123 “out2.txt” contains : 456 “out3.txt” contains : 789 so on, I did try reading the above link for hours and didn’t understand a way to get these lines to “separate files”.

User: Rambo-X

Date: Nov 23, 2020 16:30:03 GMT

Is there anyways to get it done guys?  sad.png

User: Steve

Date: Nov 23, 2020 18:43:54 GMT

Ah ok i see you what you mean. You want each line in test-in.txt to be in a new file and each file name to be incremented by a variable. This is what you want:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER99%::1
2 | FOR | EACH | LINE IN | F:\Test-in.txt | DO
3 | RUN ACTION | OUTPUT TO FILE | E:\out%INTEGER99%.txt::APPEND::%LINE%
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER99%::+1
5 | FOR | NEXT

User: Rambo-X

Date: Nov 24, 2020 8:39:13 GMT

Thanks a lot My Dear Friend…Thank you Thank you and Thank you… This game me Nightmares man.

User: Rambo-X

Date: Nov 24, 2020 15:41:49 GMT

Just asking as for further Clarification, If I require to Dissect “an X number” of Lines ex: every 3 Lines ; to a new file how can we do it?

User: Steve

Date: Nov 24, 2020 21:55:11 GMT

OrPMJslAMtScYqPUpgHc.jpg Nov 24, 2020 15:41:49 GMT

Rambo-X said: Just asking as for further Clarification, If I require to Dissect “an X number” of Lines ex: every 3 Lines ; to a new file how can we do it? If I wanted only the third line in f:\test-in.txt to be appended to a new file under e:\out[number].txt I would use this:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER99%::1
2 | FOR | EACH | LINE IN | F:\Test-in.txt | DO
3 | IF | INTEGER VARIABLE | %INTEGER99% | % | 3::=::0 | OUTPUT TO FILE | E:\out%INTEGER99%.txt::APPEND_NEWLINE::%LINE%
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER99%::+1
5 | FOR | NEXT

At line 3 we do some basic math (https://www.turnssoft.com/conditions.html#integer_variable). We evaluate the value of integer99 to determine IF INTEGER99 MOD 3 is EQUAL to 0 (if integer99 can be divided by 3 with no remainder). If it can then we know that we have had three iterations of the for loop so therefore we must be on the the third line of the test-in.txt file.

User: Rambo-X

Date: Nov 24, 2020 23:21:26 GMT

Thanks a lot. But my Question to be precise was not about the 3rd line… I am asking actually about pulling out of X “numbers” of lines, as per my example 3 Lines at a time, 3, 6, 9 so on. So the Out files would have 3 lines per file. Thank you again.


Message Box Only at the End of the Loop

URL: https://minimousemacro.proboards.com/thread/341/message-box-end-loop
Date: Nov 7, 2020 19:15:03 GMT

User: Rambo-X

Date: Nov 7, 2020 19:15:03 GMT

Hello Everyone… Good Day… I need to get a message Box done to say, “ Task Completed” only at the End of the Loop. Is that Possible? Because the below code hinders the Loop without pressing Okay at end of each and every Turn. Purpose to get a message box is that the Loop run’s for like an Hour an a Half, so I’d know when it’s done. Thank you.

1 | 489 | 299 | 750 | Keypress pgup
2 | 489 | 299 | 1000 | Left Click Down
3 | 489 | 299 | 400 | Left Click Release
4 | RUN ACTION | MESSAGE PROMPT | Task Completed

User: zeak

Date: Nov 9, 2020 0:24:12 GMT

Hi Rambox, First of all welcome to the Forum, My Question is are you using the Loop check box on the top right of the macro? This loop is a simple and easy to use loop function but as soon as you have some complexity to you macro then you need to start using the inline loop fuctions. The easiest way of doing this is with FOR LOOP

1 | FOR | I | = | 1 TO 55 | NEXT
2 | X | X | 750 | Keypress pgup
3 | 489 | 299 | 1400 | Left Click
4 | FOR | NEXT
5 | RUN ACTION | MESSAGE PROMPT | Task Completed::::0

So this will loop 55 times, you can change this number to the desired. I also removed the mouse position for your key press as it was not needed and changed your Left Click to condensed version.

User: Rambo-X

Date: Nov 24, 2020 13:56:16 GMT

Hey Zeak, Sorry for the Late reply bro. I didn’t get a notification to this and I just saw someone has replied my question when I was looking at the QandA in here. Thanks a lot for your Welcome man. Appreciated. My Question is are you using the Loop check box on the top right of the macro?

  • Yes Bro. So this will loop 55 times, you can change this number to the desired. I also removed the mouse position for your key press as it was not needed and changed your Left Click to condensed version.
  • Thanks a lot for your suggestion brother. Implementing right away. Sorry again for the late reply. Tc and stay safe.

What is the syntax for triggering: Shift+ Win + S

URL: https://minimousemacro.proboards.com/thread/344/syntax-triggering-shift-win
Date: Nov 17, 2020 21:54:15 GMT

User: hlynge

Date: Nov 17, 2020 21:54:15 GMT

In a macro I want to take a screenshot and would like to use the Shift+Win+S for this, but cant figure out the syntax

User: Steve

Date: Nov 18, 2020 8:53:19 GMT

This is the syntax:

1 | X | X | 100 | Keypress Shift+ | lwin | Key Down
2 | X | X | 100 | Keypress S
3 | X | X | 100 | Keypress Shift+ | lwin | Key Release

Open New Browser to specific web page

URL: https://minimousemacro.proboards.com/thread/311/open-new-browser-specific-page
Date: Oct 1, 2020 23:31:55 GMT

User: josh547

Date: Oct 1, 2020 23:31:55 GMT

I looking to open a new browser window to a specific web page. Example - “C:\Program Files\Internet Explorer\iexplore.exe” www.yahoo.com

I need to open new browser windows or tabs to specific web sites.

1 | RUN ACTION | RUN PROGRAM | "C:\Program Files\Internet Explorer\iexplore.exe" www.yahoo.com

This will open new IE window to default home page

1 | RUN ACTION | RUN PROGRAM | "C:\Program Files\Internet Explorer\iexplore.exe" www.yahoo.com

This doesn’t work, trying to open to yahoo (yahoo just an example) New to MMM Thanks

User: realmatt

Date: Oct 7, 2020 21:02:50 GMT

This is the syntax you need:

1 | RUN ACTION | RUN PROGRAM | C:\Program Files\Internet Explorer\iexplore.exe::www.yahoo.com

www.turnssoft.com/conditions.html#runprogram

User: josh547

Date: Nov 17, 2020 12:39:35 GMT

thank you


text recognition

URL: https://minimousemacro.proboards.com/thread/336/text-recognition
Date: Nov 2, 2020 16:00:14 GMT

User: rob1

Date: Nov 2, 2020 16:00:14 GMT

I want to run an IF condition that depends on whether certain text is or is not present anywhere on the webpage being viewed, even if I would need to scroll down to see it.

User: philranger

Date: Nov 9, 2020 18:28:40 GMT

Hello, I would do a “ctrl-a” (select all), ctrl-c (copy), paste to a notepad, use its “find” feature”, hit escape twice, do a ctrl-c, then check if the content of the clipboard is equal to the wanted value. Not efficient nor elegant though, so someone may have a better response

User: Steve

Date: Nov 10, 2020 7:29:24 GMT

Yeah i’m with philranger on this one. Your not going to get an elegant solution here. MMM has an internal variable called %clipboard% that holds the current clipboard and also the clipboard IF condition <www.turnssoft.com/conditions.html#clipboard> . I’d consider using one of those to evaluate the text. But…you have to get your page into your clipboard first.

1 | IF | CLIPBOARD | VALUE | TEXT CONTAINS | foo bar | MESSAGE PROMPT | I found it!::TEXT Found!::0

Loop - Wait - Continue

URL: https://minimousemacro.proboards.com/thread/337/loop-wait-continue
Date: Nov 3, 2020 16:21:00 GMT

User: Piranja

Date: Nov 3, 2020 16:21:00 GMT

Hello fine people! I have a MMM macro that runs continuously (in loop). Now I want it to loop for 4 minutes, pause/wait for 70 seconds, and then start/resume loop again for 4 minutes, pause/wait 70 seconds, and so on. Is this even possible? And if so, how do I do it? Thanks. Piranja

User: zeak

Date: Nov 8, 2020 23:53:13 GMT

Hi Piranja, I believe what you are chasing is the Wait command, On you macro list Right click and select, Add Condition, then select Run Action dot point, in the Action drop down list select the wait you wish to use. 1rKS2r6.png

User: Steve

Date: Nov 10, 2020 7:19:31 GMT

Hi Piranja, MMM executes each macro line one at a time synchronously. To evaluate the current time has to be done by an external application and caught with MMM or on a single macro line. Consider this example:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::4
* | LOOP_START
2 | RUN ACTION | WAIT SECONDS | 2
3 | RUN ACTION | MESSAGE PROMPT | %time_macro%::::1
4 | IF | STRING VARIABLE | %TIME_MACRO% | STARTS WITH | %INTEGER4%: | MESSAGE PROMPT | Check success::::2
5 | IF | STRING VARIABLE | %TIME_MACRO% | STARTS WITH | %INTEGER4%: | DEFINE INTEGER VARIABLE | %INTEGER4%::+4 | AND | 5 | RUN ACTION | WAIT SECONDS | 70
6 | RUN ACTION | GOTO MACRO LINE | LOOP_START

This macro evaluates the total macro running time at line 4 and 5. MMM holds the current macro running time in a variable %time_macro% but at the moment evaluating the running time is not pretty. At line 4 we check if the running time starts with ‘4:’ indicating 4 minutes have passed. This works if we can evaluate the macro during the 4th minute. At line 5 we evaluate the running time again, increment the counter by 4 (%integer4%) and wait 70 seconds before returning to the start of the loop (LOOP_START). Effectively we are looping for 4 minutes, pause and waiting for 70 seconds, and then resuming the loop.


Multiple Hotkeys

URL: https://minimousemacro.proboards.com/thread/243/multiple-hotkeys
Date: Mar 21, 2020 16:02:34 GMT

User: itzbaddyy

Date: Mar 21, 2020 16:02:34 GMT

Hi there, So I’ve been using this macro for a while now but I’ve come to the conclusion that I want multiple macro’s. I’ve got SHIFT + F1 to do 1 task but I’d like to have another macro (SHIFT + F2) which does another task. Is this possible? I’ve tried opening the application multiple times but that doesn’t work as the hotkey is the same for every saved file. I’ve looked into the Quick Launch but I don’t have a clue how this works or if this is my solution to this? Thanks in advance, iTzBaddyy

User: zeak

Date: Mar 23, 2020 1:52:52 GMT

Hi iTzBaddy, First of all welcome to the forum. So from what you have said you are trying to achieve I believe that Quick Launch will work for you. To use quick launch just click in the Fields, choose a name for the macro, then file location. I always run it with a Delay then choose a modifier Key and Hotkey. After doing all that Click the “ON” box and click save. Here is an example of my Quick Launch Options, Sometimes when you start your computer for the day you need to go to this window and click save again to enable the shortcuts. n4Q9QBO.png

User: ericmusicstrasbourg

Date: Oct 8, 2020 12:08:20 GMT

Salut ZEAK. Je souhaite également utiliser plusieurs macros. chacun est indépendant de l’autre. Je ne suis pas sûr d’avoir compris le concept de lancement rapide. A-t-il été conçu pour lancer les macros les unes après les autres de manière séquentielle ou est-ce là où toutes les macros sont stockées et on peut en rappeler une avec un raccourci puis une autre un peu plus tard avec un autre raccourci? c’est ce que je veux faire. ALT + CTRL + a appelle marcro 1176LNSL1

tandis que ALT + CTRL + B appelle la macro AA76LNSL2 et ainsi de suite …

comment mémoriser définitivement ces macros et les raccourcis qui leur sont attachés? Merci de votre aide eic

User: zeak

Date: Oct 9, 2020 4:09:36 GMT

E: Sup Eric F: souper Eric E: First of all, welcome to the forum. F: Tout d’abord, bienvenue sur le forum. E: Yes, the program has the function of memorizing and calling the stored macros, F: Oui, le programme a la fonction de mémoriser et d’appeler les macros stockées, E: you can find a quick tutorial below: F: vous pouvez trouver un tutoriel rapide ci-dessous: E: Once you have saved your setup macro, go to “program options”, “quick launch” F: Une fois que vous avez enregistré votre macro de configuration, allez dans “options du programme”, “lancement rapide” Zk7kxp5.png aiNat1D.png E: When that screen opens, Type in the Macro Name that you wish to use, Do not check the ON box yet, click on the File Location box (this will bring up a file selection menu) F: Lorsque cet écran s’ouvre, tapez le nom de la macro que vous souhaitez utiliser, ne cochez pas encore la case ON, cliquez sur la case File Location (cela fera apparaître un menu de sélection de fichier) kQ7GWu1.png

mGzLdF4.png E: After you have found where you saved your macro and selected it, you can ignore “Min”, “End”, “Loop” and “Loop (n)” fields if you wish your macro to only run once. F: Une fois que vous avez trouvé où vous avez enregistré votre macro et l’avez sélectionnée, vous pouvez ignorer les champs “Min”, “End”, “Loop” et “Loop (n)” si vous souhaitez que votre macro ne s’exécute qu’une seule fois. E: I would recommend having a delay before your macro starts, I normally have half a second but if what you are trying to achieve is time sensitive then you can skip this part. F: Je recommanderais d’avoir un délai avant le démarrage de votre macro, il me reste normalement une demi-seconde, mais si ce que vous essayez de réaliser est sensible au temps, vous pouvez sauter cette partie. E: Check the Delay box and put 500 in the “Delay (ms)” field, after you can choose you modifier Key/s. Then you can choose your Hotkey you wish to assign. F: Cochez la case Delay et mettez 500 dans le champ “Delay (ms)”, après avoir choisi votre touche / s de modification. Ensuite, vous pouvez choisir votre raccourci clavier que vous souhaitez attribuer. E: After completing all of the above, go back to the start and check the ON box, then do not forget to click the Save icon at the bottom left of that window. F: Après avoir terminé tout ce qui précède, revenez au début et cochez la case ON, puis n’oubliez pas de cliquer sur l’icône Enregistrer en bas à gauche de cette fenêtre. Wv7YXtV.png E: Hope this was helpful, Zeak. F: J’espère que cela a été utile, Zeak. Pour votre information: Sup est un argot australien pour bonjour

User: philranger

Date: Oct 22, 2020 20:13:24 GMT

Hello,   I think this only work with the pro version Bonjour, je pense que vous aurez besoin de la version pro pour cela.

User: ericmusicstrasbourg France

Date: Nov 2, 2020 13:04:33 GMT

Hi guys. Thank you for your answers. sorry i got sick and had to rest. I tried indeed it does not work. I sent a mail to steve and I am waiting for the pro version. there is another function i just tried: add a keyboard shortcut command in the macro. I added this one as MMM requests it by pressing 3 seconds on the desired shortcut. this one is well inserted in my macro but it does not trigger any action. the rest of the macro goes perfectly. You also need a pro version so that the keyboard shortcuts included in the macro can be operational

User: ericmusicstrasbourg

Date: Nov 2, 2020 14:28:10 GMT

hi philranger, zeak you are right in the standard version it does not work. you need the pro version … I have to wait … I’ll keep you posted and make a nice video as soon as it works. in any case this software is really useful … Thank you zeak your tutorial was very useful.

User: philranger

Date: Nov 9, 2020 18:30:43 GMT

Hello,   A “run action - input box” could ask a user to input a number and then call the right section of the macro.  Much programming to save the 10 Au$ that Steve is really deserving!


Pulling Data from Excel File

URL: https://minimousemacro.proboards.com/thread/298/pulling-data-excel-file
Date: Aug 27, 2020 4:33:56 GMT

User: zeak

Date: Aug 27, 2020 4:33:56 GMT

Hi Steve , Is there a simple way to pull data from an Excel file like we do with ‘INPUT FROM FILE’ I was hoping we could tell it which cell to look at with the R1C1 code. Cheers, Zeak

User: zeak

Date: Aug 31, 2020 3:59:10 GMT

The problem i’m facing at the moment is that when I try to copy from a cell in Excel, It doesn’t see the text but instead says the following ‘Image: {Width=98, Height=21}’ even if what I am copying to clip board is a number, and doing define Integer %Clipboard%. the integer number stays 0.

User: Steve

Date: Sept 3, 2020 9:27:19 GMT

Hi zeak Sorry for the late reply, not sure how i missed this one.
I tried a demo with a simple excel sheet and yeah i get the same as you; something like this ‘Image: {Width=98, Height=21}’ At the moment MMM lacks the functionality to interact well with excel with the input from file. Maybe saved as a .csv it could be.
Your probably going to have to run an external script to convert the data to a format that MMM can handle with input from file or something similar. If you make some progress I’d be interested to see how you go.

User: philranger

Date: Oct 27, 2020 12:44:36 GMT

Hello!   Microsoft Office files are really zipped folders containing files, subfolders, etc. and in particular an xml file that contains the data you want.  Not at all easy to access.    The “save as .csv” is a good option, copying from Excel is always a bit fishy as it copies a “full object”, not just a string.   A workaround is to do a “ctrl-c”, go to another simple application (notepad for example), paste there, reselect the text, and then copy to the clipboard.  I don’t know if this is acceptable in your case.

User: philranger

Date: Oct 30, 2020 14:56:28 GMT

Hi again,   To go to a specific cell, in the English version of excel, you can type ctrl-g, then where you wanna go (for example ctrl-g b:27).  So your workaround could be: -In Excel, ctrl-g, R1C1, enter, ctrl-C,

  • “select window by name” to a notepad, a select-all, delete, paste, re-select all, copy (to get rid of the Excel incapacity to do proper ctrl-c)
  • Use your clipboard as needed. In some software, ctrl-shift-v instead of ctrl-v keeps only the text instead of the full object.  I don’t know if it works in Excel though…

User: zeak

Date: Nov 8, 2020 23:44:55 GMT

Hi Philranger, Thanks’ for the advice, what could also help with this is if we could do the string array as talked about in these threads. minimousemacro.proboards.com/thread/312/extracting-multiple-variables-line minimousemacro.proboards.com/thread/330/command-string-parse-custom-variables


Can STRING variables be multiline with

URL: https://minimousemacro.proboards.com/thread/333/string-variables-multiline-crlf
Date: Oct 25, 2020 8:43:59 GMT

User: hpw

Date: Oct 25, 2020 8:43:59 GMT

Hello Steve, Can STRING variables be multiline with <CRLF> in them? If so, can I concatinate then by code witz a <CRLF>? Howto write? Could we iterate through a multiline String like: FOR | EACH | STRING IN | %CustomStringVariable% | DO Like LINE IN with a file. Regards Hans-Peter

User: hpw

Date: Oct 25, 2020 10:00:26 GMT

Hello Steve, A similar Question: Can I typ in Funktion Keys when I edit a Keypress item. I know I can record them like tab,enter,f1 to f12 etc. But when I enter them after some string they get normal letter-output. So do the special keys only work when they are alone on a keypress item ? Regards Hans-Peter

User: philranger

Date: Oct 27, 2020 12:18:30 GMT

Hello Hans,   I just tried and it works.  I recorded a keypress for “a”, then modified it to be F11.  Works in Chrome (toggle the menus on and off)

1 | 74 | 81 | 530 | Keypress F11

User: hpw

Date: Oct 27, 2020 13:34:01 GMT

Hello, But thiss do not work:

1 | 74 | 81 | 530 | Keypress Teststring F11

Regards Hans-Peter

User: Steve

Date: Oct 28, 2020 9:50:27 GMT

defaultavatar.png Oct 27, 2020 13:34:01 GMT

hpw said: Hello, But thiss do not work:

1 | 74 | 81 | 530 | Keypress Teststring F11

Regards Hans-Peter What you have there hpw is this: Line marker 1 Mouse X pos 74 Mouse 7 pos 81 Wait 530 ms and then, Output the keypress “teststring F11” philranger had this:

1 | 74 | 81 | 530 | Keypress F11 

MMM treats F11 as a special char. MMM has a few of these special chars as output text strings. These are notable when recording them and consist of SPACE, ENTER, LEFT, DOWN, and other function and special keys.

User: hpw

Date: Oct 28, 2020 17:07:22 GMT

Hello Steve, I have understood the conzept. The special keys only work when alone on a keypress-line. But back to topic: Can a string variable be multiline? See first post of this thread. Regards Hans-Peter

User: Steve

Date: Oct 30, 2020 8:54:05 GMT

defaultavatar.png Oct 25, 2020 8:43:59 GMT

hpw said: Hello Steve, Can STRING variables be multiline with <CRLF> in them? If so, can I concatinate then by code witz a <CRLF>? Howto write? Could we iterate through a multiline String like: FOR | EACH | STRING IN | %CustomStringVariable% | DO Like LINE IN with a file. Regards Hans-Peter Hi hpw Yes strings can be multi line when they are read in from file with input from file or from the clipboard .
Can they be concatinated with a CRLF, yes - but (yes there is a but unfortunately) not through Define String Variable . They will have to be fed in another way - like through the CLIPBOARD and INPUT FROM FILE. MMM can handle the most basic of variable manipulation at the moment. Its getting better though. Future releases are going to add a lot more functionality for this.


How do I specify a double-click to select all test in field

URL: https://minimousemacro.proboards.com/thread/335/specify-double-click-select-field
Date: Oct 28, 2020 14:10:00 GMT

User: hlynge

Date: Oct 28, 2020 14:10:00 GMT

Trying to use hte mini mouse macro - that I like a lot to automate some process, I need to specify a double click…. how do I do this huh.png

User: philranger

Date: Oct 28, 2020 19:36:02 GMT

Hello,

1 | X | X | 66 | Left Click Down
2 | X | X | 66 | Left Click Release
3 | X | X | 66 | Left Click Down
4 | X | X | 66 | Left Click Release

Seems to work for me

User: Steve

Date: Oct 30, 2020 8:43:15 GMT

This is the same but 1 line:

1 | X | X | 66 | Left Click | loop 2::50

This reads, wait 66ms then Left Click - looping twice with a 50ms delay.


Screen Marker

URL: https://minimousemacro.proboards.com/thread/280/screen-marker
Date: Jul 7, 2020 4:21:51 GMT

User: tylerciggy

Date: Jul 7, 2020 4:21:51 GMT

Although the macro that I want to create can be kinda complex, there is one thing that could be of HUGE help to me: a screen marker. I need a macro that makes a click and then another click in a submenu that is created after the first click. The thing is that the submenu has a variable position, even though is fixed from a certain range. But for me to not mess around in complex equations, I can just “move the screen” to pin the place where I want to execute my fixed position macro, but I find myself in troubles very often, because I can’t “see” where the macro starts. So I want to know if someone knows about a software for me to have a color mark in my screen that matchs the coordinates that MMM uses. It could be fantastic that the very MMM includes that function.

User: Steve

Date: Jul 17, 2020 4:39:41 GMT

Hi, Maybe ‘Paint Path’ is what you need. Paint path options can be set here <www.turnssoft.com/conditions.html#debug> minimousemacro_paintpath.gif

User: philranger

Date: Oct 27, 2020 12:53:37 GMT

Quite often software menus have hidden shortcuts.  They will be shown by having an underlined letter, which can be reached by pressing “alt” + that letter, no need to click anywhere.  In others, for example, in Excel, hitting the “alt” key will show a bunch of letters, which are the shortcut.  For example, “alt+f” will open the “file” menu.  Once a menu is open, it can usually be navigated by using the arrow keys and enter.  Hoping it helps!


Newbie “IF” and “label” question

URL: https://minimousemacro.proboards.com/thread/327/newbie-label-question
Date: Oct 23, 2020 13:43:25 GMT

User: philranger

Date: Oct 23, 2020 13:43:25 GMT

Hello,   Newbie to MMM, but programming savy if I may say so myself.  I have simplified my code to the following, which I test from an empty “Notepad”.  Whatever I type in the inputbox, nothing gets written.

1 | RUN ACTION | INPUT BOX | 1=day, 2= night::Time?::STRING
2 | IF | STRING VARIABLE | %STRING% | IS | 1 | GOTO MACRO LINE | 10
3 | IF | STRING VARIABLE | %STRING% | IS | 2 | GOTO MACRO LINE | 20
5 | RUN ACTION | STOP
10 | RUN ACTION | KEYPRESS | Good day mate
15 | RUN ACTION | STOP
20 | RUN ACTION | KEYPRESS | Good evening mlady
25 | RUN ACTION | STOP

But when I change it to the following, it works. 

1 | RUN ACTION | INPUT BOX | 1=day, 2= night::Time?::STRING
2 | IF | STRING VARIABLE | %STRING% | IS | 1 | GOTO MACRO LINE | 5
3 | IF | STRING VARIABLE | %STRING% | IS | 2 | GOTO MACRO LINE | 7
4 | RUN ACTION | STOP
5 | RUN ACTION | KEYPRESS | Good day mate
6 | RUN ACTION | STOP
7 | RUN ACTION | KEYPRESS | Good evening mlady

Since the length of my sections will change in the future, I was wondering if there is a way around it?  Thanks! EDIT: Ok, I found a work around: goto a comment instead of goto a specific line number.

1 | RUN ACTION | INPUT BOX | 1=day, 2= night::Time?::STRING
2 | IF | STRING VARIABLE | %STRING% | IS | 1 | GOTO MACRO LINE | Day
3 | IF | STRING VARIABLE | %STRING% | IS | 2 | GOTO MACRO LINE | Nite
4 | RUN ACTION | STOP
* | Day
5 | RUN ACTION | KEYPRESS | Good day mate
6 | RUN ACTION | STOP
* | Nite
7 | RUN ACTION | KEYPRESS | Good evening mlady

Are there other restrictions about line numbers?  Can they be randomly ordered and skipped? Thanks!

User: Steve

Date: Oct 24, 2020 7:02:07 GMT

Oct 23, 2020 13:43:25 GMT @philranger said: Are there other restrictions about line numbers?  Can they be randomly ordered and skipped? Thanks! Hi philranger

Thanks for coming back with your solution to use comments. Yes, there are some restrictions for line numbers and GOTO MACRO LINE ( <www.turnssoft.com/conditions.html#gotomacroline> ). When GOTO MACRO LINE is directed to goto a line number the macro MUST be sorted. When GOTO MACRO LINE references a number it is the number of the item in the list, not the text number on the macro line. minimousemacro-relistrows1.jpg minimousemacro-relistrows2.jpg When GOTO MACRO LINE references a comment string it searches for that string to find a match. Hope this helps. Regards, Steve.

User: philranger

Date: Oct 27, 2020 12:13:31 GMT

That’s a perfect answer, thanks! If I may say so, I think that allowing editing the number instead of always having an automatic numbering mechanism is a bit misleading then for old-time basic programmers like me (I found the automatic relisting after my initial question)


Settings location

URL: https://minimousemacro.proboards.com/thread/328/settings-location
Date: Oct 23, 2020 16:57:51 GMT

User: philranger

Date: Oct 23, 2020 16:57:51 GMT

Hello, Where are the settings files such as the hotkeys located on my hard drive? Thx!

User: hpw

Date: Oct 23, 2020 17:19:39 GMT

Hello, Normaly the settings are saves to the registry. You can view them in the options dialog in tab “Loaded Settings” There are radio buttons which default to “Active Settings” There is also “Registry output” and “ini output”. When you save settings from the tab “Options” with the save-button a ini is saved to the exe-path. That is shown in tab “Loaded settings” and the radio option “ini output”. Te use of the ini file is optional. That makes it to the portable version. Hope that helps. Regards Hans-Peter

User: philranger

Date: Oct 23, 2020 18:11:02 GMT

Thank you very much Hans-Peter! I don’t have permission to access the registry folder or do any kind of install on my “office” pc so I run the executable mmm directly from the desktop.  I was hoping to create a macro that could reassign the shortcuts because depending on which software I work in, some keys are already assigned and can’t be used for shortcuts anymore.  For example, almost anything with “ALT” in office will open the menus instead, F1 would start the “help”, etc.  IrfanView uses F12, Acrobat Reader uses F9, etc. Thanks!

User: hpw

Date: Oct 24, 2020 5:24:36 GMT

Hello, You can consider to create different ini files in your exe folder. Then create a bat for each wanted version. In the bat copy your named ini on the standard ini name and start the exe. Or we ask Steve if he could add a commandline switch to choose different ini files on Startup! Regards Hans-Peter

User: philranger

Date: Oct 27, 2020 12:09:57 GMT

  Thanks.  I don’t see a .ini on my desktop (this is where I run mmm from) but with your instructions I found how to do it, works for me.   Thanks a lot!!!  grin.png


extracting multiple variables from %LINE%

URL: https://minimousemacro.proboards.com/thread/312/extracting-multiple-variables-line
Date: Oct 2, 2020 14:16:06 GMT

User: antoine

Date: Oct 2, 2020 14:16:06 GMT

Hello, I want to read a text file with 3 integers per line. I can use MMM to extract a full line from the file into %STRING% but cannot find anything close to a regular expression processing.

1 | FOR | EACH | LINE IN | F:\MMM\data.txt | DO
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%LINE%   # ex %LINE% = "45 12 80"
3 | RUN ACTION | ...                                         # need %INTEGER%::45     %INTEGER1%::12    %INTEGER2%::80
4 | FOR | NEXT

Thanks for the help, Antoine

User: Steve

Date: Oct 17, 2020 21:33:57 GMT

Hi antoine Sorry for the delay in getting to this one.
Unfortunately we can’t do delimiter our the variable like you’ve outlined with Mini Mouse Macro yet. I’m working on better ways to work with variables but it’s not there yet. To get this working you will need to call something like batch or powershell to manipulate the string, save to a file, and then read it back into MMM. Cheers, Steve.

User: philranger

Date: Oct 23, 2020 18:58:38 GMT

Maybe you could first create a copy of your data file where you replace every delimiter (a space here?) by a return character?

User: hpw

Date: Oct 24, 2020 7:02:46 GMT

Or take a look at this wish: minimousemacro.proboards.com/thread/330/command-string-parse-custom-variables ;-)


explanation after the code

URL: https://minimousemacro.proboards.com/thread/320/explanation-after-code
Date: Oct 20, 2020 8:36:18 GMT

User: JJ79

Date: Oct 20, 2020 8:36:18 GMT

Hi! I want to add explanation what i am doing in a row after the code:

1 | 956 | 273 | 100 | Left Click |   THIS LINE CLICKS THE OK BUTTON

I dont get like row:”   | * | blahblah |    “working. Thanks for help

User: Steve

Date: Oct 20, 2020 8:41:56 GMT

Hi, Code remarks must be on a different line in Mini Mouse Macro. To add a remark select a macro line, then right click the line and select ‘Add Remark’. Alternatively, select a line and press CTRL+RIGHT (right arrow) then edit the text. It looks like this:

* | THIS LINE CLICKS THE OK BUTTON
1 | 956 | 273 | 100 | Left Click

Not recording keystrokes or mouse clicks

URL: https://minimousemacro.proboards.com/thread/309/recording-keystrokes-mouse-clicks
Date: Sept 28, 2020 22:20:10 GMT

User: unicornedbatman

Date: Sept 28, 2020 22:20:10 GMT

I am currently trying a few options like this program but this one has struck me as the most reliable option so I wanted to automate my reroll process in Genshin impact with this program. When I’ve tested it beforehand the program managed to capture both clicks as well as keystrokes but as soon as I go into the game the program stops recording my keystrokes and clicks and only records the mouse movement. as soon as I tab out it starts recording everything again. I’ve tried both running the game in windowed and in full screen mode as well as restarting my computer. Did anybody else encounter a similar problem in a different game or maybe even the same and came up with a solution? Thanks in advance!

User: zeak

Date: Sept 29, 2020 4:48:06 GMT

Hi UnicornedBatman, Welcome to the forum, This thread might answer your question. minimousemacro.proboards.com/thread/250/running-macro-another-program


Setting Time to Int

URL: https://minimousemacro.proboards.com/thread/299/setting-time-int
Date: Aug 27, 2020 4:34:01 GMT

User: jeff

Date: Aug 27, 2020 4:34:01 GMT

Is there a way to set an integer variable to time in seconds/mins? I am trying to create a loop that would continue for a given amount of time. I figured the easiest way to achieve this would be to set a variable to the current time + time to wait, run the loop, check to see if the new current time exceeds my saved time variable. Unfortunately, it seems like the %TIME% variable is a string which wouldn’t work for me.

User: Steve

Date: Aug 27, 2020 9:18:24 GMT

Have you considered using the other %time% variables such as %time_s% for the seconds or %time_m% for the minutes? minimousemacro-timevariables.png

User: jeff

Date: Sept 7, 2020 9:43:05 GMT

I saw the %TIME_MACRO% variable and thought it would work perfectly in the following way:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::3
2 | RUN ACTION | WAIT SECONDS | 1
7 | IF | INTEGER VARIABLE | %TIME_MACRO% | < | %INTEGER% | GOTO MACRO LINE | 2

This works fine, but when the time gets above 60 seconds %TIME_MACRO% variable turns into a string. Is there a way to get the time as seconds or similar integer value to use for my comparison?

User: Steve

Date: Sept 9, 2020 6:24:38 GMT

Hi Jeff, I had a play around to see if I could come up with something but it gets real complicated with multiple lines. One way I can think of is to write it out to file and run something in batch to extract the time value back into a variable. But that’s not a great solution. You’ve given me an idea for another internal variable though. %time_macro_seconds%, %time_macro_minutes%, and %time_macro_hours%. I’ll add them to the list for the next update.

User: jeff

Date: Sept 11, 2020 5:44:46 GMT

Yeah, I also thought about exporting/importing the time via another language, but didn’t want to go down that route due to the extra hassle. I ended up setting hard coded FOR loops with exporting the time for each completion to review and adjust as needed when I make changes. It is working good enough for now.


mouse click capture not working

URL: https://minimousemacro.proboards.com/thread/302/mouse-click-capture-working
Date: Sept 3, 2020 18:13:31 GMT

User: rob1

Date: Sept 3, 2020 18:13:31 GMT

I was able to capture mouse clicks when recording a macro. Its not working now. I checked the settings and all seems to be set correctly.

User: zeak

Date: Sept 7, 2020 22:49:37 GMT

defaultavatar.png Sept 3, 2020 18:13:31 GMT

rob1 said: I was able to capture mouse clicks when recording a macro. Its not working now. I checked the settings and all seems to be set correctly. Hi Rob1, Welcome to the forum. Have to checked to see if this check box that has to word mouse next to it is selected. kBneqWi.png

User: jeff

Date: Sept 8, 2020 4:57:55 GMT

Zeak, I believe that controls the mouse movement capture feature. Under the “Record Options” tab, there is a check box called “Disable mouse click capture”. That might be what is causing it.

User: Steve

Date: Sept 9, 2020 6:26:51 GMT

jeff was the “Disable mouse click capture” enable the culprit?

User: zeak

Date: Sept 10, 2020 4:39:14 GMT

ovqiSZMQkcHXJsgduMbm.jpg Sept 7, 2020 22:49:37 GMT

zeak said: defaultavatar.png Sept 3, 2020 18:13:31 GMT

rob1 said: I was able to capture mouse clicks when recording a macro. Its not working now. I checked the settings and all seems to be set correctly. Is the mouse play back in options unchecked? HshGzxe.png


Custom to Clipboard

URL: https://minimousemacro.proboards.com/thread/294/custom-clipboard
Date: Aug 10, 2020 13:42:37 GMT

User: pablom

Date: Aug 10, 2020 13:42:37 GMT

Hi, it’s possible to send custom text or %INTEGER% to clipboard? So i don’t have to copy content from X place each time, but just send it directly to the clipboard and then use it to paste.

User: zeak

Date: Aug 11, 2020 5:45:43 GMT

Hi Pablom, I would take a look at <www.turnssoft.com/conditions.html#clipboard> , it might answer a few questions. and possibly combining it with <www.turnssoft.com/conditions.html#keypress> . Here is an example code:

1 | X | X | 200 | Keypress Ctrl+ | a
2 | X | X | 200 | Keypress Ctrl+ | c
3 | RUN ACTION | SELECT WINDOW BY NAME | Untitled - Notepad
4 | RUN ACTION | KEYPRESS | %CLIPBOARD%

This selects all text with Ctrl A, you would first want to click the mouse where you want to copy the text, then does Ctrl C to copy, I told it to select Notepad as the place to paste to, then with Keypress %CLIPBOARD% it paste everything copied. Hope this helped. Zeak

User: pablom

Date: Aug 11, 2020 6:21:45 GMT

Thank you, yes i saw it, but i don’t want to copy anything, and send the data directly to the clipboard.

User: pablom

Date: Aug 11, 2020 11:43:14 GMT

This actually works smiley.png

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %STRING%::google.com
2 | RUN ACTION | COPY TO CLIPBOARD | %STRING%
3 | RUN ACTION | MESSAGE PROMPT | %CLIPBOARD%

User: Steve

Date: Aug 13, 2020 10:36:19 GMT

defaultavatar.png Aug 11, 2020 11:43:14 GMT

pablom said: This actually works smiley.png

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %STRING%::google.com
2 | RUN ACTION | COPY TO CLIPBOARD | %STRING%
3 | RUN ACTION | MESSAGE PROMPT | %CLIPBOARD%

This will also work to get a value to the system clipboard and cuts your code down too:

1 | RUN ACTION | DEFINE STRING VARIABLE | %CLIPBOARD%::google.com
2 | RUN ACTION | MESSAGE PROMPT | %CLIPBOARD%

User: pablom

Date: Sept 3, 2020 13:16:26 GMT

Hi, im trying to copy data from excel, and send it to strings, then use this strings to paste that data on another place, for now in excel itself, but it does not work:

1 | RUN ACTION | WAIT SECONDS | 3
2 | 80 | 187 | 1248 | Left Click
3 | 171 | 260 | 200 | Keypress Ctrl+ | c
4 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::%CLIPBOARD%
5 | 80 | 171 | 1392 | Keypress right
6 | RUN ACTION | DEFINE STRING VARIABLE | %CLIPBOARD%::%STRING1%
7 | RUN ACTION | PASTE FROM CLIPBOARD

It pastes: “Image: {Width=85, Height=17}” not sure where that came from, its like MMM can’t save the data in correct format. Edit: Yes, this is it, i just copied anything and sent to the string, totally changed, again with the “Image:…” what format i should use, so MMM can copy it correctly?

User: zeak

Date: Sept 7, 2020 22:46:23 GMT

minimousemacro.proboards.com/thread/298/pulling-data-excel-file


Mini Mouse Macro Wait

URL: https://minimousemacro.proboards.com/thread/303/mini-mouse-macro-wait
Date: Sept 4, 2020 19:23:53 GMT

User: AviBri

Date: Sept 4, 2020 19:23:53 GMT

Hey, is it possible to have in my macro a wait command? For example I do a click, then the wait 5 seconds command, then another click comes.

User: jeff

Date: Sept 6, 2020 0:13:07 GMT

Yep! You can do wait in seconds, mins, or hours. Just right click in the program => Add Condition => Run Action => Scroll to very bottom. (it won’t let me embed it for some reason) uc9omv Picture uc9omv

User: AviBri

Date: Sept 6, 2020 11:19:59 GMT

Thank you so much! You’re a legend! I was a about to create a new macro and delete the one I’ve worked 2 hours on but you saved me. Thanks a lot!


Keeping programs from timing out and closing

URL: https://minimousemacro.proboards.com/thread/296/keeping-programs-timing-out-closing
Date: Aug 21, 2020 13:42:31 GMT

User: kellyllek

Date: Aug 21, 2020 13:42:31 GMT

We have a number of applications that time out and sign if if not used for a few minutes. Can someone suggest a way with MMM to keep them open?  Alas we don’t always have the programs in the same location on the taskbar so a simple Mouse action recording won’t work.  but if we could generate a command to activate that program and just do a single innocuous click, that would work. I have not used the conditions really at all, though I realize that is where much of the power of MMM resides. I see the condition to open a program, but these programs are already open. I’m using MMM for so much now! I have a 16 button mouse and an entire macro keyboard pretty much devoted to running hotkeys to use the Quick Launch.  But most of it is just mouse recordings.

User: zeak

Date: Aug 24, 2020 0:49:04 GMT

Hi Kellyllek, I believe Select Program by Name is the action you are chasing. <www.turnssoft.com/conditions.html#selectwindowbyname> Very simple action to use via the right click, Add Condition. Just have to select Run Action, choose Select window by name from the drop down list and type the name of your program.


Random String

URL: https://minimousemacro.proboards.com/thread/295/random-string
Date: Aug 12, 2020 14:09:16 GMT

User: pablom

Date: Aug 12, 2020 14:09:16 GMT

Hi, i have defined 50 different strings, now i want to use these randomly this is what i got:

48 | RUN ACTION | COPY TO CLIPBOARD | %STRING_50-95%
49 | 491 | 55 | 1610 | Keypress Ctrl+ | v
50 | 491 | 55 | 956 | Keypress enter

This part is not working, i tried: %STRING_50-95% %STRING%RANDOM_50-95%% How i can run random string number? Thanks!

User: Steve

Date: Aug 13, 2020 10:31:45 GMT

Hi pablom Checkout <www.turnssoft.com/conditions.html#random_integer_variable> for the usage of %RANDOM%. To clarify your question, are you looking for random numbers or the random use of your declared 50 string variables? The %RANDOM% variable generates random numbers. %RANDOM_50-95% will generate a random number between 50 and 95 but unfortunately can not be used how you have it defined with string variables. Saying that though I like where your heads at and your code below would be pretty cool if it could work to randomly pick your string variables.

User: pablom

Date: Aug 15, 2020 13:38:42 GMT

I want to use random string, i did it this way:

10 | RUN ACTION | GOTO MACRO LINE | down %RANDOM_1-46%
11 | RUN ACTION | DEFINE STRING VARIABLE | %STRING50%::en.wikipedia.org | AND | 1 | RUN ACTION | GOTO MACRO LINE | 57

Does this run while my computer is closed?

URL: https://minimousemacro.proboards.com/thread/293/run-computer-closed
Date: Aug 10, 2020 5:06:33 GMT

User: Liampbjray

Date: Aug 10, 2020 5:06:33 GMT

I’m using this for AFK grinding in a video game, an I want to know if I can keep it going even while my computer is closed. Thanks in advance!

User: zeak

Date: Aug 11, 2020 5:30:55 GMT

Hi Liampbjray, Just a question, when you say ‘computer is closed’, I am guessing you are referring to a laptop? Unfortunately MMM requires an active connection to the computer (i.e. will not work while screen saver is on or logged off profile) due to requiring hooks to the OS to called commands. If you could possibly make your PC still be a ‘live’ environment (when you close the screen, it does not go to sleep/disable screen saver)

User: Liampbjray

Date: Aug 11, 2020 17:19:27 GMT

What I mean is a laptop, yes, and what I mean by “close” is slightly hard to explain, but I’ll try: basically just taking the screen of the laptop and folding it down so that it is touching the keyboard. As far as I know, there is no real terminology for this so I hope you understand. Doing this leaves the computer still on, which is why I feel that it might be able to still run while it’s “closed”. Thanks for responding!

User: zeak

Date: Aug 12, 2020 5:51:35 GMT

Aug 11, 2020 17:19:27 GMT Liampbjray said: What I mean is a laptop, yes, and what I mean by “close” is slightly hard to explain, but I’ll try: basically just taking the screen of the laptop and folding it down so that it is touching the keyboard. As far as I know, there is no real terminology for this so I hope you understand. Doing this leaves the computer still on, which is why I feel that it might be able to still run while it’s “closed”. Thanks for responding! Have you checked your windows setting for what happens when closing the lid? If you are running windows 10, Try checking out the below How-To guide. I’m sure there would be something similar for other windows. <www.hellotech.com/guide/for/how-to-keep-laptop-on-when-closed#:~:text=To%20keep%20your%20Windows%2010> ,from%20the%20drop%2Ddown%20menu.

User: Steve

Date: Aug 13, 2020 10:46:01 GMT

MMM should keep running for as long at your desktop is ‘alive’ and awake. If your keeping your laptop on and not in sleep mode then MMM will keep running while your AFK in game. MMM will stop working when the laptop goes into sleep mode.


MMM on VPS

URL: https://minimousemacro.proboards.com/thread/291/mmm-on-vps
Date: Jul 28, 2020 16:07:29 GMT

User: pablom

Date: Jul 28, 2020 16:07:29 GMT

Hi, im testing your software and its really great, i want to keep it running on my windows VPS (im using chrome), the problem is that when i disconnect, it looks like MMM also stops working, why is that, can it be fixed? Would be perfect to have it running without having to be connected threw remote desktop. It looks like the mouse and keyword gets disabled when i disconnect, MMM is running, but not doing anything. Thank you.

User: Steve

Date: Jul 29, 2020 7:22:52 GMT

Hi pablom

I would love for this to work but it just can’t with MMM. When MMM runs it makes calls to the operating system (driven by the .NET framework) that rely on handlers that exist only when a user is logged in and have an active session.
defaultavatar.png Jul 28, 2020 16:07:29 GMT

pablom said: It looks like the mouse and keyword gets disabled when i disconnect, MMM is running, but not doing anything. When you disconnect your RDP/VPS/ ‘insert remote management software here’ and the active environment is gone for that MMM running instance then MMM will not be able to make those calls to the operating system it needs. MMM will still run but will fail to do any actions. Can this be fixed or changed? No it’s firmly embedded into the core of the application. I suggest you look into scripting with powershell, ansible, or something else that doesn’t require a graphical environment to function.

User: pablom

Date: Jul 30, 2020 11:13:47 GMT

Oh… i think this is a deal breaker for me, i will still use it on my PC for some stuff, but for VPS i will have to look for something else, can you recommend any software that do something similar but will work with VPS? That would be a huge help, thank you!

User: pablom

Date: Jul 30, 2020 13:19:37 GMT

And can i connect from one VPS, to another with MMM? IF i will disconnect from the first VPS MMM on the second one will stop working? Maybe i could install something on the first VPS to keep the windows active?

User: Steve

Date: Jul 31, 2020 4:33:05 GMT

defaultavatar.png Jul 30, 2020 11:13:47 GMT

pablom said: Oh… i think this is a deal breaker for me, i will still use it on my PC for some stuff, but for VPS i will have to look for something else, can you recommend any software that do something similar but will work with VPS? That would be a huge help, thank you! TL;DR - I don’t think your going to find a tool similar to MMM to drive macro’s that works without a current live desktop. It depends on what exactly your trying to do. If you want to automate user driven actions then you need something that can interact with a current ‘live’ environment. MMM is perfect for automating user actions but needs a ‘live’ environment to do so. If you don’t need to automate user specific actions then I would ask why you need a tool like MMM in the first place. There are plenty of remote management solutions to administer VM’s. If you’ve just got a couple of VM’s and can’t use MMM due to the whole ‘no live environment’ thing, then i’d look at some basic scripting with powershell and go up from there. defaultavatar.png Jul 30, 2020 13:19:37 GMT

pablom said: And can i connect from one VPS, to another with MMM? IF i will disconnect from the first VPS MMM on the second one will stop working? Maybe i could install something on the first VPS to keep the windows active? Yes, this can be done. MMM has a few remote like features. Have a look here <www.turnssoft.com/remote.html> and here <www.turnssoft.com/conditions.html#remote> . Maybe i could install something on the first VPS to keep the windows active? Yeah maybe. I found that keeping windows active through something software driven (with a tool like MMM for example) doesn’t work as I thought it would. I’m not sure why (something to do with user hooks to the OS) but I found that scripts I’ve run on loops to avoid idle events (like the screen saver triggering) just don’t work the same as when a user (a real person) interacts with the desktop.
^^^ If someone out there can tell me why i’d appreciate it
nerd.png

User: pablom

Date: Jul 31, 2020 15:05:19 GMT

Solved smiley.png If i connect to VPS2 from VPS1 threw remote desktop, and disconnect from VPS1, then it works, it looks like for a second it stops or something, but thats not a problem, just added WAIT 10 second before running the scripts and it works perfectly.

User: pablom

Date: Aug 12, 2020 13:23:23 GMT

I realized that i can’t minimalize the Repote Desktop windows or MMM will stop working.

User: Steve

Date: Aug 13, 2020 10:40:46 GMT

defaultavatar.png Aug 12, 2020 13:23:23 GMT

pablom said: I realized that i can’t minimalize the Repote Desktop windows or MMM will stop working. Have you considered a VNC desktop connection over RDP? It might actually work to keep the hooks available MMM needs to the desktop.


Left Click - Syntax Error?

URL: https://minimousemacro.proboards.com/thread/290/left-click-syntax-error
Date: Jul 27, 2020 23:46:16 GMT

User: WWO

Date: Jul 27, 2020 23:46:16 GMT

To try to keep the mouse and action in sync, I have been trying such as:

1 | -644 | 482 | 2000 | Mouse Movement
2 | X | Y | 50 | Left Click

But I get a syntax error when I try to save line 2 to that. Should 2 not just left click the mouse at whatever location it is currently at?

User: zeak

Date: Jul 28, 2020 2:58:27 GMT

Hi WWO, Welcome to the forum, Can I ask why your X position on your 1 is in the negative? and the syntax you are looking for is

2 | %MOUSE_X% | %MOUSE_Y% | 50 | Left Click

But it looks like this is not working. Steve can you please look into why the above doesn’t allow me to enter it. The long way around is below.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%MOUSE_X%
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%MOUSE_Y%
3 | %INTEGER% | %INTEGER1% | 50 | Left Click

User: WWO

Date: Jul 29, 2020 2:15:54 GMT

Can I ask why your X position on your 1 is in the negative? Because the click point is on a monitor to the left of my primary one. 2 | %MOUSE_X% | %MOUSE_Y% | 50 | Left Click Thanks for that. However, if:

# | X | Y | 0 | Keypress ...

is acceptable, it would seem intuitive that ‘ | X | Y | ‘ would be applicable anywhere, to indicate wherever things are at now. Would also seem to lend to generic / editing of macros. Suppose:

1 | 123 | 456 | 789 | Mouse Movement
2 | X | Y | 0 | Left Click
3 | 12 | 345 | 678 | Mouse Movement
4 | X | Y | 0 | Left Click

Then changing monitors, screen sizes, whatever, would mean only lines 1 and 3 need be adjusted, not all 4 of them. Especially when 2 and 4 just duplicates the prior line. Granted, the pairs of lines can be consolidated, however, when trying to watch and debug a macro, is has been useful to do mouse movements first, instead, watching that things go where they are supposed to. Especially if the click itself presses a screen button, causing the screen to change. It also means that the Left Clicks can be commented out to verify that all the mouse movements are going to the expected locations (see aforementioned screen change). Then enabled one by one when debugging. Not suggesting anything here other than:

it would seem intuitive that ‘ | X | Y | ‘ would be applicable anywhere, to indicate wherever things are at now. Observing that ‘ | X | Y | ‘ is easier for the eye to scan over as being correct, as opposed to ‘ | %MOUSE_X% | %MOUSE_Y% | ‘

User: Steve

Date: Jul 29, 2020 7:06:05 GMT

I think this is what you’re after:

1 | -644 | 482 | 2000 | Mouse Movement
2 | X | X | 50 | Left Click

‘X’ within the Mouse X and Mouse Y field skips moving that mouse position. So your line 2 will left click wherever the current mouse is at the time. Yes, as you tried X and Y does make sense. It actually makes more sense than just an X for both. When I wrote the code for that I didn’t really give it much thought. I figured an X represents visually a value that is not numeric and could not be confused for a variable.

A point on debugging with MMM. If you haven’t already started using the internal MMM event log for debugging then I highly recommend it. The MMM log was designed for debugging. When I run my macros and add features to the code base I use it heavily to provide feedback and ensure I’m getting the results I need. The newer actions and conditions (added in the last 18 months) all provide comprehensive feedback to the MMM log.

Hope this helps.

User: Steve

Date: Jul 29, 2020 7:14:19 GMT

Hi zeak,

Your line 2 works when you play it back but MMM does not like you entering it from the main macro window. It will let you enter it from the ‘macro editor in settings’ (settings - macro) or allow you to load it in as a saved .mmmacro file. Why does it fail directly in the main window? Because a long time ago (several years now) I tried to be clever with syntax verification. Years ago any variables outside of actions were considered invalid syntax. MMM was expecting numeric values for the mouse x and mouse y and not strings. Now though, variables are accepted almost everywhere. The problem is this old hangup still exists in the code where it tries to validate the syntax. If you can log a bug ticket here I’ll add it to the next update.
Cheers Zeak.


Syntax Documentation?

URL: https://minimousemacro.proboards.com/thread/288/syntax-documentation
Date: Jul 26, 2020 20:47:27 GMT

User: WWO

Date: Jul 26, 2020 20:47:27 GMT

Is the syntax documented anywhere? Not talking conditions, the links to that are easily seen. I was trying to do an incremental mouse movement but could not see where syntax is documented. | X | X | Mouse Movement Relative | 0 | 1 would be intuitive, but no joy. Nor was: | X | Y::+1 | Mouse Movement Which is only to say, cause for looking for docs, not intending any adverse tone.

User: Steve

Date: Jul 29, 2020 6:38:57 GMT

It would be great to have a repository of syntax like that but we don’t.  As you’ve pointed out the condition links and probably this forum are the best place for syntax. Like you’ve pointed out, somethings that seem intuitive syntax for MMM don’t work. I’ve taken syntax for MMM from multiple sources. If your familiar with programming or scripting you’ve probably picked up some of MMM syntax is closely lined with VB.NET, some python, bash, and old school batch. Pretty much i’ve taken the things I know from scripting with these and tried to port bits into MMM. Somethings have worked well and suited the macro style and somethings have not but I like to think we are getting there.
There are a few ways to run your incremental mouse movement. This is one of them:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %integer%::%mouse_y%
2 | FOR | I | = | 1 TO 100 | NEXT
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %integer%::+1
4 | X | %integer% | 1 | Mouse Movement
5 | FOR | NEXT

Line 1 - We define the integer variable to the current mouse_y variable. %mouse_y% holds the value of the ‘Y’ coordinate. Line 2 - We declare the start of our for loop. Looping 100 times. Line 3 - We increment the integer variable by 1 Line 4 - Our mouse movement. ‘X’ for the mouse x coordinate in MMM means to skip that movement. Meaning keep the current value and do not change the mouse x on the screen. Line 5 - We end the for loop.


The Macro Queue is enabled but there is nothing in the queue

URL: https://minimousemacro.proboards.com/thread/286/macro-queue-enabled
Date: Jul 24, 2020 5:24:07 GMT

User: WWO

Date: Jul 24, 2020 5:24:07 GMT

What am I missing to make this queue of 1 run?

Edit: Answered:        ^__ Remember to click the Save Macro Queue button.

User: Steve

Date: Jul 24, 2020 22:36:29 GMT

Have you saved the queue? The Macro Queue needs to be saved in order to register. In the ‘Macro Queue’ tab there is a ‘Save’ button. Build your macro queue and then click the Save button located at the bottom on the left of the queue tab.

User: WWO

Date: Jul 25, 2020 4:16:46 GMT

Thanks. That was it. I took the save icon to be a graphic ‘label:’ to the next two icons. So was thinking I was saving it but was actually exporting it. Which is a form of saving, I suppose. Perhaps the beginning text should be ‘Add a macro and save the queue …’


Which playback speed is in effect?

URL: https://minimousemacro.proboards.com/thread/287/which-playback-speed-effect
Date: Jul 24, 2020 20:19:07 GMT

User: WWO

Date: Jul 24, 2020 20:19:07 GMT

Is the playback speed in current use displayed anywhere? Could it made to be? [Same for active operation, I supposed - Playing, Recording, Idle, Paused, …] EDIT: Answered: Yes - speed setting is displayed in title bar. And … when paused, the pause button shows depressed.

User: Steve

Date: Jul 24, 2020 22:56:13 GMT

Hi, Yes the playback speed is displayed in the title bar when it is changed. To change the playback speed the hotkey needs to be enabled. To enable the ‘playback faster/slower’ hotkeys go to ‘Settings - Hotkeys’. See this link for more on hotkeys <www.turnssoft.com/faq2.html#what%20are%20the%20hotkeys%20for%20mini%20mouse%20macro%20and%20what%20do%20they%20do> Check out this example of changing the playback speeds. Notice the time changing in the title bar when the hotkeys are pressed:

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%TIME_M%:%TIME_S%
2 | 947 | 425 | 489 | Mouse Movement
3 | 946 | 425 | 10 | Mouse Movement
4 | 944 | 425 | 17 | Mouse Movement
5 | 942 | 425 | 10 | Mouse Movement
6 | 939 | 425 | 10 | Mouse Movement
7 | 935 | 425 | 10 | Mouse Movement
8 | 927 | 425 | 10 | Mouse Movement
9 | 917 | 426 | 10 | Mouse Movement
10 | 912 | 427 | 11 | Mouse Movement
11 | 908 | 427 | 10 | Mouse Movement
12 | 903 | 428 | 10 | Mouse Movement
13 | 898 | 428 | 10 | Mouse Movement
14 | 891 | 428 | 61 | Mouse Movement
15 | 889 | 428 | 10 | Mouse Movement
16 | 887 | 429 | 10 | Mouse Movement
17 | 882 | 430 | 10 | Mouse Movement
18 | 876 | 432 | 33 | Mouse Movement
19 | 872 | 433 | 19 | Mouse Movement
20 | 870 | 433 | 12 | Mouse Movement
21 | 869 | 434 | 10 | Mouse Movement
22 | 867 | 435 | 16 | Mouse Movement
23 | 864 | 435 | 48 | Mouse Movement
24 | 862 | 436 | 20 | Mouse Movement
25 | 860 | 438 | 10 | Mouse Movement
26 | 859 | 439 | 11 | Mouse Movement
27 | 858 | 443 | 10 | Mouse Movement
28 | 858 | 444 | 13 | Mouse Movement
29 | 859 | 446 | 11 | Mouse Movement
30 | 861 | 449 | 28 | Mouse Movement
31 | 863 | 453 | 10 | Mouse Movement
32 | 863 | 454 | 14 | Mouse Movement
33 | 864 | 456 | 40 | Mouse Movement
34 | 865 | 458 | 30 | Mouse Movement
35 | 868 | 462 | 10 | Mouse Movement
36 | 869 | 463 | 10 | Mouse Movement
37 | 871 | 464 | 10 | Mouse Movement
38 | 872 | 465 | 14 | Mouse Movement
39 | 874 | 466 | 10 | Mouse Movement
40 | 877 | 467 | 11 | Mouse Movement
41 | 881 | 468 | 10 | Mouse Movement
42 | 883 | 469 | 17 | Mouse Movement
43 | 885 | 469 | 10 | Mouse Movement
44 | 886 | 469 | 14 | Mouse Movement
45 | 888 | 469 | 15 | Mouse Movement
46 | 890 | 469 | 18 | Mouse Movement
47 | 893 | 469 | 10 | Mouse Movement
48 | 895 | 469 | 10 | Mouse Movement
49 | 898 | 469 | 10 | Mouse Movement
50 | 900 | 469 | 11 | Mouse Movement
51 | 904 | 468 | 10 | Mouse Movement
52 | 909 | 466 | 10 | Mouse Movement
53 | 913 | 464 | 24 | Mouse Movement
54 | 915 | 463 | 11 | Mouse Movement
55 | 917 | 461 | 12 | Mouse Movement
56 | 918 | 461 | 13 | Mouse Movement
57 | 919 | 459 | 10 | Mouse Movement
58 | 920 | 459 | 10 | Mouse Movement
59 | 925 | 454 | 45 | Mouse Movement
60 | 927 | 452 | 23 | Mouse Movement
61 | 930 | 450 | 10 | Mouse Movement
62 | 931 | 447 | 10 | Mouse Movement
63 | 933 | 446 | 10 | Mouse Movement
64 | 934 | 443 | 10 | Mouse Movement
65 | 935 | 441 | 10 | Mouse Movement
66 | 936 | 438 | 10 | Mouse Movement
67 | 937 | 436 | 11 | Mouse Movement
68 | 938 | 434 | 20 | Mouse Movement
69 | 939 | 432 | 16 | Mouse Movement
70 | 940 | 429 | 10 | Mouse Movement
71 | 940 | 428 | 11 | Mouse Movement
72 | 940 | 421 | 17 | Mouse Movement
73 | 940 | 420 | 11 | Mouse Movement
74 | 940 | 414 | 52 | Mouse Movement
75 | 940 | 412 | 10 | Mouse Movement
76 | 939 | 407 | 10 | Mouse Movement
77 | 938 | 403 | 10 | Mouse Movement
78 | 938 | 402 | 10 | Mouse Movement
79 | 937 | 400 | 13 | Mouse Movement
80 | 937 | 398 | 10 | Mouse Movement
81 | 936 | 395 | 23 | Mouse Movement
82 | 935 | 394 | 10 | Mouse Movement
83 | 932 | 389 | 10 | Mouse Movement
84 | 931 | 387 | 10 | Mouse Movement
85 | 928 | 384 | 10 | Mouse Movement
86 | 926 | 383 | 10 | Mouse Movement
87 | 921 | 379 | 24 | Mouse Movement
88 | 917 | 376 | 10 | Mouse Movement
89 | 912 | 374 | 10 | Mouse Movement
90 | 909 | 372 | 13 | Mouse Movement
91 | 906 | 371 | 10 | Mouse Movement
92 | 903 | 370 | 10 | Mouse Movement
93 | 899 | 369 | 10 | Mouse Movement
94 | 897 | 368 | 10 | Mouse Movement
95 | 891 | 367 | 10 | Mouse Movement
96 | 889 | 366 | 10 | Mouse Movement
97 | 882 | 365 | 10 | Mouse Movement
98 | 877 | 364 | 10 | Mouse Movement
99 | 873 | 364 | 10 | Mouse Movement
100 | 867 | 363 | 10 | Mouse Movement
101 | 862 | 363 | 10 | Mouse Movement
102 | 858 | 363 | 10 | Mouse Movement
103 | 857 | 362 | 10 | Mouse Movement
104 | 853 | 362 | 16 | Mouse Movement
105 | 848 | 362 | 12 | Mouse Movement
106 | 843 | 362 | 10 | Mouse Movement
107 | 840 | 362 | 10 | Mouse Movement
108 | 832 | 362 | 10 | Mouse Movement
109 | 826 | 362 | 10 | Mouse Movement
110 | 822 | 362 | 10 | Mouse Movement
111 | 816 | 363 | 10 | Mouse Movement
112 | 812 | 363 | 10 | Mouse Movement
113 | 808 | 364 | 10 | Mouse Movement
114 | 806 | 364 | 10 | Mouse Movement
115 | 803 | 365 | 10 | Mouse Movement
116 | 802 | 365 | 10 | Mouse Movement
117 | 799 | 365 | 10 | Mouse Movement
118 | 796 | 366 | 10 | Mouse Movement
119 | 794 | 367 | 10 | Mouse Movement
120 | 789 | 369 | 10 | Mouse Movement
121 | 785 | 371 | 17 | Mouse Movement
122 | 783 | 374 | 10 | Mouse Movement
123 | RUN ACTION | MESSAGE PROMPT | Started: %STRING%  -  Ended: %time_m%:%time_s%::Elapsed::0

minimousemacro_playbackspeed.gif


Update MMM Pro to latest version

URL: https://minimousemacro.proboards.com/thread/281/update-mmm-pro-latest-version
Date: Jul 15, 2020 14:42:48 GMT

User: Ben

Date: Jul 15, 2020 14:42:48 GMT

Hello, I’m running MMM Pro 7.4.0.0 and would like to understand how I can update it to the latest version? Thanks and regards, Ben.

User: Steve

Date: Jul 17, 2020 4:42:20 GMT

Hi Ben, If your connected to the internet and have update checking enabled from options-update then you should be prompted for an update. Clicking the prompt will take to here <www.turnssoft.com/mmm-pro-update.html> . From here you enter your details and the will be sent the update version within 5 mins. The whole update system is automated. If you don’t get a reply almost instantaneously then it’s not working.

User: Ben

Date: Jul 20, 2020 19:37:37 GMT

Hello Steve, In the options updates menu I see that I’m running 7.4.0.0 in the left part of the screen and that 8.0 is the latest version. I do not see any update prompt. Just clicking on the link you shared in your reply worked. Thanks!


Macro will not record keystrokes correctly

URL: https://minimousemacro.proboards.com/thread/282/macro-record-keystrokes-correctly
Date: Jul 16, 2020 18:13:10 GMT

User: kyfriedandy

Date: Jul 16, 2020 18:13:10 GMT

While recording a macro, it only captures mouse clicks and certain keys. When I press `, -, =, and other non alphanumeric keys, it records  KEY PRESS - then inserts a line KEYPRESS Pause automatically.

User: Steve

Date: Jul 17, 2020 4:45:45 GMT

Weird. I can’t reproduce your error. When I record those characters i get those characters:

1 | 685 | 680 | 2943 | Keypress `
2 | 685 | 680 | 2989 | Keypress -
3 | 685 | 680 | 2007 | Keypress =

I am using a standard keyboard.

User: kyfriedandy

Date: Jul 17, 2020 17:12:35 GMT

Standard US Keyboard

17 | 2548 | 766 | 116 | Keypress \
18 | 2548 | 766 | 116 | Keypress pause

Problem with Quick Launch

URL: https://minimousemacro.proboards.com/thread/276/problem-quick-launch
Date: Jul 1, 2020 1:34:10 GMT

User: 100thMonkey

Date: Jul 1, 2020 1:34:10 GMT

Hi, I had a macro in Quick Launch, set to execute by pressing F9. The last time I used it (a few days ago), it worked fine. But now, it doesn’t work at all. If I load the macro in the “main panel” of MiniMouseMacro and then run it manually (ie: not by pressing F9), it works. I reloaded the macro in Quick Launch (still doesn’t work), and here’s how it’s setup: MMM-Quick-Launch-Screenshot-2020-06-30.png Anybody has any idea what’s going on, or what I can try to solve the problem? I have MiniMouseMacro Pro (v7.4.0.0), under Windows 10 x64 build 1909. There was a Windows update yesterday, which updated Intel Micro Code. I wonder if it might have something to do with it?… Does anybody have encountered a similar problem?

User: Steve

Date: Jul 1, 2020 3:11:13 GMT

Hi, I can’t seem to replicate your issue. The quick launch seems to be working fine. Are you getting any info come through from the MMM Event Log ( <www.turnssoft.com/faq2.html#eventlog> )?

User: 100thMonkey

Date: Jul 2, 2020 17:47:55 GMT

Hi Steve, Sorry for the late reply. If I just launch MMM, open the log window and then press F9 (which should execute the macro), nothing happens, and nothing appears in the log!?! But I did a test in which I changed the hotkey (shift-F9 instead of F9), and it worked. But if I then put back F9 as the shortcut key, it doesn’t work. So clearly, something interferes with F9. I just don’t understand why it suddenly stopped working. If you have any idea on why, please let me know… By the way, congrats on a great little utility (I’m sure it’s not “little” in term of code
smiley.png ). It seems to be pretty powerful. It would be nice to have more documentation about the interface and the different modules functionalities and interactions. But as I understand it, you’re a “one-man” operation, so I know that there are just so many hours in a day. And at the price you charged, I feel bad just mentioning anything.
wink.png

One unrelated question if I may: is there a way to retrieve the cursor position (not the mouse position, but the position where type would appear if a key would be pressed). If so, can you tell me how, or give me a link where I might find the answer (I haven’t seen anything about that anywhere). I have an idea for a macro that seems to me impossible to implement without that functionnality… So thanks again for your program, and for your time.

User: Steve

Date: Jul 6, 2020 5:57:59 GMT

Did you figure this one out? I have some thoughts… Jul 2, 2020 17:47:55 GMT 100thMonkey said: Hi Steve, Sorry for the late reply. If I just launch MMM, open the log window and then press F9 (which should execute the macro), nothing happens, and nothing appears in the log!?! But I did a test in which I changed the hotkey (shift-F9 instead of F9), and it worked. But if I then put back F9 as the shortcut key, it doesn’t work. So clearly, something interferes with F9. I just don’t understand why it suddenly stopped working. If you have any idea on why, please let me know… I’d hazard a guess that ‘ something ‘ is ‘ eating ‘ your calls to F9 before Mini Mouse Macro can capture them. F9 is quite a popular key for a whole range of applications. I’d say an application you have running, perhaps one that has focus, is taking your F9 key press. This would explain why shift+f9 is working. Jul 2, 2020 17:47:55 GMT 100thMonkey said: By the way, congrats on a great little utility (I’m sure it’s not “little” in term of code
smiley.png ). It seems to be pretty powerful. It would be nice to have more documentation about the interface and the different modules functionalities and interactions. But as I understand it, you’re a “one-man” operation, so I know that there are just so many hours in a day. And at the price you charged, I feel bad just mentioning anything.
wink.png

One unrelated question if I may: is there a way to retrieve the cursor position (not the mouse position, but the position where type would appear if a key would be pressed). If so, can you tell me how, or give me a link where I might find the answer (I haven’t seen anything about that anywhere). I have an idea for a macro that seems to me impossible to implement without that functionality… Documentation - yeah more would be better but some does exist here: <www.turnssoft.com/faq2.html> <www.turnssoft.com/conditions.html> <www.turnssoft.com/tutorials.html> <www.turnssoft.com/mmmyoutube.html> Hope this helps.

User: zeak

Date: Jul 7, 2020 22:10:42 GMT

Hi 100thMonkey, I have a suggestion, I’ve found that when I start my PC up for the day and I have MMM auto start that sometimes the quick launch don’t work until I open MMM and click the save button.


PIXEL RANGE,COLOR do not match the coordinates on the laptop

URL: https://minimousemacro.proboards.com/thread/279/pixel-range-color-coordinates-laptop
Date: Jul 6, 2020 4:07:51 GMT

User: boyco3

Date: Jul 6, 2020 4:07:51 GMT

tchauy tchauy Hello, I am having the error capturing coordinates PIXEL RANGE, PIXEL COLOR when using a laptop. I have used 3 laptops but still cannot get the coordinates but on the PC. I tried capturing the PIXEL RANGE coordinates and got the following result: Using PC: aba06f73bed643881ac7.jpg Using Laptop: a92a9aeb4b4eb610ef5f.jpg You can see I put the mouse cursor in the same position, but the results shown in PIXEL RANGE are different. Please give me advice on how to fix this, because I mainly use my laptop to work.

User: Steve

Date: Jul 6, 2020 6:08:08 GMT

Hi, Could the issue be that the screen resolutions are different between your PC and Laptop? If you have identical sessions running on the laptop and the pc but the pixels do not match, then it is either your resolution is different between or the sessions (the pixels you are matching) are different.

User: boyco3

Date: Jul 6, 2020 7:11:18 GMT

Thanks Steve, I adjusted the screen resolution of the laptop the same way as a PC and it worked fine. However, the font size is a bit small on laptops. I will adjust it when not using MMM


Syntax for Clipboard combined with string

URL: https://minimousemacro.proboards.com/thread/277/syntax-clipboard-combined-string
Date: Jul 1, 2020 5:14:19 GMT

User: ms

Date: Jul 1, 2020 5:14:19 GMT

Hi, I’m new to mini mouse macro, so sorry if this is a dumb question. As I loop through my macro, the x,y coordinates change and I’m bringing them in on the %CLIPBOARD% as

23 | x | y | 1000 | Left Click

So for a given cycle in the macro, I know the x, y coordinates that I want mouse to click on a website, but when I do the command below, it seems too quick for site to recognize the click.

23 | 259 | 509 | 100 | Left Click

So, I’d was thinking that maybe in the end I need something like:

23 | 259 | 509 | 100 | Left Click Down
24 | 259 | 509 | 100 | Left Click Release

I’m thinking to bring in via clipboard but without the left click part and then append that with a string variable, as shown below, but it’s not working. i.e. %CLIPBOARD% contains  23 | 259 | 509 | 100 | Is there some way to combine the %STRING% variable with %CLIPBOARD% command? I was trying the following but running into errors:

1 | RUN ACTION |  DEFINE STRING VARIABLE | %STRING%::Left Click Down
2 | RUN ACTION |  DEFINE STRING VARIABLE | %STRING1%::Left Click Release

%CLIPBOARD% | %STRING% %CLIPBOARD% | %STRING1% Thanks, and sorry for the poor description!

User: Steve

Date: Jul 1, 2020 10:05:18 GMT

Hi, Welcome to the forum and no there are no dump questions here. defaultavatar.png Jul 1, 2020 5:14:19 GMT

ms said: As I loop through my macro, the x,y coordinates change and I’m bringing them in on the %CLIPBOARD% as

23 | x | y | 1000 | Left Click

So for a given cycle in the macro, I know the x, y coordinates that I want mouse to click on a website, but when I do the command below, it seems too quick for site to recognize the click.

23 | 259 | 509 | 100 | Left Click

Have you considered using an IF condition to detect when you might need to click?  Maybe PIXEL Range ( <www.turnssoft.com/conditions.html#pixelrange> ) or PIXEL Color <www.turnssoft.com/conditions.html#pixelcolor> )?  Some of these threads might help minimousemacro.proboards.com/thread/229/get-color-sample-pixel-operation , minimousemacro.proboards.com/thread/180/pixel-color-whilst-running-infinite , minimousemacro.proboards.com/thread/209/scan-pixel-line-click-change . defaultavatar.png Jul 1, 2020 5:14:19 GMT

ms said: I’m thinking to bring in via clipboard but without the left click part and then append that with a string variable, as shown below, but it’s not working. i.e. %CLIPBOARD% contains: 23 | 259 | 509 | 100 | Is there some way to combine the %STRING% variable with %CLIPBOARD% command? I was trying the following but running into errors:

1 | RUN ACTION |  DEFINE STRING VARIABLE | %STRING%::Left Click Down
2 | RUN ACTION |  DEFINE STRING VARIABLE | %STRING1%::Left Click Release

%CLIPBOARD% | %STRING% %CLIPBOARD% | %STRING1% I don’t think this will fix your timing issue.  If that is the main problem.  I’d look at addressing why your click’s are too quick for the site to recognize the click and add some logic to slow them down.

User: ms

Date: Jul 1, 2020 16:53:04 GMT

Thank you for a prompt response, I appreciate it.

  1. I am coming to the conclusion that the Left Click speed is not my problem, but how to execute a command that is in the clipboard. i.e, I get an error message when trying to execute a line of code that says: %CLIPBOARD% When the contents of the clipboard are shown below.
23 | 259 | 509 | 100 | Left Click
  1. I think your suggestion on Pixels won’t really help as I am doing some Math in Excel, and it tells me where to click next in x, y coordinates. My struggle is getting those x,y coordinates back into the macro so that those coordinates can be clicked on the website.
  2. I actually ended up in this pickle because I tried several IF statements, intending for only 1 of 3 to be true and activate the commands within that one wing. However, my IF statement programming is iffy (pardon the pun) and it seems to execute all 3 IF statements. See code below. I was expecting it to only go into the middle wing 1.
1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::0
2 | RUN ACTION |  |  |  | MESSAGE PROMPT | %STRING%
* | Position 0
3 | IF | STRING VARIABLE | %STRING% | IS | 18 | GOTO MACRO LINE | 4 | ELSE | GOTO MACRO LINE | Position 1 |
4 | RUN ACTION |  |  |  | MESSAGE PROMPT | in wing 0
* | Position 1
5 | IF | STRING VARIABLE | %STRING% | IS | 0 | GOTO MACRO LINE | 6 | ELSE | GOTO MACRO LINE | Position 2 |
6 | RUN ACTION |  |  |  | MESSAGE PROMPT | in wing 1
* | Position 2
7 | IF | STRING VARIABLE | %STRING% | IS | 30 | GOTO MACRO LINE | 8 | ELSE | GOTO MACRO LINE | End |
8 | RUN ACTION |  |  |  | MESSAGE PROMPT | in wing 2
* | End

If you have advice on how to get item 1 or 3 working, I’ll take it!

User: ms

Date: Jul 1, 2020 22:04:13 GMT

I figured out my a work around. My IF statements work when I use a criteria that the %STRING% variable compares to TEXT CONTAINS rather than TEXT IS. I guess I have lots to learn on this, but I’m able to keep moving now. Thanks, question closed.


Recording Moust clicks without Mouse movement.

URL: https://minimousemacro.proboards.com/thread/275/recording-moust-clicks-mouse-movement
Date: Jun 26, 2020 8:28:17 GMT

User: kellyllek

Date: Jun 26, 2020 8:28:17 GMT

I want to hover over anywhere and triple click it to select the paragraph… I have to fill out forms from another text form. In some cases I can record a whole macro to copy and paste specific text in specific places. But in this case the text moves and changes. I want to use one macro to essentially copy the paragraph. So one hotkey will save 3 clicks and the Ctrl+C I want the paste the same way, so instead of click then paste, I want to hover a place and hit a hotkey to click and paste.

1 | 761 | 472 | 10 | Left Click Down
2 | 761 | 472 | 10 | Left Click Release
3 | 761 | 472 | 10 | Left Click Down
4 | 761 | 472 | 10 | Left Click Release
5 | 761 | 472 | 10 | Left Click Down
6 | 761 | 472 | 10 | Left Click Release
7 | 761 | 472 | 10 | Keypress Ctrl+ | c

Can I do something like?

1 | nul | nul | 10 | Left Click Down
2 | nul | nul |  10 | Left Click Release

….  ?

User: kellyllek

Date: Jun 26, 2020 8:34:48 GMT

figured out my own question!

1 | x | x | 10 | Left Click Down
2 | x | x | 10 | Left Click Release
3 | x | x | 10 | Left Click Down
4 | x | x | 10 | Left Click Release
5 | x | x | 10 | Left Click Down
6 | x | x | 10 | Left Click Release
7 | x | x | 10 | Keypress Ctrl+ | c

I imagine click paste will be exactly the same

User: Steve

Date: Jun 27, 2020 10:26:29 GMT

If your not click and dragging and only need a standard click then you can drop the down and release. This will also work and is less code:

1 | x | x | 20 | Left Click
2 | x | x | 20 | Left Click
3 | x | x | 20 | Left Click
4 | x | x | 20 | Keypress Ctrl+ | c

And this will work too with even less code. Looping the Left Click 3 times with a 20ms delay:

1 | x | x | 20 | Left Click | loop 3::20
2 | x | x | 20 | Keypress Ctrl+ | c

Can you use an integer variable for x, y positions?

URL: https://minimousemacro.proboards.com/thread/50/use-integer-variable-positions
Date: Aug 22, 2018 18:41:12 GMT

User: Johnc

Date: Aug 22, 2018 18:41:12 GMT

Hi Steve,

Can you use an integer variable for x, y positions? For example:

2 | RUN ACTION |  |  |  | DEFINE INTEGER VARIABLE | %INTEGER4%::100
220 | 137 | 219+%INTEGER4% | 500 | Left Click Down
221 | 137 | 225+%INTEGER4%  | 512 | Mouse Movement
222 | 141 | 225+%INTEGER4%  | 16 | Mouse Movement
223 | 161 | 235+%INTEGER4%  | 72 | Mouse Movement

… Tks!

User: Steve

Date: Aug 23, 2018 5:10:19 GMT

Hi John, Yes you can.  It looks like this:

1 | RUN ACTION |  |  |  | DEFINE INTEGER VARIABLE | %INTEGER4%::319
220 | 300 | %integer4% | 500 | Left Click
221 | RUN ACTION |  |  |  | DEFINE INTEGER VARIABLE | %INTEGER4%::319
222 | 300 | %integer4% | 100 | Mouse Movement
223 | RUN ACTION |  |  |  | DEFINE INTEGER VARIABLE | %INTEGER4%::325
224 | 300 | %integer4% | 100 | Mouse Movement
225 | RUN ACTION |  |  |  | DEFINE INTEGER VARIABLE | %INTEGER4%::335
226 | 300 | %integer4% | 100 | Mouse Movement

Above we define the variable prior to the mouse move and click. This is not dynamic though as we have assigned hard values to the integers assuming we know exactly where each time we would like the mouse Y to be. If this value changes then we need a different macro. By the way, the ‘Left Click’ action at line 220 does both the ‘Left Click Down’ and ‘Left Click Release’ events together. Its better if you just want a straight click without a mouse click down hold.
You have given me an idea for an update. It would be cool to have integer math available like your example for those values at run time. I might work on that for the next update.
Cheers, Steve.

User: Johnc

Date: Aug 23, 2018 16:23:50 GMT

Thanks Steve for considering this integer math idea. I think it would be very handy to be able to add a constant “offset” to a series of mouse movements to select a certain range of text on a webpage. The reason is that a web designer often adds or removes a banner from the page from time to time, making the mouse-selection of the desired text fail. With the ability to add a constant “offset” for either x or y position, I can easily “shift” the mouse-selection movements down a 100 pixels, for example, without needing to redo the sometimes tricky mouse capture. All I need to do is to change one “offset” integer variable. Thanks.

User: kellyllek

Date: Jun 26, 2020 8:13:37 GMT

Can I ask why you’d use a variable? I.e. Where might this come in handy? I’m about to post a separate question on how to record mouse clicks independent of mouse movement.

User: Steve

Date: Jun 27, 2020 10:12:41 GMT

defaultavatar.png Jun 26, 2020 8:13:37 GMT

kellyllek said: Can I ask why you’d use a variable? I.e. Where might this come in handy? Using a variable for the mouse X/Y coordinators allows for programmatically driven mouse movements. Logic in the macro can assign values to those variables that in turn determine where the mouse will be moved to.


Problem with GOTO MACRO LINE and REMARKS

URL: https://minimousemacro.proboards.com/thread/274/problem-goto-macro-line-remarks
Date: Jun 20, 2020 14:15:06 GMT

User: Julio

Date: Jun 20, 2020 14:15:06 GMT

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
2 | RUN ACTION | INPUT BOX | Enter a integer number::::

INTEGER

3 | RUN ACTION | 
GOTO MACRO LINECont
* | Cont
4 | RUN ACTION | MESSAGE PROMPT | You have entered the number %INTEGER%::Resultado::0

This simple macro works correctly when it is written the first time. But after saved, if the macro list is cleaned and the macro is reloaded from the folder, the label “

* | Cont

” is no longer found by “ GOTO MACRO LINE | Cont “. To get it working I have to re-create the “

* | Cont

” tag every time I load the macro. On the other hand “ RUN ACTION | INPUT BOX “ shows the variable “ INTEGER “ instead of %INTEGER% You have a good day

User: Steve

Date: Jun 21, 2020 6:27:17 GMT

Hi Julio, Thanks for pointing this out. GOTO again. wow. I’ve had a heap of issues with GOTO over the years. It seems like a simple function to get right but the dynamic shifting of the macro list during macro execution, as it turns out, has been difficult to nail down.
I’ve marked this as bug MMM_BZ15 ( <www.turnssoft.com/bugtrack.html#bugs> ). I found the issue in the code. If your interested the issue was that when a macro is read back in to the macro list from a saved .mmmacro file it was not removing the trailing LF (new line) at the start of the line.
So instead of this:

* | Cont 

It was reading it in as: LF & * | Cont With the LF at the start I was never reading it in as a remark with a label.
Anyway it’s fixed. It’s made it’s way into the next update ( minimousemacro.proboards.com/thread/181/update-coming-next-mouse-macro ).  The next update is almost out the door.  I should have it by the end of the month, if all the testing goes to plan and I stop adding in new features. Cheers and thanks again
wink.png


filter actions and modify showed things

URL: https://minimousemacro.proboards.com/thread/272/filter-actions-modify
Date: Jun 8, 2020 10:19:14 GMT

User: VeryVeryNiubbi

Date: Jun 8, 2020 10:19:14 GMT

Hi, im using mini mouse macro only to track input, i dont need to use macro. I need some question like:

  • how can i filter mouse click or release
  • undestand what kind of info are: first one the number of action, second?? and third?? then ms passed from the lastest action and the key used.  
1424 | 439 | 570 | 139 | Keypress n
1425 | 439 | 570 | 159 | Keypress d
1426 | 439 | 570 | 133 | Keypress space

how can i modify the showed info? I just write a mini script w/ py to filter release records and count how many ms passed from the start of the record, but i would know if there are some option that already hR4pKST does this for me. last thing: hR4pKST  section doesnt works at all, something like “not catched exception” for a file not found (?)

User: VeryVeryNiubbi

Date: Jun 8, 2020 10:21:18 GMT

wooops sorry for double post: imgur.com/a/hR4pKST this is the image i ve tried to post before

User: Steve

Date: Jun 10, 2020 21:45:21 GMT

Jun 8, 2020 10:19:14 GMT VeryVeryNiubbi said: Hi, im using mini mouse macro only to track input, i dont need to use macro. I need some question like:

  • how can i filter mouse click or release
  • undestand what kind of info are: first one the number of action, second?? and third?? then ms passed from the lastest action and the key used.  
1424 | 439 | 570 | 139 | Keypress n
1425 | 439 | 570 | 159 | Keypress d
1426 | 439 | 570 | 133 | Keypress space

how can i modify the showed info? I just write a mini script w/ py to filter release records and count how many ms passed from the start of the record, but i would know if there are some option that already hR4pKST does this for me. last thing: hR4pKST  section doesnt works at all, something like “not catched exception” for a file not found (?) Hi I’ll answer off your questions as best i can: Q. How can i filter mouse click or release? A. From Options - Record Options check ‘Disable mouse click capture’. This will disable the recording and filter out mouse click and release. minimousemacro-recordsettings.png Q. Understand what kind of info are: first one the number of action, second?? and third?? then ms passed from the fastest action and the key used? A. This might help explain:

6 | 1072 | 795 | 200 | Left Click Down

6

  • The row number six. The number here is a visual representation to identify the line number. This number is also used by GOTO statements to identify where it may need to go.

1072

  • X pos. This is where the X mouse coordinate is to go. Moving the mouse to the X mouse coord can be disable by replacing this value with an ‘X’.

795

  • Y pos. This is where the Y mouse coordinate is to go. Moving the mouse to the Y mouse coord can be disable by replacing this value with an ‘X’.

200

  • The time value in ms. The time value is a period of time to wait prior to the line taking place. This can any value from 0 upward.

Left Click Down

  • The keypress action. For clicks ‘Left Click’ and ‘Right Click’ are acceptable syntax. Q. “not catched exception” for a file not found? A. MMM_BZ11 . This is a bug that I introduced with version 7.4. A typo when updating the system links… It will be fixed for the next update. The next update is due sometime this month or early next. Hope this helps.

User: VeryVeryNiubbi

Date: Jun 13, 2020 19:42:29 GMT

Omg i feel so dumb, thanks a lot :’>


not able to activate Playback faster or playback slower

URL: https://minimousemacro.proboards.com/thread/273/activate-playback-faster-slower
Date: Jun 11, 2020 8:45:37 GMT

User: tobasium

Date: Jun 11, 2020 8:45:37 GMT

Hi i have a problem. I want to enabele playback faster. i activate the box under hotkey settings. RtNStAqklxHktMYyMuqn.png After that it shows Playback Faster Diasabled. if i close hotkey windows and open it again the checkmark is lost. XUR0fTetgsnfBiwliJKg.png Don’t know how to activate playback faster. Can somebody helps me. Thanks. Attachments: XUR0fTetgsnfBiwliJKg.png RtNStAqklxHktMYyMuqn.png

User: Steve

Date: Jun 12, 2020 6:40:42 GMT

Wow yep this is not right. Enabling the hotkey should make it available.
I’ve looked back through the MMM versions and this has been broke since version 6.8 - August 2018! Thank you for bringing it to my attention. I’ve fixed it (ddded as MMM_BZ14 ) it’ll be in the next update, due before the end of the month. If your interested to know why…I checked the code and checking the box that is suppose to enable the hotkey does nothing…literately nothing - there is no code at all. I don’t know what happened to it…but its back now. Thanks again. I have a hack work around to fix it: it involves editing the mini mouse macro registry entries to force the hotkey to be enabled: minimousemacro-edit-Registry.jpg If your comfortable editing the registry, change these two values to True:   Computer\HKEY_CURRENT_USER\Software\Turnssoft\MiniMouseMacroPro\Hotkey Playback Faster Enabled   Computer\HKEY_CURRENT_USER\Software\Turnssoft\MiniMouseMacroPro\Hotkey Playback Slower Enabled After they are both set to true hotkeys will be enabled. Hope this helps and thanks for letting me know. Cheers, Steve.


macro

URL: https://minimousemacro.proboards.com/thread/268/macro
Date: May 29, 2020 12:08:38 GMT

User: egidio

Date: May 29, 2020 12:08:38 GMT

Hi, I attach the macro listingfopo the first for the second for the mouse mon returns to the line2 | 849 | 789 | 1624 | Right Click Downbut it turns on the display not on the coordinates of the macro how come ? where is the error? Thanks for the reply sorry my english i used gogle translate

1 | FOR | I | = | 1 TO 50 | NEXT
2 | 849 | 789 | 1624 | Right Click Down
3 | 849 | 789 | 175 | Right Click Release
4 | 893 | 778 | 1080 | Left Click Down
5 | 893 | 778 | 152 | Left Click Release
6 | 1072 | 795 | 864 | Left Click Down
7 | 1072 | 795 | 136 | Left Click Release
8 | 501 | 470 | 1185 | Right Click Down
9 | 501 | 470 | 96 | Right Click Release
10 | 562 | 510 | 743 | Left Click Down
11 | 562 | 510 | 136 | Left Click Release
12 | 659 | 486 | 1903 | Left Click Down
13 | 660 | 486 | 23 | Mouse Movement
14 | 660 | 486 | 145 | Left Click Release
15 | 166 | 523 | 1280 | Left Click Down
16 | 166 | 523 | 136 | Left Click Release
17 | 252 | 199 | 1520 | Left Click Down
18 | 252 | 199 | 128 | Left Click Release
19 | 252 | 199 | 80 | Left Click Down
20 | 252 | 199 | 112 | Left Click Release
21 | 1039 | 548 | 1288 | Left Click Down
22 | 1039 | 548 | 119 | Left Click Release
23 | 654 | 29 | 2456 | Left Click Down
24 | 654 | 29 | 112 | Left Click Release
25 | 579 | 747 | 1680 | Left Click Down
26 | FOR | NEXT

User: Steve

Date: May 29, 2020 20:33:32 GMT

May 29, 2020 12:08:38 GMT egidio said: Hi, it turns on the display not on the coordinates of the macro how come ? where is the error? I ran your macro code and the syntax looks good. It ran without error. Is the issue your having in regard to ensuring your macro is landing in the correct coordinates at playback? This explanation might be able to help out a little.

6 | 1072 | 795 | 200 | Left Click Down

6 - The row number six . The number here is a visual representation to identify the line number. This number is also used by GOTO statements to identify where it may need to go. 1072 - X pos . This is where the X mouse coordinate is to go. Moving the mouse to the X mouse coord can be disable by replacing this value with an ‘X’.
795 - Y pos . This is where the Y mouse coordinate is to go. Moving the mouse to the Y mouse coord can be disable by replacing this value with an ‘X’.
200 - The time value in ms . The time value is a period of time to wait prior to the line taking place. This can any value from 0 upward. Left Click Down - The keypress action . For clicks ‘Left Click’ and ‘Right Click’ are acceptable syntax. The removal of the ‘Up’ and ‘Down’ can simplify the macro if dragging the mouse during a click is not required. Hope this helps.


repeat macro

URL: https://minimousemacro.proboards.com/thread/267/repeat-macro
Date: May 29, 2020 10:35:41 GMT

User: egidio

Date: May 29, 2020 10:35:41 GMT

Hello I enclose the listing, I don’t understand why I don’t repeat the macro every 3 seconds. Where did I go wrong ? Sorry my english i used google translate

1 | 849 | 780 | 1752 | Right Click Down
2 | 849 | 780 | 175 | Right Click Release
3 | 908 | 786 | 1385 | Left Click Down
4 | 908 | 785 | 10 | Mouse Movement
5 | 908 | 785 | 144 | Left Click Release
6 | 1107 | 799 | 1128 | Left Click Down
7 | 1107 | 799 | 143 | Left Click Release
8 | 489 | 574 | 1448 | Right Click Down
9 | 489 | 574 | 40 | Right Click Release
10 | 533 | 610 | 759 | Left Click Down
11 | 533 | 610 | 152 | Left Click Release
12 | 654 | 481 | 1880 | Left Click Down
13 | 654 | 481 | 144 | Left Click Release
14 | 175 | 522 | 968 | Left Click Down
15 | 175 | 522 | 144 | Left Click Release
16 | 313 | 199 | 1168 | Left Click Down
17 | 313 | 199 | 136 | Left Click Release
18 | 313 | 199 | 96 | Left Click Down
19 | 313 | 199 | 96 | Left Click Release
20 | 1003 | 553 | 1120 | Left Click Down
21 | 1003 | 553 | 152 | Left Click Release
22 | 649 | 31 | 1528 | Left Click Down
23 | 649 | 31 | 144 | Left Click Release
24 | 399 | 754 | 2072 | Left Click Down
25 | RUN ACTION | CONTINUE
26 | RUN ACTION | WAIT SECONDS | 3

User: Steve

Date: May 29, 2020 20:19:40 GMT

Hi, There are a few ways in MMM to loop macro’s. The simplest way is to set a loop count using the ‘Loop’ box in the top right of the app, next to the pause macro button. Check out this FAQ page for simple looping <www.turnssoft.com/faq2.html#how%20do%20i%20loop%20my%20macro> . The other ways to loop involve looping based on conditions or using defined logic in the macro. This forum has a lot of examples that demonstrate looping. Here is a few: minimousemacro.proboards.com/thread/97/help-on-double-loop minimousemacro.proboards.com/thread/208/print-loop-iteration minimousemacro.proboards.com/thread/177/string-loop minimousemacro.proboards.com/thread/172/file-count-integer minimousemacro.proboards.com/thread/204/end-loop-restart minimousemacro.proboards.com/thread/170/use-variable minimousemacro.proboards.com/thread/158/help-loop minimousemacro.proboards.com/thread/157/more-1-10-next-loops Hope this helps


How can I combine a variable with the string in clipboard

URL: https://minimousemacro.proboards.com/thread/265/combine-variable-string-clipboard
Date: May 23, 2020 7:17:49 GMT

User: HLynge

Date: May 23, 2020 7:17:49 GMT

I would think that it would be easy, but cant get it to work… How do I do the following:

20 | 702 | 223 | 500 | Keypress %string%%CLIPBOARD%

What is the syntax for combining a variable with the string that is in the clipboard???

User: HLynge

Date: May 23, 2020 7:54:27 GMT

figured i out - I did not have focus where I wanted to do the action


Problem with decimal variables and PLAY SYSTEM SOUND

URL: https://minimousemacro.proboards.com/thread/262/problem-decimal-variables-system-sound
Date: May 17, 2020 18:39:21 GMT

User: Julio

Date: May 17, 2020 18:39:21 GMT

In the following example I have observed 2 problems: 1.- When executing the macro by entering a decimal value, the decimal point “.” is lost. 2.- When executing the macro in line 3 the following error occurs caused by the PLAY SYSTEM SOUND action: “Condition action is not valid. This conditionn action is not found in the ACTION list of valid conditions actions: PLAY SYSTEM SOUND” Instead line 6 runs correctly.

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::0
2 | RUN ACTION | INPUT BOX | Enter a value::::DECIMAL
3 | IF | DECIMAL VARIABLE | %DECIMAL% | < | 0 | 
PLAY SYSTEM SOUNDBeep::SYNC
4 | RUN ACTION | MESSAGE PROMPT | The entered value is ...%DECIMAL%::::0
5 | RUN ACTION | MESSAGE PROMPT | Finished::::0
6 |

RUN ACTION | PLAY SYSTEM SOUND | Beep::SYNC Why happens?. Can you help me? Julio

User: Steve

Date: May 20, 2020 6:46:48 GMT

Hi Julio, Yes this is not right.
The Play System Sound action is not working as expected when being called from an IF condition. When the action is called via the RUN ACTION statements it works fine.
This has been added as a bug here <www.turnssoft.com/bugtrack.html#bugs> I’ve made changes to the main code base for this one and fixed the issue. It will be resolved with the next update ( minimousemacro.proboards.com/thread/181/update-coming-next-mouse-macro ) Thanks again.

User: Steve

Date: May 20, 2020 7:10:10 GMT

May 17, 2020 18:39:21 GMT Julio said: 1.- When executing the macro by entering a decimal value, the decimal point “.” is lost.

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::0
2 | RUN ACTION | INPUT BOX | Enter a value::::DECIMAL
4 | RUN ACTION | MESSAGE PROMPT | The entered value is ...%DECIMAL%::::0
5 | RUN ACTION | MESSAGE PROMPT | Finished::::0

I can’t seem to replicate your issue.  When i enter a decimal value I get a decimal value returned:

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::0
2 | RUN ACTION | INPUT BOX | Enter a value::::DECIMAL
4 | RUN ACTION | MESSAGE PROMPT | The entered value is ...%DECIMAL%::::0
5 | RUN ACTION | MESSAGE PROMPT | Finished::::0

User: Julio

Date: May 20, 2020 8:16:25 GMT

Thank you very much Steve, but you forgot to answer the first problem: that decimal variables lose the decimal point “.” Greeting

User: Steve

Date: May 21, 2020 19:20:13 GMT

May 20, 2020 8:16:25 GMT Julio said: Thank you very much Steve, but you forgot to answer the first problem: that decimal variables lose the decimal point “.” I can’t replicate the issue with the decimal point. When I run your code and enter a value of decimal value I get that value returned.

1 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::0
2 | RUN ACTION | INPUT BOX | Enter a value::::DECIMAL
4 | RUN ACTION | MESSAGE PROMPT | The entered value is ...%DECIMAL%::::0
5 | RUN ACTION | MESSAGE PROMPT | Finished::::0

User: Julio

Date: May 22, 2020 16:23:41 GMT

Sorry Steve, but I haven’t seen your previous answer. It works for me. The problem was that I used as a decimal separator instead of the comma “,” the period “.” as it appears in the help examples: <www.turnssoft.com/conditions.html#integer_variable> Saludos


Program Packaging

URL: https://minimousemacro.proboards.com/thread/263/program-packaging
Date: May 21, 2020 23:47:00 GMT

User: boyco3

Date: May 21, 2020 23:47:00 GMT

Hi Steve, I’m using macros every day and it’s a bit annoying to have to turn on the program and load the mmmacro file. So is there any way I can pre-load the code or bundle it when I open MMM?

User: zeak

Date: May 22, 2020 0:34:57 GMT

Hi Boyco3, Have you had a look into Quick Launch or Macro Queue options, Here is a link to the tutorial for Macro Queue. <www.turnssoft.com/faq2.html#how%20do%20i%20run%20a%20saved%20macro%20at%20windows%20startup> Another option would be to put the saved “mmmacro” file into your Start Menu\Programs\Startup folder.

User: boyco3

Date: May 22, 2020 2:31:50 GMT

Thank you so much, I have followed your instructions and have been successful !


Using IDLE action

URL: https://minimousemacro.proboards.com/thread/247/using-idle-action
Date: Apr 6, 2020 23:49:46 GMT

User: zeak

Date: Apr 6, 2020 23:49:46 GMT

Hi Steve , So I’m not sure if I am using IDLE action correctly or if you understand why I requested it. so the reason that I asked for this, was so that if I am using my computer then any macros would not run and only when I’ve stepped away will they start working. now don’t get me wrong, the IDLE action that you have put in does this but it’s a bit clunky to implement as from what I’ve found from my testing is that you need to have the action in between every other line of coding that performs an action. What I am hoping for is that instead of this being a line of code in the macro (or also having this and), for it to be instead a option in MMM settings that works during the entire macro running. for instance like a screen saver that turns on when the PC is idle, this could possibly be the same way. you run you macro but you have an option turned on that says the macro is allowed to run when the PC has been IDLE for XX minutes and then like a screen saver when you come back to your PC and start using it, it pauses were it was at (like how the current IDLE action works) waiting and automatically continues when the PC becomes IDLE again. here are some examples of my testing. STOP Test 1 FGmluW5.gif STOP test 2 J1RPFSK.gif CONTINUE Test 1 313lSyn.gif CONTINUE Test 2 KRdbq65.gif Cheers for hearing me out. Zeak.

User: Steve

Date: Apr 7, 2020 3:25:57 GMT

Ok so when your not active (when the computer is IDLE) you want your macro’s to run. I think this will work:

* | IDLE_CHECK
1 | IF | IDLE | 2 | IS TRUE | GOTO MACRO LINE | RUN_MACRO | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | IDLE_CHECK
* | RUN_MACRO
2 | RUN ACTION | INTEGER::%random_1-5%
3 | RUN ACTION | STRING::Hello from main macro %date%
4 | RUN ACTION | STRING1::%time%
5 | RUN ACTION | MESSAGE PROMPT | %string%::%string1%::%integer%
6 | RUN ACTION | GOTO MACRO LINE | IDLE_CHECK

Line 1 - if the computer is IDLE (no mouse movement or no keyboard keypress) for 2 seconds (of course make this longer) then GOTO the RUN_MACRO function. ELSE if the computer is not idle then go back to IDLE_CHECK.
Line 2-5 - the RUN_MACRO function Line 6 - optionally return back to IDLE_CHECK

User: zeak

Date: Apr 7, 2020 21:43:52 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Apr 7, 2020 3:25:57 GMT

Steve said: Ok so when your not active (when the computer is IDLE) you want your macro’s to run. I think this will work:

* | IDLE_CHECK
1 | IF | IDLE | 2 | IS TRUE | GOTO MACRO LINE | RUN_MACRO | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | IDLE_CHECK
* | RUN_MACRO
2 | RUN ACTION | INTEGER::%random_1-5%
3 | RUN ACTION | STRING::Hello from main macro %date%
4 | RUN ACTION | STRING1::%time%
5 | RUN ACTION | MESSAGE PROMPT | %string%::%string1%::%integer%
6 | RUN ACTION | GOTO MACRO LINE | IDLE_CHECK

Line 1 - if the computer is IDLE (no mouse movement or no keyboard keypress) for 2 seconds (of course make this longer) then GOTO the RUN_MACRO function. ELSE if the computer is not idle then go back to IDLE_CHECK.
Line 2-5 - the RUN_MACRO function Line 6 - optionally return back to IDLE_CHECK Yes that is the same as what I did in my example but the problem with that is, what if the PC becomes no longer idle during the actions, I would have to wait for all the actions to finish. or put the IF | IDLE in between every action line. That is why I was asking if it could be a setting and not an IF | IDLE or have both. that way you would not need a macro line to ask the question and the macro can wait/pause prior to any line.

User: Steve

Date: Apr 7, 2020 22:46:22 GMT

Right i think i understand. You only want to run a macro when PC is idle. You also want the macro to stop running when the PC is NOT idle. Ok - the problem here is how we measure IDLE in MMM.
Its like this:

  • IDLE is called from an IF IDLE condition and works by creating a separate thread that utilizes the same internal functions that pressing the ‘macro record’ button does. It looks for calls made by the the user to the mouse or keyboard (these calls are physically made by the person - like a hand moving on a mouse and clicking a keyboard). If if detects a call by the user, the result is NOT IDLE.
  • Unfortunately IDLE can’t be when the screen saver is triggered. For this to work, I think you mentioned this in a previous post, we would need to catch the hook for the screen saver. I don’t know how to do this in code and I assume it could require the app to run as administrator to pick up the system calls. So this is out, unless you have the code for this tested and ready?
  • Mini mouse macro can’t make calls to the OS after the screen saver has launched. MMM needs an active desktop for it to work because it relies on calls to part of the framework that are only ‘alive’ when the screen is active. This is why jobs scheduled within task manager for MMM only work when people are logged in the screen is up. Effectively you need a something like the IF IDLE condition running in the background constantly on a separate macro. When this detects an IDLE event it tells your main macro to continue. When it detects a NON IDLE event it tells your main macro to pause.
    This might actually work…. I’ll give it a quick go and get back to you.

User: Steve

Date: Apr 8, 2020 0:49:01 GMT

Ok so i’ve got it working using two MMM instances. The fist instance (MASTER) checks for IDLE and drives the second instance. The second instance (SLAVE) takes start/pause instructions from the first. I use the inbuilt macro terminal (https://www.turnssoft.com/terminal.html) with MMM automating it, to send play/pause to the second macro. Its a little complicate and requires binding a connection using tcp sockets on the localhost to use a communication channel between the two running macro’s. The building and binding a socket is done using the mmm terminal and the ‘connect set’ commands. Like in the attached pic below. These are the instuctions: On the slave

  1. Open the terminal
  2. type: connect set localip 127.0.0.1 connect set remoteip 127.0.0.1 connect set localport 41414 connect set remoteport 41415 connect start On the Master
  3. Open the terminal
  4. type: connect set localip 127.0.0.1 connect set remoteip 127.0.0.1 connect set localport 41415 connect set remoteport 41414 connect set send hello from master From the slave terminal you should see the text ‘hello from master’. this indicates a successful connection. Close the slave terminal - leave the master terminal open. We need the master terminal window for the ‘SELECT WINDOW BY NAME’ condition on the master.mmmacro play. Start the slave.mmmacro play and then pause it. Then start the master.mmmacro play. When idle is detected - it will start the slave play. When idle is NOT detected - it will pause the slave play. MASTER.mmmacro
* | VARIABLES
1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::FALSE
2 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN2%::FALSE
* | .
* | ####################
* | IDLE_CHECK
* | ####################
3 | IF | IDLE | 2 | IS TRUE | GOTO MACRO LINE | RUN_MACRO | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | PAUSE_MACRO
* | .
* | ####################
* | RUN_MACRO
* | ####################
4 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | GOTO MACRO LINE | IDLE_CHECK
5 | RUN ACTION | SELECT WINDOW BY NAME | Terminal - BETA
6 | X | X | 350 | Keypress connect send macro play start
7 | X | X | 300 | Keypress ENTER
8 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::TRUE
9 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN2%::FALSE
10 | RUN ACTION | GOTO MACRO LINE | IDLE_CHECK
* | .
* | ####################
* | PAUSE_MACRO
* | ####################
11 | IF | BOOLEAN VARIABLE | %BOOLEAN2% | IS TRUE | GOTO MACRO LINE | IDLE_CHECK
12 | RUN ACTION | SELECT WINDOW BY NAME | Terminal - BETA
13 | X | X | 350 | Keypress connect send macro play pause
14 | X | X | 300 | Keypress ENTER
15 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::FALSE
16 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN2%::TRUE
17 | RUN ACTION | GOTO MACRO LINE | IDLE_CHECK

SLAVE.mmmacro

1 | IF | FILE | D:\Macro\OUTPUT\output.txt | EXIST | DELETE FILE | D:\Macro\OUTPUT\output.txt
* | start
2 | RUN ACTION | OUTPUT TO FILE | D:\Macro\OUTPUT\output.txt::APPEND_NEWLINE::%time% - - %random%
3 | RUN ACTION | WAIT SECONDS | 2
4 | RUN ACTION | GOTO MACRO LINE | start

Here is what is should look like: minimousemacro.com/pic/forum/minimousemacro_connecttomacro.gif minimousemacro_connecttomacro.gif

User: zeak

Date: Apr 9, 2020 5:44:04 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Apr 8, 2020 0:49:01 GMT

Steve said: Ok so i’ve got it working using two MMM instances. The fist instance (MASTER) checks for IDLE and drives the second instance. The second instance (SLAVE) takes start/pause instructions from the first. I use the inbuilt macro terminal (https://www.turnssoft.com/terminal.html) with MMM automating it, to send play/pause to the second macro. Its a little complicate and requires binding a connection using tcp sockets on the localhost to use a communication channel between the two running macro’s. The building and binding a socket is done using the mmm terminal and the ‘connect set’ commands. Like in the attached pic below. This could work but it is time consuming to setup and I was wanting to do this everyday, I might have to make a macro to automatically set it up for me. Wish that this action of IF IDLE could be running all the time in the background of just one macro.

User: zeak

Date: May 19, 2020 21:39:19 GMT

Hi Steve

I think I finally found what I’ve been trying to ask you to do and I happen to find it when trying to set up your example to be automatically done in the morning when I start work. I was trying to use task manager to complete all the parts you mentioned using a vb script. Ignore the red rectangle, what I want to focus on is the Idle part. I was hoping something like all the options under Idle and possibly all the options under Power could be added into the settings for MMM. qGdr8h6.png

User: Steve

Date: May 20, 2020 6:57:01 GMT

zeak yes thanks for that. Its a tricky one and to be honest I’m not sure how to get it done. I’ll have to do a fair bit of research on it and I’m quite flat out. I’ve got a big update coming, hopefully June/July, with a few new features I’m trying to nut out. Most notably remote functionality with the ability to call and monitor remote MMM tasks across the network. I’m pretty keen to get that out. Also, I’ve got some new string functions to add in and I’m looking into user created functions. Functions is a big one too. The ability to define custom functions within the MMM code is huge. Functions that process a large body of work and return values is a big win for the user base. This is going to take some time to get out though. I’ll be looking for some testing if your keen to give that a go again?

The IDLE additions, yeah i’m really on the fence about. Integrating it with MMM is difficult at the moment. If you could research into it, get some information on the code that’s needed or write some up that demo’s picking up the hook needed to tap into the windows idle/sleep/wake functions (or whatever they may be) that would be really cool.


Clipboard does not accept null or line breaks (Sheet)

URL: https://minimousemacro.proboards.com/thread/260/clipboard-accept-null-breaks-sheet
Date: May 12, 2020 10:49:14 GMT

User: boyco3

Date: May 12, 2020 10:49:14 GMT

I am processing data on Google Sheet, I copy the cells and check it with Clipboard. However, it cannot work with spaces. I tried many times but there still does not work. I want Clipboard to check and stop when I encounter a gap. Code demo:

* | begin
1 | 253 | 327 | 793 | Keypress Ctrl+ | c
2 | IF | CLIPBOARD | VALUE | TEXT CONTAINS |  | GOTO MACRO LINE | empty
3 | 313 | 283 | 769 | Keypress right
4 | 313 | 283 | 715 | Keypress v

5 | 313 | 283 | 704 | Keypress left
6 | 313 | 283 | 404 | Keypress down
7 | RUN ACTION | GOTO MACRO LINE | begin
* | empty
8 | 313 | 283 | 769 | Keypress right
9 | 313 | 283 | 715 | Keypress x
10 | 313 | 283 | 704 | Keypress left
11 | 313 | 283 | 404 | Keypress down
* | end

r8JHF2C.png

User: Steve

Date: May 14, 2020 23:14:44 GMT

Hi boyco3

The issue here is that a blank entry in google sheets is not equal to ‘ ‘ no text. A blank entry in google sheets is equal to a carriage return and linefeed, like someone pressed the ‘Enter’ key in the tile. To get around this we have to do something tricky with MMM. We need to store the value of a carriage return and linefeed into a variable. Have a look at the demo i made below. At the start it shows selecting the empty tile, opening up a text doc, and then pasting the value in. Later in the macro (at line 2) we pull the value of the carriage return and linefeed into the STRING variable. Also take note of line 6. Here we display the value of the clipboard with a ‘.’ at the start and a ‘.’ at the end.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
2 | RUN ACTION | INPUT FROM FILE | STRING::NO_REFRESH::D:\Macro\INPUT\blankline.txt
3 | 976 | 222 | 0 | Left Click
* | start
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
5 | X | X | 300 | Keypress Ctrl+ | c
6 | RUN ACTION | MESSAGE PROMPT | .%clipboard%.::::1
7 | X | X | 300 | Keypress right
8 | IF | STRING VARIABLE | %clipboard% | IS | %string% | GOTO MACRO LINE | empty
9 | X | X | 300 | Keypress Ctrl+ | v
10 | X | X | 300 | Keypress down
11 | X | X | 300 | Keypress left
12 | IF | INTEGER VARIABLE | %INTEGER% | IS | 7 | GOTO MACRO LINE | end
13 | RUN ACTION | GOTO MACRO LINE | start
* | empty
14 | X | X | 300 | Keypress x
15 | X | X | 300 | Keypress down
16 | X | X | 300 | Keypress left
17 | RUN ACTION | GOTO MACRO LINE | start
* | end

minimousemacro_googlesheetsblankentry.gif

User: boyco3

Date: May 17, 2020 7:15:49 GMT

Thanks Steve, I have followed your instructions and the program worked. I also found another way, which is to take advantage of the INTEGER variable, because it only takes a numeric value and will remove whitespace or other things. I add any number (eg number: 0) after the clipboard variable is copied and compared to the result, if the variable INTEGER = 0 is empty, if INTEGER != 0 is valid.

* | begin
1 | X | X | 500 | Keypress Ctrl+ | c
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%CLIPBOARD%0
3 | IF | INTEGER VARIABLE | %INTEGER% | = | 0 | GOTO MACRO LINE | empty
4 | X | X | 300 | Keypress right
5 | X | X | 300 | Keypress v
6 | X | X | 300 | Keypress left
7 | X | X | 300 | Keypress down
8 | RUN ACTION | GOTO MACRO LINE | begin
* | empty
9 | X | X | 300 | Keypress right
10 | X | X | 300 | Keypress x
11 | X | X | 300 | Keypress left
12 | X | X | 300 | Keypress down
* | end

The AND condition does not work for me

URL: https://minimousemacro.proboards.com/thread/261/condition-work-me
Date: May 16, 2020 11:17:22 GMT

User: Julio

Date: May 16, 2020 11:17:22 GMT

Buenos días. Realmente me gusta esta Mini Mouse Macro, pero tengo un problema: la condición AND no me funciona. En la siguiente macro, nunca hago que se ejecuten las líneas 4 y 5 cuando se ingresa un valor positivo. En cambio, la macro funciona correctamente cuando se ingresan valores negativos

¿Qué sucede? ¿Me puedes ayudar? Gracias Julio

* | Inicio
1 | EJECUTAR ACCIÓN | DEFINIR VARIABLE INTEGER | % INTEGER% :: 0 
2 | EJECUTAR ACCIÓN | CAJA DE ENTRADA | Ingrese un valor positivo :::: INTEGER 
3 | SI | VARIABLE INTEGRAL | % INTEGER% | &lt;| 
0 | Mensaje de mensaje |
El valor no puede ser negativo :::: 0 | Y  | 
6 | EJECUTAR ACCIÓN | GOTO MACRO LINE | Strart
4 | EJECUTAR ACCIÓN | Mensaje de mensaje | El valor introducido es ...% INTEGER% :::: 0 
5 | 

EJECUTAR ACCIÓN | Mensaje de mensaje | Terminado :::: 0

User: Steve

Date: May 16, 2020 20:36:33 GMT

Hola julio Sí, parece que la condición AND ( <www.turnssoft.com/conditions.html#and> ) no funciona como se esperaba. Eche un vistazo a este código de macro a continuación:

* | comienzo
1 | EJECUTAR ACCIÓN | DEFINIR VARIABLE INTEGER | % INTEGER% :: 0
2 | EJECUTAR ACCIÓN | CAJA DE ENTRADA | Ingrese un valor positivo :::: INTEGER
3 | SI | VARIABLE INTEGRAL | % INTEGER% | < | 0 | Mensaje de mensaje | El valor no puede ser negativo :::: 0 | Y | 4 | EJECUTAR ACCIÓN | GOTO MACRO LINE | comienzo
4 | EJECUTAR ACCIÓN | Mensaje de mensaje | El valor introducido es ...% INTEGER% :::: 0
5 | EJECUTAR ACCIÓN | Mensaje de mensaje | Terminado

Cuando se ingresa un valor positivo, la macro no debe ejecutar la condición AND, pero siempre lo hace. Esto no debería estar pasando. He agregado un error para esto aquí <www.turnssoft.com/bugtrack.html#bugs> . Saludos, Steve Hello Julio, Yes it seems as though the AND condition (https://www.turnssoft.com/conditions.html#and) is not working as expected. Take a look at this macro code below:

* | Start
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
2 | RUN ACTION | INPUT BOX | Enter a positive value::::INTEGER
3 | IF | INTEGER VARIABLE | %INTEGER% | < | 0 | MESSAGE PROMPT | The value cannot be negative::::0 | AND | 4 | RUN ACTION | GOTO MACRO LINE | Start
4 | RUN ACTION | MESSAGE PROMPT | The entered value is ...%INTEGER%::::0
5 | RUN ACTION | MESSAGE PROMPT | Finished

When a positive value is entered the macro should not run the AND condition however it always does. This should not be happening. I’ve added a bug for this here <www.turnssoft.com/bugtrack.html#bugs> . Regards, Steve.

User: Steve

Date: May 16, 2020 20:44:55 GMT

Hola julio El problema AND se solucionará en la próxima actualización ( minimousemacro.proboards.com/thread/181/update-coming-next-mouse-macro ) Gracias por mencionarlo. Salud, Steve Hi Julio, The AND issue will be fixed in the next update ( minimousemacro.proboards.com/thread/181/update-coming-next-mouse-macro ) Thanks for pointing it out. Cheers, Steve.

User: Julio

Date: May 16, 2020 21:22:27 GMT

Muchas gracias Steve Julio


Quick Launch hot keys - Save as a bank?

URL: https://minimousemacro.proboards.com/thread/259/quick-launch-keys-save-bank
Date: May 7, 2020 12:06:16 GMT

User: kellyllek

Date: May 7, 2020 12:06:16 GMT

I’m a bit confused on how the Quick Launch works in relation to the open instance. I have to open a blank instance of MMM or a saved macro to get quick launch to work (of course). But I also want to record a single macro on the fly. If I try to record one and use it, but then I use a hotkey Quick Launch to use another, it replaces the current temporary macro. The fix seems to be to open yet another instance and make my temporary macro. I’m unsure why the Quick Launch doesn’t overwrite it but at least it works!  However if I the try to save that macro and add it to the quick launch, it seems not to save it to Quick Launch correctly. I’m using MMM to help data from invoices and then paste that data into our software. I’ve successfully done this with one invoice template from one company. It takes about 4 macros to go through the process but it’s amazing how much time and frustration it saves, and it’s 100% paperless! However we have about 5 invoice  templates from the various companies, and each will need their own set of macros. I’m not sure I have enough hotkeys and it’ll get confusing! It’d be great to load a bank of macros, so essentially you use the same hotkeys for each set. If the Quick Launch menu had a Save As function I think that would work, as I’d just load the bank of macros I need for a particular set of invoices. Is there a way to do this? I’m still trying to get through all the FAQ and instructions. MMM is more sophisticated than I realized. My immediate boss seems very impressed with the potential and would like to take it to the higher-ups.  I see this though as a temporary solution for a much more painstaking and expensive fix to integrate our vendors’ software.   I hope to make a video of what I’m doing to get feedback. I’d post it here and to a few entities that specialize in PDF extraction. There may be much better ways of doing what I’m doing and it’d be great to get feedback.  

User: zeak

Date: May 7, 2020 21:11:28 GMT

Does each invoice template have a set name? If so you could get MMM to recognize which invoice is open with IF | WINDOW TITLE | EXIST and then just jump to the part of the macro that handles that particular invoice.

User: Steve

Date: May 7, 2020 22:19:07 GMT

Hi kellyllek , Thanks for the run down on how your using MMM. I’m always interested to hear how people are using this little tool in different ways.
I’ll try to answer off your questions. defaultavatar.png May 7, 2020 12:06:16 GMT

kellyllek said: I’m a bit confused on how the Quick Launch works in relation to the open instance. I have to open a blank instance of MMM or a saved macro to get quick launch to work (of course). But I also want to record a single macro on the fly. If I try to record one and use it, but then I use a hotkey Quick Launch to use another, it replaces the current temporary macro. The fix seems to be to open yet another instance and make my temporary macro. I’m unsure why the Quick Launch doesn’t overwrite it but at least it works!  However if I the try to save that macro and add it to the quick launch, it seems not to save it to Quick Launch correctly. I see your using multiple instances of MMM to get around the quick launch clearing your recorded macro. Thats a good idea. One thing to know though is that while MMM can work with multiple instances it will only be the first instance of MMM that responds to hotkeys and quick launch loads. “However if I the try to save that macro and add it to the quick launch, it seems not to save it to Quick Launch correctly” I’m not sure about this one. If you save your macro to a .mmmacro file, then you should be able to add it to your quick launch. Maybe your not saving the quick launch after you add the macro or are not setting the item in the quick launch to ‘ON’.
I’m using MMM to help data from invoices and then paste that data into our software. I’ve successfully done this with one invoice template from one company. It takes about 4 macros to go through the process but it’s amazing how much time and frustration it saves, and it’s 100% paperless! However we have about 5 invoice  templates from the various companies, and each will need their own set of macros. I’m not sure I have enough hotkeys and it’ll get confusing! It’d be great to load a bank of macros, so essentially you use the same hotkeys for each set. If the Quick Launch menu had a Save As function I think that would work, as I’d just load the bank of macros I need for a particular set of invoices. Is there a way to do this? zeak hinted in the post above that using conditions in your macro’s could help you automate the need to load multiple macro’s. The proper use of conditions ( <www.turnssoft.com/conditions.html> ) within this macro could automate the process to a point where you click play on one macro and it detects the invoice template type and loads the macro’s it needs accordingly.
I’m still trying to get through all the FAQ and instructions. MMM is more sophisticated than I realized. My immediate boss seems very impressed with the potential and would like to take it to the higher-ups.  I see this though as a temporary solution for a much more painstaking and expensive fix to integrate our vendors’ software.  At first glance it seems possible that this whole process could be automated. You’ll need to go pretty deep on some advanced conditions within MMM to achieve it though. This forums a good place to check for solutions and post problems.
Hope this helps get your started wink.png

User: kellyllek

Date: May 11, 2020 14:55:26 GMT

Steve thanks so much. I’m still digesting everything! I took the liberty of creating a video demonstrating what we are doing. If you can watch a bit of it I think you’ll get the idea! MMM allows us to automate some of the cumbersome process. But it’s also dependent on specific set up and placement of windows for the recorded mouse movements. It’s not something everyone would be able to implement without  creating their own macros. Plus, even if I sign in to another workstation, if the screen layout and resolutions are not the same it will be impossible to replicate. Nonetheless it’s still much better than the current situation. Thanks again for all your help.

User: Steve

Date: May 14, 2020 23:45:03 GMT

Thanks for your video@kellyllek Ok I see what your dealing with now. One of your solutions would be to not rely on click and mouse movements where possible. As you put it, these events at playback target set positions. On a different computer, different layout, and so on this may not work when the positions for items are not the same. To get around this you need to write the macro’s with a heaver use around conditions and less (or none) reliance on set keys.


KEYPRESS does not write parentheses / brackets

URL: https://minimousemacro.proboards.com/thread/155/keypress-write-parentheses-brackets
Date: Apr 5, 2019 10:05:49 GMT

User: sharecow

Date: Apr 5, 2019 10:05:49 GMT

1 | X | X | 500 | Keypress (jobs-\w+)

output misses the brackets: jobs-\w+ It works with message prompt though:

1 | RUN ACTION | MESSAGE PROMPT | (jobs-\w+)

Am I missing something? Thanks!

User: sharecow

Date: Apr 9, 2019 9:56:41 GMT

I thought I’d share my solution so far.

21 | X | X | 500 | Keypress Shift+ | 8
21 | X | X | 500 | Keypress jobs-[A-Z].*
21 | X | X | 500 | Keypress Shift+ | 8
21 | X | X | 500 | Keypress ?=\"
21 | X | X | 500 | Keypress Shift+ | 9
21 | X | X | 500 | Keypress Shift+ | 9

While Shift>8 is ( and Shift>9 is ) on the German keyboard. Took me ages to get it done this way, although I cannot believe, that this is the only way.

User: Steve

Date: Apr 13, 2019 6:13:57 GMT

Wow - good pickup. I’ve had keyboard translation issues before with keys so immediately i was quick to blame this on your German keyboard. After trying it myself on my (non-German) classic English keyboard I had the same issue. The fix is bit simpler though for my keyboard:

1 | X | X | 500 | Keypress (
2 | X | X | 500 | Keypress jobs-\w+
3 | X | X | 500 | Keypress +
4 | X | X | 500 | Keypress )

Yeah - short answer not sure why. Most likely (i haven’t looked at the code in a little while) where it should be outputting all the text as a simple string it’s not. Rather it’s trying to do some funky math with the ( - and + ) and getting confused.
I’ll check it out. Thanks. This is a good one smiley.png

User: zeak

Date: May 5, 2020 23:59:05 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Apr 13, 2019 6:13:57 GMT

Steve said: Wow - good pickup. I’ve had keyboard translation issues before with keys so immediately i was quick to blame this on your German keyboard. After trying it myself on my (non-German) classic English keyboard I had the same issue. Yeah - short answer not sure why. Most likely (i haven’t looked at the code in a little while) where it should be outputting all the text as a simple string it’s not. Rather it’s trying to do some funky math with the ( - and + ) and getting confused.
I’ll check it out. Thanks. This is a good one smiley.png Hi Steve, I’m having a lot of issues with this, I’m trying to run a command prompt to open a file that have brackets in it. Here is the file path that I’m trying to open

1 | X | X | 1000 | Keypress lwin+ | r
2 | X | X | 1000 | Keypress "C:\Users\User\Documents\QAD\Requirements (CSV).url"
3 | X | X | 1000 | Keypress enter

I’m getting two almost three different problems. It sometimes spits an Error at me for this “Line 2 - Enumeration error: The macro may have edited during playback. This macro can not proceed.” It sometimes removes the “C before the : When I try to split this out into different keypresses to allow it to press the bracket keys, it seems to drop the space inbetween the end of “requirements” and the first bracket. I tried to first define this as a string but that still didn’t work. Out of the ten times I ran this, it only worked once.

User: Steve

Date: May 7, 2020 21:56:21 GMT

Arrg oh man I thought this was a thing of the past. Yep i can confirm that I get the same issue. This keypress line will remove the ( and the ):

1 | X | X | 1000 | Keypress lwin+ | r
2 | X | X | 1000 | Keypress "D:\Macro\test\test 1\test (1).txt"
3 | X | X | 1000 | Keypress enter

To get around the issue I need to do add the ( and the ) to a single keypress:

1 | X | X | 1000 | Keypress lwin+ | r
2 | X | X | 1000 | Keypress "D:\Macro\test\test 1\test
3 | X | X | 200 | Keypress SPACE
4 | X | X | 200 | Keypress (
5 | X | X | 200 | Keypress 1
6 | X | X | 200 | Keypress )
7 | X | X | 200 | Keypress .txt"
8 | X | X | 1000 | Keypress enter

I’ll have to have a look at the code but I think it’s got something to do with the way I am handling Keypress’s. Keypresses with multiple words are treated differently to a keypress with a single character.
I’ll add it to the ever growing list of things to get done for the next update. Thanks zeak

User: Steve

Date: May 7, 2020 23:23:25 GMT

I had a look at the code… The problem is that MMM is not sanitizing the output for special characters that sendkeys uses.
This is pretty much the solution thanks to stackoverflow.com/questions/18540025/call-for-certain-sendkey-when-called-not-send-all-the-time:

Dim SendText as String = "This ^string^ might+need (to be) wrapped."
Dim sb as new Text.StringBuilder(SendText)
Dim i as Integer = 0
While i < sb.Length
  If "+^%~(){}[]".Contains(sb.Chars(i)) Then
	sb.Insert(i, "{"c)
	sb.Insert(i + 2, "}"c)
	i += 3
  Else
	i += 1
  End If
End While
SendKeys.Send(sb.ToString())

I’ll do some testing and it will make it’s way to the next update if all goes well.

User: Steve

Date: May 7, 2020 23:34:26 GMT

Thanks zeak it’s been committed and made it’s way to the update ( minimousemacro.proboards.com/thread/181/update-coming-next-mouse-macro )


Windows key is not working

URL: https://minimousemacro.proboards.com/thread/258/windows-key-working
Date: May 5, 2020 9:47:10 GMT

User: kellyllek

Date: May 5, 2020 9:47:10 GMT

I’d like to run a program from the Window Key + R, rather than clicking the start menu as I use the program on different network computers with different locations of the software. But the windows key seem to not record? I tried editing like the Ctrl+ Works.  

1 | 458 | 111 | 2416 | Keypress Ctrl+ | r 

But when I try to record the same with the widows key I get:

2 | 458 | 111 | 2464 | Keypress lwin
3 | 458 | 111 | 292 | Keypress r
4 | 458 | 111 | 76 | Keypress lwin

Which doesn’t work. If I try editing it like the control

2 | 458 | 111 | 2464 | Keypress lwin+ | r

It doesn’t do anything either But even if I just try to record the single click of the lwin key it will do bring up the start menu as it does with my keyboard.   appreciate your thoughts. tks  

User: kellyllek

Date: May 5, 2020 9:58:40 GMT

I found I could open the Start menu with the Ctrl+ | escape it records the keystrokes but when I play back it does not do anything either.

User: zeak

Date: May 5, 2020 21:28:14 GMT

Hi Kellyllek, I’m not sure why it would not be working for you as lwin+|r seems to work for me, are you working in remote terminals? you could try without the l, so just what I have below.

1 | X | X | 1000 | Keypress win+ | r

User: kellyllek

Date: May 7, 2020 11:57:18 GMT

I did go back to Ctrol + Escape and that worked; giving me the ability to totally open and sign into my software with no mouse clicks.This would allow me to use the same macro on any machine on the network. However, it works sometimes and then totally fails at other times! I’m not sure why… Maybe a separate issue all my hotkey programs started running way too fast. I restarted the system and it cleared


Combining MMM and Batch

URL: https://minimousemacro.proboards.com/thread/256/combining-mmm-batch
Date: Apr 27, 2020 21:47:24 GMT

User: dozer2014

Date: Apr 27, 2020 21:47:24 GMT

I can’t understand why the following macro doesn’t work. I consistently get the “default” A regardless of what I enter in the box.

1 | RUN ACTION | WAIT MILLISECONDS | 1000
* |
* | Prompt for switched save types. Archive, Date, or Mirror with T: 
* |
2 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to DT2 or         D = Robocopy with Date Switch to DT2 or             M = Robocopy with Mirror Switch to DT2::Backup Mode Selection::%STRING1%
3 | IF | STRING VARIABLE | %STRING1% | IS | A | GOTO MACRO LINE | 7 
4 | IF | STRING VARIABLE | %STRING1% | IS | D | GOTO MACRO LINE | 7
5 | IF | STRING VARIABLE | %STRING1% | IS | M | GOTO MACRO LINE | 7
6 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::A
* |
7 | RUN ACTION | WAIT MILLISECONDS | 1000
* |
8 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to My Cloud or   D = Robocopy with Date Switch to My Cloud or       M = Robocopy with Mirror Switch to My Cloud::Backup Mode Selection::%STRING2%
9 | IF | STRING VARIABLE | %STRING2% | IS | A | GOTO MACRO LINE | 13
10 | IF | STRING VARIABLE | %STRING2% | IS | D | GOTO MACRO LINE | 13
11 | IF | STRING VARIABLE | %STRING2% | IS | M | GOTO MACRO LINE | 13
12 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::A
*  |
*  | Prompt for switched save types. Archive, Date, or Mirror with Z on the Cloud: 
*  |
13 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
14 | 1400 | 250 | 5000 | Keypress C
15 | 1400 | 250 | 1000 | Keypress ENTER
16 | 1400 | 250 | 2000 | Keypress B
17 | 1400 | 250 | 1000 | Keypress ENTER
18 | 1400 | 250 | 2000 | Keypress Y
19 | 1400 | 250 | 1000 | Keypress ENTER
20 | 1400 | 250 | 2000 | Keypress %STRING1%
21 | 1400 | 250 | 1000 | Keypress ENTER
22 | 1400 | 250 | 2000 | Keypress Y
23 | 1400 | 250 | 1000 | Keypress ENTER
24 | 1400 | 250 | 2000 | Keypress C
25 | 1400 | 250 | 1000 | Keypress ENTER
*  |
*  | Make sure all following windows are closed before continuing.
*  |
26 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
27 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE
*  |
33 | RUN ACTION | WAIT MILLISECONDS | 15000
*  |
29 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
30 | 1400 | 250 | 5000 | Keypress C
31 | 1400 | 250 | 1000 | Keypress ENTER
32 | 1400 | 250 | 2000 | Keypress E
33 | 1400 | 250 | 1000 | Keypress ENTER
34 | 1400 | 250 | 2000 | Keypress %STRING2%
35 | 1400 | 250 | 1000 | Keypress ENTER
36 | 1400 | 250 | 2000 | Keypress N
37 | 1400 | 250 | 1000 | Keypress ENTER
38 | 1400 | 250 | 2000 | Keypress N
39 | 1400 | 250 | 1000 | Keypress ENTER
40 | 1400 | 250 | 2000 | Keypress N
41 | 1400 | 250 | 1000 | Keypress ENTER
42 | 1400 | 250 | 2000 | Keypress N
43 | 1400 | 250 | 1000 | Keypress ENTER
44 | 1400 | 250 | 2000 | Keypress Y
45 | 1400 | 250 | 1000 | Keypress ENTER
46 | 1400 | 250 | 2000 | Keypress C
47 | 1400 | 250 | 1000 | Keypress ENTER
*  |
*  | Make sure all following windows are closed before continuing.
*  |
48 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
49 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE

User: zeak

Date: Apr 28, 2020 5:25:06 GMT

Hi Dozer2014, Remove the % in front and behind your STRING1 and STRING2 on the action INPUT BOX

2 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to DT2 or D = Robocopy with Date Switch to DT2 or M = Robocopy with Mirror Switch to DT2::Backup Mode Selection::STRING1
8 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to My Cloud or D = Robocopy with Date Switch to My Cloud or M = Robocopy with Mirror Switch to My Cloud::Backup Mode Selection::STRING2

User: dozer2014

Date: Apr 28, 2020 15:13:09 GMT

I tried that and got no change (which I find strange in itself). I type in an m for “mirror” and I get an a for “archive” on both of them. Probably something simple, but I have yet to find it.

User: zeak

Date: Apr 28, 2020 21:25:23 GMT

JtbhHEeuGJPVDfQOHsiX.jpg Apr 28, 2020 15:13:09 GMT

dozer2014 said: I tried that and got no change (which I find strange in itself). I type in an m for “mirror” and I get an a for “archive” on both of them. Probably something simple, but I have yet to find it. So I figured it out, Its because your IF String variable are looking for Capital A, D & M. It’s case-sensitive, where i’m guessing you normally just press the key. I believe if you change your code to below it should work fine.

1 | RUN ACTION | WAIT MILLISECONDS | 1000
* |
* | Prompt for switched save types. Archive, Date, or Mirror with T:
* |
2 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to DT2 or D = Robocopy with Date Switch to DT2 or M = Robocopy with Mirror Switch to DT2::Backup Mode Selection::STRING1
3 | IF | STRING VARIABLE | %STRING1% | IS | a | GOTO MACRO LINE | 7
4 | IF | STRING VARIABLE | %STRING1% | IS | d | GOTO MACRO LINE | 7
5 | IF | STRING VARIABLE | %STRING1% | IS | m | GOTO MACRO LINE | 7
6 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::A
* |
7 | RUN ACTION | WAIT MILLISECONDS | 1000
* |
8 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to My Cloud or D = Robocopy with Date Switch to My Cloud or M = Robocopy with Mirror Switch to My Cloud::Backup Mode Selection::STRING2
9 | IF | STRING VARIABLE | %STRING2% | IS | a | GOTO MACRO LINE | 13
10 | IF | STRING VARIABLE | %STRING2% | IS | d | GOTO MACRO LINE | 13
11 | IF | STRING VARIABLE | %STRING2% | IS | m | GOTO MACRO LINE | 13
12 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::A
* |
* | Prompt for switched save types. Archive, Date, or Mirror with Z on the Cloud:
* |
13 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
14 | 1400 | 250 | 5000 | Keypress C
15 | 1400 | 250 | 1000 | Keypress ENTER
16 | 1400 | 250 | 2000 | Keypress B
17 | 1400 | 250 | 1000 | Keypress ENTER
18 | 1400 | 250 | 2000 | Keypress Y
19 | 1400 | 250 | 1000 | Keypress ENTER
20 | 1400 | 250 | 2000 | Keypress %STRING1%
21 | 1400 | 250 | 1000 | Keypress ENTER
22 | 1400 | 250 | 2000 | Keypress Y
23 | 1400 | 250 | 1000 | Keypress ENTER
24 | 1400 | 250 | 2000 | Keypress C
25 | 1400 | 250 | 1000 | Keypress ENTER
* |
* | Make sure all following windows are closed before continuing.
* |
26 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
27 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE
* |
33 | RUN ACTION | WAIT MILLISECONDS | 15000
* |
29 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
30 | 1400 | 250 | 5000 | Keypress C
31 | 1400 | 250 | 1000 | Keypress ENTER
32 | 1400 | 250 | 2000 | Keypress E
33 | 1400 | 250 | 1000 | Keypress ENTER
34 | 1400 | 250 | 2000 | Keypress %STRING2%
35 | 1400 | 250 | 1000 | Keypress ENTER
36 | 1400 | 250 | 2000 | Keypress N
37 | 1400 | 250 | 1000 | Keypress ENTER
38 | 1400 | 250 | 2000 | Keypress N
39 | 1400 | 250 | 1000 | Keypress ENTER
40 | 1400 | 250 | 2000 | Keypress N
41 | 1400 | 250 | 1000 | Keypress ENTER
42 | 1400 | 250 | 2000 | Keypress N
43 | 1400 | 250 | 1000 | Keypress ENTER
44 | 1400 | 250 | 2000 | Keypress Y
45 | 1400 | 250 | 1000 | Keypress ENTER
46 | 1400 | 250 | 2000 | Keypress C
47 | 1400 | 250 | 1000 | Keypress ENTER
* |
* | Make sure all following windows are closed before continuing.
* |
48 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
49 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE

User: dozer2014

Date: Apr 28, 2020 22:31:34 GMT

 Tried that one and even put it in so it would test for both cases. When it reaches the point of the variable entry, instead of inserting the variable, it kicks it out of the batch job. The second batch job loads and runs when it’s supposed to and does the same thing. Strange but true………………  smiley.png     It’s not the batch job. It runs fine when I run it manually. The batch has the /i to test for both cases, but only those 3 characters. On that premise, the variable must be entering something that’s causing the error. :sw1Again rem ECHO. SET /P sw1=Backup hard drive C: on DT1 to hard drive C: (T:) on DT2 with (A)rchive, (D)ate or (M)irror? (A, D or M): If /i %sw1%==A GOTO sw1Done If /i %sw1%==D GOTO sw1Done If /i %sw1%==M GOTO sw1Done ECHO. ECHO Wrong answer, (A, D or M) only. Try again…………… ECHO. GOTO sw1Again rem :sw1Done

User: zeak

Date: Apr 29, 2020 4:29:53 GMT

To debug I used Event log to make sure it was doing what it was saying and then checked with Message box to see what was outputting to each string value. fPeQJKd.gif

User: zeak

Date: Apr 29, 2020 4:57:11 GMT

JtbhHEeuGJPVDfQOHsiX.jpg Apr 28, 2020 22:31:34 GMT

dozer2014 said: The batch has the /i to test for both cases, but only those 3 characters. On that premise, the variable must be entering something that’s causing the error. From what I can understand you are saying is the Batch file is not case-sensitive, which is fine but what I am trying to say is the the IF statement in MMM IS case-sensitive and evaluates as FALSE if looking for Caps. So you need to have this:

3 | IF | STRING VARIABLE | %STRING1% | IS | d | GOTO MACRO LINE | 7

Instead of this:

3 | IF | STRING VARIABLE | %STRING1% | IS | D | GOTO MACRO LINE | 7

User: Steve

Date: Apr 29, 2020 9:58:51 GMT

STRING VARIABLE can take the ‘CONTAINS -C’ ( <www.turnssoft.com/conditions.html#containsc> ) operator to check if the string does contain some characters. The ‘-C’ removes any case sensitivity.

3 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | D | GOTO MACRO LINE | 7

Robocopy.exe takes me back to my windows admin days. A few years ago i wrote a GUI wrapper application for robocopy.exe - robocop robocopy ( <www.turnssoft.com/robocop-robocopy.html> ). If you do a lot of robocoping and wouldnt mind monitoring robocopy job progress it might be worth a look. 6738242_orig.jpg

User: dozer2014

Date: Apr 29, 2020 10:18:00 GMT

Steve, I have that GUI. I followed Zeek, but he didn’t follow me. I knew what he meant with regard to the upper and lower case in the macro. I have changed the macro to the following. I also attached the event log.

1 | RUN ACTION | WAIT MILLISECONDS | 1000
* | Prompt for switched save types. Archive, Date, or Mirror with T:
2 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to DT2 or         D = Robocopy with Date Switch to DT2 or             M = Robocopy with Mirror Switch to DT2::Backup Mode Selection::STRING1
3 | IF | STRING VARIABLE | %STRING1% | IS | A | GOTO MACRO LINE | 10
4 | IF | STRING VARIABLE | %STRING1% | IS | D | GOTO MACRO LINE | 10
5 | IF | STRING VARIABLE | %STRING1% | IS | M | GOTO MACRO LINE | 10
6 | IF | STRING VARIABLE | %STRING1% | IS | a | GOTO MACRO LINE | 10
7 | IF | STRING VARIABLE | %STRING1% | IS | d | GOTO MACRO LINE | 10
8 | IF | STRING VARIABLE | %STRING1% | IS | m | GOTO MACRO LINE | 10
9 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::A
10 | RUN ACTION | WAIT MILLISECONDS | 1000
11 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to My Cloud or   D = Robocopy with Date Switch to My Cloud or       M = Robocopy with Mirror Switch to My Cloud::Backup Mode Selection::STRING2
12 | IF | STRING VARIABLE | %STRING2% | IS | A | GOTO MACRO LINE | 19
13 | IF | STRING VARIABLE | %STRING2% | IS | D | GOTO MACRO LINE | 19
14 | IF | STRING VARIABLE | %STRING2% | IS | M | GOTO MACRO LINE | 19
15 | IF | STRING VARIABLE | %STRING2% | IS | a | GOTO MACRO LINE | 19
16 | IF | STRING VARIABLE | %STRING2% | IS | d | GOTO MACRO LINE | 19
17 | IF | STRING VARIABLE | %STRING2% | IS | m | GOTO MACRO LINE | 19
18 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::A
* | Prompt for switched save types. Archive, Date, or Mirror with Z on the Cloud:
19 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
20 | 1400 | 250 | 5000 | Keypress C
21 | 1400 | 250 | 1000 | Keypress ENTER
22 | 1400 | 250 | 2000 | Keypress B
23 | 1400 | 250 | 1000 | Keypress ENTER
24 | 1400 | 250 | 2000 | Keypress Y
25 | 1400 | 250 | 1000 | Keypress ENTER
26 | 1400 | 250 | 2000 | Keypress %STRING1%
27 | 1400 | 250 | 1000 | Keypress ENTER
28 | 1400 | 250 | 2000 | Keypress Y
29 | 1400 | 250 | 1000 | Keypress ENTER
30 | 1400 | 250 | 2000 | Keypress E
31 | 1400 | 250 | 1000 | Keypress ENTER
* | Make sure all following windows are closed before continuing.
32 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
33 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE
34 | RUN ACTION | WAIT MILLISECONDS | 15000
35 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
36 | 1400 | 250 | 5000 | Keypress C
37 | 1400 | 250 | 1000 | Keypress ENTER
38 | 1400 | 250 | 2000 | Keypress E
39 | 1400 | 250 | 1000 | Keypress ENTER
40 | 1400 | 250 | 2000 | Keypress %STRING2%
41 | 1400 | 250 | 1000 | Keypress ENTER
42 | 1400 | 250 | 2000 | Keypress N
43 | 1400 | 250 | 1000 | Keypress ENTER
44 | 1400 | 250 | 2000 | Keypress N
45 | 1400 | 250 | 1000 | Keypress ENTER
46 | 1400 | 250 | 2000 | Keypress N
47 | 1400 | 250 | 1000 | Keypress ENTER
48 | 1400 | 250 | 2000 | Keypress N
49 | 1400 | 250 | 1000 | Keypress ENTER
50 | 1400 | 250 | 2000 | Keypress Y
51 | 1400 | 250 | 1000 | Keypress ENTER
52 | 1400 | 250 | 2000 | Keypress E
53 | 1400 | 250 | 1000 | Keypress ENTER
* | Make sure all following windows are closed before continuing.
54 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
55 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE
04/29/2020 04:01:40.63 AM : Starting macro playback
04/29/2020 04:01:40.64 AM : Macro condition: 1 | RUN ACTION | WAIT MILLISECONDS | 1000
04/29/2020 04:01:40.66 AM : Macro condition - Condition TRUE
04/29/2020 04:01:40.67 AM : Macro action - Thread sleeping for 1000 milliseconds
04/29/2020 04:01:41.63 AM : Macro condition: 2 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to DT2 or         D = Robocopy with Date Switch to DT2 or             M = Robocopy with Mirror Switch to DT2::Backup Mode Selection::STRING1
04/29/2020 04:01:41.64 AM : Macro condition - Condition TRUE
04/29/2020 04:01:41.66 AM : Macro action - Running ACTION: INPUT BOX
04/29/2020 04:01:47.63 AM : Macro action - Variable 'STRING1' auto corrected to '%STRING1%'
04/29/2020 04:01:47.64 AM : Macro action - InputBox (%STRING1%=m)
04/29/2020 04:01:47.66 AM : Macro condition: 3 | IF | STRING VARIABLE | %STRING1% | IS | A | GOTO MACRO LINE | 10
04/29/2020 04:01:47.67 AM : Macro condition - Condition FALSE
04/29/2020 04:01:47.69 AM : Macro condition: 4 | IF | STRING VARIABLE | %STRING1% | IS | D | GOTO MACRO LINE | 10
04/29/2020 04:01:47.70 AM : Macro condition - Condition FALSE
04/29/2020 04:01:47.72 AM : Macro condition: 5 | IF | STRING VARIABLE | %STRING1% | IS | M | GOTO MACRO LINE | 10
04/29/2020 04:01:47.74 AM : Macro condition - Condition FALSE
04/29/2020 04:01:47.75 AM : Macro condition: 6 | IF | STRING VARIABLE | %STRING1% | IS | a | GOTO MACRO LINE | 10
04/29/2020 04:01:47.77 AM : Macro condition - Condition FALSE
04/29/2020 04:01:47.78 AM : Macro condition: 7 | IF | STRING VARIABLE | %STRING1% | IS | d | GOTO MACRO LINE | 10
04/29/2020 04:01:47.80 AM : Macro condition - Condition FALSE
04/29/2020 04:01:47.81 AM : Macro condition: 8 | IF | STRING VARIABLE | %STRING1% | IS | m | GOTO MACRO LINE | 10
04/29/2020 04:01:47.83 AM : Macro condition - STRING m = m
04/29/2020 04:01:47.85 AM : Macro condition - Condition TRUE
04/29/2020 04:01:47.86 AM : Macro action - Running ACTION: GOTO MACRO LINE - Macro line(10)
04/29/2020 04:01:47.88 AM : Macro condition: 10 | RUN ACTION | WAIT MILLISECONDS | 1000
04/29/2020 04:01:47.89 AM : Macro condition - Condition TRUE
04/29/2020 04:01:47.91 AM : Macro action - Thread sleeping for 1000 milliseconds
04/29/2020 04:01:48.66 AM : Macro condition: 11 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to My Cloud or   D = Robocopy with Date Switch to My Cloud or       M = Robocopy with Mirror Switch to My Cloud::Backup Mode Selection::STRING2
04/29/2020 04:01:48.67 AM : Macro condition - Condition TRUE
04/29/2020 04:01:48.69 AM : Macro action - Running ACTION: INPUT BOX
04/29/2020 04:01:52.42 AM : Macro action - Variable 'STRING2' auto corrected to '%STRING2%'
04/29/2020 04:01:52.44 AM : Macro action - InputBox (%STRING2%=m)
04/29/2020 04:01:52.45 AM : Macro condition: 12 | IF | STRING VARIABLE | %STRING2% | IS | A | GOTO MACRO LINE | 19
04/29/2020 04:01:52.47 AM : Macro condition - Condition FALSE
04/29/2020 04:01:52.49 AM : Macro condition: 13 | IF | STRING VARIABLE | %STRING2% | IS | D | GOTO MACRO LINE | 19
04/29/2020 04:01:52.50 AM : Macro condition - Condition FALSE
04/29/2020 04:01:52.52 AM : Macro condition: 14 | IF | STRING VARIABLE | %STRING2% | IS | M | GOTO MACRO LINE | 19
04/29/2020 04:01:52.53 AM : Macro condition - Condition FALSE
04/29/2020 04:01:52.55 AM : Macro condition: 15 | IF | STRING VARIABLE | %STRING2% | IS | a | GOTO MACRO LINE | 19
04/29/2020 04:01:52.56 AM : Macro condition - Condition FALSE
04/29/2020 04:01:52.58 AM : Macro condition: 16 | IF | STRING VARIABLE | %STRING2% | IS | d | GOTO MACRO LINE | 19
04/29/2020 04:01:52.59 AM : Macro condition - Condition FALSE
04/29/2020 04:01:52.61 AM : Macro condition: 17 | IF | STRING VARIABLE | %STRING2% | IS | m | GOTO MACRO LINE | 19
04/29/2020 04:01:52.63 AM : Macro condition - STRING m = m
04/29/2020 04:01:52.64 AM : Macro condition - Condition TRUE
04/29/2020 04:01:52.66 AM : Macro action - Running ACTION: GOTO MACRO LINE - Macro line(19)
04/29/2020 04:01:52.67 AM : Macro condition: 19 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
04/29/2020 04:01:52.69 AM : Macro condition - Condition TRUE
04/29/2020 04:01:52.70 AM : Macro action - Running ACTION: RUN VIA CMD /c - CMD /C C:\BATCH\DT1_Update_DT2.BAT - Shortcut
04/29/2020 04:01:52.72 AM : Macro event: 20 | 1400 | 250 | 5000 | Keypress C
04/29/2020 04:01:57.56 AM : Macro event: 21 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:01:58.61 AM : Macro event: 22 | 1400 | 250 | 2000 | Keypress B
04/29/2020 04:02:00.69 AM : Macro event: 23 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:01.73 AM : Macro event: 24 | 1400 | 250 | 2000 | Keypress Y
04/29/2020 04:02:03.81 AM : Macro event: 25 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:04.86 AM : Macro event: 26 | 1400 | 250 | 2000 | Keypress
04/29/2020 04:02:06.87 AM : Macro event: 27 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:07.92 AM : Macro event: 28 | 1400 | 250 | 2000 | Keypress Y
04/29/2020 04:02:10.00 AM : Macro event: 29 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:11.06 AM : Macro event: 30 | 1400 | 250 | 2000 | Keypress E
04/29/2020 04:02:13.14 AM : Macro event: 31 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:14.19 AM : Macro condition: 32 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
04/29/2020 04:02:14.21 AM : Macro condition - Window Title: MY BATCH NOT EXIST
04/29/2020 04:02:14.23 AM : Macro condition - Condition TRUE
04/29/2020 04:02:14.25 AM : Macro action - Running ACTION: CONTINUE
04/29/2020 04:02:14.27 AM : Macro condition: 33 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE
04/29/2020 04:02:14.29 AM : Macro condition - Window Title: C:\WINDOWS\SYSTEM32\CMD.EXE NOT EXIST
04/29/2020 04:02:14.31 AM : Macro condition - Condition TRUE
04/29/2020 04:02:14.33 AM : Macro action - Running ACTION: CONTINUE
04/29/2020 04:02:14.35 AM : Macro condition: 34 | RUN ACTION | WAIT MILLISECONDS | 15000
04/29/2020 04:02:14.37 AM : Macro condition - Condition TRUE
04/29/2020 04:02:14.38 AM : Macro action - Thread sleeping for 15000 milliseconds
04/29/2020 04:02:29.20 AM : Macro condition: 35 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut
04/29/2020 04:02:29.22 AM : Macro condition - Condition TRUE
04/29/2020 04:02:29.23 AM : Macro action - Running ACTION: RUN VIA CMD /c - CMD /C C:\BATCH\DT1_Update_DT2.BAT - Shortcut
04/29/2020 04:02:29.25 AM : Macro event: 36 | 1400 | 250 | 5000 | Keypress C
04/29/2020 04:02:34.30 AM : Macro event: 37 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:35.34 AM : Macro event: 38 | 1400 | 250 | 2000 | Keypress E
04/29/2020 04:02:37.42 AM : Macro event: 39 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:38.47 AM : Macro event: 40 | 1400 | 250 | 2000 | Keypress
04/29/2020 04:02:40.48 AM : Macro event: 41 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:41.53 AM : Macro event: 42 | 1400 | 250 | 2000 | Keypress N
04/29/2020 04:02:43.61 AM : Macro event: 43 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:44.65 AM : Macro event: 44 | 1400 | 250 | 2000 | Keypress N
04/29/2020 04:02:46.73 AM : Macro event: 45 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:47.78 AM : Macro event: 46 | 1400 | 250 | 2000 | Keypress N
04/29/2020 04:02:49.86 AM : Macro event: 47 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:50.90 AM : Macro event: 48 | 1400 | 250 | 2000 | Keypress N
04/29/2020 04:02:52.98 AM : Macro event: 49 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:54.03 AM : Macro event: 50 | 1400 | 250 | 2000 | Keypress Y
04/29/2020 04:02:56.11 AM : Macro event: 51 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:02:57.15 AM : Macro event: 52 | 1400 | 250 | 2000 | Keypress E
04/29/2020 04:02:59.23 AM : Macro event: 53 | 1400 | 250 | 1000 | Keypress ENTER
04/29/2020 04:03:00.28 AM : Macro condition: 54 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE
04/29/2020 04:03:00.29 AM : Macro condition - Window Title: MY BATCH NOT EXIST
04/29/2020 04:03:00.31 AM : Macro condition - Condition TRUE
04/29/2020 04:03:00.32 AM : Macro action - Running ACTION: CONTINUE
04/29/2020 04:03:00.34 AM : Macro condition: 55 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE
04/29/2020 04:03:00.36 AM : Macro condition - Window Title: C:\WINDOWS\SYSTEM32\CMD.EXE NOT EXIST
04/29/2020 04:03:00.37 AM : Macro condition - Condition TRUE
04/29/2020 04:03:00.39 AM : Macro action - Running ACTION: CONTINUE
04/29/2020 04:03:00.40 AM : Macro playback finished

I’ll make the change you suggested with the -C and try it again. You’ll notice that where the variable should be, it’s blank.

User: dozer2014

Date: Apr 29, 2020 10:37:48 GMT

Steve, Changed it to the -C as suggested and that part worked fine. Still get a blank where the input character should be. I’ve been “playing” with BATCH since 286 days.  smiley.png

User: zeak

Date: Apr 29, 2020 22:21:21 GMT

JtbhHEeuGJPVDfQOHsiX.jpg Apr 29, 2020 10:18:00 GMT

dozer2014 said: I have that GUI. I followed Zeek, but he didn’t follow me. I knew what he meant with regard to the upper and lower case in the macro. I have changed the macro to the following. I also attached the event log. Hi Dozer2014, Sorry I’m not familiar with RoboCopy and I don’t use batch files very often, from what I could test by commenting out the CMD line and the 15 second wait time. The rest of the macro works fine. I would like to help more but this is out of my expertise, I’m sure Steve will be keen to help. My last test using Notepad instead of Batch. r9YFmH4.gif

User: dozer2014

Date: Apr 29, 2020 23:39:44 GMT

Thanks zeak, I certainly don’t know everything either. There was a day when I knew just about everything there was to know about a computer. I’ve even written extensive memory diagnostics in machine language. That was about 40 years ago now. Before PC’s I have a very extensive batch program I’ve built over the years. It’s currently about 32 interconnecting batch files and almost takes up a MB. It keeps 2 machines virtually identical for backup purposes. I’ve used MMM to automate a lot of it’s main functions. I updated the whole thing from xcopy to robocopy about 4 years ago. Steve will know what that is. I find it interesting that it’s working in your Notepad demo and not in the DOS window. I still like playing with this stuff, but I’ll never be as anal as a computer……………………………..

User: Steve

Date: Apr 30, 2020 22:23:16 GMT

zeak nice demo! Whats that tool your using to get the key presses to display on the screen?

User: Steve

Date: Apr 30, 2020 23:10:11 GMT

JtbhHEeuGJPVDfQOHsiX.jpg Apr 29, 2020 23:39:44 GMT

dozer2014 said: Thanks zeak, I certainly don’t know everything either. There was a day when I knew just about everything there was to know about a computer. I’ve even written extensive memory diagnostics in machine language. That was about 40 years ago now. Before PC’s I have a very extensive batch program I’ve built over the years. It’s currently about 32 interconnecting batch files and almost takes up a MB . It keeps 2 machines virtually identical for backup purposes. I’ve used MMM to automate a lot of it’s main functions. I updated the whole thing from xcopy to robocopy about 4 years ago. Steve will know what that is. I find it interesting that it’s working in your Notepad demo and not in the DOS window. I still like playing with this stuff, but I’ll never be as anal as a computer…………………………….. That’s some heavy batching! dozer2014 I’m not sure why your cmd /c actions aren’t working as you expect them to. I’ve put together a little test that highlights some the usage for input box. I put some batch file logic in there too
wink.png

1 | RUN ACTION | INPUT BOX | Enter GREEN or RED::Select Green or Red::STRING1
2 | RUN ACTION | INPUT BOX | Enter the counter value:::count = ::INTEGER
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::textoutput_%STRING1%.bat %INTEGER%
3 | RUN ACTION | RUN VIA CMD /c | D:\macro\test\%STRING%
4 | RUN ACTION | INPUT BOX | Run Again?::Y/N::PROMPT_YES_NO::BOOLEAN
5 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | GOTO MACRO LINE | 1
6 | RUN ACTION | INPUT BOX | Type the word 'HELLO'::hello::STRING
7 | IF | STRING VARIABLE | %STRING% | CONTAINS -C | hello | MESSAGE PROMPT | You entered %string% - it does contain the word hello::Hello::0 | ELSE | 7 | RUN ACTION | MESSAGE PROMPT | You entered %string% - It DOES NOT contain the word hello::NO hello::0

textoutput_green.bat @echo off :head color A0 set intI=0 set intT=%1 :MAIN set /A intI+=1 cls echo [%intI%/%intT%] %date% %time% if /I “%intI%” EQU “%intT%” (GOTO END) ping -n 1 127.0.0.1>nul GOTO MAIN :END color 0b echo “———————–” echo “——End of file——” ping -n 2 127.0.0.1>nul textoutput_red.bat @echo off :head color 4f set intI=0 set intT=%1 :MAIN set /A intI+=1 cls echo [%intI%/%intT%] %date% %time% if /I “%intI%” EQU “%intT%” (GOTO END) ping -n 1 127.0.0.1>nul GOTO MAIN :END color 0b echo “———————–” echo “——End of file——” ping -n 2 127.0.0.1>nul minimousemacro_inputboxbatch.gif

User: zeak

Date: Apr 30, 2020 23:31:19 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Apr 30, 2020 22:23:16 GMT

Steve said: zeak nice demo! Whats that tool your using to get the key presses to display on the screen? It’s called Carnac, I downloaded it from code52.org/carnac/ But I was a bit hesitant downloading and using it, as the website is not secure and I wasn’t sure if the file had any viruses. I ran multiple virus check software on the file and came up with nothing, maybe you could have a look at it with some of your software.

User: Steve

Date: Apr 30, 2020 23:59:48 GMT

ovqiSZMQkcHXJsgduMbm.jpg Apr 30, 2020 23:31:19 GMT

zeak said: JFoc0jEJzNqTrrLxeLBk.jpg Apr 30, 2020 22:23:16 GMT

Steve said: zeak nice demo! Whats that tool your using to get the key presses to display on the screen? It’s called Carnac, I downloaded it from code52.org/carnac/ But I was a bit hesitant downloading and using it, as the website is not secure and I wasn’t sure if the file had any viruses. I ran multiple virus check software on the file and came up with nothing, maybe you could have a look at it with some of your software. I had a look at the download from the site carnac.zip in virus total <www.virustotal.com/gui/file/27e49e0639c726e85521419c45dd5d35420baaf4482603b5ad4d7eca96d7a48c/detection> . It come up with a couple of virus hits. The detections on virus total are not always 100% but more than one is enough to raise some suspicions. Here’s a deeper look at the file: <www.virustotal.com/graph/embed/gde71bef668c9410fb320ee10473ff5a04944aafb0784409bb78b7e683b5c5b11>

User: dozer2014

Date: May 1, 2020 0:22:06 GMT

Appreciate your time. That was my first attempt at programming a variable into MMM. Seems to me lie it should work. Has to be a reason or just find another way to do it. While your here, I have another one I haven’t checked out yet. I had to go back to the previous 7.3.0.0 version of MMM because something didn’t work with the new one. I could probably change it to work, but I can’t upgrade until I resolve it. I’m not even sure how to explain it right now.

User: zeak

Date: May 1, 2020 0:39:45 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Apr 30, 2020 23:59:48 GMT

Steve said: I had a look at the download from the site carnac.zip in virus total <www.virustotal.com/gui/file/27e49e0639c726e85521419c45dd5d35420baaf4482603b5ad4d7eca96d7a48c/detection> . It come up with a couple of virus hits. The detections on virus total are not always 100% but more than one is enough to raise some suspicions. Here’s a deeper look at the file: <www.virustotal.com/graph/embed/gde71bef668c9410fb320ee10473ff5a04944aafb0784409bb78b7e683b5c5b11> It would be nice if I knew how to unpack the file, remove the virus and recomple into a good program again. But unfortunately i’m not that skilled at programming.

User: Steve

Date: May 1, 2020 0:45:41 GMT

ovqiSZMQkcHXJsgduMbm.jpg May 1, 2020 0:39:45 GMT

zeak said: It would be nice if I knew how to unpack the file, remove the virus and recompile into a good program again. But unfortunately i’m not that skilled at programming. Well it could be just virus total engines hitting on something that is not malicious. Most of the engines detect nothing for this report detect nothing. The source for the project is available github.com/Code52/carnac so that’s a good sign that the developer is not willingly packing malicious content.

User: dozer2014

Date: May 1, 2020 0:59:18 GMT

Interesting…………………….. If I put the % back on the variable for the inbox it types the default “A” instead of being blank. 04/30/2020 06:46:27.46 PM : Macro list cleared 04/30/2020 06:46:27.47 PM : Macro quick launch: C:\MYFILES\MMM\Test.mmmacro 04/30/2020 06:46:27.49 PM : Starting macro playback 04/30/2020 06:46:27.50 PM : Macro condition: 1 | RUN ACTION | WAIT MILLISECONDS | 1000 04/30/2020 06:46:27.52 PM : Macro condition - Condition TRUE 04/30/2020 06:46:27.54 PM : Macro action - Thread sleeping for 1000 milliseconds 04/30/2020 06:46:28.47 PM : Macro condition: 2 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to DT2 or D = Robocopy with Date Switch to DT2 or M = Robocopy with Mirror Switch to DT2::Backup Mode Selection::%STRING1% 04/30/2020 06:46:28.49 PM : Macro condition - Condition TRUE 04/30/2020 06:46:28.50 PM : Macro action - Running ACTION: INPUT BOX 04/30/2020 06:46:31.08 PM : Playback error: 2 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to DT2 or D = Robocopy with Date Switch to DT2 or M = Robocopy with Mirror Switch to DT2::Backup Mode Selection::%STRING1% - Condition execution error: Index was outside the bounds of the array. 04/30/2020 06:46:31.10 PM : Macro condition: 3 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | A | GOTO MACRO LINE | 7 04/30/2020 06:46:31.14 PM : Playback error: 3 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | A | GOTO MACRO LINE | 7 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:31.16 PM : Macro condition: 4 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | D | GOTO MACRO LINE | 7 04/30/2020 06:46:31.18 PM : Playback error: 4 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | D | GOTO MACRO LINE | 7 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:31.19 PM : Macro condition: 5 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | M | GOTO MACRO LINE | 7 04/30/2020 06:46:31.21 PM : Playback error: 5 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | M | GOTO MACRO LINE | 7 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:31.22 PM : Macro condition: 6 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::A 04/30/2020 06:46:31.24 PM : Macro condition - Condition TRUE 04/30/2020 06:46:31.25 PM : Macro action - Variable (%STRING1% = A) 04/30/2020 06:46:31.27 PM : Macro condition: 7 | RUN ACTION | WAIT MILLISECONDS | 1000 04/30/2020 06:46:31.29 PM : Macro condition - Condition TRUE 04/30/2020 06:46:31.30 PM : Macro action - Thread sleeping for 1000 milliseconds 04/30/2020 06:46:32.16 PM : Macro condition: 8 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to My Cloud or D = Robocopy with Date Switch to My Cloud or M = Robocopy with Mirror Switch to My Cloud::Backup Mode Selection::%STRING2% 04/30/2020 06:46:32.18 PM : Macro condition - Condition TRUE 04/30/2020 06:46:32.19 PM : Macro action - Running ACTION: INPUT BOX 04/30/2020 06:46:34.68 PM : Playback error: 8 | RUN ACTION | INPUT BOX | A = Robocopy with Archive Switch to My Cloud or D = Robocopy with Date Switch to My Cloud or M = Robocopy with Mirror Switch to My Cloud::Backup Mode Selection::%STRING2% - Condition execution error: Index was outside the bounds of the array. 04/30/2020 06:46:34.69 PM : Macro condition: 9 | IF | STRING VARIABLE | %STRING2% | CONTAINS -C | A | GOTO MACRO LINE | 13 04/30/2020 06:46:34.71 PM : Playback error: 9 | IF | STRING VARIABLE | %STRING2% | CONTAINS -C | A | GOTO MACRO LINE | 13 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:34.72 PM : Macro condition: 10 | IF | STRING VARIABLE | %STRING2% | CONTAINS -C | D | GOTO MACRO LINE | 13 04/30/2020 06:46:34.74 PM : Playback error: 10 | IF | STRING VARIABLE | %STRING2% | CONTAINS -C | D | GOTO MACRO LINE | 13 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:34.75 PM : Macro condition: 11 | IF | STRING VARIABLE | %STRING2% | CONTAINS -C | M | GOTO MACRO LINE | 13 04/30/2020 06:46:34.77 PM : Playback error: 11 | IF | STRING VARIABLE | %STRING2% | CONTAINS -C | M | GOTO MACRO LINE | 13 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:34.78 PM : Macro condition: 12 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::A 04/30/2020 06:46:34.80 PM : Macro condition - Condition TRUE 04/30/2020 06:46:34.82 PM : Macro action - Variable (%STRING2% = A) 04/30/2020 06:46:34.83 PM : Macro condition: 13 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut 04/30/2020 06:46:34.85 PM : Macro condition - Condition TRUE 04/30/2020 06:46:34.86 PM : Macro action - Running ACTION: RUN VIA CMD /c - CMD /C C:\BATCH\DT1_Update_DT2.BAT - Shortcut 04/30/2020 06:46:34.88 PM : Macro event: 14 | 1400 | 250 | 5000 | Keypress C 04/30/2020 06:46:39.78 PM : Macro event: 15 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:46:40.83 PM : Macro event: 16 | 1400 | 250 | 2000 | Keypress B 04/30/2020 06:46:42.91 PM : Macro event: 17 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:46:43.96 PM : Macro event: 18 | 1400 | 250 | 2000 | Keypress Y 04/30/2020 06:46:46.03 PM : Macro event: 19 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:46:47.08 PM : Macro event: 20 | 1400 | 250 | 2000 | Keypress A 04/30/2020 06:46:49.16 PM : Macro event: 21 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:46:50.21 PM : Macro event: 22 | 1400 | 250 | 2000 | Keypress Y 04/30/2020 06:46:52.28 PM : Macro event: 23 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:46:53.33 PM : Macro event: 24 | 1400 | 250 | 2000 | Keypress E 04/30/2020 06:46:55.41 PM : Macro event: 25 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:46:56.46 PM : Macro condition: 26 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE 04/30/2020 06:46:56.47 PM : Macro condition - Window Title: MY BATCH NOT EXIST 04/30/2020 06:46:56.49 PM : Macro condition - Condition TRUE 04/30/2020 06:46:56.50 PM : Macro action - Running ACTION: CONTINUE 04/30/2020 06:46:56.52 PM : Macro condition: 27 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE 04/30/2020 06:46:56.53 PM : Macro condition - Window Title: C:\WINDOWS\SYSTEM32\CMD.EXE NOT EXIST 04/30/2020 06:46:56.55 PM : Macro condition - Condition TRUE 04/30/2020 06:46:56.56 PM : Macro action - Running ACTION: CONTINUE 04/30/2020 06:46:56.58 PM : Macro condition: 28 | RUN ACTION | WAIT MILLISECONDS | 15000 04/30/2020 06:46:56.60 PM : Macro condition - Condition TRUE 04/30/2020 06:46:56.61 PM : Macro action - Thread sleeping for 15000 milliseconds 04/30/2020 06:47:11.47 PM : Macro condition: 29 | RUN ACTION | RUN VIA CMD /c | C:\BATCH\DT1_Update_DT2.BAT - Shortcut 04/30/2020 06:47:11.49 PM : Macro condition - Condition TRUE 04/30/2020 06:47:11.50 PM : Macro action - Running ACTION: RUN VIA CMD /c - CMD /C C:\BATCH\DT1_Update_DT2.BAT - Shortcut 04/30/2020 06:47:11.52 PM : Macro event: 30 | 1400 | 250 | 5000 | Keypress C 04/30/2020 06:47:16.56 PM : Macro event: 31 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:17.61 PM : Macro event: 32 | 1400 | 250 | 2000 | Keypress E 04/30/2020 06:47:19.69 PM : Macro event: 33 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:20.73 PM : Macro event: 34 | 1400 | 250 | 2000 | Keypress A 04/30/2020 06:47:22.81 PM : Macro event: 35 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:23.86 PM : Macro event: 36 | 1400 | 250 | 2000 | Keypress N 04/30/2020 06:47:25.94 PM : Macro event: 37 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:26.98 PM : Macro event: 38 | 1400 | 250 | 2000 | Keypress N 04/30/2020 06:47:29.06 PM : Macro event: 39 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:30.11 PM : Macro event: 40 | 1400 | 250 | 2000 | Keypress N 04/30/2020 06:47:32.19 PM : Macro event: 41 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:33.23 PM : Macro event: 42 | 1400 | 250 | 2000 | Keypress N 04/30/2020 06:47:35.31 PM : Macro event: 43 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:36.36 PM : Macro event: 44 | 1400 | 250 | 2000 | Keypress Y 04/30/2020 06:47:38.44 PM : Macro event: 45 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:39.48 PM : Macro event: 46 | 1400 | 250 | 2000 | Keypress E 04/30/2020 06:47:41.56 PM : Macro event: 47 | 1400 | 250 | 1000 | Keypress ENTER 04/30/2020 06:47:42.61 PM : Macro condition: 48 | IF | WINDOW TITLE | My Batch | NOT EXIST | CONTINUE 04/30/2020 06:47:42.62 PM : Macro condition - Window Title: MY BATCH NOT EXIST 04/30/2020 06:47:42.64 PM : Macro condition - Condition TRUE 04/30/2020 06:47:42.66 PM : Macro action - Running ACTION: CONTINUE 04/30/2020 06:47:42.67 PM : Macro condition: 49 | IF | WINDOW TITLE | C:\WINDOWS\system32\cmd.exe | NOT EXIST | CONTINUE 04/30/2020 06:47:42.69 PM : Macro condition - Window Title: C:\WINDOWS\SYSTEM32\CMD.EXE NOT EXIST 04/30/2020 06:47:42.70 PM : Macro condition - Condition TRUE 04/30/2020 06:47:42.72 PM : Macro action - Running ACTION: CONTINUE 04/30/2020 06:47:42.73 PM : Macro playback finished

User: Steve

Date: May 1, 2020 1:24:18 GMT

dozer2014 what version are you running? Your getting these errors in your event log: 04/30/2020 06:46:31.14 PM : Playback error: 3 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | A | GOTO MACRO LINE | 7 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:31.16 PM : Macro condition: 4 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | D | GOTO MACRO LINE | 7 04/30/2020 06:46:31.18 PM : Playback error: 4 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | D | GOTO MACRO LINE | 7 - Condition execution error [Unexpected Internal Error]: Object reference not set to an instance of an object. 04/30/2020 06:46:31.19 PM : Macro condition: 5 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | M | GOTO MACRO LINE | 7 04/30/2020 06:46:31.21 PM : Playback error: 5 | IF | STRING VARIABLE | %STRING1% | CONTAINS -C | M | GOTO MACRO LINE | 7 - Condition execution error [Unexpected Internal Error]: Object reference not set to an This should not be happening. It suggests that the syntax is not compatible which is odd because that syntax has been valid for a long time.

User: dozer2014

Date: May 1, 2020 3:00:01 GMT

I was experimenting. Found the culprit. Under variables, clear variables on playback was checked. I misunderstood the intent. With that check cleared, it’s working.

User: dozer2014

Date: May 1, 2020 10:23:35 GMT

Currently running 7.3.0.0 That error is caused by having the % sign on the variable at the end of the input box statement.


Is there a way to save Playback Speed with a macro?

URL: https://minimousemacro.proboards.com/thread/257/save-playback-speed-macro
Date: Apr 29, 2020 11:32:55 GMT

User: kellyllek

Date: Apr 29, 2020 11:32:55 GMT

Every time I save a macro it doesn’t save the playback speed, which means every time I open a Macro I have to go in to set it. Is there a way to save the speed? I have about 8 macros and using them all the time to speed up various functions. I have them all saved to hotkeys. (pro version)  I’d like to just open one incidence of one macro and run all the others from the hotkeys at my desired speed.  But instead I have to open all 8 individually and then set the speed for them, individually. I feel I need a macro to help me set up the macros!   I love the program and when I get it all set up it’s amazing! But I just don’t see a way to save the speed. Of course, if I just run one, it basically plays back at the deliberate and slow speed I recorded it.  My default speed wall all of them is 20x. Tks…

User: kellyllek

Date: Apr 30, 2020 21:12:34 GMT

I just saw a video on youtube I believe from Turnsoft where they show how to change the ‘time’ on multiple operations at once and how to put a ‘pause’ in. It’s great because now my macros run fast without setting the speed, and all the quick launch work! I wish I’d seen it before! Saves me a ton of time getting my macro’s set up on when I fire up the computer. I’d love to see a new series of videos with step by step institution on how to take full advantage of the program. Starting with simple basic ideas and expanding. I think there are probably ways I could use it that I’m not even aware.

User: Steve

Date: Apr 30, 2020 23:19:54 GMT

Good to see you found a solution kellyllek

This forum minimousemacro.proboards.com is good place to start for resources and demo’s.
<www.turnssoft.com/mmmyoutube.html> has some youtube video’s people have submitted showing how they use MMM.
The condition page <www.turnssoft.com/conditions.html> illustrates how to work with MMM conditions. The FAQ <www.turnssoft.com/faq2.html> has some commonly asked questions These two basic tutorials, <www.turnssoft.com/tutorial-1—record-a-basic-macro> , and <www.turnssoft.com/tutorial-2—working-with-conditions> , help people get started. defaultavatar.png Apr 30, 2020 21:12:34 GMT

kellyllek said: I’d love to see a new series of videos with step by step institution on how to take full advantage of the program. Starting with simple basic ideas and expanding. I think there are probably ways I could use it that I’m not even aware. That would be great! If you have some submit them through here <www.turnssoft.com/mmmyoutube.html> . It would really help the MMM community
wink.png


Detect Button Enable/Disable

URL: https://minimousemacro.proboards.com/thread/252/detect-button-enable-disable
Date: Apr 22, 2020 22:14:40 GMT

User: Festus

Date: Apr 22, 2020 22:14:40 GMT

Checking out MMM to loop a process in an application … This is what I have going so far, trying to detect when the process finishes so it can be looped … That’s the part that is not working. There are Buttons and Text that are Disabled during the Run process and Enabled upon completion, my thoughts are to use that to detect when the process is finished and loop. Better ideas are welcome …

1 | IF | PROCESS NAME | MyApplication | EXIST | SELECT WINDOW BY NAME | MyApplication (4/21/2020, 4:48 PM)
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::DeleteMe.test
3 | X | X | 1000 | Keypress Alt+ | T
4 | X | X | 1000 | Keypress T
5 | X | X | 1000 | Keypress R
6 | X | X | 1000 | Keypress Alt+ | N
7 | X | X | 1000 | Keypress %string%
8 | X | X | 1000 | Keypress Alt+ | O
9 | X | X | 1000 | Keypress Alt+ | Y
10 | X | X | 1000 | Keypress Alt+ | C
11 |  | PIXEL RANGE | At Location [X:107 Y:134]::Size [W:32 H:13] | CHANGES::50::0::2 | GOTO MACRO LINE | 3

Also, I don’t understand why I have to have,

3 | X | X | 1000 | Keypress Alt+ | T
4 | X | X | 1000 | Keypress T

It should just be Alt-T, it doesn’t work without the second T. The manual steps would be, . Select Application loop

. Alt-T (Select menu Test)

. R (Select submenu Run (Opens FileOpenDialog))

. Alt-N (Select text box Name (In FileOpenDialog))

. Input String data: Filename.ext (Input filename)

. Alt-O (Select Open, closes FileOpenDialog)

. Y (Select Yes to open file message)

. C (Select Complete to process type) . Wait for Application to finish … repeat loop This is my application, I could just code in a loop, that is not what I want … Thank you. (Shoot, the preview button is broke, I have no clue if this will be readable!)

User: Festus

Date: Apr 23, 2020 11:02:40 GMT

This works to detect if a button has changed from disabled to enabled or vise versa …

1 |  | PIXEL RANGE | At Location [X:107 Y:134]::Size [W:32 H:13] | CHANGES::1::0::0 | MESSAGE PROMPT | The Color of the Button changed!::Color Change Detected::0

be sure to capture a word on the button and it works slick … Thank you.

User: Steve

Date: Apr 25, 2020 4:58:35 GMT

defaultavatar.png Apr 22, 2020 22:14:40 GMT

Festus said: This is what I have going so far, trying to detect when the process finishes so it can be looped … That’s the part that is not working.There are Buttons and Text that are Disabled during the Run process and Enabled upon completion, my thoughts are to use that to detect when the process is finished and loop.

1 | IF | PROCESS NAME | MyApplication | EXIST | SELECT WINDOW BY NAME | MyApplication (4/21/2020, 4:48 PM)
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::DeleteMe.test
3 | X | X | 1000 | Keypress Alt+ | T
4 | X | X | 1000 | Keypress T
5 | X | X | 1000 | Keypress R
6 | X | X | 1000 | Keypress Alt+ | N
7 | X | X | 1000 | Keypress %string%
8 | X | X | 1000 | Keypress Alt+ | O
9 | X | X | 1000 | Keypress Alt+ | Y
10 | X | X | 1000 | Keypress Alt+ | C
11 | IF | PIXEL RANGE | At Location [X:107 Y:134]::Size [W:32 H:13] | CHANGES::50::0::2 | GOTO MACRO LINE | 3

If the process ends completely, and only one instance of the MyApplication is running at one time, then you can use the IF PROCESS NAME EXIST condition again rather than a PIXEL RANGE condition. Something like this at line 8:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1 | AND | 1 | RUN ACTION | RUN PROGRAM | Notepad.exe
2 | IF | PROCESS NAME | NOTEPAD | EXIST | SELECT WINDOW BY NAME | Untitled - Notepad | ELSE | 2 | RUN ACTION | GOTO MACRO LINE | %RETURN%-1
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::(%INTEGER%):%date%_%time%_%random%
4 | X | X | 500 | Keypress %string%
5 | X | X | 500 | Keypress Alt+ | f
6 | X | X | 500 | Keypress xn
7 | IF | INTEGER VARIABLE | %INTEGER% | = | 3 | GOTO MACRO LINE | END | ELSE | 7 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
8 | IF NOT | PROCESS NAME | notepad | EXIST | CONTINUE | AND | 8 | RUN ACTION | RUN PROGRAM | Notepad.exe
9 | RUN ACTION | WAIT SECONDS | 2 | AND | 9 | RUN ACTION | GOTO MACRO LINE | 2
* | END

1 - define the integer var to 1 and run the notepad.exe process 2 - if the process name ‘notepad’ exists then select the notepad window name. ELSE - go to %RETURN%-1 (%return% is the last completed line - so in this case, go back to the start) 3 - set our string variable 4 - 5 - 6 - paste our sting in the window, do an alt+f then ‘xn’ to exit notepad 7 - if our counter int is 3 then goto END. ELSE - increment our counter int by +1 8 - if NOT the notepad process is exists then continue the macro AND run Notepad.exe again 9 - wait 2 seconds AND go back to line 2 minimousemacro_processexiist.gif

User: Festus

Date: Apr 27, 2020 13:08:58 GMT

Naw, won’t work, the application does not exit. The button detection works great. Unfortunately in the end what I was after didn’t work out … I wound up having to code in a temporary loop, something I did not want to do. A frequency value for polling routines would be useful. Thank you.


Select Window by Name - Wildcard Text

URL: https://minimousemacro.proboards.com/thread/253/select-window-name-wildcard-text
Date: Apr 23, 2020 11:59:47 GMT

User: Festus

Date: Apr 23, 2020 11:59:47 GMT

Hi all, I’m using, SELECT WINDOW BY NAME | MyApplication (4/21/2020, 4:48 PM) the Application’s title has a starttime datetime stamp. Is there a way to Wildcard part of the Title ?? ie: MyApplication or: MyApplication (*) or: MyApplication (??/??/ huh.png ?, ??:?? ??) Thank you

User: Steve

Date: Apr 25, 2020 5:08:28 GMT

Unfortunately not, no wildcarding sorry. …but MMM does support date and time variables that might be able to match. Myabe something like: SELECT WINDOW BY NAME | MyApplication (%DATE_M%/%DATE_D%/%DATE_YEAR%, %TIME%) minimousemacro-settings-variables.png

User: Festus

Date: Apr 27, 2020 12:53:44 GMT

Thank you, I shall try that.


Having a rough time with keypress

URL: https://minimousemacro.proboards.com/thread/254/having-rough-time-keypress
Date: Apr 26, 2020 13:21:39 GMT

User: macroman

Date: Apr 26, 2020 13:21:39 GMT

Hi all.  Trying to make a macro with condition logic.  I seem to have gotten through that ok, but i’ve been running into inconsistent results with keypress.  I’ve built the macro entirely in textpad and copy/paste it into MMM.  On one run i’ll get a keypress to show up.  On the next run, nothing.  All of them had been tested individually before i pulled them all together into the larger macro. I checked it TextPad to see if it was saving any hidden characters, and i couldn’t find anything there except spaces and carriage returns.  I’m not sure if there’s some error in the lines around the keypress that would prevent it from running properly, but when i run this macro i only get a repeat of 232323232 now.  Even when the event log shows the proper logic branching to the other keypress lines.  I’ve been trying to piece together proper syntax and operations, but it is a little spread out so I accept that it is completely possible i’ve totally borked this.  I’ve tried the lines with RUN ACTION as well as the current syntax.  Sometimes it works, sometimes no.  Any insights would be much appreciated! Macroman

* | CP Madness
1 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER%::%RANDOM_1-5%
2 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | 5 | GOTO MACRO LINE | Flurry | ELSE | 2 | GOTO MACRO LINE | Ignite
* | Flurry
   3 | X | X | 1500 | KEYPRESS | 7
   4 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER1%::%RANDOM_1-5%
   5 | RUN ACTION | WAIT SECONDS | %INTEGER1%
* | EndFlurry
6 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER2%::%RANDOM_1-5%
7 | IF | INTEGER VARIABLE | %INTEGER2% | LESS THAN | 5 | GOTO MACRO LINE | Ignite | ELSE | 7 | GOTO MACRO LINE | Flute
* | Ignite
   8 | X | X | 1500 | KEYPRESS | 1
   9 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER3%::%RANDOM_1-3%
   10 | RUN ACTION | WAIT SECONDS | %INTEGER3%
   * | Flute
      11 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER4%::%RANDOM_1-5%
      12 | IF | INTEGER VARIABLE | %INTEGER4% | GREATER THAN | 2 | GOTO MACRO LINE | EndIgnite
      13 | X | X | 1500 | KEYPRESS | &
      14 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER5%::%RANDOM_1-3%
      15 | RUN ACTION | WAIT SECONDS | %INTEGER5%
      16 | X | X | 1500 | KEYPRESS | Z
      17 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER6%::%RANDOM_1-3%
      18 | RUN ACTION | WAIT SECONDS | %INTEGER6%
    * | Endflute
* | EndIgnite
* | Shoot
   19 | FOR | I | = | 1 TO 100 | NEXT
      20 | X | X | 1500 | KEYPRESS | G
      21 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER7%::%RANDOM_3-7%
      22 | RUN ACTION | WAIT SECONDS | %INTEGER7%
      23 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER8%::%RANDOM_1-5%
      24 | IF | INTEGER VARIABLE | %INTEGER8% | LESS THAN | 3 | KEYPRESS | 3
      25 | RUN ACTION | WAIT SECONDS | %INTEGER8%
      26 | X | X | 1500 | DEFINE INTEGER VARIABLE | %INTEGER9%::%RANDOM_ 1-5%
      27 | IF | INTEGER VARIABLE | %INTEGER9% | LESS THAN | 3 | KEYPRESS | 2
   28 | FOR | NEXT
* | EndShoot

User: Steve

Date: Apr 27, 2020 3:46:50 GMT

Hi Macroman, Nice use FOR looping. Your logic is bang on. The issue is with your keyboard keypress syntax. These:

3 | X | X | 1500 | KEYPRESS | 7

Should be:

3 | X | X | 1500 | KEYPRESS 7

Your KEYPRESS ACTIONS’s after your IF conditions are ok though ( <www.turnssoft.com/conditions.html#keypress> ). I edited your macro using the MMM editor, took the delim character out of your keyboard keypress’s, and your macro ran ok: minimousemacro_editmacrosyntax.gif


MMMPro sometimes adds “keypress 1” to the keystroke I entered

URL: https://minimousemacro.proboards.com/thread/251/mmmpro-add-keypress-keystroke-entered
Date: Apr 17, 2020 13:22:30 GMT

User: ccchan

Date: Apr 17, 2020 13:22:30 GMT

zGflbYOFDCKxCYPcbBHy.png

Hi,

After reboot, it almost always works normally, but after some time, sometimes it will add a “keypress 1” to any key I press. I took a screenshot of it.

  1. Both MMMPro (macro list cleared to empty) and Notepad are started.
  2. Typing in Notepad is normal (as shown).
  3. Typed in MMMPro, and I only pressed “O”, but it added a “keypress 1” to each “O” I pressed.
  4. Then I typed back in Notepad, and Notepad is always normal, so there should be something with MMMPro.

I do use AutoHotkey and MediaChance’s Multi Keyboard Macros, both deal with keypress and shortcut etc. Right after reboot, MMMPro is normal, then I will fire up AHK and MKM. If later MMMPro gets an error, closing AHK and MKM doesn’t help. Then I have to reboot. But since Notepad is normal before and after, I think the system itself is functioning (just a guess).

My system:

  • Windows 10, 64-bit, 1809
  • Intel i7

Thank you.

Version: Mini Mouse Macro Pro, v7.4.0.0

There are times that MMMPro, AHK, and MKM are working normally together.

Thanks.

User: Steve

Date: Apr 18, 2020 3:10:54 GMT

Hi ccchan,

Thanks for the screenshot.

When MMM records, it will pick up any and all key presses that are sent to the system by a keyboard. I’ve seen the behavior you describe happen before when an old or broken keyboard had damaged keys. The old/broken keyboard would press down on other keys when fingers tapped on the keyboard.

Do you think this is happening to you? Could it be your keyboard?

I don’t know what these other apps do behind the scenes. If you’re running AHK and MKM at the same time as Mini Mouse Macro, then maybe there is a conflict with some of the system resources needed. It’s a long shot, but they are all macro recording software - I assume they are all listening to the system calls.

User: ccchan

Date: Apr 18, 2020 14:06:47 GMT

JFoc0jEJzNqTrrLxeLBk.jpg

Hi Steve,

In the screenshot, I opened both Notepad and MMMPro, then typed in Notepad normally, but typing in MMMPro got an error. Then I typed back in Notepad, and it was normal again. So I don’t think it’s my keyboard’s problem!

Yet I do agree that AutoHotkey and MKM, which also deal with hotkeys/shortcuts, may disturb the “buffers” in some way.

Let me try using it for some time and see if I can provide more info.

Thank you.


Running macro in another program

URL: https://minimousemacro.proboards.com/thread/250/running-macro-another-program
Date: Apr 17, 2020 2:05:32 GMT

User: Logan

Date: Apr 17, 2020 2:05:32 GMT

Okay first off all I want to do is record a macro to move my mouse along a preset path. So I recorded my macro and set my hotkeys and all that, and if I am in the macro application window it works fine, if I am in something like a google tab it works fine. However, when I open a different application, such as a game, when I run the macro the mouse does not move in the application, it’s like if I click out of the game and move my mouse, how do I get the macro to run by moving the mouse and also staying in the game I am running?

User: guest99

Date: Apr 17, 2020 3:17:20 GMT

Hey, Check this out minimousemacro.proboards.com/thread/32/run-game and this minimousemacro.proboards.com/thread/192/mouse-movement-registering-3d-space as a couple of examples that might help

User: Steve

Date: Apr 18, 2020 3:15:13 GMT

Apr 17, 2020 2:05:32 GMT Logan said: Okay first off all I want to do is record a macro to move my mouse along a preset path. So I recorded my macro and set my hotkeys and all that, and if I am in the macro application window it works fine, if I am in something like a google tab it works fine. However, when I open a different application, such as a game, when I run the macro the mouse does not move in the application, it’s like if I click out of the game and move my mouse, how do I get the macro to run by moving the mouse and also staying in the game I am running? Some apps and games will never work with this type of macro software. Mini Mouse Macro needs to interact with Windows (the .NET framework) to do things like play keys, clicks, and mouse movements back. Some games and apps (not all games but some) don’t interact with Windows (and vice-versa) to allow calls to the .NET framework. Mini Mouse Macro needs this interaction to work.


Help, I don’t know what I’m doing?

URL: https://minimousemacro.proboards.com/thread/249/help-doing
Date: Apr 8, 2020 18:33:45 GMT

User: Chuck

Date: Apr 8, 2020 18:33:45 GMT

I guess I don’t know what I am doing because when I run the program I cannot find any data. I copy the entire C drive to drive I: but nothing is there. Can someone please help me! Chuck seaavee@yahoo.com

User: Steve

Date: Apr 8, 2020 19:43:42 GMT

Hi Chuck, You’re going to need to be a lot more specific about what you’re doing and how you’re using Mini Mouse Macro to do it. Mini Mouse Macro probably isn’t the best tool to use to copy large amounts of data around. You’re probably better using some native PowerShell, rsync, or batch.

A few tutorials exist at Turnssoft.com:

Some video demos exist here:

The FAQ is here:

The advanced condition help is here:

The official forum is here:

The forum has heaps of examples and code.

  • Thread moved to Questions and Help forum

input from file to string multiple lines

URL: https://minimousemacro.proboards.com/thread/245/input-file-string-multiple-lines
Date: Mar 26, 2020 18:33:11 GMT

User: oneurt

Date: Mar 26, 2020 18:33:11 GMT

Hi, I couldn’t come up with a good subject line, but I was looking through the INPUT to file examples, but is there a way to have STRING loop through my input.txt file and have its variable defined for each new line? Just an example: my input.txt is: blue purple green I want STRING to first be defined with blue, but then in the loop of my macro I would like String to be declared as purple in the next iteration of my loop. Is this possible? Sorry I don’t have any code.

User: zeak

Date: Mar 26, 2020 21:53:18 GMT

Hi Oneurt, First off, welcome to the forum. So my question is how important is it that only the one string gets updated? Is there a way you could work with multiple strings? Because the ACTION, INPUT FROM FILE lets you input all the lines into MMM.

1 | RUN ACTION | INPUT FROM FILE | VARIABLES::NO_REFRESH::C:\Users\Name\Documents\Calculators\Macros\input.txt

Steve But this does beg the question, is it possible to tell MMM which line to get the string value from.

1 | RUN ACTION | INPUT FROM FILE | STRING::NO_REFRESH::1::C:\Users\Name\Documents\Calculators\Macros\input.txt

After NO_REFRESH I have the number 1 representing to look at the first line of the text file.

1 | RUN ACTION | INPUT FROM FILE | STRING::NO_REFRESH::%INTEGER3%::C:\Users\Name\Documents\Calculators\Macros\input.txt

 or if you could use an INTEGER instead then you could easily control the line you wish to look at.

User: Steve

Date: Mar 28, 2020 2:59:58 GMT

I think this is what your after… The FOR EACH LINE IN FILE condition should do the trick:

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::red
* | FOR_EACH
2 | FOR | EACH | LINE IN | D:\Macro\INPUT\loopcount.txt | DO
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%LINE%
4 | RUN ACTION | MESSAGE PROMPT | STRING=%STRING%:: Value of STRING::1
5 | FOR | NEXT

minimousemacro-stringfromfile.gif

User: Steve

Date: Mar 28, 2020 3:46:48 GMT

ovqiSZMQkcHXJsgduMbm.jpg Mar 26, 2020 21:53:18 GMT

zeak said: Steve

But this does beg the question, is it possible to tell MMM which line to get the string value from.

1 | RUN ACTION | INPUT FROM FILE | STRING::NO_REFRESH::1::C:\Users\Name\Documents\Calculators\Macros\input.txt

After NO_REFRESH I have the number 1 representing to look at the first line of the text file.

1 | RUN ACTION | INPUT FROM FILE | STRING::NO_REFRESH::%INTEGER3%::C:\Users\Name\Documents\Calculators\Macros\input.txt

 or if you could use an INTEGER instead then you could easily control the line you wish to look at. Hi Zeak, Yes this can be done with INPUT FROM FILE already. Check out the examples here <www.turnssoft.com/conditions.html#inputfromfile> that read like this: Consider the following VARIABLES example:

1 | RUN ACTION | INPUT FROM FILE | VARIABLES::REFRESH::D:\Macro\RX\INPUT.txt
2 | RUN ACTION | MESSAGE PROMPT | Value of STRING: %string%::String Value

 INPUT.txt     STRING::Ants     STRING1::Bee This reads INPUT FROM FILE all VARIABLES declared in D:\Macro\RX\INPUT.txt and monitor the the file for changes (REFRESH).  Line 2 runs a MESSAGE PROMPT for the value of %string%.  INPUT.txt declares the value of STRING to be Ants. Consider the following single variable INTEGER example:

1 | RUN ACTION | INPUT FROM FILE | INTEGER::NO_REFRESH::D:\Macro\RX\INPUT.txt
2 | RUN ACTION | MESSAGE PROMPT | Value of INTEGER: %integer%::Integer Value

 INPUT.txt     1000 This reads INPUT FROM FILE to the variable INTEGER declared in D:\Macro\RX\INPUT.txt and do not monitor

User: oneurt

Date: Mar 30, 2020 21:54:09 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Mar 28, 2020 2:59:58 GMT

Steve said: I think this is what your after… The FOR EACH LINE IN FILE condition should do the trick:

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::red
* | FOR_EACH
2 | FOR | EACH | LINE IN | D:\Macro\INPUT\loopcount.txt | DO
3 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::%LINE%
4 | RUN ACTION | MESSAGE PROMPT | STRING=%STRING%:: Value of STRING::1
5 | FOR | NEXT

minimousemacro-stringfromfile.gif HI Steve, Thanks for the reply, this is what I was looking for as I can expand on this example for my macro.


When adding a condition keypress won’t register F1-F12 keys

URL: https://minimousemacro.proboards.com/thread/244/when-adding-condition-keypress-register
Date: Mar 23, 2020 20:26:15 GMT

User: fredrick

Date: Mar 23, 2020 20:26:15 GMT

I want it to keypress the F5 key when the pixel range changes… NDUpAAn.png Any way of sorting this issue? Cheers

User: zeak

Date: Mar 23, 2020 22:12:15 GMT

Hi Fredrick, First off welcome to the forum, So one way I did the F5 key was to press recorder and pressed the F5 key, this gave me the below macro line that you should be able to use in your macro.

1 | 1482 | 350 | 2055 | Keypress f5

or this if you wish to only press the key with mouse movement and with 500 millisecond delay.

1 | X | X | 500 | Keypress f5

Help this helped, let me know if there is anything else you need help with. Cheers, Zeak

User: fredrick

Date: Mar 24, 2020 23:47:51 GMT

Cheers for replying. no it doesn’t help because I want the keypress to happen when the condition of the pixel changes. You cannot do this with just adding that line. The program does not detect the F1-F12 keys when you try to do add a condition and needs to be looked at.

User: zeak

Date: Mar 25, 2020 21:38:01 GMT

I’m not quite understanding why you cannot get it to work, when I do pixel range to trigger a keypress it works for me. Here is a clip of a simple macro to refresh the webpage if a range on it changes. SOkxlRw.gif

User: zeak

Date: Mar 25, 2020 22:59:02 GMT

Hi Steve , Can you please have a look at the following, I think I understand the problem now. when the ACTION of CONDITION IF statement is KEYPRESS function key, KEYPRESS reads it as the letter f and the number 5. I’ve tested three different methods and only when using ENTRY and not CONDITION does it work, As seen in the third test. (1) JEVSEan.gif (2) tYCDu7z.gif (3) sxtNrRf.gif Action Keypress doesn’t work the same as Entry Keypress.

User: Steve

Date: Mar 28, 2020 3:16:28 GMT

ovqiSZMQkcHXJsgduMbm.jpg Mar 25, 2020 22:59:02 GMT

zeak said: Hi Steve , Can you please have a look at the following, I think I understand the problem now. when the ACTION of CONDITION IF statement is KEYPRESS function key, KEYPRESS reads it as the letter f and the number 5. Action Keypress doesn’t work the same as Entry Keypress. Hi Zeak, ‘F5’ with a upper ‘F’ will do a F5 as the function 5 key ‘f5’ with a lower ‘f’ will do a f5 as the text “f5” …and yeah i did notice the KEYPRESS action does behave differently. The ACTION is just throwing everything out as text. Good pick up wink.png

1 | 1107 | 263 | 204 | Left Click
2 | RUN ACTION | KEYPRESS | F5
3 | RUN ACTION | WAIT SECONDS | 4
4 | 1107 | 263 | 1000 | Keypress F5

User: Steve

Date: Mar 28, 2020 3:33:30 GMT

defaultavatar.png Mar 24, 2020 23:47:51 GMT

fredrick said: Cheers for replying. no it doesn’t help because I want the keypress to happen when the condition of the pixel changes. You cannot do this with just adding that line. The program does not detect the F1-F12 keys when you try to do add a condition and needs to be looked at. This will work:

1 | IF | PIXEL COLOR | At Location [X:1243 Y:410] | CHANGES::1::0::0 | RUN MACRO INLINE | D:\Macro\F5.mmmacro

D:\Macro\F5.mmmacro

1 | X | X | 0 | Keypress F5

In this example we look for any pixel change from a X and Y within the command prompt. When a pixel change is detected we load and run D:\macro\f5.mmmacro. That macro does the correct function key ‘F5’ press. Within a command window, F5 will paste the last command. minimousemacro-pixelchangeruninline.gif


How do i count using MMM thx

URL: https://minimousemacro.proboards.com/thread/246/count-using-mmm-thx
Date: Mar 27, 2020 10:10:39 GMT

User: MMM is a sick macro

Date: Mar 27, 2020 10:10:39 GMT

The title is self explanatory

User: Steve

Date: Mar 28, 2020 2:47:25 GMT

There are a few ways to count and loop.
Here are some… for next

1 | RUN ACTION | MESSAGE PROMPT | Looping using an FOR statement::FOR loop::0
* | FOR_LOOP
2 | FOR | I | = | 0 TO 5 | NEXT
3 | RUN ACTION | MESSAGE PROMPT | %I% of 5::%i%/5::1
4 | FOR | NEXT

if loop

5 | RUN ACTION | MESSAGE PROMPT | Looping using an IF statement::IF loop::0
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
* | IF_LOOP
7 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
8 | RUN ACTION | MESSAGE PROMPT | %INTEGER% of 5::%INTEGER%/5::1
9 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | 5 | GOTO MACRO LINE | IF_LOOP

Lines in a file

10 | RUN ACTION | MESSAGE PROMPT | Each line in file::Lines in a file::0
* | FOR_EACH
11 | FOR | EACH | LINE IN | D:\Macro\INPUT\loopcount.txt | DO
12 | RUN ACTION | MESSAGE PROMPT | Line=(%I%) %line%::FOR_EACH Line::1
13 | FOR | NEXT

D:\Macro\INPUT\loopcount.txt

Line 1 - Ant
Tuesday March 24
City side
2020
Mini Mouse Macro Pro

Looks like this…

minimousemacro-counting.gif


Mouse Macro

URL: https://minimousemacro.proboards.com/thread/241/mouse-macro
Date: Mar 9, 2020 18:02:52 GMT

User: angoraa

Date: Mar 9, 2020 18:02:52 GMT

Hi, I was trying to create mouse macro move mouse to x(100 +random 15-20) y(200 +random 35-50). İ cant add random numbers to coordinates. How can i make functions like that.

User: zeak

Date: Mar 9, 2020 23:57:11 GMT

Hi Angoraa, Welcome to the Forum, you can try something like this.

* | Change below value for mouse X position
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::100
* | Change below value for mouse Y position
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::200
* | Time Between Movements
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::500
* | Adding Random Amount
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+%RANDOM_15-20%
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::+%RANDOM_35-50%
* | Action-MouseMove
8 | %INTEGER% | %INTEGER1% | %INTEGER2% | Mouse Movement

User: Steve

Date: Mar 10, 2020 7:45:19 GMT

Or something like this:

1 | %random_115-120% | %random_235-250% | 10 | Mouse Movement

and to test it 10 times:

1 | FOR | I | = | 1 TO 10 | NEXT
2 | %random_115-120% | %random_235-250% | 10 | Mouse Movement
3 | FOR | NEXT

gives this output from the MMM event log:

 03/10/2020 06:42:42.08 PM Macro event: 2 | 119 | 240 | 10 | Mouse Movement
 03/10/2020 06:42:42.19 PM Macro event: 2 | 118 | 242 | 10 | Mouse Movement
 03/10/2020 06:42:42.29 PM Macro event: 2 | 119 | 249 | 10 | Mouse Movement
 03/10/2020 06:42:42.41 PM Macro event: 2 | 117 | 236 | 10 | Mouse Movement
 03/10/2020 06:42:42.51 PM Macro event: 2 | 117 | 238 | 10 | Mouse Movement
 03/10/2020 06:42:42.62 PM Macro event: 2 | 118 | 246 | 10 | Mouse Movement
 03/10/2020 06:42:42.73 PM Macro event: 2 | 118 | 250 | 10 | Mouse Movement
 03/10/2020 06:42:42.84 PM Macro event: 2 | 119 | 243 | 10 | Mouse Movement
 03/10/2020 06:42:42.95 PM Macro event: 2 | 118 | 241 | 10 | Mouse Movement

User: angoraa

Date: Mar 10, 2020 12:08:58 GMT

Thank you guys thats works for me

User: zeak

Date: Mar 12, 2020 21:52:17 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Mar 10, 2020 7:45:19 GMT

Steve said: Or something like this:

1 | %random_115-120% | %random_235-250% | 10 | Mouse Movement

I forgot you can do Random in the X and Y of the Mouse Movement.

User: cyberchipz

Date: Mar 13, 2020 7:07:38 GMT

I like that, I didn’t know that either… good to know.


Software freezes

URL: https://minimousemacro.proboards.com/thread/238/software-freezes
Date: Mar 2, 2020 1:37:15 GMT

User: Hesed

Date: Mar 2, 2020 1:37:15 GMT

When ever i try to go into settings or change key bind, software just freezes and i cant use it anymore how can i fix it?

User: Steve

Date: Mar 3, 2020 5:48:19 GMT

Hi Hesed, Can you shoot through a lot more information on your issue.
Specifically:

  • What version of MMM are you running?
  • What version of OS are you running?
  • By “change key bind” do you mean edit ‘hotkeys’ from the settings page?
  • By “software just freezes” do you mean the software crashes or becomes unresponsive?
  • Is there any information surrounding the issue that you think could be contributing to your problem?

Cheers, Steve.

User: Hesed

Date: Mar 4, 2020 9:24:00 GMT

Sorry for giving such a small amount of information  lipssealed.png

Version MMM: 7.3.0.0 OS: Windows 10 Pro Yes I mean hotkeys. No software doesn’t crash or becomes unresponsive its just freezes and i cant click anything and i can only close it thru task manager.

User: Steve

Date: Mar 4, 2020 20:33:25 GMT

Is the ‘On Top’ option enabled? (bottom left corner of main macro window). If it is turn it off. It could be that the dialog to edit the hotkey is blocked by the main window. minimousemacro-ontop.jpg Reset the Mini Mouse Macro Settings I recommend refreshing the settings. MMM-Uninstall.png Settings - Uninstall - Check ‘Remove Registry Entries’ - Click the bin - Then close the program and open it again. This will clear the current settings.

User: cyberchipz

Date: Mar 9, 2020 14:53:35 GMT

I’ve run into similar issues if I’m trying to Add Condition, for a Message or Input prompt, and I’ve set MMM ON TOP to ON, the dialog box to input the Content, title and delay time show up under MMM editor, and I can’t switch to it to add information.  My workaround was to hit [Enter] using default values, empty string for the content, title, and 0 for time… and then turning off ON TOP;  but, the issue is similar. Yes, since the dialog box has precedence and focus… MMM being ON TOP [X], can be an issue! :-) Steve, is there a way that if MMM has ON TOP checked, and a condition or situation causes this, that MMM can detect it, and minimize MMM before displaying the dialog boxes, or in this case, the Menu area selected, that way it MMM retains the ON TOP setting, but is temporarily minimized, or force the dialog or settings menu to the top, and take precedence over ON TOP setting?

User: Steve

Date: Mar 10, 2020 7:36:47 GMT

KvolAHXIscEA0UEcnLFo.gif Mar 9, 2020 14:53:35 GMT

cyberchipz said: Steve, is there a way that if MMM has ON TOP checked, and a condition or situation causes this, that MMM can detect it, and minimize MMM before displaying the dialog boxes, or in this case, the Menu area selected, that way it MMM retains the ON TOP setting, but is temporarily minimized, or force the dialog or settings menu to the top, and take precedence over ON TOP setting? Short answer, no.
‘On Top’ is on top and will on top of everything. The solution is not to enable on top unless you really need to be on top.


2 macro same time

URL: https://minimousemacro.proboards.com/thread/242/2-macro-same-time
Date: Mar 9, 2020 19:39:37 GMT

User: habil

Date: Mar 9, 2020 19:39:37 GMT

Hi i’m newbie to MMM.i want to write basic 2 macros like first click left wait 2 second and click left for every 5 minutes second keypress 7 for every 60 minutes but If 2 macros intersect, I want the first to stop and the second to work. Then the first macro should continue where it left off.how can i priority for first macro?

User: zeak

Date: Mar 9, 2020 21:54:46 GMT

Hi Habil, Welcome to the forum, Does it need to be in two separate macros? If what I can gather you want to left click the mouse every 5 minutes and every 60 minutes you want to press key 7. If that’s the case there are 12 5 minute intervals in 60 minutes, so we can make it on the twelfth to do the key press instead of mouse click.

User: habil

Date: Mar 9, 2020 22:25:19 GMT

Single macro is better for me but i dont know how to write if first part of macro ( mouse click) intersect to second part( keypress) do second part than turn to first part. Can u help me to write to MMM. Thank you for answer smiley.png

User: zeak

Date: Mar 9, 2020 23:39:53 GMT

is the click every 5 minutes or every 2 seconds?

User: zeak

Date: Mar 9, 2020 23:48:15 GMT

Give this a try.

* | Change below value for mouse X position
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::900
* | Change below value for mouse Y position
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::600
* | Counter for Intervals
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::0
* | Actions-MouseClick
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::+1
5 | IF | INTEGER VARIABLE | %INTEGER2% | IS | 12 | GOTO MACRO LINE | Action-Keypress
6 | %INTEGER% | %INTEGER1% | 0 | Left Click
7 | RUN ACTION | WAIT MINUTES | 5
8 | RUN ACTION | GOTO MACRO LINE | Action-MouseClick
* | Action-Keypress
9 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::0
10 | X | X | 0 | Keypress 7
11 | RUN ACTION | WAIT MINUTES | 5
12 | RUN ACTION | GOTO MACRO LINE | Action-MouseClick

A Question about syntax?

URL: https://minimousemacro.proboards.com/thread/228/question-syntax
Date: Feb 13, 2020 16:24:09 GMT

User: cyberchipz

Date: Feb 13, 2020 16:24:09 GMT

So, I’ve noticed a number of particular aspects of coding with MMM.  And, if at any time you can just point me to a section in documentation that I’ve yet to read, please.. that’s just fine, I can expand if I don’t understand it after reading it.  Hopefully this will save you some time. So MMM uses both the vertical line “|” and “::” a lot… if they have names, I’d like to know them.  Anyway, I’ve noticed the bar | seems to serve as a separator between commands, variables, and other required parameters when using a key word.  It seems that the number and order of those are very specific; but, I was wondering how you would describe the function of the “|” bar…  and the same for the “::” which seems to be some kind of math or assignment function operator.  So a few words about them would be helpful. KEY WORDS: I was thinking an alphabetical list of KEY WORDS would be something useful… and while and when I have time, I would work on that.  But, one question right now… I’ve noticed that strings, when used as a parameter doesn’t require any quotations… lol, learned that when %string% | IS | “YES” kept evaluating to false when trying to use “YES/NO” prompts.  But, can I use a single “:” colon in the string without any problems… IOW is “:’ a colon a KEY WORD or symbol? Along those same lines… Are any particular symbols forbidden in a STRING?   It can be difficult to troubleshoot enough… and I’m not familiar with DEBUG yet… that’s another task I will be doing, but inserting forbidden characters into the wrong place can be quite troublesome… and I’m just trying to save myself a few hair pulling moments when things don’t work.   I’ve started using the event log a bit, and it can be somewhat helpful, moreso with time… just knowing something is wrong is helpful… That dreaded RED number indicator when I run the code! lol  Between that, and my minor dyslexia… it’s a wonder that I learned to code at all. BTW, is there any way to change background and font color in MMM at all?  As I mentioned before, my aging eyes are having a really hard time with the bright screen.  Like I said before… I have an app that inverts colors on the Browser when I need it, so this thread and post is black background with white for me… very soothing.  But, I can’t control apps that well.   NOTEPAD is just as bad… and, I lost some faith with Notepad++; but that was when Sourceforge went though some (cough) buggy days with some unwanted code riders imbedded in the install packages! 8-o ***So, to summarize: “|” bar, “::” double colons, KEYWORDS, Forbidden Symbols in Strings, and Background and Font Color in MMM? Thanks… I realize what a labor of love this program is… but.. I think it’s great… I believe I realize you’re also trying to keep it MINI, and so probably fighting bloating… and so I realize that’s a primary intention… and will adjust my expectations accordingly… Plus your time… as a developer I appreciate what a project like this entails… fixes, changes, etc… can really eat up the time.  I really do appreciate the time you give!  I can relate!  Thank you so much! Chip

User: Steve

Date: Feb 14, 2020 5:15:12 GMT

Chip thanks again for another great post. I’ll answer off as best I can. 1. “So MMM uses both the vertical line “|” and “::” a lot… if they have names, I’d like to know them. Anyway, I’ve noticed the bar | seems to serve as a separator between commands, variables, and other required parameters when using a key word. It seems that the number and order of those are very specific; but, I was wondering how you would describe the function of the “|” bar… and the same for the “::” which seems to be some kind of math or assignment function operator. So a few words about them would be helpful.” The vertical line “ | “ or ‘pipe’ is the default delimiter value. Notice that this is “[space]|[space]”. The delimiter values separate the key macro parts.
For example:

20 | 1240 | 191 | 15 | Mouse Movement
21 | RUN ACTION | DELETE FILE | P:\folder1\folder2\file.jpg

Line 20 the delimiter values separates [LINE NUMBER] | [MOUSE X] | [MOUSE Y] | [ACTION] Line 21 the delimiter values separates [LINE NUMBER] | [ACTION | [ACTION PARAMETER1] | [ACTION PARAMETER2] The delimiter is essential as it, starting from the left, instructs the macro machine (what i call the code that processes the macro lines) how to process the macro.
MMM is quite linear. Each line is read one at a time, left to right, top to bottom. This is why line numbers and ‘relisting’ is important to control the macro flow (you’ve probably figured this out). Delimiter values can be changed in the settings minimousemacro-options-delim.jpg “::” is used to separate actions parameters that have multiple sections. Conditioner this line:

3 | IF | STRING VARIABLE | %LINE% | CONTAINS | %date% - Out | OUTPUT TO FILE | E:\out.txt::APPEND::%file%

Here we have the delimiters ‘ | ‘ breaking up the conditions line into two sections; an IF condition and an OUTPUT TO FILE action. The action parameter is further broken up by the ‘::’ separator to split three values [param1]::[param2]::[param3].
When this line is fed into the macro machine and if the IF condition where to evaluate to TRUE the OUTPUT TO FILE action runs.
OUTPUT TO FILE needs parameter values. The macro machine is expecting the last delimiter after the action to have these params separated by ‘::’ 2. “KEY WORDS: I was thinking an alphabetical list of KEY WORDS would be something useful… and while and when I have time, I would work on that. But, one question right now… I’ve noticed that strings, when used as a parameter doesn’t require any quotations… lol, learned that when %string% | IS | “YES” kept evaluating to false when trying to use “YES/NO” prompts. But, can I use a single “:” colon in the string without any problems… IOW is “:’ a colon a KEY WORD or symbol?” The configured delimiter value is a key word. Trying to declare say ‘ | ‘ as a STRING will cause MMM to split the line at the delim.

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::delim is ' | ' ok?
2 | RUN ACTION | MESSAGE PROMPT | %STRING%::::0

Playback error: 20 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::delim is ‘ | ‘ ok? - Condition execution error [Unexpected Internal Error]: Index was outside the bounds of the array. Notice the exception. The macro machine knows that DEFINE STRING VARIABLE is a standard fixed length when reading from left to right. Adding that extra delim causes the array indexes to be out. Other than that ‘::’ within parameter values could do the same, however most of the time (im almost 100% confident) MMM will catch that and either ignore it or throw a warning in the event log detailing bad formatting. 3. “BTW, is there any way to change background and font color in MMM at all? As I mentioned before, my aging eyes are having a really hard time with the bright screen. Like I said before… I have an app that inverts colors on the Browser when I need it, so this thread and post is black background with white for me… very soothing. But, I can’t control apps that well. NOTEPAD is just as bad… and, I lost some faith with Notepad++; but that was when Sourceforge went though some (cough) buggy days with some unwanted code riders imbedded in the install packages! 8-o”
Not the background unfortunately, but the text size and color can be. minimousemacro-textandfont.jpg 4. “Thanks… I realize what a labor of love this program is… but.. I think it’s great… I believe I realize you’re also trying to keep it MINI, and so probably fighting bloating… and so I realize that’s a primary intention… and will adjust my expectations accordingly… Plus your time… as a developer I appreciate what a project like this entails… fixes, changes, etc… can really eat up the time. I really do appreciate the time you give! I can relate! Thank you so much!” Thank you Chip.  I am not a developer by trade and programing is something I enjoy that compliments my main discipline….i don’t even work on Windows OS anymore lol  The little project has come a long way from what it started out to be.  I think it’s got a couple of years left in it.  Thanks again Chip!

User: cyberchipz

Date: Feb 15, 2020 9:38:59 GMT

edited: Let me add, changing font and color helps a lot!  I liked your choices, but without a scroll… 18 is a bit too big. 14 willdo… Thanks for the suggestion. So, I hear you basically saying that the pipe, | and :: are the only two keywords… MMM primarily looks only for those two things, except for what follows them, which are the parsed keywords.  I’m presuming that anything after the pipe in a comment is ignored, IOW * | is a comment and | and :: would be ignored. As far as a colon in a string declaration, yep… it works. I love that you don’t require quotes for a string.  First time I ever saw it.  I remember when… (ok.. no more wall of text tonight) lol Well, maybe a little.. On a personal note… I’m in a battle with prostate cancer, so if I disappear… well… but, anyway… I hope to stick around… I would love to work on a MMM dictionary… grammar and syntax, purely voluntary of course (and not sure it’s needed now as much).  And, when I asked, I now realize that all the keywords needed for that are built into the Add Condition statement builder.  In fact, it’s a dictionary in itself, as well as a syntax teaching tool.  What a marvelous thing!  Plus it really reduces typos.. It’s just soooo bright! in more ways than one. ;-)  Thank goodness this board works well with a Chrome app “High Contrast”  (sigh) My eyes give out on me before my enthusiasm.  But even MS hasn’t made a dark theme to write on with Word.  Yes, Dark Theme, but the page one writes on is still white.  I’ve tried to make it black; but it prints that way too! (MMM run REMOVE all font code White on Black)  I just realized that’s possible!, ironically the parts of the page that have no letters are still white.  Before we got Trump for a president, the computer world was more focused on providing computer aids for the Handicapped. (oops, no politics… sorry)

User: Steve

Date: Feb 17, 2020 9:16:08 GMT

Thanks Chip! I will have a look into the back ground color. Shouldn’t be too hard to get added. I hope everything goes well with you mate. Sorry to hear about that…I hope you don’t disappear, I appreciate all the banter on the forum! Cheers again Chip!

User: cyberchipz

Date: Feb 25, 2020 23:28:01 GMT

You must be swamped… haven’t seen you on for days..  I still seem to be able to workaround most issues… Definitely I must take care not to leave out or misspell a LineLabel, naturally, that gives a very rude end of macro … non, event.  It would be nice to have the system throw a simple error, on that.  Line lable LABEL not found at   (line of code using label)  when it comes to that

User: Steve

Date: Feb 26, 2020 5:48:13 GMT

Yep its been a crazy couple of weeks. Definitely I must take care not to leave out or misspell a LineLabel, naturally, that gives a very rude end of macro … non, event. It would be nice to have the system throw a simple error, on that. Line lable LABEL not found at (line of code using label) when it comes to that Can you expand on this?
So your saying rather than MMM not finding the line label and going to the end of the macro it should perhaps return FALSE and just continue?

User: cyberchipz

Date: Feb 27, 2020 5:55:22 GMT

Can you expand on this? So your saying rather than MMM not finding the line label and going to the end of the macro it should perhaps return FALSE and just continue? That might be even more confusing… No, actually I like that it stops running the macro; but it isn’t throwing an error, or giving any indication that it couldn’t find the line label, it just goes to the end of the macro, but the user isn’t sure what happened or where in the code it happened .  Since in MMM, you can give out an error message, I think it would be nice if , when it doesn’t find a line label, it would, yes, go to end of macro and stop running, OR… stop running at the line that requested the goto and had the line label, or, AND post a (red at the bottom of the macro) Error message

saying something line:  Line label LABEL not found at (line of code using label) (OR whatever you choose to tell us) indicating the last line that it was executing, when it was trying to MACRO GOTO LINE | NonExistentLabel

Is that a bit clear er… as it is now, it just kinda leaves you hanging wondering… uh? what happened?  I knew about when it stopped doing what I wanted, so I remembered what you told me about how it looks for line labels, and eventually noticed the typo in the * | LineLable(sic). Of course… my problem is I’m Monkey see, Monkey do kinda guy when it comes to coding.  So, when I saw that you, or zeak, were using under_scores in the line labels Line_Label and I normally use LineLabel, for example, an old habit, I started underscoring some, and using my old habits other times… and that is where I messed up.  I underscored one, and didn’t the other.  Which when troubleshooting, can be a more difficult, because one is looking for a logical error, and with or without an underscore, it reads the same in my mind.  So, just a teensy bit of a head scratcher for a few moments… Did it throw an error, and I missed it?   Because when I went to look at the code, if the Macro doesn’t END, and is just STOPPED, I clear… But, if my memory serves me, I think I can only clear an Error by viewing it… and I don’t recall one when it couldn’t find the label.

User: Steve

Date: Feb 27, 2020 6:16:36 GMT

Yep makes sense thanks Chip. I’ll look to adding that in the next update
smiley.png

User: cyberchipz

Date: Feb 27, 2020 7:06:51 GMT

Thanks… lol… sorry to be making more work… wish I could write the code for ya! ;-)

User: Steve

Date: Mar 1, 2020 3:56:34 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 27, 2020 5:55:22 GMT

cyberchipz said: Can you expand on this? So your saying rather than MMM not finding the line label and going to the end of the macro it should perhaps return FALSE and just continue? That might be even more confusing… No, actually I like that it stops running the macro; but it isn’t throwing an error, or giving any indication that it couldn’t find the line label, it just goes to the end of the macro, but the user isn’t sure what happened or where in the code it happened .  Since in MMM, you can give out an error message, I think it would be nice if , when it doesn’t find a line label, it would, yes, go to end of macro and stop running, OR… stop running at the line that requested the goto and had the line label, or, AND post a (red at the bottom of the macro) Error message

saying something line:  Line label LABEL not found at (line of code using label) (OR whatever you choose to tell us) indicating the last line that it was executing, when it was trying to MACRO GOTO LINE | NonExistentLabel

Added it today. It will make it’s way to the event log as a warning - not an error. It can be deliberate for someone to intentionally not goto a line label/number, so its a WARNING not ERROR. It will make it’s way to the next update. Thanks for this one. minimousemacro-gotolinelabelnotification.jpg

User: cyberchipz

Date: Mar 9, 2020 12:57:48 GMT

Yes, I see… not wanting to go to a line label that does not exist, instead goes to end of Macro… could be useful… never thought of that. lol


Play macro from within another macro

URL: https://minimousemacro.proboards.com/thread/203/play-macro-another
Date: Oct 16, 2019 1:07:59 GMT

User: ilcaa

Date: Oct 16, 2019 1:07:59 GMT

i want to play a macro2 from within macro1.  i see a LOAD MACRO - which just stops macro1 and plays macro2 and ADD MACRO FROM FILE  which appends a macro2 steps and the end of macro 1 i am running a loop, and instead of doing it with 1 macro i want to split it up into 2 macros, and in the middle of my loop call macro2, then once its done continue with next macro1 loop. is this possible?  thanks

User: zeak

Date: Oct 16, 2019 20:39:41 GMT

Hi Ilcaa, Welcome to the forum, You can do this by using the action RUN PROGRAM to open MMM with the argument to open your macro2 using :: please see my example below.

1 | RUN ACTION | RUN PROGRAM | C:\Users\Zeak\Macros\MiniMouseMacro.exe::C:\Users\Zeak\Macros\Macro2.mmmacro

This is given that both the program and the macro are located in the same folder, if you store your macros in a different location then refer to that location.

User: Steve

Date: Oct 27, 2019 4:18:18 GMT

Here’s another example.  In this example Macro1 and Macro2 are communicating by sending UDP packets strings internally. When Macro2 receives a UDP packet with the string “MACRO2” is copies a string to the clipboard and then sends a UDP packet to Macro1 with the string “MACRO1”. Macro1 waits for this UDP packet then takes the value of CLIPBOARD to use within the DRAW action.  It loops through this 15 times in a FOR loop. Macro1:

1 | RUN ACTION | SET TITLE | Macro1
2 | FOR | I | = | 0 TO 15 | NEXT
3 | IF | INTEGER VARIABLE | %I% | IS EVEN | MOD 2 = 0 | DEFINE STRING VARIABLE | %STRING%::RED | ELSE | 10 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::BLUE
4 | RUN ACTION | SEND UDP PACKET STRING | 127.0.0.1::41414::MACRO2
5 | IF | RECEIVE UDP PACKET STRING | 127.0.0.1::41415::MACRO1::0 | STRING FOUND | SEARCH FOR STRING | CONTINUE
6 | RUN ACTION | DRAW | TEXT::AT LOCATION [%CLIPBOARD%]::COLOR [%STRING% 3]::STRING [%TIME%]::FONT [Segoe Print, 15, Regular]::TIME [2 250]::WAIT NO
7 | FOR | NEXT

Macro2:

1 | IF | RECEIVE UDP PACKET STRING | 127.0.0.1::41414::MACRO2::0 | STRING FOUND | SEARCH FOR STRING | CONTINUE
2 | RUN ACTION | SET TITLE | Macro2
3 | RUN ACTION | COPY TO CLIPBOARD | %RANDOM_200-1500% %RANDOM_200-800%
4 | RUN ACTION | WAIT MILLISECONDS | 1000
4 | RUN ACTION | SEND UDP PACKET STRING | 127.0.0.1::41415::MACRO1

kTCujJW.gif

User: jeff

Date: Mar 7, 2020 2:18:19 GMT

Unfortunately, these examples do not meet my goal. I was hoping to write multiple macro files that would essentially act as function. My main one would call the macros based on if statements, i.e. (main macro) If X, run macro XYZ (main macro waits, macro XYZ runs) (XYZ finishes running, main macro runs) If Y, run macro QRS (etc) Basically wanted to do this to help keep things straight in my mind and simplify my problems and hone my focus. Thinking about it, maybe just being able to comment would help, not sure if that is possible?

User: Steve

Date: Mar 7, 2020 3:28:12 GMT

XmNdYKhXPVKcjehSJmta.jpg Mar 7, 2020 2:18:19 GMT

jeff said: Unfortunately, these examples do not meet my goal. I was hoping to write multiple macro files that would essentially act as function. My main one would call the macros based on if statements, i.e. (main macro) If X, run macro XYZ (main macro waits, macro XYZ runs) (XYZ finishes running, main macro runs) If Y, run macro QRS (etc) Basically wanted to do this to help keep things straight in my mind and simplify my problems and hone my focus. Thinking about it, maybe just being able to comment would help, not sure if that is possible? Hi jeff

Yep this logic will work with MMM. If your want to check out comments, see this post minimousemacro.proboards.com/thread/213/comments . These actions loadmacrofromurl , addmacrofromfile , and addmacrofromfile add macro’s in statically. Another way, probably a better way, is to use a FOR EACH LINE IN FILE RUN statement to call a function.
Like this: call_messageprompt.mmmacro is the main macro that contains the logic to call other macro files. In this example, one condition evaluates to call the messageprompt.mmmacro file. Note line 7 of this macro is long as it contains two AND actions and an ELSE statement call_messageprompt.mmmacro

* | VARIABLES
1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::FALSE
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1
* | FUNCTION_RunMacro
3 | IF NOT | BOOLEAN VARIABLE | %BOOLEAN% | IS | TRUE | GOTO MACRO LINE | DOWN 2
4 | FOR | EACH | LINE IN | %STRING% | RUN
5 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::FALSE
* | FUNCTION_RunMacro_END
* | MAIN
6 | RUN ACTION | MESSAGE PROMPT | Hit 'OK' to evaluate the condition::check::0
7 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | 6 | DEFINE STRING VARIABLE | %STRING%::D:\Macro\Messageprompt.mmmacro | AND | X | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::TRUE | AND | X | RUN ACTION | GOTO MACRO LINE | FUNCTION_RunMacro | ELSE | X | RUN ACTION | GOTO MACRO LINE | END
* | END
8 | RUN ACTION | MESSAGE PROMPT | %integer% GTR 6::End of File

messageprompt.mmmacro

1 | RUN ACTION | MESSAGE PROMPT | Integer = %integer%::(%integer%/6)::1
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
3 | RUN ACTION | MESSAGE PROMPT | Integer = %integer%::(%integer%/6)::1
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
5 | RUN ACTION | MESSAGE PROMPT | Integer = %integer%::(%integer%/6)::1
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1

minimousemacro-functioncall.gif

User: jeff

Date: Mar 7, 2020 6:07:06 GMT

I didn’t think about defining strings from the file then looping through them, that is pretty clever and will suit my purposes. Thanks! Also, the comment system is really nice.

User: Steve

Date: Mar 9, 2020 3:43:40 GMT

Version 7.4 was released today with a new action RUN MACRO INLINE. It’s better suited than the FOR condition above for calling inline functions. See <www.turnssoft.com/conditions.html#runmacroinline> . The RUN MACRO INLINE action runs a saved macro file inline before progressing the macro. Consider the RUN MACRO INLINE example statement below taken from a macro condition:

1 | RUN ACTION | MESSAGE PROMPT | Start
2 | RUN ACTION | RUN MACRO INLINE | D:\Macro\Calculate.mmmacro
3 | RUN ACTION | MESSAGE PROMPT | End

The example macro above first will run a MESSAGE PROMPT ‘Start’ then will proceed to execute all the macro lines within the ‘Calculate.mmmacro’ file. NOTE that the macro file will run without any macro flow control. This means that FOR loops and GOTO statements within the selected file when run inline will not work.


Mouse Scroll Wheel events not supported?

URL: https://minimousemacro.proboards.com/thread/13/mouse-scroll-wheel-events-supported
Date: Apr 26, 2018 5:35:55 GMT

User: traycerb

Date: Apr 26, 2018 5:35:55 GMT

Forgive me if this is mentioned somewhere, but in looking at the FAQ and the forum, I couldn’t find an answer one way or the other to the following question:  Is mouse scroll wheel recording possible? I have tried making sure the “Mouse” checkbox is enabled, but when I use scrolling, on both a touchpad and with an actual mouse, nothing is recorded.  I didn’t see anything in the settings to suggest a cause.  Is mouse scrolling just not supported? Having just started to try out mini mouse macro, I’ve been very impressed by it’s support for editing macros, for conditions (which I have not yet used but plan to), and it’s overall ease of use, but not having ouse scroll is challenging to work around  I’m hoping it’s something I’m doing wrong, but, in any case, it’s a quite nice bit of software, and either way I hope soon to send a donation your way.

User: Steve

Date: Apr 27, 2018 2:16:20 GMT

Hi, Thank you for your post. Unfortunately mouse wheel scroll recording has not been added in but it should be. I’m part way through a big update for MMM, adding in a few other new features, and will definitely look to adding mouse scroll recording options into the update.
Thank you again for the suggestion. Regards, Steve. EDIT

  • With version 6.7 mouse scroll playback is supported. At this stage recording mouse wheel scroll is still not supported.
1 | X | X | 500 | Mouse Wheel Scroll Up
2 | X | X | 500 | Mouse Wheel Scroll Up
3 | X | X | 500 | Mouse Wheel Scroll Up
4 | X | X | 500 | Mouse Wheel Scroll Down
5 | X | X | 500 | Mouse Wheel Scroll Down
6 | X | X | 500 | Mouse Wheel Scroll Down
7 | X | X | 500 | Mouse Wheel Scroll Down
8 | X | X | 500 | Mouse Wheel Scroll Down

User: Viridel

Date: Jul 20, 2019 20:41:35 GMT

It appears that the scroll triggers 3 pixels each time. Is there a way to either trigger a specific number of pixels on the scroll (say 100), or have it execute the scroll #number of times (say 33), rather than have to insert the line 33 times individually (and then have the scroll up the same number of times) to get back to the top?

User: Steve

Date: Jul 22, 2019 7:13:20 GMT

Short answer is no.
Something like this: Mouse Wheel Scroll Up x20 would be good. I’ll look into adding something like this to the next update (hopefully dropping soon).
As an alternate a quick for loop could do the trick. A little messy but it would work:

2 | FOR | I | = | 1 TO 20 | NEXT
3 | X | X | 10 | Mouse Wheel Scroll Up
4 | FOR | NEXT

User: Dave

Date: Dec 6, 2019 3:23:19 GMT

Did mouse wheel recording ever get added? Have latest version and nothing appears in the macro list when scrolling the wheel.

User: Steve

Date: Dec 7, 2019 3:42:06 GMT

Hi Dave Mouse wheel playback is supported but recording mouse wheel scrolling is not. Mouse wheel events need to be added manually.

User: Delta

Date: Feb 29, 2020 14:34:47 GMT

Hi, Is there a possibility to support CTRL+ Mouse wheel,

3 | X | X | 10 | CTRL+ Mouse Wheel Scroll Up

to be able to zoom in and out inside a browser? Thanks

User: Steve

Date: Mar 1, 2020 2:17:37 GMT

Feb 29, 2020 14:34:47 GMT Delta said: Hi, Is there a possibility to support CTRL+ Mouse wheel,

3 | X | X | 10 | CTRL+ Mouse Wheel Scroll Up

to be able to zoom in and out inside a browser? Thanks It can be done with the current version (7.3) but the syntax is a little different.
This is what it would look like:

1 | 200 | 200 | 1000 | Left Click
2 | X | X | 150 | Keypress Ctrl+ |  | Key Down
3 | X | X | 200 | Mouse Wheel Scroll Up | loop 3::100
4 | X | X | 150 | Keypress Ctrl+ |  | Key Release

Line 1 - Selects the browser window at mouse X 200 and mouse Y 200 with a Left Click Line 2 - Holds the ctrl key down Line 3 - Does 3 Mouse Wheel Scroll Up events with 100ms wait between each event Line 4 - Releases the ctrl key with a Key Release event


Need to code quick keyboard cut and paste type macro.

URL: https://minimousemacro.proboards.com/thread/237/code-quick-keyboard-paste-macro
Date: Feb 27, 2020 8:02:27 GMT

User: cyberchipz

Date: Feb 27, 2020 8:02:27 GMT

Not sure exactly how to approach this… We are unable to cut and paste on this one site … there’s nothing that can be done about that. However, if I want to quickly type something into it… not sure what I need to do… I know it would possibly need to loop through text… and put it into a location I specify, an input box in the app. Since I can’t paste… I thing MMM would do this. We have to put messages in Russian.  We have someone who will create the message; but only I can put into a system message. So, if I receive a message, say from google translate, or an email .  I would like to copy the message… and have MMM put it into the text box.  I can’t just paste it. I’ve only coded for mouse clicks and messages… and logic.. could you/someone point me the way?  Perhaps it would involve the clipboard… though the system won’t accept paste… MMM could type it in for me perhaps? I could generate the code to use INPUT BOX to accept and paste the message… and then click the box I want it to put the information. Click OK on INPUT BOX, and MMM does the rest…  I’m also thinking it would be short; but a bit foggy on the keywords. Thanks. Chip Ideally, when the OCR is built, I would convert this into a translator type macro that would select area with words on screen, convert to text… paste into Google translate, translate to English, then type reply, translate to foreign language… copy and paste where needed as response.

User: Steve

Date: Feb 27, 2020 9:16:54 GMT

Chip can you break it down a little further in bite sizes. Something like:

  1. Copy the text
  2. Input box then paste the text. Save as STRING1
  3. Click on a page
  4. Paste STRING1 out

User: cyberchipz

Date: Feb 28, 2020 13:13:41 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Feb 27, 2020 9:16:54 GMT

Steve said: Chip can you break it down a little further in bite sizes. Something like:

  1. Paste STRING1 out I remember seeing an example… somewhere… but it was a long time ago.. one of the first examples I saw where you pushed a keystroke to a text file, and saved it… (sigh) sorry… I just can’t find it.  I’ll keep looking in the meantime. Turns out it was that simple:
4 | RUN ACTION | KEYPRESS | %STRING%

Geez… brain fart…

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
2 | RUN ACTION | INPUT BOX | Enter the message to display::Input String::STRING
3 | RUN ACTION | MESSAGE PROMPT | Click on input area and hit enter to continue.::Go to input area::0
4 | RUN ACTION | KEYPRESS | %STRING%

Thanks for trying to help me… I understand now why the confusion, in the end it was so easy… I don’t know what my problem was… Actually… for some reason I thought keypress was a single keystroke, and was looking for a whole line thing, so I didn’t re-read keypress in the conditions page.  As soon as I did (I was thinking of using FOR/NEXT) I read it and hey… it does a whole line. lol


Compare %INTEGER% GREATER THAN %INTEGER5% not allowed?

URL: https://minimousemacro.proboards.com/thread/236/compare-integer-greater-integer5-allowed
Date: Feb 23, 2020 9:28:18 GMT

User: cyberchipz

Date: Feb 23, 2020 9:28:18 GMT

Why am I not allowed to use any %INTEGER% greater than %INTEGER4% in an IF statement? To be honest… this doesn’t always happen to me… I think.. or I’ve just learned to work around it… If I invert the logic, it allows %INTEGER5% or higher to be assigned in the first position. I’m trying to make:

17 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | %INTEGER5% | GOTO MACRO LINE | LookAgain

doesn’t work but

17 | IF | INTEGER VARIABLE | %INTEGER5% | GREATER THAN | %INTEGER% | GOTO MACRO LINE | LookAgain

will be accepted… even if I edit the line manually and change it to the first example above… it won’t run the code… sort of… like that %INTEGER2% problem (didn’t test the 2nd accepted option).  Add Condition won’t even add the variable. As you can see in the images… it doesn’t show in the add code line when I type it because it’s red, naturally.  but, why is it red? But it won’t let me use %INTEGER5% in the Add Condition Box.  I have to settle for:

17 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | 10 | GOTO MACRO LINE | LookAgain

And add it manually. h0wZltFmDErpkjgIZexG.png rAplGdXprYzoqLzPffQu.png Any idea?  BTW, drag and drop works nicely… but entering link did NOT, which I am willing to do to save server space… but it’s not working for me.

User: cyberchipz

Date: Feb 25, 2020 23:14:30 GMT

OK, here’s what I noticed. It happens in the Add Conditions… possible only. I discovered when I had edited, or something… that IF had gotten left off of the statement.  Not sure how.  I noticed that sometimes you have to toggle IF in the Add Condition section. (Especially if I go back in without a CLEAR, to use a similar or identical statment, reselcting already highlighted commands) And, I’ve seen Steve do it too. But, even toggling the IF doesn’t seem to allow integers above 4.  I can reverse the logic if there’s only one integer above 4, but when there’s two, since it won’t accept above 4 as as the 2nd operator in an IF statement I have to edit it manually, and put it in.  When I do that, if nothing messes up the statement, it seems to work.  So that’s a workaround. I’m not sure if I have this understood completely yet; because the statement somehow was missing IF a number of times, and I’m not sure if that is what caused the invariable run time failure… but no warning is given by the system when it encounters the bad statement, so it may have gone unnoticed for a bit.  I’m on the alert now, and have been able to work around it since then, so far. Still, I’m pretty sure it’s not recognizing anything above 4 as the second variable after a logical condition in an IF statement in the Condition builder.  I’m noticing this more and more because I’m getting proficient at using it, and it’s easier than writing the code now I’m getting that down.  Also, I’m not proficient at using the FOR statement in the Condition builder, it look like it either needs tweaking, or I don’t have the sequence down yet. As an aside… I’ve looked over the code on the pixel color/range and it looks straight forward… and zeak is right, it just looks at the area specified by the code.  Since he hasn’t responded to what he means by ‘finding’ an image.  I’m not sure I can go further with that. Though, I might, if my health improves… be able to assist in development given time.  that is definitely a form of BASIC or just plain BASIC, for sure… and I’m fluent in it.  Except for direct memory access and system calls, which I can pick up as I go; I pretty much can read it like a good novel.  The hardest part would be getting used to Steves personal structures when passing parameters and such. Although why I would want to go back to stressing over code again is beyond me… lol, I’m certainly doing it with the workaround issue.   In this later part of my life, I have a love hate relationship with code… It was/has been my first love… and yet, it can get tiresome.  Especially with my failing eyesight.  I am curious as to what Development environment I’d need to do it. Anyway, if I have more to say on that subject; I’ll either comment in existing and related posts, or start a new thread. Cheers… Chip

User: Steve

Date: Feb 26, 2020 5:43:43 GMT

Hmm ok. First, this might help with the screen shots minimousemacro.proboards.com/thread/121/embed-image-post and this might help with the integers:

1 | RUN ACTION | INPUT FROM FILE | VARIABLES::REFRESH::D:\Macro\INPUT\input.txt
* | Loop
2 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | %INTEGER5% | MESSAGE PROMPT | %integer% is LESS than %integer5%::<%integer5%::0
3 | IF | INTEGER VARIABLE | %INTEGER5% | > | %INTEGER10% | MESSAGE PROMPT | %integer5% is GTR than %integer10%::%integer5%>::0
4 | RUN ACTION | INPUT BOX | Again?::goto 1::PROMPT_YES_NO::BOOLEAN
5 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | GOTO MACRO LINE | Loop

D:\Macro\INPUT\input.txt

INTEGER::1
INTEGER1::10
INTEGER2::20
INTEGER3::30
INTEGER4::40
INTEGER5::5
INTEGER6::60
INTEGER7::70
INTEGER8::80
INTEGER9::90
INTEGER10::100
STRING::Ant
STRING1::Bee
STRING2::Cat
STRING3::Dog
STRING4::%CLIPBOARD%
STRING5::%DATE%
STRING50::%ENV_HOMEPATH%

minimousemacro-integervariablesinputfromfile.gif KvolAHXIscEA0UEcnLFo.gif Feb 25, 2020 23:14:30 GMT

cyberchipz said: I noticed that sometimes you have to toggle IF in the Add Condition section. (Especially if I go back in without a CLEAR, to use a similar or identical statment, reselcting already highlighted commands) And, I’ve seen Steve do it too. Yes, the Add Condition page keeps the last entry. This can be convenient if you have a series of similar entries or want to use the same one as you previous did. This can be inconvenient if you want to do a new condition. Still, I’m pretty sure it’s not recognizing anything above 4 as the second variable after a logical condition in an IF statement in the Condition builder.  I’m noticing this more and more because I’m getting proficient at using it, and it’s easier than writing the code now I’m getting that down.  Also, I’m not proficient at using the FOR statement in the Condition builder, it look like it either needs tweaking, or I don’t have the sequence down yet. Variables above 4 need to be defined and loose there value once I close MMM. Notice in the example I define and use them during the running macro. I’ll do a demo on the FOR conditions.  When adding a FOR block it needs to be closed.  This might help get you off the ground <www.turnssoft.com/conditions.html#for>

User: Steve

Date: Feb 27, 2020 6:23:22 GMT

This might help with your FOR syntax. A for loop example searching through a directory file by file to find the %DATE% string (date being 2/27/2020)

1 | if | file | e:\out.txt | exist | delete file | e:\out.txt
2 | FOR | EACH | FILE IN -R | E:\docs | DO
3 | FOR | EACH | LINE IN | %FILE% | DO
4 | IF | STRING VARIABLE | %LINE% | CONTAINS | %DATE% | OUTPUT TO FILE | E:\out.txt::APPEND_NEWLINE::%file% match with DATE!
5 | FOR | NEXT
6 | FOR | NEXT
7 | RUN ACTION | INPUT FROM FILE | STRING::NO_REFRESH::E:\out.txt
8 | RUN ACTION | MESSAGE PROMPT | %string%::e:\out.txt::0

User: cyberchipz

Date: Feb 27, 2020 6:51:34 GMT

I guess I wasn’t clear… The code runs fine! I’m talking about code creation, when using the magic Add Condition tool… it doesn’t recognize, as the images showed, any %INTEGER 5 % or higher when creating code in the tool . Even if the variable is declared at the start of the code.  Although it will ACT on the code, works and runs, when I create it manually, like editing a comment in the code; but it doesn’t allow one to enter it as the condition for an IS/GREATER THAN/IS NOT/ %INTEGER>4% etc.  And won’t insert that value in the code. In the “Add Condition” tool/feature, IF | INTEGER VARIABLE | %INTEGER% | IS |… when I go to type in %INTEGER5% , that variable name shows up as RED.  Since it is a valid name. It should be, and actually IS allowed, but won’t create the code.  So I’m sorry if you addressed this in the last post, I didn’t follow how it would allow one to be able to type that in the magic Add Condition box. It does leave it blank, so I can go an edit it once it pushes the line to the code… but, not habitual yet, and when I’m thinking logic, not workarounds… it is cumbersome… pulls me out of coding, and into troubleshooting mode.  And, to be honest, not being able to give a variable a useful name and only using INTEGER/DECIMAL/BOOLEAN/ etc., is throwing me back to very early BASIC programming days… of having to look back and ask myself, hmmm what does that variable represent…again?  Can I reuse it, or is it carrying a more global value?  So… I’m not asking about better variables… lol… I’m good.  But the Add Condition tool is not working right, it seems.. not accepting anything above 4 as a valid variable name.  It’s behaving like I made a typo in the name.  So.. yes… %INTAGER5%  (typo) I would expect to fail… but %INTEGER5% should not (valid and can be used). Sorry to go into such detail; but it felt like I didn’t get the concept across.  I wanted to be clear..er.  So, again… the code runs fine… I can and do use values above 4 for integers etc.  But, the Add Condition won’t accept it as the second (2nd) argument in the value box anything above 4.  That’s all I’m saying… seems like a bug, and definitely NOT a feature. lol  If defining it is supposed to allow it to run after a run… then the auto relist may be interfering.  Before I run, while adding new code, and even while editing… I use relist rows a lot, then save.  My conventions have me… keeping old macro… and changing name to TEST Macro.mmmacro when testing.  So, I relist and save every time before running, once I’m at a runtime that works… I rename it removing the Test in the name. But, that piece of code is nice… I think I see what you’re doing. So, why is this in red? YTeppXRPDETlqKirGOXY.png it will only accept %INTEGER% to %INTEGER4% but, this is valid code… but, I can see from your examples… I can just edit text in the box below and add the variable…

User: Steve

Date: Feb 27, 2020 9:11:19 GMT

You know what…i’ve never noticed that before.
Yeah only integer through integer4 are accepted. Why did I do that
browraise.png I think it’s a hang over from when there was ever only values from integer through integer4. Its red because it wants variables it knows and it doesn’t know those variables exist. I must have coded the check against a fixed array size for the integer values, the old integer array value. I’ll get that fixed for the next update. I think you’ve found a bug…good work
eyesroll.png

User: cyberchipz

Date: Feb 27, 2020 9:47:25 GMT

OMG! Yay… it’s been a real pain… can we make that the next mini update… lol Don’t know if I’ll have any hair left if you wait for big update… lol You could push out updates for maybe just me and zeak and we’ll help debug and troubleshoot… ?! I’ll learn to be clearer… don’t always notice when you don’t follow me… Though that code for quick integer values.. is pretty nice… fast initialize.  Not a wall of code.  I like.. in this I see %INTEGER%::somevalue is like equal sign.  Why do we then have to

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0

all the time? It seems like it can understand simply %INTEGER%::0 BTW, I suspected hangover… lmao   I’m thinking that’s a one byte, maybe two, fix.  Yeah two.. change the 4 into 99… lol  Instant recognition… ah, but finding the code… that is the hard part…  insane.png

Find ‘4’ nope.. that didn’t work… I’ll bet that Add condition code is a real piece of work though…  smiley.png FIND “DEFINE INTEGER VALUE” ? hmm


BUG: %INTEGER2% assigned with INPUT lost during execution?

URL: https://minimousemacro.proboards.com/thread/231/integer2-assigned-input-lost-execution
Date: Feb 14, 2020 1:09:34 GMT

User: cyberchipz

Date: Feb 14, 2020 1:09:34 GMT

I’m not sure what’s going on here… things were running great, short of shutting down the computer and restarting, which I will do and add anything new.  %INTEGER2% gets assigned a value from the INPUT BOX; and we can see it has that value, yet later, the value becomes zero, as seen by this EVENT LOG, there is nothing that I can see that is changing this value, and yet it changes back to 0 (zero).  Any ideas? … previous lines left out

02/13/2020 06:27:26.11 PM : Macro condition: 9 | RUN ACTION | INPUT BOX | Number of Trips::Trip Count::INTEGER2
02/13/2020 06:27:26.13 PM : Macro condition - Condition TRUE
02/13/2020 06:27:26.14 PM : Macro action - Running ACTION: INPUT BOX
02/13/2020 06:27:29.76 PM : Macro action - Variable 'INTEGER2' auto corrected to '%INTEGER2%'
I've tried using this naming convention; but it doesn't like it.
02/13/2020 06:27:29.77 PM : Macro action - InputBox (%INTEGER2%=2)  
HERE we see it assigned properly
02/13/2020 06:27:29.79 PM : Macro condition: 10 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::*2000
02/13/2020 06:27:29.80 PM : Macro condition - Condition TRUE
02/13/2020 06:27:29.82 PM : Macro action - Variable (%INTEGER3% = *2000)
02/13/2020 06:27:29.83 PM : Macro condition: 11 | IF | STRING VARIABLE | %STRING2% | IS | NO | STOP
02/13/2020 06:27:29.85 PM : Macro condition - Condition FALSE
02/13/2020 06:27:29.86 PM : Macro condition: 12 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN EQUAL TO | %INTEGER2% | GOTO MACRO LINE | MoreAction
02/13/2020 06:27:29.88 PM : Macro condition - 0&gt;=2  
&lt;== Here we see that it is still 2, but below it has lost the value below this when there's been no action upon it?
02/13/2020 06:27:29.89 PM : Macro condition - Condition FALSE
02/13/2020 06:27:29.91 PM : Macro condition: 13 | IF | INTEGER VARIABLE | %INTEGER% | IS | 0 | GOTO MACRO LINE | SendTraveler
02/13/2020 06:27:29.93 PM : Macro condition - 0=0
02/13/2020 06:27:29.94 PM : Macro condition - Condition TRUE
02/13/2020 06:27:29.96 PM : Macro action - Running ACTION: GOTO MACRO LINE - Macro line(SendTraveler)
02/13/2020 06:27:29.97 PM : Macro condition: 17 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%RANDOM_600-1000%
02/13/2020 06:27:29.99 PM : Macro condition - Condition TRUE
02/13/2020 06:27:30.01 PM : Macro action - Variable (%INTEGER1% = %RANDOM_600-1000%)
02/13/2020 06:27:30.02 PM : Macro condition: 18 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::%RANDOM_15-30%
02/13/2020 06:27:30.04 PM : Macro condition - Condition TRUE
02/13/2020 06:27:30.05 PM : Macro action - Variable (%INTEGER4% = %RANDOM_15-30%)
02/13/2020 06:27:30.06 PM : Macro condition: 19 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER3%
02/13/2020 06:27:30.08 PM : Macro condition - Condition TRUE
02/13/2020 06:27:30.10 PM : Macro action - Variable (%INTEGER4% = +%INTEGER3%)
02/13/2020 06:27:30.11 PM : Macro event: 20 | 837 | 846 | 782 | Left Click
02/13/2020 06:27:30.72 PM : Macro condition: 21 | IF | INTEGER VARIABLE | %INTEGER% | GREATER THAN | 0 | GOTO MACRO LINE | SkipClick
02/13/2020 06:27:30.73 PM : Macro condition - 0&gt;0
02/13/2020 06:27:30.74 PM : Macro condition - Condition FALSE
02/13/2020 06:27:30.75 PM : Macro event: 22 | 837 | 846 | 782 | Left Click
02/13/2020 06:27:31.52 PM : Macro condition: 23 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | %INTEGER2% | DEFINE INTEGER VARIABLE | %INTEGER%::+1
02/13/2020 06:27:31.55 PM : Macro condition -
0&lt;0 &lt;==HERE %INTEGER2% has lost it's value?
02/13/2020 06:27:31.56 PM : Macro condition - Condition FALSE
02/13/2020 06:27:31.58 PM : Macro condition: 24 | IF | INTEGER VARIABLE | %INTEGER% | LESS THAN | %INTEGER2% | GOTO MACRO LINE | LoopTraveler
02/13/2020 06:27:31.59 PM : Macro condition - 0&lt;0  
&lt;== AGAIN The value is gone for %INTEGER2%?
02/13/2020 06:27:31.60 PM : Macro condition - Condition FALSE

…. lines following this left out ***Restarting the Computer did not change anything, the error still shows… I attached the original code, perhaps you can see something that I did not notice… Perhaps I’m overburdening the LABELS as comments somehow… but I don’t know how that would affect a variable’s content. Attachments: A Distance Traveled Shaman.mmmacro (3.02 KB)

User: cyberchipz

Date: Feb 14, 2020 5:25:43 GMT

So, since I don’t know debug, I used an old technique to watch the variables.  It doesn’t make much sense, but the drop out, or internal reassignment of %INTEGER2% seems to occur after line 17 and/or before line 25 in the file I attached in this reply. It seems to point to a Label causing an issue… I renamed the label in case I was using a keyword for MMM and creating a conflict… but the name change didn’t affect the bug.

This is reminding me of an old pointer error I ran into once.  The pointer, an index into a variable storage memory location (a table of pointer variables), had accidentally pointed into the wrong starting position for each pointer variable. Because the counter was off by 1 it wasn’t noticed (the same pointer references retrieved the data) except it had affected the boundary of the adjoining variable space, which happened to be first byte of that space, the index into a 2nd table of pointers.  It created a null index pointer that was easy to find; but almost impossible to find the cause.  The null pointer got flagged by the run time, but where it came from wasn’t indicated.    Probably not related, but well… one never knows.

I did run into an error before this all started during a Relist Rows command.  An error popped up indicating a malformed line reference; but, I couldn’t tell what line it was referencing.  I looked for one, and never found it; but, Relisting did not return any more errors.  A bad comment that wasn’t a label?  I’m not sure.  And I’m also not completely sure if the %INTEGER2% error started up immediately after that.

Unless there’s an invisible, non-printing, space of some kind that’s still there… I have both opened the code in Notepad and Notepad++ and saved and loaded it into MMM and that had no effect. So, if there’s an invalid character neither of those two apps made any fuss.

This is the story of my life, if there’s a bug to be made or had, I can make it, or find it.

I hope this can be resolved… as it is, this code is useless to me now. (sigh)

As I remember it though, when it happened.  It was running right… then it hit an error.  Since I had input only the number 2 for the number of trips %integer2%, I thought I had miscalculated the start or the end of the run.  IOW an error of 1 on either the start, or the end of the run, and decided the code was cloggy and reorganized the logic determination of the counter to happen at the end of the run instead of the beginning.  But, it turned out the issue was the variable value, an not an error in my logic, I presume.  I hope it’s not just some typo I’m missing.  I took a break, and looked at it after my eyes rested, and can’t find anything wrong with the coding. Help?! lol

User: Steve

Date: Feb 14, 2020 6:13:57 GMT

Is this not expected?

User: cyberchipz

Date: Feb 14, 2020 6:51:33 GMT

Yes, this is the expected behavior; but it’s not running like that on mine… 

It was running like that before it got the error! (All you have to do is look at the log to see what it was doing wrong, losing %integer2%!)  I think I’ll have to remove the old one and reinstall the .exe, perhaps somehow MMMPro.exe copy I have got has gotten corrupted somehow.  Dang.  We are both running 7.3.0.0 right? :-)

If this don’t beat all… I wonder how that happened?  Oh well, I’ll get back after I do that! Tomorrow - it’s bed time for me in the USA!

Thanks Steve

User: cyberchipz

Date: Feb 14, 2020 16:33:55 GMT

Sent you an email; but, since we’re in, I think, different time zones :-) I couldn’t upload a new copy… I hadn’t made a backup of it, and so was unable to reinstall the .exe; however….

I got it working… I had Clear Variables on Playback ON and Enable Variable Saves ON.  Once I turned them off, it started working for me.  But, I must be misunderstanding their purpose.  I thought Clear Variables on Playback would clear the variables when I play the macros, and Enable Variable Saves would allow me to save the variables in their current state when I save the program.

Either way, since I was assigning the variable using INPUT BOX and assigning it a value directly to initialize the variable at the start of the macro, my thoughts are that this wouldn’t matter.  But it did.  So something still might be going on; but, since I have a habit of explicit declaration to initialize variables, and you can see that in the macro itself, I don’t know what was going wrong.  It still looks like a bug?!  But, at least I’m up and running again! :-)

User: Steve

Date: Feb 14, 2020 22:13:29 GMT

‘Clear variables on playback’ When enabled all the current values of the variables will be flushed before each macro playback. This requires every macro to redefine variables. When disabled all variable values are kept as they are defined for each macro. This is useful for carrying over values for consecutive macro’s during playback.

‘Enable variable saves’

Enabling variable saves will save the values of all variables. With this enabled once variables are declared and saved the values will be loaded at the program startup.

When not enabled, values will be empty on startup.

This might help: minimousemacro-variableplayback.gif

User: cyberchipz

Date: Feb 15, 2020 7:05:52 GMT

OK, I see. But…? Did I find a bug, when it wouldn’t keep the assigned value for %INTEGER2%?

User: Steve

Date: Feb 17, 2020 9:05:53 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 15, 2020 7:05:52 GMT

cyberchipz said: OK, I see. But…? Did I find a bug, when it wouldn’t keep the assigned value for %INTEGER2%? Hi Chip, I think I might have figured out what happened in your dropping on INTEGER2. In one of your conditions where you GOTO a label that is closer to the start of the macro what actually happens with the macro machine is that it proceeds down the macro queue looking for your line label. When it can’t find it, it goes back to the top (to line 1) and continues moving down until it finds a match with your label. Remember how i said in another post that MMM reads top to bottom, left to right. This is an example of that. So, what has happened is that you have ‘clear variables on playback’ enabled and MMM has cleared the variables at the start of line 1.
I haven’t tested this yet, im really short on time at the moment, but i’m fairly sure this is it.

User: cyberchipz

Date: Feb 17, 2020 19:27:43 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Feb 17, 2020 9:05:53 GMT

Steve said: KvolAHXIscEA0UEcnLFo.gif Feb 15, 2020 7:05:52 GMT

cyberchipz said: OK, I see. But…? Did I find a bug, when it wouldn’t keep the assigned value for %INTEGER2%? Hi Chip, I think I might have figured out what happened in your dropping on INTEGER2. In one of your conditions where you GOTO a label that is closer to the start of the macro what actually happens with the macro machine is that it proceeds down the macro queue looking for your line label. When it can’t find it, it goes back to the top (to line 1) and continues moving down until it finds a match with your label. Remember how i said in another post that MMM reads top to bottom, left to right. This is an example of that. So, what has happened is that you have ‘clear variables on playback’ enabled and MMM has cleared the variables at the start of line 1.

I haven’t tested this yet, im really short on time at the moment, but i’m fairly sure this is it. Oh, I’m not sure I followed you on this…  When you said, “continues on down” you didn’t mean executing along the way did you?  So, everytime there’s a GOTO early on/anywhere, it will execute lines until it finds them?  That sounds scary.  

Or, maybe I misunderstood… after reading multiple times… Perhaps what you’re saying is that it is erroneously, when looking for a label, automatically clearing the variable when it starts over… IOW, a bad REstarting point for the macro search in the code for labels… need to pick the point where it skips over the #DEFAULT when checked, clear variables on the label search start over?  

I’ve noticed that I can’t initialize a variable with a negative value though… lol (not related :-)  Well, yes.. two steps. That could be it, if it’s restarting the search from the wrong coding place… that makes sense.  I did notice that the only intervening lines, between having a value and it being disappearing, were “GOTO Label”, and “Label”.  That was a tough find!

What are the chances of creating a GOSUB in addition to the GOTO that when it hits, perhaps an SuB END command will return to the line after the GOSUB?  Since it appears that real line values are used that should also be fairly quick.  Just need to store the next REAL line number on GOSUB and internally GOTO that real line number on a SUB END or ENDSUB.   Otherwise, I’ll need a label for every line after a “gosub” and dedicated strings for passing. In gaming, I obfuscate my mouse clicks by subtle x, y and timing values… that’s what got me thinking about the gosubs.. otherwise, I have to 1 %RANDOM_ val1-val2 % 2 LeftClick a lot.  

BTW, I’ve noticed that sometimes LeftClick does not gain focus of the game app and I have to click twice… it seems to be related to the POP-UP MESSAGE BOX having displayed.  ALSO, INPUT BOX at times also remains behind the scenes.. also not getting focus..  I have to ALT-TAB to go find it. Did I mention that one of my principle skill sets was Troubleshooting.  I will promise, especially as I get proficient at MMM, that I will always try to give you enough information to find the problem… even if it’s my imagination!  Which is harder than you’d think! 8-o Cheers!

But, I understand about the time constraints… I’m not even working… and I’m playing with MMM so much… I’ve no time for virtual reality. lol  (Yes, spoken like a retiree!) :-)

User: Steve

Date: Feb 21, 2020 22:29:01 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 17, 2020 19:27:43 GMT

cyberchipz said: Oh, I’m not sure I followed you on this…  When you said, “continues on down” you didn’t mean executing along the way did you?  So, everytime there’s a GOTO early on/anywhere, it will execute lines until it finds them?  That sounds scary.   Or, maybe I misunderstood… after reading multiple times… Perhaps what you’re saying is that it is erroneously, when looking for a label, automatically clearing the variable when it starts over… IOW, a bad REstarting point for the macro search in the code for labels… need to pick the point where it skips over the #DEFAULT when checked, clear variables on the label search start over?  Yep literally top to bottom - left to right.

(
Edit
When a goto remark is called, the macro proceeds down (not up) initializing each line (remember MMM takes the macro string and breaks it down using the delimiters into fields the macro machine knows how to process) looking for a remark that matches the GOTO. If the line does not start with a remark it is discarded at that point. It continues going down until it hits the bottom (the last macro line). It then starts again from the top and goes down line by line. If it gets to the bottom again without finding the remark to goto, the macro stops. GOTO MACRO LINE | Remark_must_exist_or_I_assume_GOTO_END_OF_MACRO). Run this example below and check out the MMM event log…it will load in the example i uploaded to pastebin.com/raw/nYADUwVK

(or just copy and paste the code from there):

1 | RUN ACTION | LOAD MACRO FROM URL | https://pastebin.com/raw/nYADUwVK

KvolAHXIscEA0UEcnLFo.gif Feb 17, 2020 19:27:43 GMT

cyberchipz said: I’ve noticed that I can’t initialize a variable with a negative value though… lol (not related :-)  Well, yes.. two steps. Integer variables can be initialized with negative values during run time with:

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-1

Or prior to run time through the Options - Variables page.
However…(there is usually a however), variable options and values that are saved or set prior to run time take precedence over those set during run time. Meaning, if I declare to ‘Enable variable saves’ and for example my %integer% variable is set to a value of 50 within the variable options page prior to pressing play then

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-1

will define %integer% to a value of 49, not -1. Does that clarify?

KvolAHXIscEA0UEcnLFo.gif Feb 17, 2020 19:27:43 GMT

cyberchipz said: What are the chances of creating a GOSUB in addition to the GOTO that when it hits, perhaps an SuB END command will return to the line after the GOSUB?  Since it appears that real line values are used that should also be fairly quick.  Just need to store the next REAL line number on GOSUB and internally GOTO that real line number on a SUB END or ENDSUB.   Otherwise, I’ll need a label for every line after a “gosub” and dedicated strings for passing. In gaming, I obfuscate my mouse clicks by subtle x, y and timing values… that’s what got me thinking about the gosubs.. otherwise, I have to 1 %RANDOM_ val1-val2 % 2 LeftClick a lot.   Yes there are better ways to skin this cat. Take a look at your macro lines within MMM prior to pressing play. You can click them, drag over them, double click them, right click them, etc. They are objects…each line. They have properties outside of the string text that makes the macro syntax. Fundamentally, this is the problem. I treat them individually like objects. This makes manipulating them difficult.  You mentioned you accidentally edited a macro line whilst the macro was running and it threw an error to the event log.  This is a side effect of that.  I have tinkered with moving away from this many times (load up a a macro then open Options - Macro and in the ‘Find’ box type DEV::output logic and hit enter), however at this point it would mean almost completely redesigning how code is fed into the macro machine. I just don’t have the time. KvolAHXIscEA0UEcnLFo.gif Feb 17, 2020 19:27:43 GMT

cyberchipz said: BTW, I’ve noticed that sometimes LeftClick does not gain focus of the game app and I have to click twice… it seems to be related to the POP-UP MESSAGE BOX having displayed.  ALSO, INPUT BOX at times also remains behind the scenes.. also not getting focus..  I have to ALT-TAB to go find it. Yep this is a thing. If you initialize a pop up dialog from Mini Mouse Macro then you have to respond to the dialog. Them’s the breaks. Can’t get around that. Well…you can, and I think (maybe or might have been an email to me) there is a thread on this forum that discusses how to fire up a dialog from MMM (say a msgbox or input box) and have MMM handle the disposal of the box. KvolAHXIscEA0UEcnLFo.gif Feb 17, 2020 19:27:43 GMT

cyberchipz said: Did I mention that one of my principle skill sets was Troubleshooting.  I will promise, especially as I get proficient at MMM, that I will always try to give you enough information to find the problem… even if it’s my imagination!  Which is harder than you’d think! 8-o A good skill to have, and I have noticed what seems to be your past (or current) professional life bleeding into your posts. Nice One Mate. I hope this explains it a little better.

User: cyberchipz

Date: Feb 22, 2020 7:32:29 GMT

First, let me apologize for not being able to do the fancy quotes you do with [ICON] ON such and such date time Steve said:  (I can do one of the whole thing, but can’t break it up like you do… Steve: If the line does not start with a remark it is discarded at that point. It continues going down until it hits the bottom (the last macro line). It then starts again from the top and goes down line by line. If it gets to the bottom again without finding the remark to goto, the macro stops. GOTO MACRO LINE | Remark_must_exist_or_I_assume_GOTO_END_OF_MACRO). insert quote here Got it!  I was thinking it should be fairly easy to find the right place to start searching from the top without initializing the variable options during a label search.  Since I turned the variable options off, I’m not having that issue anymore. Q: I was wondering though, what language and interface do you use to develop MMM.  I was wondering what my background would be relative to that level. Steve: Run this example below and check out the MMM event log…it will load in the example i uploaded to pastebin.com/raw/nYADUwVK (or just copy and paste the code from there): This did exactly what I expected it to do…   But, I did learn about pulling in code from pastebin in MMM! That’s awesome. Steve: However…(there is usually a however)… Does that clarify? Perfectly! Steve: I have tinkered with moving away from this many times (load up a a macro then open Options - Macro and in the ‘Find’ box type DEV::output logic and hit enter), however at this point it would mean almost completely redesigning how code is fed into the macro machine. I just don’t have the time. I’ve decided, for gosub, I can just design a line of code that incorporates everything in two lines… One assigning the return label to a string AND two GOTO the routine I want to run.

16 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::StartHere | AND | 1 | RUN ACTION | GOTO MACRO LINE | InitializeVariables
* | StartHere

the two lines above basically calls (GOTO) the subroutine (InitializeVariables), and the subroutine returns (GOTO ReturnLabel) in this case StartHere. For future readers who may be interested, an entire example what and how I did it is here: 1 | RUN ACTION | LOAD MACRO FROM URL | pastebin.com/cAcjDEaQ Steve: I hope this explains it a little better. It did, very much so… thanks again. Quick Q: Did the issue with Modulo (Modulus) get fixed… I couldn’t get it to work.  If you say yes… I’ll post my code in the Q&A section for some help! I’m up way too late: So.. we’ll see ya L8r)

User: Steve

Date: Feb 23, 2020 2:04:38 GMT

Quick Q: Did the issue with Modulo (Modulus) get fixed… I couldn’t get it to work. If you say yes… I’ll post my code in the Q&A section for some help! I think a while ago, maybe about two years we had an issue with some math functions but from memory it was fixed and released the following update. What issue are you having with mod? and yes…probably better on a new thread. this-thread-is-out-of-control


Get a color sample to use for Pixel operation.

URL: https://minimousemacro.proboards.com/thread/229/get-color-sample-pixel-operation
Date: Feb 13, 2020 17:24:43 GMT

User: cyberchipz

Date: Feb 13, 2020 17:24:43 GMT

OK, I think my main issue is not having used pixel or pixel range before.  I’ve read what I could find; but, I think I need to know how to determine what I’m going to detect; but, I don’t know how to sample that area to get the values for the color I’ll need to code the pixel detector.  How do I obtain the value of a pixel in a particular location, which I can then store as an assigned variable to be used when I run the macro and look for the change? Would I use PIXEL COLOR or PIXEL RANGE?   (I’m thinking PIXEL COLOR) as range detects changes, and it seems COLOR RANGE looks for something to change… so I’d have to look at it all the time which I can’t do. Details - May be superfluous: I have a game I’m playing that when players request some help; a change occurs (a particular icon appears on the screen). I was thinking that detecting a particular pixel color, or range would allow me to determine, if while doing some other macro activity, when the icon appears, so I can branch off the main macro… do some activities, like close a pop up window… click that icon, reopen the pop up window, and continue the macro before it branched.  I think I can handle coding the activities, I just need to know how to detect a pixel color… so I know what I’m looking for… and then detect that color.  Another post goes into detail on detecting after knowing what to look for… I need to know what color I’m looking for, and have no way to sample the screen to determine the color(s).

User: Steve

Date: Feb 14, 2020 23:38:22 GMT

This might help for both pixel color and pixel range conditions: <www.turnssoft.com/conditions.html#pixelcolor> <www.turnssoft.com/conditions.html#pixelrange> minimousemacro-pixeloperations.gif

1 | IF | PIXEL RANGE | At Location [X:112 Y:465]::Size [W:49 H:25] | CHANGES::1::0::0 | MESSAGE PROMPT | Pixel changed within the range!::Change::3
2 | RUN ACTION | MESSAGE PROMPT | Reset::Wait::2
3 | IF | PIXEL COLOR | Color [R=0, G=0, B=0]::At Location [X:192 Y:512] | IS THE SAME | MESSAGE PROMPT | The pixel is the same. No change!::No change::0 | ELSE | 3 | RUN ACTION | MESSAGE PROMPT | The pixel has changed!::Change detected::0
 02/15/2020 10:30:07.21 AM Loading settings - Values applyed to variables
 02/15/2020 10:30:07.22 AM Loading settings - applying live settings to MMM
 02/15/2020 10:30:07.24 AM Mini Mouse Macro Pro - 7.3.0
 02/15/2020 10:30:07.26 AM Update Check - Checking connectivity: Online (pending)
 02/15/2020 10:30:07.61 AM Update Check - Checking connectivity: Online (OK)
 02/15/2020 10:30:07.66 AM Update Check - Comparing: 7.3.0.0 to the latest at <www.turnssoft.com>
 02/15/2020 10:30:08.10 AM Update Check - This is the latest version
 02/15/2020 10:32:24.33 AM Starting macro playback
 02/15/2020 10:32:24.36 AM Macro condition: 1 | IF | PIXEL RANGE | At Location [X:112 Y:465]::Size [W:49 H:25] | CHANGES::1::0::0 | MESSAGE PROMPT | Pixel changed within the range!::Change::3
 02/15/2020 10:32:27.09 AM Pixel Range Change (1/1) - First detected at pixel W:37 and H:0)
 02/15/2020 10:32:27.11 AM Macro condition - Condition TRUE
 02/15/2020 10:32:27.13 AM Macro action - Running ACTION: MESSAGE PROMPT - Message(Pixel changed within the range!::Change::3)
 02/15/2020 10:32:29.39 AM Macro condition: 2 | RUN ACTION | MESSAGE PROMPT | Reset::Wait::2
 02/15/2020 10:32:29.42 AM Macro condition - Condition TRUE
 02/15/2020 10:32:29.44 AM Macro action - Running ACTION: MESSAGE PROMPT - Message(Reset::Wait::2)
 02/15/2020 10:32:31.50 AM Macro condition: 3 | IF | PIXEL COLOR | Color [R=0, G=0, B=0]::At Location [X:192 Y:512] | IS THE SAME | MESSAGE PROMPT | The pixel is the same. No change!::No change::0 | ELSE | 3 | RUN ACTION | MESSAGE PROMPT | The pixel has changed!::Change detected::0
 02/15/2020 10:32:31.52 AM Macro condition - Pixel color MATCH
 02/15/2020 10:32:31.55 AM Macro condition - Condition TRUE
 02/15/2020 10:32:31.57 AM Macro action - Running ACTION: MESSAGE PROMPT - Message(The pixel is the same. No change!::No change::0)
 02/15/2020 10:32:34.18 AM Macro playback finished
 02/15/2020 10:32:44.46 AM Starting macro playback
 02/15/2020 10:32:44.47 AM Macro condition: 3 | IF | PIXEL COLOR | Color [R=0, G=0, B=0]::At Location [X:192 Y:512] | IS THE SAME | MESSAGE PROMPT | The pixel is the same. No change!::No change::0 | ELSE | 3 | RUN ACTION | MESSAGE PROMPT | The pixel has changed!::Change detected::0
 02/15/2020 10:32:44.49 AM Macro condition - Condition FALSE
 02/15/2020 10:32:44.51 AM Macro condition - Condition TRUE
 02/15/2020 10:32:44.52 AM Macro action - Running ACTION: MESSAGE PROMPT - Message(The pixel has changed!::Change detected::0)
 02/15/2020 10:32:46.97 AM Macro playback finished

User: cyberchipz

Date: Feb 15, 2020 9:59:34 GMT

Seems to be what I was looking for… don’t know why I didn’t understand that from the Conditions page.  The example helped.  Wish I could pause that playback.   Speaking of pausing… is there a way to step through a macro, to help with debugging?  I think I saw you show me a way.  Use a MessageBox then run a line of code, one line at a time.  I’ll give that a try… as long as I don’t hit stop.  It’s gotten to be a habit.  I’ve froze up MMM that way a few times. Editing, while it was running.

User: cyberchipz

Date: Feb 17, 2020 0:06:35 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 15, 2020 9:59:34 GMT

cyberchipz said: Seems to be what I was looking for… Spoke too soon… but it’s not the code, or the concept; something in the game is obfuscating the screen… probably the smoke.  I’m using a workaround, apparently the game makers are wise to macros! Go figure. I was able to make it work on anything with a stationary background… but when the background is animated… how does one detect the same, when it’s always changing?  Or changes, when it’s always changing.   Took me a while to realize.. I didn’t even know what the heck I was looking for… lol One pixel to remain the same long enough to detect it… I’m going with that.  And though it might be possible… would I really ever be totally sure?  In this game, the potential to do real damage to one’s self with superfluous clicks is real. I’m going to have to use this in the more static areas of the game.

User: zeak

Date: Feb 17, 2020 1:15:14 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 17, 2020 0:06:35 GMT

cyberchipz said: I’m going to have to use this in the more static areas of the game. Just out of curiosity, what game are you playing?

User: cyberchipz

Date: Feb 17, 2020 19:44:07 GMT

ovqiSZMQkcHXJsgduMbm.jpg Feb 17, 2020 1:15:14 GMT

zeak said: KvolAHXIscEA0UEcnLFo.gif Feb 17, 2020 0:06:35 GMT

cyberchipz said: I’m going to have to use this in the more static areas of the game. Just out of curiosity, what game are you playing? Where did you say you lived? ;-)  Do you work for a gaming company… not that I’m violating any agreement… that I know of… lol   I play under the same username that I use here… sorry if I seem paranoid. :-D You know what they say… “Just because you’re paranoid doesn’t mean they’re NOT out to get you.”  As a security guy, that’s why I obfuscate my mouse klicks when coding!  And they’re (the game company) is savvy enough to do things like… obscure clickables with billowing smoke, move their locations by 100 pixels or more in either direction (not discernible to the eye; but plays hell on my X & Y values), and who knows what I haven’t found yet.  My next project is a re-calibration, and store new INIT variables in a file so when the macro fails I can recalibrate their locations.  I noticed that they don’t move it enough that if I click the exact center of the button, I will hit all the time… but that is a dead giveaway that I’m using a macro.  I’m thinking they’re changing the location and appearance of the POPup boxes that are used to do activities. You could lie to me, and I would tell you what game…  I like my quality time with my wife… and the game wants me to attack (repeatedly) targets that can be up to 8 or more minutes from me.  16 minutes round trip for my little icon to go to. And I have to hit it like 20 to 40 times.  Or, I could waste a resource that costs me game money to relocate my town, which is what they want.  I’m frugal.  MMM gives me the ability to be AFK and be active within the game for the tedious stuff like what I said.  I’ve noticed that the game obfuscates any mouse target that could be automated to save money(real), money(game) or force the use of resources that cost the player the former.  I’m just trying to save a few bucks, and time (time is money). Oh wait… I didn’t answer your question… are you all in Australia?  I thought I picked up a word, or something that gave it away… at least with Steve… or was it you?  Oh yeah.. the Ginger Beer. :-) Cheers! I’m going to have to look at your code for PIXEL RANGE… I can’t get it to follow through with the MESSAGE BOX on anything I try it on… he coded them to have the same message; but, I changed mine so I could tell whether the PIXEL RANGE or the PIXEL COLOR was the responder in his demo… RANGE never responds to either same or change… not sure why.  Haven’t tried it on a document though, just the game.  For all I know the game makers imbedded little flickering pixels everywhere. lol

User: zeak

Date: Feb 17, 2020 21:39:36 GMT

Cyber, That’s why I’ve been hitting up Steve for a while now to have a detect picture or word. If you have any Ideas on how that could be done it would be great.

User: cyberchipz

Date: Feb 18, 2020 19:24:30 GMT

ovqiSZMQkcHXJsgduMbm.jpg Feb 17, 2020 21:39:36 GMT

zeak said: Cyber, That’s why I’ve been hitting up Steve for a while now to have a detect picture or word. If you have any Ideas on how that could be done it would be great. Not sure specifically what you’re saying.  Isn’t PIXEL RANGE supposed to do that?

User: zeak

Date: Feb 20, 2020 23:49:02 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 18, 2020 19:24:30 GMT

cyberchipz said: ovqiSZMQkcHXJsgduMbm.jpg Feb 17, 2020 21:39:36 GMT

zeak said: Cyber, That’s why I’ve been hitting up Steve for a while now to have a detect picture or word. If you have any Ideas on how that could be done it would be great. Not sure specifically what you’re saying.  Isn’t PIXEL RANGE supposed to do that? Pixel COLOUR only detect a single pixel meaning you can’t say look for this picture and PIXEL RANGE does not discriminate what the pixels change from-to in the range, only that they have changed.

User: cyberchipz

Date: Feb 21, 2020 7:46:18 GMT

ovqiSZMQkcHXJsgduMbm.jpg Feb 20, 2020 23:49:02 GMT

zeak said: KvolAHXIscEA0UEcnLFo.gif Feb 18, 2020 19:24:30 GMT

cyberchipz said: Not sure specifically what you’re saying.  Isn’t PIXEL RANGE supposed to do that? Pixel COLOUR only detect a single pixel meaning you can’t say look for this picture and PIXEL RANGE does not discriminate what the pixels change from-to in the range, only that they have changed. OK, the only way I know to detect a change in the image is to compare the two images.  Ideally, and possibly the only way, is to use a non compressed image, and then sample that same image later.  It could ideally be any area you’ve selected to capture, like Steve does in PIXEL RANGE.  So, let’s say the image is x by y pixels across and down.  You would read that screen memory location (or store the image in a file, and know the formatting used to save it… Here where to find the file format info for .png Link to info about png formatting )  to obtain the value contained in the pixel ‘byte(s)’. Then, depending upon the specific information you wanted, you would Mask that ‘byte’ to either obtain or mask out the bit(s) you wanted to examine, but this method might be a bit old fashioned when everything was only an 8bit byte.  Depending upon formatting, this might be for transparency (Alpha) or intensity, or specific color value (RGB).   But nowadays, I think every pixel has one or more bytes associated with it.  (I didn’t read the .png info in detail) The easiest way to do a simple compare for the entire byte, say 1 of the 32 or 64 bits of information that represent a single pixel is you would simply use an XOR of the original and duplicate’s image pixel byte instead of bit by bit, if the pixel had changed, for XOR you’d return a TRUE (1) if the byte, or bit, had changed, and a FALSE (0) if it was the same.  So, I’d look up where the screen memory is located, and do a system call in a higher level language, like C or C++, and either gain access to the screen memory, or get a copy of it.  Grab a piece of it, like steve does, and do an XOR of the old and new information to see if it changed or not. If you only wanted to detect a change each pixel (Color, Alpha, the whole thing) and presuming you’ve captured a piece of the screen… that is 10 x 30 pixels… you’d store that in memory (or a file in a format you choose, or if comparing two image files (from someone else, I’d learn that format and grab a piece of it based on that), call it A10x30  Then you’d capture that same area of the screen again call it B10x30, that should be 300 bytes (32bit or 64bit)    X=30 Y=10, Left to Right, Top to Bottom, you’d need Two nested FOR LOOPS 1: x = 0 to 29, y = 0 to 9, then in the third memory area or table, you’d store the results. C(x,y)=A(x,y) XOR B(x,y) next y, next x and in table C (300 bytes) you’d have a 0 or FALSE in each location for every byte that DID NOT change, and a 1 or TRUE in every byte that DID CHANGE.  Technically you’d have to have a function that could index into the image, know the size, and return the value of the X,Y location of that pixel if it already did the XOR.  So basically a table of pixel values… or a string that you’d know the format and how it was stored… that you decided on. A bitwise check is just a deeper examination of each byte, using an AND mask to eliminate info you didn’t want, or rotate the processor registers at machine level to  rotate each bit and check it that way in loops.  Everything depends on the format, how you got it, how it and you stored it, etc. Steve probably does a lot of this in pixel range; but, he doesn’t ask or specific which pixels have changed because normally you’d just want to know if any part of it changed in something completely static.  But, watermarks are often used in security to imbed either Alpha or Intensity changes to create a security code either embedded in a specific location or over the entire picture.  You’d just have to know where it is to pull it out… otherwise it could be hidden and with a single bit change in color, it wouldn’t appear to the naked eye with 32 Million colours.  Plus if the image was re-compressed, it would mux it up. Does this in any way answer your question? lol I thought this was what Steve was doing with Pixel Range, just detecting change… but, I can’t format it right to get it to work and give me a logical return value like he shows… I think I once did, but only on a static image from a document or web page… but not in the game. It’s been a long time since I’ve done any of this… and the OS has changed so much, I’m not sure how long it would take to learn what I needed, again!… I’ve again, forgotten more than I know or knew.)   I do a lot of analysis with images… debunking ghost captures, alien videos… Don’t get me wrong… I think that stuff is real… it’s just that not all people can be trusted. lol  Some people just like to create fakes.  With the new AI stuff, and everything out there now… it’s getting harder… but, yeah… I’ve done a lot of stuff at machine level programming… some digital breadboarding.  I’m hoping if I can get over my health issues, and have some money coming in, I can play with Arduino and little toy stuff… and work on some concepts with Tesla and try to do some weird Quantum stuff I have in mind… using resonance, and my theory of how the universe works at the Quantum level. So, on another subject… ;-) I think the secret to free energy is to resonate a circuit at the right frequency (quantum level  binding particle energy small wavelengths), with the right type of core in a itty bitty “reactive” generator, and create what I call a resonant tickle.. that will cancel out the binding energy in a very… very controlled way… to well, rotate some higher dimensionally available muons and turn them into electrons and make them available.  IOW, convert what science calls “reactive” power into “real” power.  Basically cancel out one of the imaginary(sic) eigenvectors of the muon, and rotate it into real 3d space.  I only mention this to get the concept out into the internet ether… so someone looking for a guy who talks that kind of gibberish will realize I know more than I’m saying. ;-) but, if I missed a point, or something specific you have as a question; please don’t hesitate to ask.  Hope I helped. Or it just dawned on me I missed the point completely… So, what you’re trying to do maybe… is you have an image, or part of something that would be in the image, and you want to find that area that matches the part you’ve picked for it to look for? I would have to be exact… or at least have a percentage of it match.  You could do as I say above… it’s still would have to be byte by byte, at the machine level, where code is quick… and it would have to ultimately scan the entire image… depending on the size of the part you’re looking for… and the size of the image it could be in… and whether it’s an exact match or not, it could take some time.  If you knew if was the same and looked the same as your sample to find, it could do it… the problem is if it’s not an exact match.  This is where the AI being used nowadays comes in. I think something could be done perhaps with 3D holographic comparison analogies… but all of this is math and time extensive.  You would have to give me an example for me to understand completely.  I mean, if you gave me a picture… and then gave me a piece of that picture… I could find it fast with my own eyes, if it was big enough… and as long as the sample came from the same picture, I could code something to find it… as long as nothing was changing.  So, yeah the same technique… but, if any of it changed… since it doesn’t match exactly anymore.. you’d want to compare every pixel, and then determine what % of change is acceptable for it to be a match and say you found it.   So, if it’s a face, facing you.. and you’re looking for the face… if it turned, even a little bit… then even percent right wouldn’t work.. you’d have to code something that would determine similarity based on something like a compressed image… I mean… a side profile of a face, could look similar to another side profile of a face…  that’s hard… but, if you’re looking for a button, and you know what it looks like, you should be able to find it.  But, if that button was a clear image, and there was a haze of smoke over it.  The smoke effect could just be an intensity and Alpha effect, and filtering that out would be tougher.  If it was an intensity, alpha and color effect, then it’s even harder.  Now, you could watch it over time, and then for each pixel, obtain a range of change for each pixel, the extremes of each factor changing… How much does intensity change over time, how much does Alpha change… (but that’s either a transparent, or not transparent thing.. so perhaps not a thing)  And then color change range… red green to blue green range… and if each pixel had changed, and it still fell within a range of values… then either call it a match or not.  Hmm, starting to sound like what Steve IS doing… maybe.  But for every pixel… well… we can do a lot at machine level speeds. So, yeah… but it would help if it was in the same place all the time.. but, it sounds like you’re trying to find something… and I don’t know if it’s the same, or only looks similar.

User: Steve

Date: Feb 21, 2020 21:32:36 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 21, 2020 7:46:18 GMT

cyberchipz said: TL;DR what does the code for the pixel conditions look like? Calling Pixel Color and Range Function:

' Pixel Color or Pixel Range
If boolPixelColor = True Or boolPixelRange = True Then
    Try
        If boolIsTheSame = True Then
            If Condition_RUN_PixelColor(strPixelColor, True, False, 0, 1, 0, boolPixelRange) = True Then
                EventArrayAdd("43|evt|Macro condition - Pixel color MATCH|evt|2", "macro")
                boolConditionTrue = True
            Else
                boolConditionTrue = False
            End If
        ElseIf boolIsNotTheSame = True Then
            If Condition_RUN_PixelColor(strPixelColor, False, True, 0, 1, 0, boolPixelRange) = True Then
                EventArrayAdd("43|evt|Macro condition - Pixel color NOT MATCH|evt|2", "macro")
                boolConditionTrue = True
            Else
                boolConditionTrue = False
            End If
        ElseIf boolChanges = True Then
            Dim intChange As Integer
            Dim intTimeout As Integer
            Dim intDelay As Integer = 0
            If intChangeNum = Nothing Then
                If strChanges.Contains("::") Then
                    Dim strSub() As String = Split(strChanges, "::")
                    If strSub.Count = 4 Then
                        If IsNumeric(strSub(1)) Then
                            intChange = strSub(1)
                        Else
                            EventArrayAdd("2|evt|Pixel Color - value for change number '" & strSub(1) & "' is not numeric.  Auto correcting to '1'|evt|2", "war")
                            intChange = 1
                        End If
                        If IsNumeric(strSub(2)) Then
                            intTimeout = strSub(2)
                        Else
                            EventArrayAdd("2|evt|Pixel Color - value for timeout '" & strSub(2) & "' is not numeric.  Auto correcting to '0'|evt|2", "war")
                            intTimeout = 0
                        End If
                        If IsNumeric(strSub(3)) Then
                            intDelay = strSub(3)
                        Else
                            EventArrayAdd("2|evt|Pixel Color - value for delay '" & strSub(3) & "' is not numeric.  Auto correcting to '0'|evt|2", "war")
                            intTimeout = 0
                        End If
                    ElseIf strSub.Count = 3 Then
                        If IsNumeric(strSub(1)) Then
                            intChange = strSub(1)
                        Else
                            EventArrayAdd("2|evt|Pixel Color - value for change number '" & strSub(1) & "' is not numeric.  Auto correcting to '1'|evt|2", "war")
                            intChange = 1
                        End If
                        If IsNumeric(strSub(2)) Then
                            intTimeout = strSub(2)
                        Else
                            EventArrayAdd("2|evt|Pixel Color - value for timeout '" & strSub(2) & "' is not numeric.  Auto correcting to '0'|evt|2", "war")
                            intTimeout = 0
                        End If
                    Else
                        intChange = 1
                        intTimeout = 0
                        intDelay = 0
                    End If
                Else
                    intChange = 1
                    intTimeout = 0
                    intDelay = 0
                End If
                intChangeNum = intChange
                intChangeTimout = intTimeout
            End If
            ' EDIT 30 / 10 / 18 - Pixel Range
            Dim strPixelString As String
            If boolPixelColor = True Then
                strPixelString = strPixelColor
            Else
                strPixelString = strPixelRange
            End If
            If Condition_RUN_PixelColor(strPixelString, False, False, True, intChangeTimout, intChangeNum, intDelay, boolPixelRange) = True Then
                boolConditionTrue = True
                intChangeNum = Nothing
                intTimeout = Nothing
            Else
                If boolContinue = True Then
                    If boolRunErrors = True Then
                        Exit Sub
                    End If
                End If
                boolConditionTrue = False
            End If
        End If
    Catch ex As OverflowException
        If boolChanges = True Then
            If boolPixelColor = True Then
                strErrorBack = " - " & "Overflow - Check your values for (At Location [X:X Y:X] | CHANGES::X::X)"
            Else
                strErrorBack = " - " & "Overflow - Check your values for (At Location [X:X Y:X]::Size [W:X H:X] | CHANGES::X::X)"
            End If
        Else
            strErrorBack = " - " & "Overflow Error - Check your values for (Color [R=X , G=X B=X])::At Location [X:X Y:X])"
        End If
        boolRunErrors = True
    Catch ex As Exception
        If boolChanges = True Then
            If boolPixelColor = True Then
                strErrorBack = " - " & "Unhandled Format Error - Check your format is (At Location [X:X Y:X] | CHANGES::X::X)"
            Else
                strErrorBack = " - " & "Unhandled Format Error - Check your format is (At Location [X:X Y:X]::Size [W:X H:X] | CHANGES::X::X)"
            End If
        Else
            strErrorBack = " - " & "Unhandled Format Error - Check your format is (Color [R=X , G=X B=X])::At Location [X:X Y:X])"
        End If
        boolRunErrors = True
    End Try
End If

The Function:

Private Function Condition_RUN_PixelColor(ByVal strPixelColor As String, Optional ByVal boolISthesame As Boolean = False, Optional ByVal boolISNotthesame As Boolean = False, Optional ByVal boolChanged As Boolean = False, Optional ByVal intWaitTime As Integer = 0, Optional ByVal intChangeTimes As Integer = 1, Optional ByVal intDelay As Integer = 0, Optional ByVal boolPixelRange As Boolean = False) As Boolean
    ' Color [A=255, R=166, G=202, B=219]::At Location [X:1441 Y:297]::Size [W:10 H:10] | IS THE SAME | MESSAGE PROMPT | same::title
    Dim strsub() As String
    Dim strPixCol As String
    Dim strLocation As String
    Dim intWidth As Integer
    Dim intHeight As Integer
    Dim boolChangeWatch As Boolean = False
    Dim intChangeTimeCounter As Integer = 0
    If Not boolChanged = True Then
        strsub = Split(strPixelColor, "::")
        strPixCol = strsub(0)
        strLocation = strsub(1).Remove(0, 12)
    Else
        strsub = Split(strPixelColor, "::")
        If boolPixelRange = True Then
            strLocation = strsub(0).Remove(0, 12)
        Else
            strLocation = strPixelColor.Remove(0, 12)
        End If
    End If
    If boolPixelRange = True Then
        boolChanged = False
        strsub = Split(strPixelColor, "::")
        Dim strW As String
        Dim strH As String
        If Not strsub.Count = 2 Then
            EventArrayAdd("3|evt|Pixel Range (" & strPixelColor & ") is incorrectly formatted.  It should look something like this '(At Location [X:1441 Y:297]::Size [W:10 H:10]').  Skipping...)|evt|1", "err")
            boolRunErrors = True
            strErrorBack = " - " & "Format Error - Check your format is (At Location [X:X Y:X]::Size [W:X H:X] | CHANGES::X::X)"
            Return False
        Else
            For Each item In strsub
                If item.ToLower.StartsWith("size") Then
                    item = item.Remove(0, 8)
                    Dim strsub2() As String = Split(item, " H:")
                    strW = strsub2(0)
                    strH = strsub2(1).Replace("]", "")
                End If
            Next
        End If
        If Not IsNumeric(strW) Then
            intWidth = 1
        Else
            intWidth = strW
        End If
        If Not IsNumeric(strH) Then
            intHeight = 1
        Else
            intHeight = strH
        End If
    End If
    Dim strLocSub() As String
    Dim PntLoc As Point
    Dim strPixCol_NOW As String
    Dim chars() As Char = {"[", "X", "Y", "]"}
    strLocSub = Split(strLocation, ":")
    Dim i As Integer = 0
    For Each pnt In strLocSub
        Dim strCol As String = pnt
        strCol = strCol.Trim()
        strCol = strCol.TrimStart(chars)
        strCol = strCol.TrimEnd(chars)
        If i = 1 Then
            PntLoc.X = CInt(strCol)
        ElseIf i = 2 Then
            PntLoc.Y = CInt(strCol)
        End If
        i += 1
    Next
    Dim bmp As New Bitmap(1, 1)
    Dim pixel As Drawing.Color
    If boolPixelRange = False Then
        Using gr As Graphics = Graphics.FromImage(bmp)
            gr.CopyFromScreen(PntLoc, New Point(0, 0), New Size(1, 1))
        End Using
        pixel = bmp.GetPixel(0, 0)
        strPixCol_NOW = "Color [R=" & pixel.R & ", G=" & pixel.G & ", B=" & pixel.B & "]"
        If boolChanged = True Then
            strPixCol = strPixCol_NOW
        End If
    Else 'Pixel Range
        boolChanged = False
    End If
    If boolISthesame = True Then
        If strPixCol.ToUpper = strPixCol_NOW.ToUpper Then
            Return True
        Else
            Return False
        End If
    ElseIf boolISNotthesame = True Then
        If Not strPixCol.ToUpper = strPixCol_NOW.ToUpper Then
            Return True
        Else
            Return False
        End If
    ElseIf boolChanged = True Then
        Dim boolChange As Boolean
        Dim ii As Integer = 0
        If intWaitTime = 0 Then
            Do While boolChange = False
                If boolStop = True Then
                    Exit Function
                End If
                Dim bmpp As New Bitmap(1, 1)
                Using gr As Graphics = Graphics.FromImage(bmpp)
                    gr.CopyFromScreen(PntLoc, New Point(0, 0), New Size(1, 1))
                End Using
                pixel = bmpp.GetPixel(0, 0)
                strPixCol_NOW = "Color [R=" & pixel.R & ", G=" & pixel.G & ", B=" & pixel.B & "]"
                If Not strPixCol.ToUpper = strPixCol_NOW.ToUpper Then ' the pixel has changed at least one time
                    intChangeTimeCounter += 1
                    EventArrayAdd("42|evt|Pixel Color Change (" & intChangeTimeCounter & "/" & intChangeTimes & ") - From " & strPixCol & " to " & strPixCol_NOW & ")|evt|2", "macro")
                    strPixCol = strPixCol_NOW
                    If intChangeTimes &lt;= 1 Then
                        boolChange = True
                    ElseIf intChangeTimes &gt; 1 Then
                        If intChangeTimeCounter &gt;= intChangeTimes Then
                            boolChange = True
                        End If
                    End If
                End If
                If intDelay &gt; 0 Then
                    Thread.Sleep(intDelay)
                End If
            Loop
        Else
            Dim start_time As DateTime = Now
            Dim stop_time As DateTime
            Dim elapsed_time As TimeSpan
            Dim intElapsed As Integer
            Do Until intElapsed &gt;= intWaitTime
                If boolStop = True Then
                    Exit Function
                End If
                Dim bmpp As New Bitmap(1, 1)
                Using gr As Graphics = Graphics.FromImage(bmpp)
                    gr.CopyFromScreen(PntLoc, New Point(0, 0), New Size(1, 1))
                End Using
                pixel = bmpp.GetPixel(0, 0)
                strPixCol_NOW = "Color [R=" & pixel.R & ", G=" & pixel.G & ", B=" & pixel.B & "]"
                If Not strPixCol.ToUpper = strPixCol_NOW.ToUpper Then ' the pixel has changed at least one time
                    intChangeTimeCounter += 1
                    EventArrayAdd("42|evt|Pixel Color Change (" & intChangeTimeCounter & "/" & intChangeTimes & ") - From " & strPixCol & " to " & strPixCol_NOW & ")|evt|2", "macro")
                    strPixCol = strPixCol_NOW
                    If intChangeTimes &lt;= 1 Then
                        boolChange = True
                        Exit Do
                    ElseIf intChangeTimes &gt; 1 Then
                        If intChangeTimeCounter &gt;= intChangeTimes Then
                            boolChange = True
                            Exit Do
                        End If
                    End If
                End If
                stop_time = Now
                elapsed_time = stop_time.Subtract(start_time)
                intElapsed = elapsed_time.TotalSeconds.ToString("0")
                If intDelay &gt; 0 Then
                    Thread.Sleep(intDelay)
                End If
            Loop
            If intElapsed &gt;= intWaitTime Then
                EventArrayAdd("42|evt|Pixel Color Change - No change detected during the wait time (" & intWaitTime & ") |evt|2", "macro")
                boolChange = False
            End If
        End If
        If boolChange = True Then
            Return True
        Else
            Return False
        End If
    ElseIf boolPixelRange = True Then
        Dim boolChange As Boolean
        Dim bmporig As New Bitmap(intWidth, intHeight)
        Using grorig As Graphics = Graphics.FromImage(bmporig)
            grorig.CopyFromScreen(PntLoc, New Point(0, 0), New Size(intWidth, intHeight))
        End Using
        If intWaitTime = 0 Then
            Do While boolChange = False
                Dim intXP As Integer = 1
                Dim intYP As Integer = 1
                If boolStop = True Then
                    Exit Function
                End If
                Dim bmpp As New Bitmap(intWidth, intHeight)
                Using gr As Graphics = Graphics.FromImage(bmpp)
                    gr.CopyFromScreen(PntLoc, New Point(0, 0), New Size(intWidth, intHeight))
                End Using
                Dim boolNoChange As Boolean = True
                For x = 0 To bmporig.Width - 1
                    intYP = 0
                    For y = 0 To bmporig.Height - 1
                        ' For y = 0 To bmpp.Height - 1
                        ' This code can be edited to allow for an if pixel color detected style option (development)
                        If bmporig.GetPixel(x, y) &lt;&gt; bmpp.GetPixel(x, y) Then
                            boolNoChange = False
                            Exit For
                        End If
                        intYP = y
                    Next
                    intXP = x
                    If boolNoChange = False Then
                        Exit For
                    End If
                Next
                If boolNoChange = False Then
                    Using grorig As Graphics = Graphics.FromImage(bmporig)
                        grorig.CopyFromScreen(PntLoc, New Point(0, 0), New Size(intWidth, intHeight))
                    End Using
                    intChangeTimeCounter += 1
                    EventArrayAdd("42|evt|Pixel Range Change (" & intChangeTimeCounter & "/" & intChangeTimes & ") - First detected at pixel W:" & intXP & " and H:" & intYP & ")|evt|2", "macro")
                    If intChangeTimes &lt;= 1 Then
                        boolChange = True
                    ElseIf intChangeTimes &gt; 1 Then
                        If intChangeTimeCounter &gt;= intChangeTimes Then
                            boolChange = True
                        End If
                    End If
                End If
                If intDelay &gt; 0 Then
                    Thread.Sleep(intDelay)
                End If
            Loop
        Else
            Dim start_time As DateTime = Now
            Dim stop_time As DateTime
            Dim elapsed_time As TimeSpan
            Dim intElapsed As Integer
            Do Until intElapsed &gt;= intWaitTime
                Dim intXP As Integer = 1
                Dim intYP As Integer = 1
                If boolStop = True Then
                    Exit Function
                End If
                Dim bmpp As New Bitmap(intWidth, intHeight)
                Using gr As Graphics = Graphics.FromImage(bmpp)
                    gr.CopyFromScreen(PntLoc, New Point(0, 0), New Size(intWidth, intHeight))
                End Using
                Dim boolNoChange As Boolean = True
                For x = 0 To bmporig.Width - 1
                    intYP = 0
                    For y = 0 To bmporig.Height - 1
                        ' For y = 0 To bmpp.Height - 1
                        If bmporig.GetPixel(x, y) &lt;&gt; bmpp.GetPixel(x, y) Then
                            boolNoChange = False
                            Exit For
                        End If
                        intYP = y
                    Next
                    intXP = x
                    If boolNoChange = False Then
                        Exit For
                    End If
                Next
                If boolNoChange = False Then
                    Using grorig As Graphics = Graphics.FromImage(bmporig)
                        grorig.CopyFromScreen(PntLoc, New Point(0, 0), New Size(intWidth, intHeight))
                    End Using
                    intChangeTimeCounter += 1
                    EventArrayAdd("42|evt|Pixel Range Change (" & intChangeTimeCounter & "/" & intChangeTimes & ") - First detected at pixel W:" & intXP & " and H:" & intYP & ")|evt|2", "macro")
                    If intChangeTimes &lt;= 1 Then
                        boolChange = True
                        Exit Do
                    ElseIf intChangeTimes &gt; 1 Then
                        If intChangeTimeCounter &gt;= intChangeTimes Then
                            boolChange = True
                            Exit Do
                        End If
                    End If
                End If
                stop_time = Now
                elapsed_time = stop_time.Subtract(start_time)
                intElapsed = elapsed_time.TotalSeconds.ToString("0")
                If intDelay &gt; 0 Then
                    Thread.Sleep(intDelay)
                End If
            Loop
            If intElapsed &gt;= intWaitTime Then
                EventArrayAdd("42|evt|Pixel Range Change - No change detected during the wait time (" & intWaitTime & ") |evt|2", "macro")
                boolChange = False
            End If
        End If
        If boolChange = True Then
            Return True
        Else
            Return False
        End If
    End If
End Function

User: cyberchipz

Date: Feb 22, 2020 7:45:23 GMT

Wow! Did I ask for that! lol While I can say the language is very familiar. I’m sure I don’t recognize all the function calls.  But, I’ll look at it.  Tomorrow… (if I can pee in the morning… having issues again… damned operation causing problems.) so.. thought I was talking to zeak… and yeah… my wall of text… but I have to say yours is a little more logical than mine… but I can already see we’re saying some of the same things. .bmp is lossless, so that’s good. And I skimmed the rest.. lol  Sorry I was TL:DR.  L8r|


Clarifying Line Labels

URL: https://minimousemacro.proboards.com/thread/234/clarifying-line-labels
Date: Feb 16, 2020 18:30:47 GMT

User: cyberchipz

Date: Feb 16, 2020 18:30:47 GMT

I understand that line labels used for GOTO statements are a type of comment line. Q: How is that LABEL treated?  Do all comment lines become labels, and if so, how is that limited?

I tested, and the answer is no, not all comments become labels.. to be a label the line must be a comment with only a single word.     I will try to answer my own questions in the future if I can do it. 

I’m thinking that posting the question for current or future users might be a way to document my noobie questions. 

If you’re good with that, I will continue to ask and answer when possible.  This was the first time I went back and answered it.       Example:  This is a comment     * | Variable that counts Tasks     Does this also become a GOTO Label called Variable ?  If yes, does it just ignore everything after the first word, or does it have to be a single word?     I answered my own question: No, labels are comments with only one word… but one can use an underscore, this is a label * | Variable_that_counts_tasks Q: Is there a limit on the number of Labels in a macro?

Partly answered, this came from my concern if every comment is also a Label; but since that’s not so…     I would still like to know if there’s a limit?  Well, answered the first two… so had an idea…

Q: More of an idea than a question     Would it be possible, or can we already, add a comment after any line of code?  I was thinking of this format, for example.     This would be a line of code with a comment after it…

5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::0  * | Initialize tracker count

    I’m thinking this way we can associate directly the comment with the code.  Perhaps a special coding to recognize the comment like |* instead of | * if needed and it would serve in place of the CR/LF to program flow.     I think I’ve seen you use an ELSE statement to make a comment or perhaps I’m mistaken. Thanks for any instruction you can provide me.  I’ve learned so much over the last few days.  I still keep reading the documentation but these questions popped up and I couldn’t find anything that clarified an answer.

User: cyberchipz

Date: Feb 16, 2020 23:08:46 GMT

I’m just brainstorming here: so anyone can pipe in, I’d appreciate it. On continual examination, if comments had their own line number, along with the line labels, things would be so much easier.  (sigh) I was trying to develop a system for gosub and return, and that’s the issue I’m running into.  It’s not lost on me that it would require a rewrite of previously existing macros, and that’s the rub! So, I’m trying to come up with an algorithm that would count the comments and labels at any given line… because the issue with %RETURN% is that it gives the current REAL line number which includes comments and labels up to that point. Perhaps simply adding a feature which would give one the choice of going to a real line number, or the older line number that’s showing might work or at least be transitionally sound. And there’s the rub; I’m trying to find a way that wouldn’t require any or much work from Steve.   My head keeps telling me there’s a way.  Perhaps placing Subroutines at the beginning or end of the macro, or knowing the count of comments and labels at the start of the subroutine section.  Perhaps being able to pass a line label would work.  I’m just brainstorming here. If we could pass a line label, then we could gosub to a line label, and return to a line label.  That would allow us to use the subroutine anywhere.  The label would have to be passed, because only the passing routine would know where it was going to come back. Another thought was the concept of a stack, which is how it’s done in machine language.  You could PUSH label (a return location) onto the stack, and when the subroutine was done, it would POP label (the return location) off the stack to go back. This isn’t the the first time I was thinking a stack could be useful.  Since I don’t know your full background on programming Steve, I’m not sure on what level to talk.  It seems (and the exemplary nature of MMM suggests you’re quite savvy). I mean, I know what it takes to create a macro builder that can access processes at the level it does. So, it just dawned on me that reading and writing to a file could be made to act like a LIFO stack, Last In, First Out.  And since we can store numeric values we can push them in and pop them out whenever.  I am seeing I have much to learn about MMM! LOL. OR, I could use a dedicated %STRING% for it, with fixed length… hmmm, does MMM have a left$ or right$ or mid$ command.  Well, enough brainstorming for now.  So, perhaps build a PUSH and POP macro first.  I saw that MMM can load and run a macro from a file in runtime.  OK, this helped.  Perhaps I should just delete this post… but, let me try leaving it up, and if anyone has some pointers for me. :-)  And, thanks if you do… OH just realized… line numbers keep changing, and there’s the rub… Yeah… need to perhaps goto a line label that’s named in a string.  GOTO MACRO LINE %string%. Well maybe it already does it.  I know GOTO MACRO LINE %integer% works… but line numbers change… Labels don’t.

User: cyberchipz

Date: Feb 16, 2020 23:56:03 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 16, 2020 23:08:46 GMT

cyberchipz said: I’m just brainstorming here: so anyone can pipe in, I’d appreciate it. AND, just like that… solved.  Maybe it’s my age that I try to make things so complicated… or maybe I’m just not versed in MMM yet. (Yeah, I’ll buy that!) So, simply I just needed a break from the bright lights, to calm down and think… it was as simple as this… and I now have subroutines.

* | Head
1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::Head2
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::Get_Return
3 | RUN ACTION | GOTO MACRO LINE | %STRING1%
* | Head2
4 | RUN ACTION | MESSAGE PROMPT | Stopped here from Sub::%STRING%::1
5 | RUN ACTION | STOP
* | Get_Return
6 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::%STRING%
7 | RUN ACTION | MESSAGE PROMPT | Stopped here from Head::%STRING%::1
8 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::Made it back
9 | RUN ACTION | GOTO MACRO LINE | %STRING1%

And best of all… I didn’t have to ask Steve for a anything… (I’m trying Steve, honest I am! ;-)  As my father would say…. “You sure are!” The worst part is I’m having more fun playing with this, than I did with my game! My “clan mates”  are starting to notice.

User: Steve

Date: Feb 21, 2020 6:04:15 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 16, 2020 18:30:47 GMT

cyberchipz said: I understand that line labels used for GOTO statements are a type of comment line. Q: How is that LABEL treated?  Do all comment lines become labels, and if so, how is that limited?

I tested, and the answer is no, not all comments become labels.. to be a label the line must be a comment with only a single word.     I will try to answer my own questions in the future if I can do it. 

I’m thinking that posting the question for current or future users might be a way to document my noobie questions. 

If you’re good with that, I will continue to ask and answer when possible.  This was the first time I went back and answered it.       Example:  This is a comment     * | Variable that counts Tasks     Does this also become a GOTO Label called Variable ?  If yes, does it just ignore everything after the first word, or does it have to be a single word?     I answered my own question: No, labels are comments with only one word… but one can use an underscore, this is a label * | Variable_that_counts_tasks Q: Is there a limit on the number of Labels in a macro?

Partly answered, this came from my concern if every comment is also a Label; but since that’s not so…     I would still like to know if there’s a limit?  Well, answered the first two… so had an idea…

Q: More of an idea than a question     Would it be possible, or can we already, add a comment after any line of code?  I was thinking of this format, for example.     This would be a line of code with a comment after it…

5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::0  * | Initialize tracker count

    I’m thinking this way we can associate directly the comment with the code.  Perhaps a special coding to recognize the comment like |* instead of | * if needed and it would serve in place of the CR/LF to program flow.     I think I’ve seen you use an ELSE statement to make a comment or perhaps I’m mistaken. Thanks for any instruction you can provide me.  I’ve learned so much over the last few days.  I still keep reading the documentation but these questions popped up and I couldn’t find anything that clarified an answer. Chip sorry i’ve been really busy lately with work and well…just life in general. Haven’t had much free time for anything, especially MMM. On a side note - i do enjoy reading your posts. They do make me laugh a little, in a good way. You answered the first two yourself - nice.
The third: Q - Can we have comments after the line (at the end of the line) A - Noooo this it will fail. BUT we can have this…You might not have discovered this yet. its probably going to spin you out.  (right click - edit entry - loop line - add/remove   or    ctrl+L on a line(s))

5 | RUN ACTION | MESSAGE PROMPT | %TIME% %random_1-1000%::%random_500-1000%::1

| loop 2::100 Again i’ve run out of time for now.  I haven’t finished reading your other posts but will get round to them. Cheers Chip
eyesroll.png

User: cyberchipz

Date: Feb 21, 2020 9:02:31 GMT

JFoc0jEJzNqTrrLxeLBk.jpg Feb 21, 2020 6:04:15 GMT

Steve said: KvolAHXIscEA0UEcnLFo.gif Feb 16, 2020 18:30:47 GMT

cyberchipz said:

5 | RUN ACTION | MESSAGE PROMPT | %TIME% %random_1-1000%::%random_500-1000%::1

| loop 2::100 Q: I’ll take, what is epilepsy for 1000 Steve! A: What is a good thing I don’t have…  good thing you didn’t type in 3::100! lol That could make one loopy… Are you trying to say you’re loopy! :-) Makes for a good thing for debugging when I keep missing the debug message cause I put in a ::1 instead of a ::0 I was starting to go a bit loopy playing with it… Looks a bit like an alarm clock going off… or a quick way to make a line into a place to pause… yeah.. I can see uses… :-) Thanks!


Create a simple input response from User (me! :-)

URL: https://minimousemacro.proboards.com/thread/226/create-simple-input-response-user
Date: Feb 9, 2020 16:37:51 GMT

User: cyberchipz

Date: Feb 9, 2020 16:37:51 GMT

OK, I found in this forum, under the LEAP YEAR post, a question which uses the INPUT BOX, that answers my first question; but  one of the things I’m looking for is a list of all the RUN ACTIONS that are available.  If I’d been able to find a list of these I could have used that information.  I found the RUN ACTION command, but there is no list of ACTIONS.  I like that the IF command allows one to build actions, I can figure things out from that, as there’s a list of options in each selection box when creating an IF command; however I find no such aid for creating a RUN ACTION, so  looked for a list of these and couldn’t find it. I can use the input box perhaps, I will try.  Below is my first post, this is an edit and if there’s any question that I asked you might address, I’d appreciate the help.  Mostly I’m just looking for a comprehensive programming or coding language reference to everything MMMPro can do; a grammar and syntax guide. so to speak… For reference, this was what I originally wrote: I would like to simply be able to input a number. I am creating a custom loop, or make a calculation from the number input (I want to calculate time before keypress and a loop count).  It may be 1 to 3 digits, or text.  Can I convert a string to text?  Can we call an input box which takes a return to input the value, like TXTBOX (variable = text, or variable = convert string to integer(%string%), or something like that?  Or could you direct me to information on the website for handling input and conversions? Since I don’t know how long the input will be, ex: number of characters from keypress, detecting the return chr(13) or some such and building input into a single number would work. I could just prompt for numeric or alpha, which would be fine so no conversion is needed (but is it possible).  I noticed that one of your examples uses a file to save input, is that needed?  I’ve coded for over 50 years, just trying to get a basic grasp of what can and can’t be done using MMM with respect to user input.  Thanks for your help!

User: zeak

Date: Feb 9, 2020 21:41:53 GMT

Hi Cyberchipz, Welcome to the forum. Unfortunately all I can help you with is the webpage that shows all the things you can do with default use. <www.turnssoft.com/conditions.html>

User: Steve

Date: Feb 10, 2020 5:54:02 GMT

Hi Cyberchipz, KvolAHXIscEA0UEcnLFo.gif Feb 9, 2020 16:37:51 GMT

cyberchipz said: OK, I found in this forum, under the LEAP YEAR post, a question which uses the INPUT BOX, that answers my first question; but  one of the things I’m looking for is a list of all the RUN ACTIONS that are available.  If I’d been able to find a list of these I could have used that information.  I found the RUN ACTION command, but there is no list of ACTIONS.  I like that the IF command allows one to build actions, I can figure things out from that, as there’s a list of options in each selection box when creating an IF command; however I find no such aid for creating a RUN ACTION, so  looked for a list of these and couldn’t find it. The gif below might be able to help out with the first question. Take of note of using the ‘Add Condition’ page to build conditions in conjunction with zeak ‘s suggestion of <www.turnssoft.com/conditions.html> . The graphic illustrates some of the basic scripting and condition use. minimousemacro-inputboxint.gif KvolAHXIscEA0UEcnLFo.gif Feb 9, 2020 16:37:51 GMT

cyberchipz said: I can use the input box perhaps, I will try.  Below is my first post, this is an edit and if there’s any question that I asked you might address, I’d appreciate the help.  Mostly I’m just looking for a comprehensive programming or coding language reference to everything MMMPro can do; a grammar and syntax guide. so to speak… Best bet is to checkout this forum. The search function on the forum is surprisingly good. Try search for gif ( minimousemacro.proboards.com/board/3/help?q=.gif ) to or check out this raw archive here . KvolAHXIscEA0UEcnLFo.gif Feb 9, 2020 20:31:41 GMT

cyberchipz said: Yeah, but can it handle any math functions… I’m trying to add two integers and not having success… 3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER1%+%INTEGER2% not even this is working… simple addition. it only adds into %INTEGER4% the value of %INTEGER1%… I suppose I can do it on two lines… adding to Integer4%::+%INTEGER2% … tedious. So you’ve probably figured out with your background that MMM applies scripting concepts but is not a comprehensive language. Some of the scripting concepts we take advantage of in languages like python or scripting with powershell are just not possible here. BUT that doesn’t mean they can’t be added.  A lot (i’d say 99%) of the development comes from suggestions on this forum.
MMM is good as a tool to graphically create macro’s that can take queues from the local environment with some basic scripting functionality. Hope this helps.

User: cyberchipz

Date: Feb 15, 2020 9:18:18 GMT

I was just thinking, that while 3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER1%+%INTEGER2% DID NOT WORK, you might extend MMM math functions by a simple concept… Since you use :: as a delimiter between parameters this might allow you to code a fairly quick modification to allow extended math functions.

3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER1%::+2::*1000+%INTEGER2% which by simple looping in the right place, could allow MMM to continue math operations.  This would be a simple math, in the order precedence would be... it does them in the order discovered to the originally defined variable. Interpreting each operation, then doing it.  So this would be interpreted.

+%INTEGER4%::+%INTEGER1% (Naturally), but then parse and reiterate +%INTEGER4%::+2, now adding 2 to %INTEGER4% the DEFINED INTEGER VARIABLE, then parse/reiterate %INTEGER4%::100, parse reiterate %INTEGER4%::+%INTEGER2% ad nauseum but setting a limit, or none if wanted or needed.   You might need, or want a delimiter like a pipe to indicate that there were no more, but the CR/LF could also work. The coder would determine operator precedent on math operations in how it was written.  No parsing and reparsing in order to determine the order of operations.  This sticks with the basic concept of KISS, keeping it SIMPLE. More complex math would require additional lines of code. BTW I would also suggest adding an option to change the background color?! (pretty please).  I too code for pleasure, being retired and all… ** Mindless reminiscing beyond this point… Can ignore… *** In the days… my preference and first love was BASIC, and my second would have to be C++ as it was my true 2nd language.  I always tried to stay close to the machine.  Which if I’m honest, my first language was AUTOCODE, which was a paper coding language (bleech!), then APL (now defunct), then BASIC, COBOL, Fortran, TURBO, 8086 Machine Language, then C and C++.  I miss the simpler days.. and MMM reminds me of those days.  I look forward to messing around with the PROCESS actions. For fun, in the between years… when I had my own Computer Shop; I provided services for small businesses. Networking, Building Machines and Networks, whatever I could find.  In my spare time (days the storms didn’t bring me new customers, and my existing customers didn’t have issues, I would track down and hunt Spammers and foreign spoofers who tried to steal credit cards.  That got me into security… a lot! lol  As retaliation was a given.  The stories I could tell. :-) My first, solo coding for fun, was my first computer, a Commodore 64! It used an 8086 chip, and was a lot of fun.  I knew NORTON at one point; but I’m sure he’s long forgotten me… I didn’t like him much… for those of us who were first to decode MSDOS (I was one), we would decode the OS, and with a newsletter, no Bulletin Boards or eMail in those days, we’d decode the processes in the OS, and memory locations (things were more stable then) where they were stored, the parameters needed, and document them.  So, I was one of the volunteer MSDOS documenters… NORTON took those newsletters and published them in a book, and sold it back to us… We were furious.  That’s why I don’t much care for him; He never looked back, and parlayed that into a thriving profession. Well, I’ve gone on for a bit; better quit before I get a TLDR or wall of text complaint! lol I want to add by way of a complement again how much I appreciate your little piece of work MMM.  When I was in need many years ago; it did what I needed, and got lost in an upgrade.  When I was searching again for a Mouse and Keyboard MACRO builder, you were in a top 10 list online… I saw it, and literally let out a squeal of delight.  Most of the them just captured and played back mouse clicks.  They all were free or shareware.  I skimmed them. You were the first one mentioned… and I didn’t need to look further.  As you can see by my “wall of text” I’m a prolific typist.  Years of coding did that. I learned to type when I was 12, and I love being able to touch type any code or symbol on the keyboard.  So the pipe | works as a delimiter for me… I already knew it.   Shutting down the wall… for now. L8r)

User: Steve

Date: Feb 17, 2020 9:08:34 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 15, 2020 9:18:18 GMT

cyberchipz said: I was just thinking, that while 3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER1%+%INTEGER2% DID NOT WORK, you might extend MMM math functions by a simple concept… Since you use :: as a delimiter between parameters this might allow you to code a fairly quick modification to allow extended math functions. Yes - i like this. This is a quick win and I will defiantly look at this for the next update. Thank you Chip
wink.png


How to run a formula and double?

URL: https://minimousemacro.proboards.com/thread/167/run-formula-double
Date: May 14, 2019 0:21:47 GMT

User: zeak

Date: May 14, 2019 0:21:47 GMT

I’ve been trying to run this script, but have realised that cant use a complex formula. The expected out come is 10267.07005 but I’ve noticed that INTEGER doesn’t allow for a DOUBLE value (meaning decimal places) Also when I set %INTEGER1% to 1.5 it sets it to 2 which will also mess up the calculation.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::10
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::1.5
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::10000
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::30000
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::%INTEGER2%+(((%INTEGER2%*%INTEGER1%^(2-1))-%INTEGER2%)*(%INTEGER3%-%INTEGER2%)/((%INTEGER2%*%INTEGER1%^(%INTEGER%-1))-%INTEGER2%))
6 | RUN ACTION | MESSAGE PROMPT | %INTEGER4%::::0

here is the formula by its self. %INTEGER2%+(((%INTEGER2%%INTEGER1%^(2-1))-%INTEGER2%)(%INTEGER3%-%INTEGER2%)/((%INTEGER2%*%INTEGER1%^(%INTEGER%-1))-%INTEGER2%)) If someone could help me understand how to run a complex formula it would be much appreciated.

User: zeak

Date: May 14, 2019 21:39:02 GMT

Hi Steve, Would it be possible to have an option in settings to toggle between double and single integer values, in case you need do calculations of floating point values.

User: zeak

Date: May 14, 2019 22:54:33 GMT

I’ve tried just doing a simple multiply script and I get a unusual error.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::100
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::3
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::*%INTEGER1%
4 | RUN ACTION | MESSAGE PROMPT | %INTEGER%::::0

svYFS7h.png Edit: ADDITION and SUBTRACTION seem to work fine. MULTIPLICATION, DIVISION, POWER and MODULUS don’t.

User: zeak

Date: May 16, 2019 4:58:36 GMT

I’ve noticed some of this is covered in another thread. minimousemacro.proboards.com/thread/137/math-functions-work But the part about working with decimals is still valid.

User: Steve

Date: May 23, 2019 22:19:10 GMT

Hi Zeak, Sorry to keep you waiting on this one.
First

  • Unfortunately MMM can not do complex math.
    %INTEGER4%::%INTEGER2%+(((%INTEGER2%%INTEGER1%^(2-1))-%INTEGER2%)(%INTEGER3%-%INTEGER2%)/((%INTEGER2%*%INTEGER1%^(%INTEGER%-1))-%INTEGER2%)) Statements with parentheses are not handled. Check out the integer condition page

<www.turnssoft.com/conditions.html#integer_variable> for a list of examples. Second

  • MMM treats numeric variables as strict integers only. Unfortunately decimals will be treated like a whole number. However, I will look to adding more math function and adding in decimal variables. Development work, as you’ve probably noticed, is a little slow at the moment. Thanks Zeak.

User: cyberchipz

Date: Feb 9, 2020 20:31:41 GMT

Yeah, but can it handle any math functions… I’m trying to add two integers and not having success… 3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER1%+%INTEGER2% not even this is working… simple addition. it only adds into %INTEGER4% the value of %INTEGER1%… I suppose I can do it on two lines… adding to Integer4%::+%INTEGER2% … tedious.

User: zeak

Date: Feb 9, 2020 21:46:30 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 9, 2020 20:31:41 GMT

cyberchipz said: Yeah, but can it handle any math functions… I’m trying to add two integers and not having success… 3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER1%+%INTEGER2% not even this is working… simple addition. it only adds into %INTEGER4% the value of %INTEGER1%… I suppose I can do it on two lines… adding to Integer4%::+%INTEGER2% … tedious. Yes Cyberchipz, the only way you can do this is individual lines but you can go into floating point values now with DECIMAL instead of INTEGER.

User: cyberchipz

Date: Feb 12, 2020 16:22:23 GMT

Thanks for all the help.. I’d have been back sooner but dealing with health issues.. (old age creeping in lol) Everything has been great so far, once I realized that it’s pretty much one line at a time I’m moving along swimmingly. The only issue I’ve run into is with line numbers… a simple label goto would be fantastic… I’ve yet to read the response in the post I made the label comment yet though… and, while I love that I can make this forum black with white letters with an app; I wish I could do the same with MMM pro, my old eyes are super strained with the black on white, it’s so hard.. but, that’s life. So for us aging programmers, I’d love to see an option to change background (dark) and font (light) but I’m dealing best I can so far.
I’m getting this under my belt, simple stuff so far, and for some I can now just use Notepad++ and copy/paste/edit command lines, especially once I have a good toolbox of functions and saved macros. I’ve always loved BASIC even though through the years have picked up more languages than I can now remember. lol This is a very BASIC! I love it so far. Now if I could just boost my productivity… doing more coding and testing than using so far. It will come eventually. :-)

User: zeak

Date: Feb 12, 2020 23:23:10 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 12, 2020 16:22:23 GMT

cyberchipz said: The only issue I’ve run into is with line numbers… a simple label goto would be fantastic… I’ve yet to read the response in the post I made the label comment yet though… So you can now use GOTO MACRO LINE to go to a line number or a remark or even just tell it to go to certain number of lines up or down with GOTO MACRO LINE | UP # Here are my two main macros the I’ve made and had fun with, First one uses a menu system to select a function to perform and the second one is mainly around date control. Hope they might help you answer some questions, I know i’m always looking at others examples to figure something out. 1.

* | Clear_All_Variables
1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::0
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::0
* | Clear_Function_Variables
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::0
5 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
6 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::
7 | RUN ACTION | DEFINE STRING VARIABLE | %STRING2%::
8 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::
9 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::FALSE
10 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN1%::FALSE
11 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN2%::FALSE
12 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN3%::FALSE
13 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN4%::FALSE
14 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN5%::FALSE
* | ## MAIN QUESTIONS ##
* | Question_Move
15 | RUN ACTION | INPUT BOX | Move Items Location?::Move Location?::PROMPT_YES_NO::STRING | ELSE | 15 | RUN ACTION | SELECT WINDOW BY NAME | Move Location?
16 | IF | STRING VARIABLE | %STRING% | IS | YES | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::TRUE
17 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
18 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | GOTO MACRO LINE | Function_Move
19 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS FALSE | GOTO MACRO LINE | Question_Status
* | Question_Status
20 | RUN ACTION | INPUT BOX | Update Items Status?::Update Status?::PROMPT_YES_NO::STRING | ELSE | 20 | RUN ACTION | SELECT WINDOW BY NAME | Update Status?
21 | IF | STRING VARIABLE | %STRING% | IS | YES | DEFINE BOOLEAN VARIABLE | %BOOLEAN1%::TRUE
22 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
23 | IF | BOOLEAN VARIABLE | %BOOLEAN1% | IS TRUE | GOTO MACRO LINE | Function_Status
24 | IF | BOOLEAN VARIABLE | %BOOLEAN1% | IS FALSE | GOTO MACRO LINE | Question_Expiry
* | Question_Expiry
25 | RUN ACTION | INPUT BOX | Update Items Expiry?::Update Expiry::PROMPT_YES_NO::STRING | ELSE | 25 | RUN ACTION | SELECT WINDOW BY NAME | Update Expiry
26 | IF | STRING VARIABLE | %STRING% | IS | YES | DEFINE BOOLEAN VARIABLE | %BOOLEAN2%::TRUE
27 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
28 | IF | BOOLEAN VARIABLE | %BOOLEAN2% | IS TRUE | GOTO MACRO LINE | Function_Expiry
29 | IF | BOOLEAN VARIABLE | %BOOLEAN2% | IS FALSE | GOTO MACRO LINE | Question_IssuesUnplanned
* | Question_IssuesUnplanned
30 | RUN ACTION | INPUT BOX | Issues Unplanned?::Issues Unplanned::PROMPT_YES_NO::STRING | ELSE | 30 | RUN ACTION | SELECT WINDOW BY NAME | Issues Unplanned
31 | IF | STRING VARIABLE | %STRING% | IS | YES | DEFINE BOOLEAN VARIABLE | %BOOLEAN3%::TRUE
32 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
33 | IF | BOOLEAN VARIABLE | %BOOLEAN3% | IS TRUE | GOTO MACRO LINE | Function_ISSUNP
34 | IF | BOOLEAN VARIABLE | %BOOLEAN3% | IS FALSE | GOTO MACRO LINE | Question_Continue
* | Question_Cyclecount
35 | RUN ACTION | INPUT BOX | Mass Cyclecount?::Cyclecount Stock::PROMPT_YES_NO::STRING | ELSE | 35 | RUN ACTION | SELECT WINDOW BY NAME | Cyclecount Stock
36 | IF | STRING VARIABLE | %STRING% | IS | YES | DEFINE BOOLEAN VARIABLE | %BOOLEAN6%::TRUE
37 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
38 | IF | BOOLEAN VARIABLE | %BOOLEAN6% | IS TRUE | GOTO MACRO LINE | Function_ISSUNP
39 | IF | BOOLEAN VARIABLE | %BOOLEAN6% | IS FALSE | GOTO MACRO LINE | Question_Continue
* | ## FUNCTION CONTROL ##
* | Function_Move
* | Function_Move_Site
40 | RUN ACTION | INPUT BOX | Changing Site?::SITE::PROMPT_YES_NO::STRING | ELSE | 40 | RUN ACTION | SELECT WINDOW BY NAME | SITE
41 | IF | STRING VARIABLE | %STRING% | IS | YES | DEFINE BOOLEAN VARIABLE | %BOOLEAN4%::TRUE
42 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
43 | IF | BOOLEAN VARIABLE | %BOOLEAN4% | IS TRUE | GOTO MACRO LINE | Question_Site
44 | IF | BOOLEAN VARIABLE | %BOOLEAN4% | IS FALSE | GOTO MACRO LINE | Function_Move_Location
* | Function_Move_Location
45 | RUN ACTION | INPUT BOX | Changing Location?::LOCATION::PROMPT_YES_NO::STRING | ELSE | 45 | RUN ACTION | SELECT WINDOW BY NAME | LOCATION
46 | IF | STRING VARIABLE | %STRING% | IS | YES | DEFINE BOOLEAN VARIABLE | %BOOLEAN5%::TRUE
47 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::
48 | IF | BOOLEAN VARIABLE | %BOOLEAN5% | IS TRUE | GOTO MACRO LINE | Question_Location
49 | IF | BOOLEAN VARIABLE | %BOOLEAN5% | IS FALSE | GOTO MACRO LINE | Question_Continue
* | Function_Status
50 | RUN ACTION | INPUT BOX | Update Status to: 1.INAC  2.ISOLATE  3.OK::UPDATE STATUS::INTEGER3 | ELSE | 50 | RUN ACTION | SELECT WINDOW BY NAME | UPDATE STATUS
51 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 0 | GOTO MACRO LINE | Funcation_Status
52 | IF | INTEGER VARIABLE | %INTEGER3% | GREATER THAN | 3 | GOTO MACRO LINE | Funcation_Status
53 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 1 | DEFINE STRING VARIABLE | %STRING1%::INAC
54 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 2 | DEFINE STRING VARIABLE | %STRING1%::ISOLATE
55 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 3 | DEFINE STRING VARIABLE | %STRING1%::OK
56 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::0
57 | RUN ACTION | INPUT BOX | Is "%STRING1%" the correct Status?::STATUS CHECK::PROMPT_YES_NO::STRING3 | ELSE | 57 | RUN ACTION | SELECT WINDOW BY NAME | STATUS CHECK
58 | IF | STRING VARIABLE | %STRING3% | IS | NO | GOTO MACRO LINE | Function_Status
59 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::
60 | RUN ACTION | GOTO MACRO LINE | QTY_CHANGE
* | Function_Expiry
61 | RUN ACTION | INPUT BOX | Please enter new expiry date (DD/MM/YYYY)::UPDATE EXPIRY::STRING1 | ELSE | 61 | RUN ACTION | SELECT WINDOW BY NAME | UPDATE EXPIRY
62 | IF | STRING VARIABLE | %STRING1% | IS |  | GOTO MACRO LINE | Function_Expiry
63 | RUN ACTION | INPUT BOX | Is "%STRING1%" the correct expiry?::EXPIRY CHECK::PROMPT_YES_NO::STRING3 | ELSE | 63 | RUN ACTION | SELECT WINDOW BY NAME | EXPIRY CHECK
64 | IF | STRING VARIABLE | %STRING3% | IS | NO | GOTO MACRO LINE | Function_Expiry
65 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::
66 | RUN ACTION | GOTO MACRO LINE | QTY_CHANGE
* | Function_ISSUNP
67 | RUN ACTION | MESSAGE PROMPT | FUNCTION NOT AVAILABLE YET::::5
68 | RUN ACTION | GOTO MACRO LINE | Question_Continue
* | ## SECONDARY QUESTIONS ##
* | Question_Site
69 | RUN ACTION | INPUT BOX | New site please::SITE::STRING1 | ELSE | 69 | RUN ACTION | SELECT WINDOW BY NAME | SITE
70 | IF | STRING VARIABLE | %STRING1% | IS |  | GOTO MACRO LINE | Question_Site
71 | RUN ACTION | INPUT BOX | Is "%STRING1%" the correct site?::SITE CHECK::PROMPT_YES_NO::STRING3 | ELSE | 71 | RUN ACTION | SELECT WINDOW BY NAME | SITE CHECK
72 | IF | STRING VARIABLE | %STRING3% | IS | NO | GOTO MACRO LINE | Question_Site
73 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::
74 | RUN ACTION | GOTO MACRO LINE | Question_Location
* | Question_Location
75 | RUN ACTION | INPUT BOX | New location please::LOCATION::STRING2 | ELSE | 75 | RUN ACTION | SELECT WINDOW BY NAME | LOCATION
76 | IF | STRING VARIABLE | %STRING2% | IS |  | GOTO MACRO LINE | Question_Location
77 | RUN ACTION | INPUT BOX | Is "%STRING2%" the correct location?::LOCATION CHECK::PROMPT_YES_NO::STRING3 | ELSE | 77 | RUN ACTION | SELECT WINDOW BY NAME | LOCATION CHECK
78 | IF | STRING VARIABLE | %STRING3% | IS | NO | GOTO MACRO LINE | Question_Location
79 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::
80 | RUN ACTION | GOTO MACRO LINE | QTY_CHANGE
* | QTY_CHANGE
81 | RUN ACTION | INPUT BOX | Number of items to change/update?::QUANTITY TO CHANGE::INTEGER3 | ELSE | 81 | RUN ACTION | SELECT WINDOW BY NAME | QUANTITY TO CHANGE
82 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 0 | GOTO MACRO LINE | QTY_CHANGE
83 | RUN ACTION | INPUT BOX | Is "%INTEGER3%" the correct quantity?::QUANTITY CHECK::PROMPT_YES_NO::STRING3 | ELSE | 83 | RUN ACTION | SELECT WINDOW BY NAME | QUANTITY CHECK
84 | IF | STRING VARIABLE | %STRING3% | IS | NO | GOTO MACRO LINE | QTY_CHANGE
85 | RUN ACTION | DEFINE STRING VARIABLE | %STRING3%::
86 | RUN ACTION | GOTO MACRO LINE | Find_Search
* | ## FINDING BUTTONS ##
* | Find_Search
87 | IF | INTEGER VARIABLE | %INTEGER% | IS NOT | 0 | GOTO MACRO LINE | Find_Button
88 | RUN ACTION | MESSAGE PROMPT | Please click "OK" and then mouse over "Search" button.::SEARCH BUTTON::0 | ELSE | 88 | RUN ACTION | SELECT WINDOW BY NAME | SEARCH BUTTON
* | Find_Search_AfterPrompt
89 | IF | PIXEL RANGE | At Location [X:600 Y:130]::Size [W:500 H:25] | CHANGES::1::0::0 | DEFINE INTEGER VARIABLE | %INTEGER%::%MOUSE_X%
* | 89 | IF | INTEGER VARIABLE | %INTEGER% | IS NOT | 0 | MESSAGE PROMPT | %INTEGER%::MOUSE::1
* | 90 | %INTEGER% | 140 | 1 | Mouse Movement
* | 91 | RUN ACTION | INPUT BOX | Is this the correct Search Button location?::SEARCH BUTTON CHECK::PROMPT_YES_NO::STRING3 | ELSE | 91 | RUN ACTION | SELECT WINDOW BY NAME | SEARCH BUTTON CHECK
* | 92 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
* | 93 | IF | STRING VARIABLE | %STRING3% | IS | NO | GOTO MACRO LINE | Find_Search_AfterPrompt
90 | IF | INTEGER VARIABLE | %INTEGER% | IS | 0 | GOTO MACRO LINE | Find_Search_AfterPrompt
91 | IF | INTEGER VARIABLE | %INTEGER% | IS NOT | 0 | GOTO MACRO LINE | Find_Button
* | Find_Button
92 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | GOTO MACRO LINE | Find_Batch
93 | IF | BOOLEAN VARIABLE | %BOOLEAN1% | IS TRUE | GOTO MACRO LINE | Find_Expiry
94 | IF | BOOLEAN VARIABLE | %BOOLEAN2% | IS TRUE | GOTO MACRO LINE | Find_Expiry
* | Find_Expiry
95 | IF | INTEGER VARIABLE | %INTEGER1% | IS NOT | 0 | GOTO MACRO LINE | Actions
96 | RUN ACTION | MESSAGE PROMPT | Please click "OK" and then mouse over "Update Expiry" button.::EXPIRY BUTTON::0 | ELSE | 96 | RUN ACTION | SELECT WINDOW BY NAME | EXPIRY BUTTON
* | Find_Expiry_AfterPrompt
97 | IF | PIXEL RANGE | At Location [X:1100 Y:80]::Size [W:1000 H:30] | CHANGES::1::0::0 | DEFINE INTEGER VARIABLE | %INTEGER1%::%MOUSE_X%
98 | IF | INTEGER VARIABLE | %INTEGER1% | IS | 0 | GOTO MACRO LINE | Find_Expiry_AfterPrompt
99 | IF | INTEGER VARIABLE | %INTEGER1% | IS NOT | 0 | GOTO MACRO LINE | Actions
* | Find_Batch
100 | IF | INTEGER VARIABLE | %INTEGER2% | IS NOT | 0 | GOTO MACRO LINE | Actions
101 | RUN ACTION | MESSAGE PROMPT | Please click "OK" and then mouse over "Update Batch" button.::BATCH BUTTON::0 | ELSE | 101 | RUN ACTION | SELECT WINDOW BY NAME | BATCH BUTTON
* | Find_Batch_AfterPrompt
102 | IF | PIXEL RANGE | At Location [X:1100 Y:80]::Size [W:1000 H:30] | CHANGES::1::0::0 | DEFINE INTEGER VARIABLE | %INTEGER2%::%MOUSE_X%
103 | IF | INTEGER VARIABLE | %INTEGER2% | IS | 0 | GOTO MACRO LINE | Find_Batch_AfterPrompt
104 | IF | INTEGER VARIABLE | %INTEGER2% | IS NOT | 0 | GOTO MACRO LINE | Actions
* | ## PERFORMING ACTIONS ##
* | Actions
105 | RUN ACTION | MESSAGE PROMPT | Button locations Registered, Click ok to continue.::BUTTONS REGISTERED::0 | ELSE | 105 | RUN ACTION | SELECT WINDOW BY NAME | BUTTONS REGISTERED
106 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | GOTO MACRO LINE | Action_Move
107 | IF | BOOLEAN VARIABLE | %BOOLEAN1% | IS TRUE | GOTO MACRO LINE | Action_Status
108 | IF | BOOLEAN VARIABLE | %BOOLEAN2% | IS TRUE | GOTO MACRO LINE | Action_Expiry
* | Action_Move
109 | %INTEGER2% | 95 | 1000 | Left Click Down
110 | %INTEGER2% | 95 | 1000 | Left Click Release
* | 111 | 530 | 410 | 1000 | Left Click Down
* | 112 | 530 | 410 | 1000 | Left Click Release
111 | X | X | 1000 | Keypress right
112 | IF | BOOLEAN VARIABLE | %BOOLEAN4% | IS FALSE | GOTO MACRO LINE | DOWN 3
113 | X | X | 750 | Keypress Ctrl+ | a
114 | X | X | 750 | Keypress %STRING1%
115 | X | X | 750 | Keypress tab
116 | X | X | 750 | Keypress %STRING2%
117 | X | X | 750 | Keypress enter
118 | X | X | 750 | Keypress enter
119 | X | X | 750 | Keypress Ctrl+ | enter
120 | X | X | 750 | Keypress Ctrl+ | enter
121 | %INTEGER% | 140 | 1000 | Left Click Down
122 | %INTEGER% | 140 | 1000 | Left Click Release
123 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::-1
124 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 0 | GOTO MACRO LINE | Question_Continue
125 | IF | INTEGER VARIABLE | %INTEGER3% | IS NOT | 0 | GOTO MACRO LINE | Action_Move
* | Action_Status
126 | %INTEGER1% | 95 | 1000 | Left Click Down
127 | %INTEGER1% | 95 | 1000 | Left Click Release
128 | X | X | 750 | Keypress right
129 | X | X | 750 | Keypress tab
130 | X | X | 750 | Keypress tab
131 | X | X | 750 | Keypress tab
132 | X | X | 750 | Keypress %STRING1%
133 | X | X | 750 | Keypress enter
134 | X | X | 750 | Keypress Ctrl+ | enter
135 | %INTEGER% | 140 | 1000 | Left Click Down
136 | %INTEGER% | 140 | 1000 | Left Click Release
137 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::-1
138 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 0 | GOTO MACRO LINE | Question_Continue
139 | IF | INTEGER VARIABLE | %INTEGER3% | IS NOT | 0 | GOTO MACRO LINE | Action_Status
* | Action_Expiry
140 | %INTEGER1% | 95 | 1000 | Left Click Down
141 | %INTEGER1% | 95 | 1000 | Left Click Release
142 | X | X | 750 | Keypress right
143 | X | X | 750 | Keypress Ctrl+ | a
144 | X | X | 750 | Keypress %STRING1%
145 | X | X | 750 | Keypress enter
146 | X | X | 750 | Keypress Ctrl+ | enter
147 | %INTEGER% | 140 | 1000 | Left Click Down
148 | %INTEGER% | 140 | 1000 | Left Click Release
149 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::-1
150 | IF | INTEGER VARIABLE | %INTEGER3% | IS | 0 | GOTO MACRO LINE | Question_Continue
151 | IF | INTEGER VARIABLE | %INTEGER3% | IS NOT | 0 | GOTO MACRO LINE | Action_Expiry
* | Action_IssUnp
* | Question_Continue
152 | RUN ACTION | INPUT BOX | Do you wish to change something else?::CONTINUE?::PROMPT_YES_NO::STRING | ELSE | 152 | RUN ACTION | SELECT WINDOW BY NAME | CONTINUE?
153 | IF | STRING VARIABLE | %STRING% | IS | YES | GOTO MACRO LINE | Clear_Function_Variables
154 | IF | STRING VARIABLE | %STRING% | IS | NO | GOTO MACRO LINE | Exit
* | Exit
155 | RUN ACTION | STOP

2.

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::%mouse_x% | AND | 2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%mouse_y%
* | Questions
2 | RUN ACTION | INPUT BOX | Enter Date as DD::WC Date::INTEGER11
3 | IF | INTEGER VARIABLE | %INTEGER11% | IS | 0 | STOP
4 | RUN ACTION | INPUT BOX | Enter Month as MM::WC Month::INTEGER12
5 | IF | INTEGER VARIABLE | %INTEGER12% | IS | 0 | STOP
6 | RUN ACTION | INPUT BOX | Enter Year as YY::WC Year::INTEGER13
7 | IF | INTEGER VARIABLE | %INTEGER13% | IS | 0 | STOP
* | Leap Year Calc
8 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER9%::%INTEGER13%
9 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::%INTEGER9%
10 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER9%::/4
11 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::/4
12 | RUN ACTION | DEFINE INTEGER VARIABLE | %DECIMAL%::-%INTEGER9%
13 | IF | DECIMAL VARIABLE | %DECIMAL% | IS NOT | 0 | DEFINE INTEGER VARIABLE | %INTEGER10%::28
14 | IF | DECIMAL VARIABLE | %DECIMAL% | IS | 0 | DEFINE INTEGER VARIABLE | %INTEGER10%::29
* | Before Date Variables
15 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER14%::%INTEGER11%
16 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER15%::%INTEGER12%
17 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER16%::%INTEGER13%
* | Before Date Calculations
18 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER14%::-3
19 | IF | INTEGER VARIABLE | %INTEGER14% | LESS THAN | 1 | DEFINE INTEGER VARIABLE | %INTEGER15%::-1
20 | IF | INTEGER VARIABLE | %INTEGER15% | LESS THAN | 1 | DEFINE INTEGER VARIABLE | %INTEGER16%::-1
21 | IF | INTEGER VARIABLE | %INTEGER15% | LESS THAN | 1 | DEFINE INTEGER VARIABLE | %INTEGER15%::12
22 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 1 | DEFINE INTEGER VARIABLE | %INTEGER17%::31
23 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 2 | DEFINE INTEGER VARIABLE | %INTEGER17%::%INTEGER10%
24 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 3 | DEFINE INTEGER VARIABLE | %INTEGER17%::31
25 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 4 | DEFINE INTEGER VARIABLE | %INTEGER17%::30
26 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 5 | DEFINE INTEGER VARIABLE | %INTEGER17%::31
27 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 6 | DEFINE INTEGER VARIABLE | %INTEGER17%::30
28 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 7 | DEFINE INTEGER VARIABLE | %INTEGER17%::31
29 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 8 | DEFINE INTEGER VARIABLE | %INTEGER17%::31
30 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 9 | DEFINE INTEGER VARIABLE | %INTEGER17%::30
31 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 10 | DEFINE INTEGER VARIABLE | %INTEGER17%::31
32 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 11 | DEFINE INTEGER VARIABLE | %INTEGER17%::30
33 | IF | INTEGER VARIABLE | %INTEGER15% | IS | 12 | DEFINE INTEGER VARIABLE | %INTEGER17%::31
34 | IF | INTEGER VARIABLE | %INTEGER14% | LESS THAN | 1 | DEFINE INTEGER VARIABLE | %INTEGER14%::+%INTEGER17%
* | After Date Variables
35 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER18%::%INTEGER11%
36 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER19%::%INTEGER12%
37 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER20%::%INTEGER13%
* | After Date Calculations
38 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 1 | DEFINE INTEGER VARIABLE | %INTEGER21%::31
39 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 2 | DEFINE INTEGER VARIABLE | %INTEGER21%::%INTEGER10%
40 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 3 | DEFINE INTEGER VARIABLE | %INTEGER21%::31
41 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 4 | DEFINE INTEGER VARIABLE | %INTEGER21%::30
42 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 5 | DEFINE INTEGER VARIABLE | %INTEGER21%::31
43 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 6 | DEFINE INTEGER VARIABLE | %INTEGER21%::30
44 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 7 | DEFINE INTEGER VARIABLE | %INTEGER21%::31
45 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 8 | DEFINE INTEGER VARIABLE | %INTEGER21%::31
46 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 9 | DEFINE INTEGER VARIABLE | %INTEGER21%::30
47 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 10 | DEFINE INTEGER VARIABLE | %INTEGER21%::31
48 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 11 | DEFINE INTEGER VARIABLE | %INTEGER21%::30
49 | IF | INTEGER VARIABLE | %INTEGER19% | IS | 12 | DEFINE INTEGER VARIABLE | %INTEGER21%::31
50 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER18%::+3
51 | IF | INTEGER VARIABLE | %INTEGER18% | GREATER THAN | %INTEGER21% | DEFINE INTEGER VARIABLE | %INTEGER19%::+1
52 | IF | INTEGER VARIABLE | %INTEGER19% | GREATER THAN | 12 | DEFINE INTEGER VARIABLE | %INTEGER20%::+1
53 | IF | INTEGER VARIABLE | %INTEGER18% | GREATER THAN | %INTEGER21% | DEFINE INTEGER VARIABLE | %INTEGER18%::-%INTEGER21%
54 | IF | INTEGER VARIABLE | %INTEGER19% | GREATER THAN | 12 | DEFINE INTEGER VARIABLE | %INTEGER19%::1
* | After Date2 Variables
55 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER22%::%INTEGER11%
56 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER23%::%INTEGER12%
57 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER24%::%INTEGER13%
* | After Date2 Calculations
58 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 1 | DEFINE INTEGER VARIABLE | %INTEGER25%::31
59 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 2 | DEFINE INTEGER VARIABLE | %INTEGER25%::%INTEGER10%
60 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 3 | DEFINE INTEGER VARIABLE | %INTEGER25%::31
61 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 4 | DEFINE INTEGER VARIABLE | %INTEGER25%::30
62 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 5 | DEFINE INTEGER VARIABLE | %INTEGER25%::31
63 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 6 | DEFINE INTEGER VARIABLE | %INTEGER25%::30
64 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 7 | DEFINE INTEGER VARIABLE | %INTEGER25%::31
65 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 8 | DEFINE INTEGER VARIABLE | %INTEGER25%::31
66 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 9 | DEFINE INTEGER VARIABLE | %INTEGER25%::30
67 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 10 | DEFINE INTEGER VARIABLE | %INTEGER25%::31
68 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 11 | DEFINE INTEGER VARIABLE | %INTEGER25%::30
69 | IF | INTEGER VARIABLE | %INTEGER23% | IS | 12 | DEFINE INTEGER VARIABLE | %INTEGER25%::31
* | 78 | RUN ACTION | MESSAGE PROMPT | %INTEGER25%::::0
70 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER22%::+4
71 | IF | INTEGER VARIABLE | %INTEGER22% | GREATER THAN | %INTEGER25% | DEFINE INTEGER VARIABLE | %INTEGER23%::+1
72 | IF | INTEGER VARIABLE | %INTEGER23% | GREATER THAN | 12 | DEFINE INTEGER VARIABLE | %INTEGER24%::+1
73 | IF | INTEGER VARIABLE | %INTEGER22% | GREATER THAN | %INTEGER25% | DEFINE INTEGER VARIABLE | %INTEGER22%::-%INTEGER25%
74 | IF | INTEGER VARIABLE | %INTEGER23% | GREATER THAN | 12 | DEFINE INTEGER VARIABLE | %INTEGER23%::1
* | ACTIONS
* | 33 | RUN ACTION | SELECT WINDOW BY NAME | *PROGRAM*
* | Brew Plan Total
75 | 780 | 65 | 100 | Left Click
76 | RUN ACTION | WAIT MILLISECONDS | 300
77 | IF | PIXEL COLOR | Color [R=3, G=169, B=250]::At Location [X:780 Y:55] | IS NOT THE SAME | GOTO MACRO LINE | 75
78 | 470 | 120 | 100 | Left Click
79 | RUN ACTION | WAIT MILLISECONDS | 300
80 | IF | PIXEL COLOR | Color [R=240, G=240, B=240]::At Location [X:1400 Y:150] | IS THE SAME | GOTO MACRO LINE | 78
81 | X | X | 50 | Keypress tab
82 | X | X | 50 | Keypress tab
83 | X | X | 50 | Keypress tab
84 | X | X | 50 | Keypress tab
85 | X | X | 50 | Keypress tab
86 | X | X | 50 | Keypress tab
87 | X | X | 50 | Keypress tab
88 | X | X | 50 | Keypress tab
89 | X | X | 50 | Keypress tab
90 | X | X | 50 | Keypress tab
91 | X | X | 50 | Keypress tab
92 | X | X | 50 | Keypress %INTEGER14%
93 | X | X | 50 | Keypress /
94 | X | X | 50 | Keypress %INTEGER15%
95 | X | X | 50 | Keypress /
96 | X | X | 50 | Keypress %INTEGER16%
97 | X | X | 50 | Keypress tab
98 | X | X | 50 | Keypress tab
99 | X | X | 50 | Keypress %INTEGER18%
100 | X | X | 50 | Keypress /
101 | X | X | 50 | Keypress %INTEGER19%
102 | X | X | 50 | Keypress /
103 | X | X | 50 | Keypress %INTEGER20%
104 | X | X | 50 | Keypress enter
105 | RUN ACTION | WAIT MILLISECONDS | 4000
* | Prod Sch SKU
106 | 580 | 65 | 100 | Left Click
107 | RUN ACTION | WAIT MILLISECONDS | 500
108 | IF | PIXEL COLOR | Color [R=3, G=169, B=250]::At Location [X:580 Y:55] | IS NOT THE SAME | GOTO MACRO LINE | 106
109 | 470 | 120 | 100 | Left Click
110 | RUN ACTION | WAIT MILLISECONDS | 500
111 | IF | PIXEL COLOR | Color [R=240, G=240, B=240]::At Location [X:1400 Y:150] | IS THE SAME | GOTO MACRO LINE | 109
112 | X | X | 50 | Keypress tab
113 | X | X | 50 | Keypress tab
114 | X | X | 50 | Keypress tab
115 | X | X | 50 | Keypress tab
116 | X | X | 50 | Keypress tab
117 | X | X | 50 | Keypress tab
118 | X | X | 50 | Keypress tab
119 | X | X | 50 | Keypress tab
120 | X | X | 50 | Keypress tab
121 | X | X | 50 | Keypress tab
122 | X | X | 50 | Keypress tab
123 | X | X | 50 | Keypress %INTEGER11%
124 | X | X | 50 | Keypress /
125 | X | X | 50 | Keypress %INTEGER12%
126 | X | X | 50 | Keypress /
127 | X | X | 50 | Keypress %INTEGER13%
128 | X | X | 50 | Keypress tab
129 | X | X | 50 | Keypress tab
130 | X | X | 50 | Keypress %INTEGER22%
131 | X | X | 50 | Keypress /
132 | X | X | 50 | Keypress %INTEGER23%
133 | X | X | 50 | Keypress /
134 | X | X | 50 | Keypress %INTEGER24%
135 | X | X | 50 | Keypress enter
136 | RUN ACTION | WAIT MILLISECONDS | 300
137 | 470 | 270 | 300 | Left Click
138 | 470 | 270 | 300 | Left Click
139 | 470 | 290 | 300 | Left Click
140 | 470 | 290 | 300 | Left Click
141 | 470 | 305 | 300 | Left Click
142 | 470 | 305 | 300 | Left Click
143 | 470 | 325 | 300 | Right Click
144 | 480 | 450 | 300 | Left Click
145 | RUN ACTION | WAIT MILLISECONDS | 300
146 | 470 | 125 | 300 | Left Click
147 | RUN ACTION | WAIT MILLISECONDS | 500
148 | IF | PIXEL COLOR | Color [R=255, G=255, B=255]::At Location [X:1400 Y:150] | IS THE SAME | GOTO MACRO LINE | 146
149 | 470 | 175 | 300 | Left Click
150 | 470 | 175 | 300 | Left Click
151 | 470 | 195 | 300 | Left Click
152 | 470 | 195 | 300 | Left Click
153 | 470 | 210 | 300 | Left Click
154 | 470 | 210 | 300 | Left Click
155 | RUN ACTION | WAIT MILLISECONDS | 300
* | Reslect Prod Sch SKU
156 | 580 | 65 | 100 | Left Click
157 | RUN ACTION | WAIT MILLISECONDS | 300
158 | IF | PIXEL COLOR | Color [R=3, G=169, B=250]::At Location [X:580 Y:55] | IS NOT THE SAME | GOTO MACRO LINE | 157
159 | RUN ACTION | WAIT MILLISECONDS | 1000
* | Mouse Return
160 | %INTEGER% | %INTEGER1% | 300 | Mouse Movement

User: cyberchipz

Date: Feb 13, 2020 15:57:30 GMT

Wow, I wish I’d read this before I discovered the line labels myself accidentally in another post. I just posted a query about an issue with a need to relist first before running the first time. Otherwise it doesn’t recognize the line labels… In actual use, I wasn’t sure initially what was happening. But, eventually realized it needed the relist. Which actually when I first made the suggestion, before I knew we could do, I suggested. lol Of course, at the time I suggested I realized one would need to do a relist first. But, I didn’t think it would be an issue if done automatically after a load… until I ran into a relist error for the first time… then I realized that if that error is in a saved file, if it relist automatically.. the user might get an unexpected error. I wish I’d been able to figure out what the error was; but after getting it and clicking OK, or whatever it prompted… the error was gone and I never did figure out what it was. But, indeed these are fun; and so much easier. BTW, I was going to copy and run your macro; and I see some fun stuff there to learn and use. But, what exactly does it do… before I go ahead and do this… After all… a macro could do some unwanted things if one isn’t careful. ;-)
So, one question: I see you using the line: 135 | X | X | 50 | Keypress enter What does the | X | X | part represent? no numbers, curious. I’ve seen Steve use this; but, didn’t find any reference in the documentation. BTW, I love playing with MMM Pro! It is so much fun. I’m getting complex enough already that I’ve run into an issue where… and I don’t know if it’s because of my machine doing things in the background; but sometimes the macros will run really slowly. The only solution I’ve found is to close MMM and reload it and the macro… that usually speeds it up… But, sometimes it really drags. BTW, if you’d prefer me not mentioning issues in “other” posts, and doing them in a new one… I’ll make sure to do that in the future. But, for me, when searching… I use the URL query…it’s fast so finding things is pretty easy. Also, since I’m dealing with health issues; I’m not sure really how much I’ll be able to do what I want (or for how long :-(, but I was going to start documenting some of what I’m learning as a Newbie. As a long standing coder, I’ve learned that one is only a newbie for a short while… Then, I learn automatically what I can and cannot do and forget what I didn’t know. I can say with some honesty that I’ve forgotten more than I currently know! lol Anyway, if (and it’s a big if) I do document some things… like syntax and grammer, sentence structure… things like that… I’ll be sure to pass it on in the forum… and if any of it’s worth putting on the site… I would be fine with that! I love to help; My motto is that if I can spend X man hours saving people X*y man hours of time, then in global or national productivity… my time is well spent. One of my constant questions to my wife is… “What do people who don’t know how to do this stuff do when they run into problems?” I’m very fortunate to have a lifetime of dealing with ‘stupid’ machines. :-D

User: Steve

Date: Feb 14, 2020 4:19:08 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 13, 2020 15:57:30 GMT

cyberchipz said: Also, since I’m dealing with health issues; I’m not sure really how much I’ll be able to do what I want (or for how long :-(, but I was going to start documenting some of what I’m learning as a Newbie. As a long standing coder, I’ve learned that one is only a newbie for a short while… Then, I learn automatically what I can and cannot do and forget what I didn’t know. I can say with some honesty that I’ve forgotten more than I currently know! lol Anyway, if (and it’s a big if) I do document some things… like syntax and grammer, sentence structure… things like that… I’ll be sure to pass it on in the forum… and if any of it’s worth putting on the site… I would be fine with that! I love to help; My motto is that if I can spend X man hours saving people X*y man hours of time, then in global or national productivity… my time is well spent. One of my constant questions to my wife is… “What do people who don’t know how to do this stuff do when they run into problems?” I’m very fortunate to have a lifetime of dealing with ‘stupid’ machines. :-D Thanks for your comments cyberchipz. Its good to hear that your getting something out of our little app. Occasionally someone comes along to offer a new perspective on it and its reminds me why i keep it going. KvolAHXIscEA0UEcnLFo.gif Feb 13, 2020 15:57:30 GMT

cyberchipz said: BTW, I love playing with MMM Pro! It is so much fun. I’m getting complex enough already that I’ve run into an issue where… and I don’t know if it’s because of my machine doing things in the background; but sometimes the macros will run really slowly. The only solution I’ve found is to close MMM and reload it and the macro… that usually speeds it up… But, sometimes it really drags. Yes i have noticed this ‘dragging’. Do you have the ‘Event Log’ running? There is, and has been for a few versions, an issue with the threading for the event log <www.turnssoft.com/bugtrack.html> . The event log should be disabled in the settings unless debugging or ‘Verbose’ and ‘Event types’/’Macro Logging’ options within the log should be tweaked, especially for large macros, and definitely for macro’s with a lot of mouse movement.

User: cyberchipz

Date: Feb 14, 2020 6:15:40 GMT

Yes i have noticed this ‘dragging’. Do you have the ‘Event Log’ running? There is, and has been for a few versions, an issue with the threading for the event log <www.turnssoft.com/bugtrack.html> . The event log should be disabled in the settings unless debugging or ‘Verbose’ and ‘Event types’/’Macro Logging’ options within the log should be tweaked, especially for large macros, and definitely for macro’s with a lot of mouse movement. Yes, I had it on by default.  I will try switching it off, if I can get back to coding. lol  I’m back to using record and play for the time being… and right as I had that little piece of code working too, then that integer problem blew it up on me.  I hate making little mistakes, like you’d found in other things and I looked and looked and couldn’t find an error in my coding.  If it’s me, I’ll be appropriately apologetic.  If it’s not me, I’m happy to debug…or bug… whatever this is.   FWIW I’ve always found that a bug, that doesn’t cause a crash, is a bug with a top hat if it does what you want. I wonder if the dragging could be causing the bug?  Hmmm I’ll try switching off the Event logging and see if it still exists. *** Nope, but I’ll bet it will help with the dragging… fortunately that is a different macro… hopefully it has no issues with %INTEGER2%! lol

User: cyberchipz

Date: Feb 14, 2020 6:42:57 GMT

zeak … Yes, I too learn best by looking at existing code. Your code will be immensely useful I can already tell. YOUR WORK Hmm, naturally I had to go find it… and I see my local WalMart carries it. The DRINK looks particularly promising, and non-alcoholic to boot! While I have been known to have a drink, it is the rare occasion.. I am your basic teetotaler, so this is my kind of stuff,  much to my wife’s dismay. However, we love ginger ale… ;-) Where I live we have one of the best in the world Blenheim Ginger Ale! And I see PLACE and Blenheim are both similarly priced! In fact, I was surprised to find them online, no wonder there’s never any to be found in the store, it all gets shipped out! lol I’ll bet your PLACE is also hard to find. Perhaps I will find it here! lol But, anyway, thanks for sharing some of your code… I was thinking about doing some date and pixel color stuff… this was exactly what I was looking for… Now, if I can only find out what the color is, so I can have some RGB values to work with. Is it possible to read a color at a mouse location? I can’t find a way to do that… but, I’ll look at your code; but you seem to already know the colors you’re looking for. Thanks! I have submitted some code too… but I’m small stuff compared to this monster! :-) EDIT: Hi Chip, I edited your post unfortunately, because I normally removed all personal information like that from my code before posting it but missed that one. Zeak

User: zeak

Date: Feb 15, 2020 19:05:52 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 13, 2020 15:57:30 GMT

cyberchipz said: BTW, I was going to copy and run your macro; and I see some fun stuff there to learn and use. But, what exactly does it do… before I go ahead and do this… After all… a macro could do some unwanted things if one isn’t careful. ;-) You would need to have the Program my work uses to run my macros correctly. All it will do on your computer if you run it is just click in random locations and try typing text. So, one question: I see you using the line: 135 | X | X | 50 | Keypress enter What does the | X | X | part represent? no numbers, curious. I’ve seen Steve use this; but, didn’t find any reference in the documentation. You can change the mouse location’s to X so that it skips moving the mouse and just performs the action.


MMM not shutting down Computer (MMM is preventing shutdown)

URL: https://minimousemacro.proboards.com/thread/230/mmm-shutting-computer-preventing-shutdown
Date: Feb 13, 2020 19:52:07 GMT

User: cyberchipz

Date: Feb 13, 2020 19:52:07 GMT

LOL! So… When I use MMM to shutdown the computer… the computer can shutdown all tasks except MMM. The message is “This application is preventing the computer from Shutting down.” any suggestions. Hmmm, Nevermind, found this and will try it out…

99 | RUN ACTION | RUN VIA CMD /C | ping -n 4 127.0.0.1>nul & taskkill /F /IM minimousemacro.exe /T
100 | RUN ACTION | EXIT

Well, wasn’t quite as clean as I hoped for… Windows still had to force a shutdown of… something related

User: Steve

Date: Feb 14, 2020 3:57:11 GMT

Another way would be to call the shutdown command with the F orce switch and the T ime switch.

99 | RUN ACTION | RUN VIA CMD /C | shutdown /f /t 10 

User: cyberchipz

Date: Feb 15, 2020 9:25:25 GMT

I’ll give it a try… accidentally running into the taskkill, or END is a real game changer when done by accident! lol  Oops, hmm remember to save first!


Not recognizing Goto LineLabels without Relist

URL: https://minimousemacro.proboards.com/thread/227/recognizing-goto-linelabels-relist
Date: Feb 13, 2020 15:36:53 GMT

User: cyberchipz

Date: Feb 13, 2020 15:36:53 GMT

When I first load a macro and run it, it appears to not recognize Line Labels until I Relist Rows. I have made a video showing this error. Line Label Relist Error Video

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::762
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::518
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::100
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER10%::%INTEGER%
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER11%::%INTEGER%
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER12%::%INTEGER1%
7 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER13%::%INTEGER1%
8 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER10%::-50
9 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER11%::+50
10 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER12%::-50
11 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER13%::+50
* | StartHere
12 | RUN ACTION | WAIT MILLISECONDS | %INTEGER3%
13 | IF | MOUSE POSITION NEAR | {X=%INTEGER%,Y=%INTEGER1%}::50::50 | IS | GOTO MACRO LINE | OnMark
14 | IF | INTEGER VARIABLE | %MOUSE_X% | < | %INTEGER10% | TEXT TO SPEECH | Right.::NEUTRAL::3::ASYNC
15 | RUN ACTION | WAIT MILLISECONDS | %INTEGER3%
16 | IF | INTEGER VARIABLE | %MOUSE_X% | > | %INTEGER11% | TEXT TO SPEECH | Left.::NEUTRAL::3::ASYNC
17 | RUN ACTION | WAIT MILLISECONDS | %INTEGER3%
18 | IF | INTEGER VARIABLE | %MOUSE_Y% | > | %INTEGER13% | TEXT TO SPEECH | Up.::FEMALE::3::ASYNC
19 | RUN ACTION | WAIT MILLISECONDS | %INTEGER3%
20 | IF | INTEGER VARIABLE | %MOUSE_Y% | < | %INTEGER12% | TEXT TO SPEECH | Down::FEMALE::3::ASYNC
21 | RUN ACTION | WAIT MILLISECONDS | %INTEGER3%
22 | RUN ACTION | GOTO MACRO LINE | StartHere
* | OnMark
23 | RUN ACTION | TEXT TO SPEECH | You are on the mark!::NEUTRAL::3::ASYNC

User: Steve

Date: Feb 14, 2020 4:05:08 GMT

I tried to play your video but youtube says its not available.
I can paste your macro in to Mini Mouse Macro, run it, and for me it’s working as expected. There is a setting under ‘Options - Program Options’ to ‘Auto relist on play’. Maybe this will help. minimousemacro-settings_orig.png

User: cyberchipz

Date: Feb 14, 2020 4:32:12 GMT

I see that now; don’t know how I missed it. Sorry for such a RTFM noob question. :-}

User: Steve

Date: Feb 14, 2020 5:28:39 GMT

its all good Chip, this is the place for noob questions lol

User: cyberchipz

Date: Feb 15, 2020 9:22:59 GMT

The YouTube video might be restricted to you by country limits… that’s the only thing I can think of… I know they do that!


Random Variable is not working

URL: https://minimousemacro.proboards.com/thread/232/random-variable-working
Date: Feb 14, 2020 5:17:31 GMT

User: rblue

Date: Feb 14, 2020 5:17:31 GMT

I’m having problems understanding what’s going wrong here. I have the following macro, of which target can be something like an editor such as note pad:

1 | 1400 | 916 | 100 | Left Click Down
2 | X | X | 172 | Left Click Release
3 | X | X | 1000 | Keypress 1:
4 | X | X | 1000 | Keypress enter
5 | X | X | 234 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1% | %RANDOM_1-10%
6 | X | X | 1000 | Keypress 2:
7 | X | X | 1000 | Keypress enter
8 | X | X | 300 | Keypress 3: some val %INTEGER1%
9 | X | X | 1000 | Keypress enter
10 | X | X | 2000 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 2 | Keypress 4: It works!
11 | X | X | 342 | Keypress 5:
12 | X | X | 342 | Keypress enter

It produces this output: 1: N2: 3: some val 0 5: With the Error message:

10 | X | X | 2000 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 2 | Keypress 4: It works! - Action value not readable, incorrect entry

So a few questions here:

  1. Where is the “N” coming from on line 2 of the output?  From what I can tell it’s being generated by the assignment of the integer variable?
  2. Why isn’t the integer variable being assigned any values?  On line three it’s showing a value of 0 which indicates it was never initialized.
  3. I do not understand that error message since it matches the examples of an IF statement comparing a variable to a number.  What is wrong with it? Thanks greatly for any help you can provide! smiley.png   RBlue

User: Steve

Date: Feb 14, 2020 5:27:19 GMT

Hi RBlue, It looks like your syntax was incorrect.
This is the correct syntax:

1 | 1400 | 916 | 100 | Left Click Down
2 | X | X | 172 | Left Click Release
3 | X | X | 1000 | Keypress 1:
4 | X | X | 1000 | Keypress enter
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%RANDOM_1-10%
6 | X | X | 1000 | Keypress 2:
7 | X | X | 1000 | Keypress enter
8 | X | X | 300 | Keypress 3: some val %INTEGER1%
9 | X | X | 1000 | Keypress enter
10 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 2 | Keypress | 4: It works!
11 | X | X | 342 | Keypress 5:
12 | X | X | 342 | Keypress enter

Check out this forum or <www.turnssoft.com/conditions.html> for help with syntax. This post here shows how using the ‘add condition’ tool can help with syntax. Regards, Steve.

User: rblue

Date: Feb 14, 2020 7:36:28 GMT

Oh yes! I see it now! Thanks!! Unfortunately the example does not really show that the “RUN ACTION” replaces the mouse x & Y and the duration. But yes, this makes it so clear for sure! I tried it with your changes, and it is now assigning a value to %INTEGER1%. smiley.png Awesome! I did look at the contions.html and it was under “Working with random numbers” that showed this syntax: RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1% | %RANDOM% Of which, I’m guessing, it should have been: RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%RANDOM% But there is still an issue. When that value is greater than 2, such as 7, the “4: It Works!” never prints. It’s generating another error message indicating that “Condition action is not valid. This condition action is not found in the ACTION list of valid actions: Keypress”

10 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 2 | Keypress | 4: It works!

Also tried, which didn’t work either:

10 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 2 | RUN ACTION | Keypress | 4: It works!
10 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 2 | 4: It works!

Is there another way to enable Keypress or a different way to achieve the same output results? I tried the add condition option as you suggested, and I did not see thing to enable the Keypress. Thanks!! RBlue

User: rblue

Date: Feb 14, 2020 7:42:36 GMT

Ok, I played around a little more with this and I got it to work with a “goto”.  oof… lol

1 | 1400 | 916 | 100 | Left Click Down
2 | X | X | 172 | Left Click Release
3 | X | X | 1000 | Keypress 1:
4 | X | X | 1000 | Keypress enter
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%RANDOM_1-10%
6 | X | X | 1000 | Keypress 2:
7 | X | X | 1000 | Keypress enter
8 | X | X | 300 | Keypress 3: some val %INTEGER1%
9 | X | X | 1000 | Keypress enter
10 | IF | INTEGER VARIABLE | %INTEGER1% | LESS THAN EQUAL TO | 2 | GOTO MACRO LINE | 13
11 | X | X | 1000 | Keypress 4: It worked!
12 | X | X | 1000 | Keypress enter
13 | X | X | 342 | Keypress 5:
14 | X | X | 342 | Keypress enter

With the following results: 1: 2: 3: some val 5 4: It worked! 5: So I think at this point, I have a much better understanding of the syntax, and also the benefit of using the add condition option too.  Also I have the working example that I can now integrate in to the main macro. Thanks so much for your help!   RBlue

User: Steve

Date: Feb 14, 2020 22:27:27 GMT

defaultavatar.png Feb 14, 2020 7:36:28 GMT

rblue said: I did look at the conditions.html and it was under “Working with random numbers” that showed this syntax: RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1% | %RANDOM% Of which, I’m guessing, it should have been: RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::%RANDOM% Thank you. Yes you are right, the syntax on that needs to be updated on the conditions page . I’ll do that now.
defaultavatar.png Feb 14, 2020 7:36:28 GMT

rblue said: But there is still an issue. When that value is greater than 2, such as 7, the “4: It Works!” never prints. It’s generating another error message indicating that “Condition action is not valid. This condition action is not found in the ACTION list of valid actions: Keypress”

10 | IF | INTEGER VARIABLE | %INTEGER1% | GREATER THAN | 2 | Keypress | 4: It works!

This syntax is fine and works as expected.
Are you running version 7.3? The KEYPRESS action was released with update 7.3 . If you are running line 10 as I have it above it will work with version 7.3. Glad you got this working
smiley.png and cheers for the pick up on the conditions page.

User: rblue

Date: Feb 15, 2020 5:45:14 GMT

Glad to have been able to return the favor on the helps. smiley.png BTW… I just did update to v7.3.0.0 from v7.2.0.0. Thanks for the reminder on that. I honestly should have done that first just to confirm there was still an issue, but I really had the macro messed up such that updates would not have saved me much. smiley.png

Still, both techniques are good to know how to use: A simple inline one, or a multi lined approach. Thanks again! smiley.png


Leap Year

URL: https://minimousemacro.proboards.com/thread/223/leap-year
Date: Jan 20, 2020 0:26:13 GMT

User: zeak

Date: Jan 20, 2020 0:26:13 GMT

Hi All, I need a way to work out if a INTEGER VARIABLE is a leap year. for example i would type 20 for 2020, then determine if that would be a leap year. if so output a BOOLEAN yes. Any Ideas are welcome. Cheers, Zeak

User: Steve

Date: Jan 20, 2020 1:38:51 GMT

Hi Zeak, Take a look at the integer math options <www.turnssoft.com/conditions.html#integer_variable> . Maybe modulus? Something like: IF MOD %INTEGER% IS 0 THEN DEFINE %BOOLEAN% = TRUE

User: Steve

Date: Jan 20, 2020 4:49:28 GMT

The modulus function can do this:

1 | RUN ACTION | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::FALSE
2 | RUN ACTION | INPUT BOX | Enter the number:::Leap year::INTEGER
3 | IF | INTEGER VARIABLE | %INTEGER% | % | 4::=::0 | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::TRUE
4 | IF | BOOLEAN VARIABLE | %BOOLEAN% | IS TRUE | MESSAGE PROMPT | BOOL is %boolean%::Boolean True::1 | ELSE | 3 | RUN ACTION | MESSAGE PROMPT | BOOL is %boolean%::Boolean False::1

minimousemacro-leapyear.gif

User: zeak

Date: Jan 20, 2020 5:58:10 GMT

well that’s a lot easier then what I came up with lol.

1 | RUN ACTION | INPUT BOX | Is number Divisible by 4::4::INTEGER
2 | IF | INTEGER VARIABLE | %INTEGER% | IS |  | STOP
3 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::%INTEGER%
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::/4
5 | RUN ACTION | DEFINE DECIMAL VARIABLE | %DECIMAL%::/4
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %DECIMAL%::-%INTEGER%
7 | IF | DECIMAL VARIABLE | %DECIMAL% | IS NOT | 0 | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::0
8 | IF | DECIMAL VARIABLE | %DECIMAL% | IS |  | DEFINE BOOLEAN VARIABLE | %BOOLEAN%::1
9 | RUN ACTION | MESSAGE PROMPT | %BOOLEAN%::::0
10 | RUN ACTION | GOTO MACRO LINE | 1

I ended up comparing a INTEGER and DECIMAL variable because I knew that integer wouldn’t return the decimal. GYuFr4R.gif

User: zeak

Date: Jan 20, 2020 6:05:05 GMT

Gotta ask, you know the Line number after the ELSE. KKLseaq.png Is there anyway we can remove these?? Its just I not like do the ELSE OR AND because these numbers don’t update with relist rows.

User: Steve

Date: Jan 20, 2020 8:44:50 GMT

The ELSE number yeah i don’t like it either. it shouldn’t be there or it should match the current line number.
The ELSE number is there because the the ELSE statement evaluates as a complete line, and a complete line needs a starting line number It can be ‘X’d out: True::1 | ELSE | X | RUN ACTION | MESSAGE PROMPT | BOOL is %boolean%::Boolean False::1 But it has to be there unfortunately. Its kinda baked in to the code.

User: Steve

Date: Jan 20, 2020 8:59:07 GMT

I committed the code to pastebin.com here pastebin.com/raw/k0EKJUqd for a quick demo of the ‘Add Macro From URL’ action.

1 | RUN ACTION | ADD MACRO FROM URL | https://pastebin.com/raw/k0EKJUqd

minimousemacro-addfromuri.gif

User: cyberchipz

Date: Feb 9, 2020 18:33:11 GMT

Hmm, could you code MMMPro to use LABEL1, and on run build a table of line numbers which are variables with %LABEL1 % where on run, %LABEL1% is assigned a line number?  Would slow run time a bit in a lengthy program; but, could then use labels, up to 99 of them. :-) Oooh!  When do we get an event log with all those features?! :-)

User: zeak

Date: Feb 9, 2020 22:12:38 GMT

KvolAHXIscEA0UEcnLFo.gif Feb 9, 2020 18:33:11 GMT

cyberchipz said: Hmm, could you code MMMPro to use LABEL1, and on run build a table of line numbers which are variables with %LABEL1 % where on run, %LABEL1% is assigned a line number?  Would slow run time a bit in a lengthy program; but, could then use labels, up to 99 of them. :-) Oooh!  When do we get an event log with all those features?! :-) Hi Cyberchipz, Can you please explain more of what you mean, as I can’t seem to understand it in the context of this thread.

User: cyberchipz

Date: Feb 12, 2020 16:28:39 GMT

Sorry zeak… got an idea mixed up with reading other threads, and picked the wrong post to comment. 8-o My apologies. I was thinking about a possible feature for MMM using labels for goto that could be pretty simple to incorporate… in fact, it might even be able to be scripted… I’ll start a thread. the event log comment was just a part of MMM’s event log I hadn’t seen yet. (IOW, an embarrassing noob comment). lol


Macro loses focus after clicking taskbar icon

URL: https://minimousemacro.proboards.com/thread/224/macro-loses-focus-clicking-taskbar
Date: Jan 22, 2020 2:30:53 GMT

User: Steve

Date: Jan 22, 2020 2:30:53 GMT

I have a simple macro. Just ten simple mouse-clicks. That’s all. It works fine when run from MMM. It used to work fine when kicked off from an Excel button. The macro began working incorrectly from the Excel button after I reinstalled Excel. It still works great when executed directly from MMM so I don’t think there is anything wrong with the macro. The Macro’s first step is to move from the Excel button and click on a taskbar icon. This pops up a new window. The rest of the macro steps are supposed to click on items on the new window. This is what happens: I click the Excel button. I see the mouse pointer move to the taskbar icon. The icon is clicked and the new window pops up. After that the macro seems to continue to do its thing but it seems to be doing it “underneath” the new window. The macro doesn’t recognize the new window. The macro runs to completion without errors but nothing on the new window is clicked. The macro never changes focus to the new window.

How do I get the macro to recognize the new window after clicking on the taskbar icon? Thanks for your help, Steve

User: Steve

Date: Jan 23, 2020 1:37:17 GMT

Hi Steve, Must be something with the re installation. Did it change the version of excel? There are some things you can try, mostly they involve using different ways to bring the excel window into focus.
Check out <www.turnssoft.com/conditions.html> in particular the SELECT WINDOW BY NAME and KEYPRESS actions. The SELECT WINDOW BY NAME action when run will find a window title and bring that into focus. The KEYPRESS action or Keypress generally when run can present an option to switch to the correct window. Something like this for keypress to change focus:

1 | X | X | 1 | Keypress Alt+ | tab
2 | X | X | 500 | Keypress tab

Or something like this to select window title for focus: IF | WINDOW TITLE | myexcel window title.xls | EXIST | SELECT WINDOW BY NAME | myexcel window title.xls

User: Steve

Date: Feb 4, 2020 16:42:36 GMT

I finally figured it out. The secret is to run MiniMouseMacro.exe as Administrator. On Windows 10: Right Click MiniMouseMacro.exe >> Properties >> Compatibility >> check the box: “Run this program as an Administrator” I have Malwarebytes and Norton Firewall/Antivirus. Maybe one of them was preventing the auto-key-click in the taskbar until MiniMouseMacro.exe was given sufficient privileges. Not sure.


I need help with setting up some random variable : (

URL: https://minimousemacro.proboards.com/thread/218/help-setting-random-variable
Date: Dec 25, 2019 13:20:23 GMT

User: hejjje

Date: Dec 25, 2019 13:20:23 GMT

Hello! I’ve been trying to have my looped macro start at random times within like 10-15 minute intervals. Could someone help me do it? smiley.png

User: Steve

Date: Dec 26, 2019 9:25:24 GMT

Hi Hejjje, One way to do it could be to delay the start time with a random wait interval. Consider this macro code:

1 | RUN ACTION | WAIT MINUTES | %RANDOM_10-15%
2 | 2485 | 271 | 10 | Mouse Movement
3 | 2476 | 278 | 10 | Mouse Movement
4 | 2467 | 283 | 10 | Mouse Movement
5 | 2460 | 286 | 10 | Mouse Movement
6 | 2456 | 287 | 10 | Mouse Movement
7 | 2446 | 288 | 10 | Mouse Movement
8 | 2431 | 286 | 10 | Mouse Movement
9 | 2405 | 278 | 10 | Mouse Movement
10 | 2372 | 266 | 10 | Mouse Movement
11 | RUN ACTION | GOTO MACRO LINE | 1

This short macro makes use of the ‘WAIT MINUTES’ action condition ( <www.turnssoft.com/conditions.html#wait> ) to wait a random time between 10 and 15 minutes using the %RANDOM% variable ( <www.turnssoft.com/conditions.html#random_integer_variable> ). For more on conditions check out the conditions page here <www.turnssoft.com/conditions.html> , or try searching through this forum wait examples ( minimousemacro.proboards.com/board/3?q=wait ) and RANDOM variable examples ( minimousemacro.proboards.com/board/3?q=RANDOM ).

User: hejjje

Date: Dec 28, 2019 12:45:15 GMT

Thank you so much for your reply! It really helped smiley.png smiley.png


Comments

URL: https://minimousemacro.proboards.com/thread/213/comments
Date: Dec 6, 2019 10:42:18 GMT

User: Malor

Date: Dec 6, 2019 10:42:18 GMT

Is there any way to add comments to the macro. Some of my programs are a bit complicated and the addition of comments would make it faster to read and debug. Thanks

User: Steve

Date: Dec 7, 2019 3:58:29 GMT

Hi Malor, Comments can be added by right clicking on the macro and selecting ‘Add Remark’.
Lines of the macro can also be commented on and off. Select a macro line(s), right click and select ‘Edit Entry - Comment - Add/Remove’ Mini-Mouse-Macro-commentsandremarks.gif

User: Malor

Date: Dec 11, 2019 13:29:36 GMT

Excellent! This will be very helpful! Thanks Steve!


URL: https://minimousemacro.proboards.com/thread/208/print-loop-iteration
Date: Nov 16, 2019 22:15:13 GMT

User: Chaba

Date: Nov 16, 2019 22:15:13 GMT

Is there a way to print the loop iteration? For example, lets say I set the loop to 10 and on the fifth time through I want Mini Mouse to print/keypress “4” (or 5 if iteration starts on 1, it doesn’t really matter). I would prefer this method because I must change the loop number often.

User: Steve

Date: Nov 17, 2019 3:17:49 GMT

Hi Chaba, I think i know what your after, the %I% variable from a FOR loop ( <www.turnssoft.com/conditions.html#for> ). FOR loops add several internal Mini Mouse Macro variables that can be used for evaluation. These are:

%I%
The count for the current iteration of the FOR loop
%LINE%
Used in FOR EACH LINE loops, this variable holds the current text line in a file
%FILE%
The full file path and name of the current FOR EACH FILE loop file
%FILE.NAME%
The file name of the current FOR EACH FILE loop file
%FILE.EXT%
The file extension of the current FOR EACH FILE loop file. For example this may be .txt or .rtf
%FILE.PATHROOT%
The root of the file path for the current FOR EACH FILE loop file
%FILE.PATH%
The file path without the file name of the current FOR EACH FILE loop file
%FILE.ACCESSTIME%
The last file access time of the current FOR EACH FILE loop file
%FILE.WRITETIME%
The last file write time of the current FOR EACH FILE loop file
%FILE.CREATIONTIME%
the file creation time of the current FOR EACH FILE loop file Consider this example below. This simple example loops through each file within the D:\Macro\TX directory sequentially providing the loop count ( %I% ) and the file name and path ( %FILE% ) in a message box:
1 | FOR | EACH | FILE IN | D:\Macro\TX | DO
2 | RUN ACTION | MESSAGE PROMPT | Loop %I% and File %FILE%::Loop and File::0
3 | FOR | NEXT

This next example adds to the first by nesting another for loop to count the total amount of lines in each file. It assigns the line count to the variable %INTEGER% :

1 | FOR | EACH | FILE IN | D:\Macro\TX | DO
2 | FOR | EACH | LINE IN | %FILE% | DO
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
4 | FOR | NEXT
5 | RUN ACTION | MESSAGE PROMPT | Loop %I% and File %FILE% has %INTEGER% lines ::Loop, File, and Count::0
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
7 | FOR | NEXT

User: Chaba

Date: Nov 18, 2019 22:45:19 GMT

Thanks for the reply! I don’t think this is quite what I was looking for though. In simplest form, how could I set the loop count (in the top right corner of Mini Mouse) to “6” and have the program print (in wordpad, for example) “012345”? Something like:

1 | 100 | 100 | 100 | Keypress %I%

This doesn’t work though, I assume because %I% is the iteration of a FOR loop, not the built-in loop function of the program. Is it possible to reference the built-in loop function? Thanks in advance!

User: zeak

Date: Nov 20, 2019 21:20:18 GMT

Try this Chaba,

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::1
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::10
3 | FOR | I | = | %INTEGER% TO %INTEGER1% | NEXT
4 | RUN ACTION | SELECT WINDOW BY NAME | Untitled - Notepad
5 | X | X | 100 | Keypress %INTEGER%
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
7 | FOR | NEXT

User: Chaba

Date: Nov 20, 2019 21:53:51 GMT

Thanks Zeak, but that doesn’t key to the built-in loop. I would like to reference the built-in loop function (in the top right corner of the application) so that the upper limit will be equal to that built-in loop. If I set the loop to 2, it will print “12” if I set the loop to 5, it will print “12345”. What I’m working with is a bit more complicated than that, but it all hinges on being able to reference the built-in loop not the FOR loop. Still, your answer will work for my purposes, I’ll just have to edit line 2 each time. Thanks!

User: zeak

Date: Nov 20, 2019 21:56:19 GMT

1 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::0
2 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::10
3 | FOR | I | = | %INTEGER% TO %INTEGER1% | NEXT
4 | RUN ACTION | SELECT WINDOW BY NAME | Untitled - Notepad
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::+1
6 | X | X | 100 | Keypress %INTEGER%
7 | FOR | NEXT

This should print it out as you require.


My first silly question -Keypress %string% seems not working

URL: https://minimousemacro.proboards.com/thread/207/first-question-keypress-string-working
Date: Nov 9, 2019 13:13:03 GMT

User: band84

Date: Nov 9, 2019 13:13:03 GMT

Hello All I’m dealing with my very basic work There is any reason why this not work? If in the keypress i put directly the username and password it woks . Seems he don’t store the variable  or don’t use it in the logging only keypres appear without any text I tried to write STRING and string and also used :: and | in the definition  as I said use both in the documentation, but no changes. I’m entering these data inside an open page on Chrome Canary to autenticate to a site. Thaks in avance Beppe insert code here

1 | 472 | 226 | 100 | RUN ACTION | DEFINE STRING VARIABLE | %string% |username
2 | 472 | 226 | 100 | RUN ACTION | DEFINE STRING VARIABLE | %string1%|password
3 | 774 | 803 | 3158 | Left Click Down
4 | 774 | 803 | 49 | Left Click Release
5 | 486 | 231 | 3362 | Left Click Down
6 | 486 | 231 | 58 | Left Click Release
7 | 486 | 231 | 1406 | Keypress %string%
8 | 486 | 231 | 932 | Keypress tab
9 | 486 | 231 | 2185 | Keypress %string1%

User: band84

Date: Nov 10, 2019 7:17:36 GMT

Delete the thread i solved, thank you the right syntax to declare the string is :: strange it don’t worked intially See ya

User: zeak

Date: Nov 10, 2019 22:22:14 GMT

Hi Band84, Welcome to the forum, Glad to see you’ve worked out your issue. If in doubt try right clicking on the macro list and using “Add Condition” I find these menus are very helpful and intuitive. your code still does seem a little messy as RUN ACTION doesn’t normally have mouse coordinates or time.

1 | RUN ACTION | DEFINE STRING VARIABLE | %STRING%::Username
2 | RUN ACTION | DEFINE STRING VARIABLE | %STRING1%::Password
3 | 774 | 803 | 3158 | Left Click Down
4 | 774 | 803 | 49 | Left Click Release
5 | 486 | 231 | 3362 | Left Click Down
6 | 486 | 231 | 58 | Left Click Release
7 | 486 | 231 | 1406 | Keypress %STRING%
8 | 486 | 231 | 932 | Keypress tab
9 | 486 | 231 | 2185 | Keypress %STRING1%

User: band84

Date: Nov 17, 2019 5:18:46 GMT

Thank you very much Zaeak, You pointed out exactly my error and why after one or two tentative it ended to work Now work like a charm.


How to pause in between start up

URL: https://minimousemacro.proboards.com/thread/206/pause-start
Date: Nov 3, 2019 12:05:56 GMT

User: Dave

Date: Nov 3, 2019 12:05:56 GMT

Is there a code that I can input that I can pause a loop for about 16 minutes?

1 | 1414 | 50 | 1660 | Right Click Down
2 | 1414 | 50 | 108 | Right Click Release
3 | 651 | 291 | 2635 | Left Click Down
4 | 651 | 291 | 119 | Left Click Release

(Pause 16 minutes)

User: zeak

Date: Nov 3, 2019 22:09:13 GMT

Here is the action you can use Dave.

1 | 1414 | 50 | 1660 | Right Click Down
2 | 1414 | 50 | 108 | Right Click Release
3 | 651 | 291 | 2635 | Left Click Down
4 | 651 | 291 | 119 | Left Click Release
5 | RUN ACTION | WAIT MINUTES | 16

Multi Key Pressing

URL: https://minimousemacro.proboards.com/thread/205/multi-key-pressing
Date: Nov 1, 2019 17:45:12 GMT

User: Jason

Date: Nov 1, 2019 17:45:12 GMT

I can’t seem to press multiple keys and release at diferent times. Does Mini Mouse Micro allow for this or am i missing something? an example of what i,m trying to do is: Hold A 10 second and tap B 10 time in the same 10 second window… The playback result is Hold A 10 seconds and release B. no entries for tapping B  

User: Steve

Date: Nov 1, 2019 22:59:04 GMT

Hi Jason, MMM does allow for this but not by default and it’s somewhat manual to create a macro like this. An option exists under ‘Record Options’ to ‘Enable key down capture’. This captures the ‘key down’ and ‘key up’ events for each key press but not mulitiple key press at once. Give it a try it a try and you will see what I mean.
MMM-keydowncapture.png The best approach for this is to manually create what you need. Take note of this macro:

1 | 2927 | 372 | 200 | Keypress a | Key Down
2 | 3172 | 344 | 100 | Keypress b
3 | 3172 | 344 | 1000 | Keypress b
4 | 3172 | 344 | 1000 | Keypress b
5 | 3172 | 344 | 1000 | Keypress b
6 | 3172 | 344 | 1000 | Keypress b
7 | 3172 | 344 | 1000 | Keypress b
8 | 3172 | 344 | 1000 | Keypress b
9 | 3172 | 344 | 1000 | Keypress b
10 | 3172 | 344 | 1000 | Keypress b
11 | 3172 | 344 | 1000 | Keypress b
12 | 2927 | 372 | 100 | Keypress a | Key Release

This macro essentially does what you ask. The ‘a’ key held for 10 seconds and ‘b’ pressed once every second.


How can I end loop then restart

URL: https://minimousemacro.proboards.com/thread/204/end-loop-restart
Date: Oct 27, 2019 17:10:20 GMT

User: Gambino

Date: Oct 27, 2019 17:10:20 GMT

How can I end this macro after 3 loops then have it do another macro then restart the whole process again?

1 | 974 | 721 | 200 | Left Click Down
2 | 974 | 721 | 200 | Left Click Release
3 | 1181 | 943 | 200 | Left Click Down
4 | 1181 | 943 | 200 | Left Click Release
5 | 1387 | 750 | 200 | Left Click Down
6 | 1387 | 750 | 200 | Left Click Release
7 | 1062 | 601 | 200 | Left Click Down
8 | 1062 | 601 | 200 | Left Click Release
9 | 1455 | 810 | 200 | Left Click Down
10 | 1455 | 810 | 200 | Left Click Release
11 | 148 | 150 | 200 | Left Click Down
12 | 148 | 150 | 200 | Left Click Release
13 | 456 | 711 | 200 | Left Click Down
14 | 456 | 711 | 200 | Left Click Release

User: zeak

Date: Oct 28, 2019 21:04:33 GMT

Hi Gambino, Welcome to the forum, you can find out about to how use conditions on this site: <www.turnssoft.com/conditions.html> Some of the main things I find myself using is “ GOTO MACRO LINE “ and “ INPUT BOX “ Hope this helps, If your still suck let me know.

User: Steve

Date: Nov 1, 2019 5:29:34 GMT

Oct 27, 2019 17:10:20 GMT Gambino said: How can I end this macro after 3 loops then have it do another macro then restart the whole process again?

1 | 974 | 721 | 200 | Left Click Down
2 | 974 | 721 | 200 | Left Click Release
3 | 1181 | 943 | 200 | Left Click Down
4 | 1181 | 943 | 200 | Left Click Release
5 | 1387 | 750 | 200 | Left Click Down
6 | 1387 | 750 | 200 | Left Click Release
7 | 1062 | 601 | 200 | Left Click Down
8 | 1062 | 601 | 200 | Left Click Release
9 | 1455 | 810 | 200 | Left Click Down
10 | 1455 | 810 | 200 | Left Click Release
11 | 148 | 150 | 200 | Left Click Down
12 | 148 | 150 | 200 | Left Click Release
13 | 456 | 711 | 200 | Left Click Down
14 | 456 | 711 | 200 | Left Click Release

This macro will loop the clicks three times, run another macro after that, wait 5 seconds, and then loop back to the start.

1 | FOR | I | = | 0 TO 3 | NEXT
2 | 974 | 721 | 200 | Left Click Down
3 | 974 | 721 | 200 | Left Click Release
4 | 1181 | 943 | 200 | Left Click Down
5 | 1181 | 943 | 200 | Left Click Release
6 | 1387 | 750 | 200 | Left Click Down
7 | 1387 | 750 | 200 | Left Click Release
8 | 1062 | 601 | 200 | Left Click Down
9 | 1062 | 601 | 200 | Left Click Release
10 | 1455 | 810 | 200 | Left Click Down
11 | 1455 | 810 | 200 | Left Click Release
12 | 148 | 150 | 200 | Left Click Down
13 | 148 | 150 | 200 | Left Click Release
14 | 456 | 711 | 200 | Left Click Down
15 | 456 | 711 | 200 | Left Click Release
16 | FOR | NEXT
17 | FOR | EACH | LINE IN | D:\Macro\_10 events.mmmacro | RUN
18 | RUN ACTION | WAIT SECONDS | 5
19 | RUN ACTION | GOTO MACRO LINE | 1

unhandled exception when sorting

URL: https://minimousemacro.proboards.com/thread/200/unhandled-exception-when-sorting
Date: Oct 14, 2019 11:18:15 GMT

User: Mr clicker

Date: Oct 14, 2019 11:18:15 GMT

when on quick launch window and trying to sort based on “hotkey” i get this error message :

 See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.Collections.ArrayList.get_Item(Int32 index)
   at System.Windows.Forms.DataGridViewRowCollection.SharedRow(Int32 rowIndex)
   at System.Windows.Forms.DataGridViewRowCollection.get_Item(Int32 index)
   at System.Windows.Forms.DataGridView.get_Item(Int32 columnIndex, Int32 rowIndex)
   at MiniMouseMacro.Settings.DataGridViewQuickLaunch_CellMouseClick(Object sender, DataGridViewCellMouseEventArgs e)
   at System.Windows.Forms.DataGridView.OnCellMouseClick(DataGridViewCellMouseEventArgs e)
   at System.Windows.Forms.DataGridView.OnMouseClick(MouseEventArgs e)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3468.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------

MiniMouseMacro
    Assembly Version: 7.2.0.0
    Win32 Version: 7.2.0.0
    CodeBase: file:///C:/Users/xxxxx/Downloads/minimousemacro%20(2).exe
----------------------------------------

Microsoft.VisualBasic
    Assembly Version: 10.0.0.0
    Win32 Version: 14.7.3056.0 built by: NET472REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------

System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3451.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------

System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3468.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------

System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3324.0 built by: NET472REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------

System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3056.0 built by: NET472REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------

System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3056.0 built by: NET472REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------

System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3056.0 built by: NET472REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

System.Runtime.Remoting
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3056.0 built by: NET472REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------

Accessibility
    Assembly Version: 4.0.0.0
    Win32 Version: 4.7.3056.0 built by: NET472REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
&lt;configuration&gt;
    &lt;system.windows.forms jitDebugging="true" /&gt;
&lt;/configuration&gt;
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

User: zeak

Date: Oct 16, 2019 20:49:14 GMT

Hi Mr Clicker, Can I ask how you are performing the Sort?

User: mrclicker

Date: Oct 17, 2019 16:25:19 GMT

by clicking on the column heading “Hotkey”

User: Steve

Date: Oct 27, 2019 4:23:37 GMT

Thanks i’ll add this as a bug to fix in the next release and to the bugtrack page <www.turnssoft.com/bugtrack.html>


Problem fixed, please delete thread

URL: https://minimousemacro.proboards.com/thread/196/problem-fixed-delete-thread
Date: Sept 21, 2019 18:36:25 GMT

User: minimartini

Date: Sept 21, 2019 18:36:25 GMT

Problem fixed, please delete thread wink.png

User: zeak

Date: Sept 22, 2019 22:07:14 GMT

Just curious, what was the problem?

User: Steve

Date: Sept 27, 2019 0:33:20 GMT

huh.png


Wait until keypress

URL: https://minimousemacro.proboards.com/thread/195/wait-keypress
Date: Sept 13, 2019 12:28:19 GMT

User: wlie

Date: Sept 13, 2019 12:28:19 GMT

I have tried to make a wait until keypress by using this line: 1 IF | KEYBOARD KEYPRESS | Keypress z | IS | CONTINUE The system answer this: “There is a problem with your entry. One or more values are not numeric where required. Row number 1 IF X: KEYBOARD KEYPRESS Y: Keypress z Time: IS Rowx, y, and Time values alle require to be numeric and spaced correctly. “ Please tell me what is wrong.

User: zeak

Date: Sept 15, 2019 12:18:04 GMT

Hi Wlie, I tested this with a simple macro and it worked for me, If you are still having troubles with it then there is another method of detecting keyboard input by using INPUT BOX function. Please refer to this thread where we talk about this type of action. thread/188/single-keystroke-input

User: zeak

Date: Sept 15, 2019 18:14:30 GMT

Steve I just made a quick macro to detect key presses but found that I had to spam the key for it to register, is there anyway to make MMM detect the key press easier?

1 | IF | KEYBOARD KEYPRESS | Keypress z | IS | GOTO MACRO LINE | LineZ | ELSE | 1 | IF | KEYBOARD KEYPRESS | Keypress x | IS | GOTO MACRO LINE | LineX
2 | RUN ACTION | GOTO MACRO LINE | 1
* | LineZ
3 | RUN ACTION | MESSAGE PROMPT | You pressed Z::Z::0
4 | RUN ACTION | GOTO MACRO LINE | 1
* | LineX
5 | RUN ACTION | MESSAGE PROMPT | You pressed X::X::0
6 | RUN ACTION | GOTO MACRO LINE | 1

User: wlie

Date: Sept 17, 2019 15:35:35 GMT

Thanks for the help. I will try…

User: Steve

Date: Sept 27, 2019 0:32:45 GMT

ovqiSZMQkcHXJsgduMbm.jpg Sept 15, 2019 18:14:30 GMT

zeak said: Steve I just made a quick macro to detect key presses but found that I had to spam the key for it to register, is there anyway to make MMM detect the key press easier?

1 | IF | KEYBOARD KEYPRESS | Keypress z | IS | GOTO MACRO LINE | LineZ | ELSE | 1 | IF | KEYBOARD KEYPRESS | Keypress x | IS | GOTO MACRO LINE | LineX
2 | RUN ACTION | GOTO MACRO LINE | 1
* | LineZ
3 | RUN ACTION | MESSAGE PROMPT | You pressed Z::Z::0
4 | RUN ACTION | GOTO MACRO LINE | 1
* | LineX
5 | RUN ACTION | MESSAGE PROMPT | You pressed X::X::0
6 | RUN ACTION | GOTO MACRO LINE | 1

Hi Zeak, The ‘Keyboard Keypress’ condition, as you’ve noticed, does require a more deliberate approach to trigger on the keypress. The only other way to detect a keypress is with a ‘quick launch’ without a modifier. Quick launch is far more reliable but will load another macro. What would be cool is if the quick launch key would run a macro function, say macro lines 10 through 20 of the same macro. Kinda like calling a routine or function within the code via a quick launch. This way we wouldnt need to call a new macro file.


Mouse Clicks don’t seem to be recognized

URL: https://minimousemacro.proboards.com/thread/194/mouse-clicks-recognized
Date: Sept 12, 2019 19:52:18 GMT

User: speakermatt

Date: Sept 12, 2019 19:52:18 GMT

Hi Folks, I’m new here, but not to technology, for sure!  I’m a new proud owner of MMM PRO!   I’ve scoured the forums, the help docs, and the interwebs, but I just can’t seem to resolve this issue. I have a very repititive task that I am trying to automate with the USE of MMM. It’s a website that I basically need to click 5 times. Once each on different pages when the page loads.  Everything seems ok when I record the actions, but when I go to play it back, it shows the mouse movements, the mouse it clearly in the correct spot, but the clicks are not happening. What’s really odd, is that it seems to work sometimes, while it doesn’t work other times. Can anyone give me some advice, or some things to look at to see why this won’t seem to click on the links with?  What other information might you need to assist in any way?

1 | 26 | 366 | 0 | Mouse Movement
1 | 26 | 366 | 0 | Mouse Movement
2 | 26 | 366 | 0 | Mouse Movement
3 | 26 | 366 | 0 | Mouse Movement
4 | 26 | 364 | 0 | Mouse Movement
5 | 45 | 333 | 0 | Mouse Movement
6 | 73 | 286 | 0 | Mouse Movement
7 | 83 | 269 | 0 | Mouse Movement
8 | 111 | 229 | 0 | Mouse Movement
9 | 149 | 181 | 0 | Mouse Movement
10 | 165 | 161 | 0 | Mouse Movement
11 | 194 | 132 | 0 | Mouse Movement
12 | 205 | 105 | 0 | Mouse Movement
13 | 245 | 85 | 0 | Mouse Movement
14 | 253 | 80 | 0 | Mouse Movement
15 | 257 | 73 | 0 | Mouse Movement
16 | 270 | 67 | 0 | Mouse Movement
17 | 271 | 67 | 0 | Mouse Movement
18 | 267 | 66 | 0 | Mouse Movement
19 | 264 | 65 | 0 | Mouse Movement
20 | 250 | 58 | 0 | Mouse Movement
21 | 237 | 56 | 0 | Mouse Movement
22 | 227 | 54 | 0 | Mouse Movement
23 | 209 | 49 | 0 | Mouse Movement
24 | 203 | 43 | 0 | Mouse Movement
25 | 198 | 41 | 0 | Mouse Movement
26 | 193 | 34 | 0 | Mouse Movement
27 | 187 | 22 | 0 | Mouse Movement
29 | 186 | 21 | 237 | Left Click Down
30 | 186 | 21 | 97 | Left Click Release
31 | RUN ACTION | WAIT SECONDS | 3
32 | 189 | 32 | 0 | Mouse Movement
33 | 198 | 59 | 0 | Mouse Movement
34 | 203 | 80 | 0 | Mouse Movement
35 | 215 | 103 | 0 | Mouse Movement
36 | 219 | 109 | 0 | Mouse Movement
37 | 228 | 117 | 0 | Mouse Movement
38 | 242 | 139 | 0 | Mouse Movement
39 | 259 | 157 | 0 | Mouse Movement
40 | 267 | 167 | 0 | Mouse Movement
41 | 271 | 175 | 0 | Mouse Movement
42 | 280 | 187 | 0 | Mouse Movement
43 | 295 | 206 | 0 | Mouse Movement
44 | 309 | 219 | 0 | Mouse Movement
45 | 320 | 231 | 0 | Mouse Movement
46 | 323 | 237 | 0 | Mouse Movement
47 | 330 | 256 | 0 | Mouse Movement
48 | 335 | 275 | 0 | Mouse Movement
49 | 339 | 287 | 0 | Mouse Movement
50 | 340 | 296 | 0 | Mouse Movement
51 | 345 | 300 | 0 | Mouse Movement
52 | 347 | 307 | 0 | Mouse Movement
53 | 356 | 319 | 0 | Mouse Movement
54 | 360 | 322 | 0 | Mouse Movement
55 | 363 | 325 | 0 | Mouse Movement
56 | 364 | 326 | 0 | Mouse Movement
57 | 367 | 327 | 0 | Mouse Movement
58 | 368 | 327 | 0 | Mouse Movement
59 | 375 | 327 | 0 | Mouse Movement
60 | 378 | 326 | 0 | Mouse Movement
61 | 382 | 325 | 0 | Mouse Movement
62 | 384 | 324 | 0 | Mouse Movement
63 | 386 | 323 | 0 | Mouse Movement
64 | 387 | 323 | 0 | Mouse Movement
65 | 389 | 323 | 0 | Mouse Movement
66 | 390 | 323 | 0 | Mouse Movement
67 | 390 | 323 | 34 | Left Click Down
68 | 390 | 323 | 168 | Left Click Release
69 | RUN ACTION | WAIT SECONDS | 3
70 | 390 | 323 | 0 | Mouse Movement
71 | 386 | 323 | 0 | Mouse Movement
72 | 377 | 326 | 0 | Mouse Movement
73 | 365 | 331 | 0 | Mouse Movement
74 | 335 | 344 | 0 | Mouse Movement
75 | 287 | 355 | 0 | Mouse Movement
76 | 267 | 359 | 0 | Mouse Movement
77 | 249 | 361 | 0 | Mouse Movement
78 | 231 | 363 | 0 | Mouse Movement
79 | 202 | 364 | 0 | Mouse Movement
80 | 184 | 367 | 0 | Mouse Movement
81 | 167 | 369 | 0 | Mouse Movement
82 | 150 | 370 | 0 | Mouse Movement
83 | 146 | 370 | 0 | Mouse Movement
84 | 131 | 369 | 0 | Mouse Movement
85 | 124 | 370 | 0 | Mouse Movement
86 | 116 | 370 | 0 | Mouse Movement
87 | 113 | 371 | 0 | Mouse Movement
88 | 108 | 371 | 0 | Mouse Movement
89 | 104 | 372 | 0 | Mouse Movement
90 | 101 | 373 | 0 | Mouse Movement
91 | 98 | 375 | 0 | Mouse Movement
92 | 95 | 376 | 0 | Mouse Movement
93 | 93 | 377 | 0 | Mouse Movement
94 | 92 | 377 | 0 | Mouse Movement
95 | 92 | 377 | 246 | Left Click Down
96 | 92 | 377 | 146 | Left Click Release
97 | RUN ACTION | WAIT SECONDS | 3
98 | 93 | 376 | 0 | Mouse Movement
99 | 95 | 373 | 0 | Mouse Movement
100 | 120 | 363 | 0 | Mouse Movement
101 | 127 | 361 | 0 | Mouse Movement
102 | 146 | 361 | 0 | Mouse Movement
103 | 161 | 364 | 0 | Mouse Movement
104 | 203 | 368 | 0 | Mouse Movement
105 | 239 | 380 | 0 | Mouse Movement
106 | 272 | 392 | 0 | Mouse Movement
107 | 289 | 399 | 0 | Mouse Movement
108 | 335 | 409 | 0 | Mouse Movement
109 | 353 | 413 | 0 | Mouse Movement
110 | 387 | 423 | 0 | Mouse Movement
111 | 407 | 439 | 0 | Mouse Movement
112 | 435 | 447 | 0 | Mouse Movement
113 | 451 | 454 | 0 | Mouse Movement
114 | 475 | 463 | 0 | Mouse Movement
115 | 481 | 465 | 0 | Mouse Movement
116 | 493 | 468 | 0 | Mouse Movement
117 | 501 | 470 | 0 | Mouse Movement
118 | 520 | 473 | 0 | Mouse Movement
119 | 532 | 475 | 0 | Mouse Movement
120 | 540 | 475 | 0 | Mouse Movement
121 | 545 | 477 | 0 | Mouse Movement
122 | 550 | 479 | 0 | Mouse Movement
123 | 553 | 480 | 0 | Mouse Movement
124 | 559 | 484 | 0 | Mouse Movement
125 | 565 | 486 | 0 | Mouse Movement
126 | 581 | 492 | 0 | Mouse Movement
127 | 590 | 495 | 0 | Mouse Movement
128 | 597 | 498 | 0 | Mouse Movement
129 | 598 | 499 | 0 | Mouse Movement
130 | 604 | 499 | 0 | Mouse Movement
131 | 607 | 501 | 0 | Mouse Movement
132 | 608 | 502 | 0 | Mouse Movement
133 | 611 | 504 | 0 | Mouse Movement
134 | 613 | 507 | 0 | Mouse Movement
135 | 617 | 510 | 0 | Mouse Movement
136 | 617 | 510 | 360 | Left Click Down
137 | 617 | 510 | 203 | Left Click Release
138 | RUN ACTION | WAIT SECONDS | 3
139 | 600 | 505 | 0 | Mouse Movement
140 | 589 | 497 | 0 | Mouse Movement
141 | 574 | 485 | 0 | Mouse Movement
142 | 558 | 477 | 0 | Mouse Movement
143 | 539 | 471 | 0 | Mouse Movement
144 | 535 | 467 | 0 | Mouse Movement
145 | 516 | 459 | 0 | Mouse Movement
146 | 499 | 453 | 0 | Mouse Movement
147 | 499 | 451 | 0 | Mouse Movement
148 | 475 | 440 | 0 | Mouse Movement
149 | 465 | 427 | 0 | Mouse Movement
150 | 449 | 415 | 0 | Mouse Movement
151 | 435 | 405 | 0 | Mouse Movement
152 | 421 | 393 | 0 | Mouse Movement
153 | 405 | 388 | 0 | Mouse Movement
154 | 399 | 385 | 0 | Mouse Movement
155 | 387 | 379 | 0 | Mouse Movement
156 | 379 | 376 | 0 | Mouse Movement
157 | 371 | 371 | 0 | Mouse Movement
158 | 369 | 371 | 0 | Mouse Movement
159 | 367 | 370 | 0 | Mouse Movement
160 | 366 | 369 | 0 | Mouse Movement
161 | 366 | 369 | 47 | Left Click Down
162 | 366 | 369 | 190 | Left Click Release
163 | RUN ACTION | WAIT SECONDS | 3
164 | 366 | 368 | 0 | Mouse Movement
165 | 365 | 367 | 0 | Mouse Movement
166 | 364 | 367 | 0 | Mouse Movement
167 | 364 | 366 | 0 | Mouse Movement
168 | 362 | 366 | 0 | Mouse Movement
169 | 361 | 369 | 0 | Mouse Movement
170 | 357 | 375 | 0 | Mouse Movement
171 | 354 | 385 | 0 | Mouse Movement
172 | 352 | 393 | 0 | Mouse Movement
173 | 350 | 406 | 0 | Mouse Movement
174 | 345 | 426 | 0 | Mouse Movement
175 | 339 | 441 | 0 | Mouse Movement
176 | 335 | 471 | 0 | Mouse Movement
177 | 333 | 486 | 0 | Mouse Movement
178 | 331 | 509 | 0 | Mouse Movement
179 | 329 | 537 | 0 | Mouse Movement
180 | 329 | 543 | 0 | Mouse Movement
181 | 329 | 555 | 0 | Mouse Movement
182 | 331 | 576 | 0 | Mouse Movement
183 | 336 | 600 | 0 | Mouse Movement
184 | 340 | 619 | 0 | Mouse Movement
185 | 344 | 625 | 0 | Mouse Movement
186 | 349 | 639 | 0 | Mouse Movement
187 | 349 | 647 | 0 | Mouse Movement
188 | 353 | 665 | 0 | Mouse Movement
189 | 355 | 675 | 0 | Mouse Movement
190 | 356 | 680 | 0 | Mouse Movement
191 | 356 | 684 | 0 | Mouse Movement
192 | 356 | 697 | 0 | Mouse Movement
193 | 355 | 707 | 0 | Mouse Movement
194 | 353 | 718 | 0 | Mouse Movement
195 | 353 | 721 | 0 | Mouse Movement
196 | 353 | 724 | 0 | Mouse Movement
197 | 352 | 735 | 0 | Mouse Movement
198 | 352 | 743 | 0 | Mouse Movement
199 | 352 | 751 | 0 | Mouse Movement
200 | 352 | 759 | 0 | Mouse Movement
201 | 352 | 766 | 0 | Mouse Movement
202 | 352 | 771 | 0 | Mouse Movement
203 | 353 | 778 | 0 | Mouse Movement
204 | 353 | 783 | 0 | Mouse Movement
205 | 353 | 785 | 0 | Mouse Movement
206 | 353 | 789 | 0 | Mouse Movement
207 | 353 | 790 | 0 | Mouse Movement
208 | 354 | 792 | 0 | Mouse Movement
209 | 354 | 792 | 787 | Left Click Down
210 | 354 | 792 | 157 | Left Click Release
211 | RUN ACTION | WAIT SECONDS | 3
212 | 351 | 791 | 0 | Mouse Movement
213 | 343 | 784 | 0 | Mouse Movement
214 | 337 | 775 | 0 | Mouse Movement
215 | 309 | 763 | 0 | Mouse Movement
216 | 293 | 748 | 0 | Mouse Movement
217 | 273 | 741 | 0 | Mouse Movement
218 | 254 | 731 | 0 | Mouse Movement
219 | 243 | 718 | 0 | Mouse Movement
220 | 221 | 703 | 0 | Mouse Movement
221 | 188 | 689 | 0 | Mouse Movement
222 | 157 | 671 | 0 | Mouse Movement
223 | 146 | 655 | 0 | Mouse Movement
224 | 116 | 636 | 0 | Mouse Movement
225 | 111 | 620 | 0 | Mouse Movement
226 | 98 | 599 | 0 | Mouse Movement
227 | 83 | 582 | 0 | Mouse Movement
228 | 72 | 555 | 0 | Mouse Movement
229 | 61 | 523 | 0 | Mouse Movement
230 | 56 | 490 | 0 | Mouse Movement
231 | 55 | 485 | 0 | Mouse Movement
232 | 53 | 465 | 0 | Mouse Movement
233 | 53 | 457 | 0 | Mouse Movement
234 | 45 | 435 | 0 | Mouse Movement
235 | 39 | 418 | 0 | Mouse Movement
236 | 37 | 415 | 0 | Mouse Movement
237 | 37 | 414 | 0 | Mouse Movement
238 | 38 | 408 | 0 | Mouse Movement
239 | 41 | 403 | 0 | Mouse Movement
240 | 43 | 364 | 0 | Mouse Movement
241 | 42 | 347 | 0 | Mouse Movement
242 | 38 | 322 | 0 | Mouse Movement
243 | 31 | 301 | 0 | Mouse Movement
244 | 28 | 283 | 0 | Mouse Movement
245 | 27 | 257 | 0 | Mouse Movement
246 | 27 | 249 | 0 | Mouse Movement
247 | 27 | 246 | 0 | Mouse Movement
248 | 28 | 241 | 0 | Mouse Movement
249 | 29 | 237 | 0 | Mouse Movement
250 | 31 | 231 | 0 | Mouse Movement
251 | 32 | 227 | 0 | Mouse Movement
252 | 33 | 220 | 0 | Mouse Movement
253 | 36 | 215 | 0 | Mouse Movement
254 | 37 | 208 | 0 | Mouse Movement
255 | 38 | 202 | 0 | Mouse Movement
256 | 41 | 195 | 0 | Mouse Movement
257 | 41 | 191 | 0 | Mouse Movement
258 | 41 | 190 | 0 | Mouse Movement
259 | 42 | 186 | 0 | Mouse Movement
260 | 43 | 183 | 0 | Mouse Movement
261 | 45 | 179 | 0 | Mouse Movement
262 | 46 | 177 | 0 | Mouse Movement
263 | 46 | 177 | 349 | Left Click Down
264 | 46 | 177 | 146 | Left Click Release
265 | RUN ACTION | WAIT SECONDS | 3
266 | 51 | 175 | 0 | Mouse Movement
267 | 55 | 175 | 0 | Mouse Movement
268 | 57 | 177 | 0 | Mouse Movement
269 | 59 | 177 | 0 | Mouse Movement
270 | 63 | 180 | 0 | Mouse Movement
271 | 70 | 183 | 0 | Mouse Movement
272 | 80 | 189 | 0 | Mouse Movement
273 | 86 | 191 | 0 | Mouse Movement
274 | 93 | 196 | 0 | Mouse Movement
275 | 99 | 201 | 0 | Mouse Movement
276 | 113 | 208 | 0 | Mouse Movement
277 | 116 | 215 | 0 | Mouse Movement
278 | 131 | 222 | 0 | Mouse Movement
279 | 134 | 225 | 0 | Mouse Movement
280 | 144 | 235 | 0 | Mouse Movement
281 | 186 | 275 | 0 | Mouse Movement
282 | 205 | 289 | 0 | Mouse Movement
283 | 218 | 301 | 0 | Mouse Movement
284 | 231 | 314 | 0 | Mouse Movement
285 | 251 | 337 | 0 | Mouse Movement
286 | 257 | 348 | 0 | Mouse Movement
287 | 271 | 357 | 0 | Mouse Movement
288 | 281 | 363 | 0 | Mouse Movement
289 | 286 | 375 | 0 | Mouse Movement
290 | 313 | 397 | 0 | Mouse Movement
291 | 325 | 415 | 0 | Mouse Movement
292 | 335 | 429 | 0 | Mouse Movement
293 | 345 | 439 | 0 | Mouse Movement
294 | 347 | 444 | 0 | Mouse Movement
295 | 360 | 455 | 0 | Mouse Movement
296 | 371 | 469 | 0 | Mouse Movement
297 | 373 | 477 | 0 | Mouse Movement
298 | 379 | 486 | 0 | Mouse Movement
299 | 381 | 493 | 0 | Mouse Movement
300 | 383 | 500 | 0 | Mouse Movement
301 | 383 | 501 | 0 | Mouse Movement
302 | 383 | 504 | 0 | Mouse Movement
303 | 385 | 507 | 0 | Mouse Movement
304 | 385 | 509 | 0 | Mouse Movement
305 | 385 | 511 | 0 | Mouse Movement
306 | 387 | 515 | 0 | Mouse Movement
307 | 387 | 518 | 0 | Mouse Movement
308 | 389 | 521 | 0 | Mouse Movement
309 | 390 | 525 | 0 | Mouse Movement
310 | 391 | 525 | 4003 | Left Click Down
311 | 391 | 525 | 191 | Left Click Release
312 | RUN ACTION | WAIT SECONDS | 3
313 | 391 | 524 | 0 | Mouse Movement
314 | 383 | 522 | 0 | Mouse Movement
315 | 377 | 519 | 0 | Mouse Movement
316 | 363 | 517 | 0 | Mouse Movement
317 | 345 | 515 | 0 | Mouse Movement
318 | 319 | 511 | 0 | Mouse Movement
319 | 259 | 486 | 0 | Mouse Movement
320 | 240 | 473 | 0 | Mouse Movement
321 | 212 | 457 | 0 | Mouse Movement
322 | 201 | 448 | 0 | Mouse Movement
323 | 183 | 439 | 0 | Mouse Movement
324 | 172 | 431 | 0 | Mouse Movement
325 | 168 | 429 | 0 | Mouse Movement
326 | 165 | 426 | 0 | Mouse Movement
327 | 163 | 421 | 0 | Mouse Movement
328 | 156 | 415 | 0 | Mouse Movement
329 | 149 | 411 | 0 | Mouse Movement
330 | 141 | 408 | 0 | Mouse Movement
331 | 136 | 405 | 0 | Mouse Movement
332 | 131 | 403 | 0 | Mouse Movement
333 | 126 | 402 | 0 | Mouse Movement
334 | 122 | 400 | 0 | Mouse Movement
335 | 119 | 399 | 0 | Mouse Movement
336 | 116 | 398 | 0 | Mouse Movement
337 | 113 | 398 | 0 | Mouse Movement
338 | 109 | 397 | 0 | Mouse Movement
339 | 107 | 395 | 0 | Mouse Movement
340 | 103 | 394 | 0 | Mouse Movement
341 | 102 | 393 | 0 | Mouse Movement
342 | 100 | 391 | 0 | Mouse Movement
343 | 99 | 389 | 0 | Mouse Movement
344 | 99 | 388 | 0 | Mouse Movement
345 | 96 | 385 | 0 | Mouse Movement
346 | 94 | 382 | 0 | Mouse Movement
347 | 94 | 381 | 359 | Left Click Down
348 | 93 | 381 | 112 | Left Click Release
349 | RUN ACTION | WAIT SECONDS | 3
350 | 93 | 380 | 0 | Mouse Movement
351 | 95 | 380 | 0 | Mouse Movement
352 | 105 | 381 | 0 | Mouse Movement
353 | 114 | 381 | 0 | Mouse Movement
354 | 132 | 383 | 0 | Mouse Movement
355 | 145 | 385 | 0 | Mouse Movement
356 | 159 | 387 | 0 | Mouse Movement
357 | 173 | 389 | 0 | Mouse Movement
358 | 201 | 393 | 0 | Mouse Movement
359 | 233 | 398 | 0 | Mouse Movement
360 | 241 | 401 | 0 | Mouse Movement
361 | 291 | 406 | 0 | Mouse Movement
362 | 325 | 411 | 0 | Mouse Movement
363 | 343 | 414 | 0 | Mouse Movement
364 | 365 | 424 | 0 | Mouse Movement
365 | 397 | 435 | 0 | Mouse Movement
366 | 463 | 455 | 0 | Mouse Movement
367 | 503 | 467 | 0 | Mouse Movement
368 | 526 | 476 | 0 | Mouse Movement
369 | 544 | 484 | 0 | Mouse Movement
370 | 564 | 489 | 0 | Mouse Movement
371 | 573 | 492 | 0 | Mouse Movement
372 | 577 | 492 | 0 | Mouse Movement
373 | 585 | 493 | 0 | Mouse Movement
374 | 593 | 495 | 0 | Mouse Movement
375 | 598 | 497 | 0 | Mouse Movement
376 | 603 | 497 | 0 | Mouse Movement
377 | 605 | 500 | 0 | Mouse Movement
378 | 605 | 503 | 0 | Mouse Movement
379 | 605 | 503 | 281 | Left Click Down
380 | 605 | 503 | 180 | Left Click Release
381 | RUN ACTION | WAIT SECONDS | 3
382 | 606 | 503 | 0 | Mouse Movement
383 | 593 | 499 | 0 | Mouse Movement
384 | 583 | 496 | 0 | Mouse Movement
385 | 525 | 465 | 0 | Mouse Movement
386 | 462 | 432 | 0 | Mouse Movement
387 | 433 | 417 | 0 | Mouse Movement
388 | 403 | 401 | 0 | Mouse Movement
389 | 383 | 389 | 0 | Mouse Movement
390 | 369 | 376 | 0 | Mouse Movement
391 | 355 | 365 | 0 | Mouse Movement
392 | 349 | 359 | 0 | Mouse Movement
393 | 345 | 357 | 0 | Mouse Movement
394 | 344 | 357 | 0 | Mouse Movement
395 | 341 | 358 | 0 | Mouse Movement
396 | 340 | 359 | 0 | Mouse Movement
397 | 340 | 359 | 551 | Left Click Down
398 | 340 | 359 | 145 | Left Click Release
399 | RUN ACTION | WAIT SECONDS | 3
400 | 339 | 362 | 0 | Mouse Movement
401 | 338 | 365 | 0 | Mouse Movement
402 | 337 | 373 | 0 | Mouse Movement
403 | 335 | 393 | 0 | Mouse Movement
404 | 336 | 410 | 0 | Mouse Movement
405 | 337 | 420 | 0 | Mouse Movement
406 | 339 | 429 | 0 | Mouse Movement
407 | 343 | 451 | 0 | Mouse Movement
408 | 347 | 498 | 0 | Mouse Movement
409 | 352 | 533 | 0 | Mouse Movement
410 | 359 | 563 | 0 | Mouse Movement
411 | 363 | 585 | 0 | Mouse Movement
412 | 363 | 595 | 0 | Mouse Movement
413 | 366 | 610 | 0 | Mouse Movement
414 | 365 | 626 | 0 | Mouse Movement
415 | 360 | 642 | 0 | Mouse Movement
416 | 358 | 655 | 0 | Mouse Movement
417 | 353 | 684 | 0 | Mouse Movement
418 | 350 | 701 | 0 | Mouse Movement
419 | 349 | 707 | 0 | Mouse Movement
420 | 347 | 711 | 0 | Mouse Movement
421 | 347 | 715 | 0 | Mouse Movement
422 | 345 | 719 | 0 | Mouse Movement
423 | 345 | 723 | 0 | Mouse Movement
424 | 343 | 727 | 0 | Mouse Movement
425 | 342 | 732 | 0 | Mouse Movement
426 | 340 | 741 | 0 | Mouse Movement
427 | 338 | 751 | 0 | Mouse Movement
428 | 337 | 760 | 0 | Mouse Movement
429 | 337 | 771 | 0 | Mouse Movement
430 | 337 | 781 | 0 | Mouse Movement
431 | 337 | 785 | 0 | Mouse Movement
432 | 338 | 792 | 1170 | Left Click Down
433 | 338 | 792 | 146 | Left Click Release
434 | RUN ACTION | WAIT SECONDS | 3
435 | 337 | 790 | 0 | Mouse Movement
436 | 328 | 776 | 0 | Mouse Movement
437 | 319 | 763 | 0 | Mouse Movement
438 | 310 | 744 | 0 | Mouse Movement
439 | 291 | 723 | 0 | Mouse Movement
440 | 285 | 713 | 0 | Mouse Movement
441 | 267 | 680 | 0 | Mouse Movement
442 | 243 | 653 | 0 | Mouse Movement
443 | 229 | 621 | 0 | Mouse Movement
444 | 212 | 604 | 0 | Mouse Movement
445 | 183 | 565 | 0 | Mouse Movement
446 | 175 | 552 | 0 | Mouse Movement
447 | 168 | 542 | 0 | Mouse Movement
448 | 161 | 533 | 0 | Mouse Movement
449 | 156 | 524 | 0 | Mouse Movement
450 | 135 | 487 | 0 | Mouse Movement
451 | 127 | 455 | 0 | Mouse Movement
452 | 116 | 414 | 0 | Mouse Movement
453 | 99 | 366 | 0 | Mouse Movement
454 | 93 | 321 | 0 | Mouse Movement
455 | 90 | 290 | 0 | Mouse Movement
456 | 89 | 273 | 0 | Mouse Movement
457 | 86 | 260 | 0 | Mouse Movement
458 | 85 | 247 | 0 | Mouse Movement
459 | 85 | 237 | 0 | Mouse Movement
460 | 83 | 232 | 0 | Mouse Movement
461 | 82 | 224 | 0 | Mouse Movement
462 | 81 | 222 | 0 | Mouse Movement
463 | 79 | 219 | 0 | Mouse Movement
464 | 76 | 215 | 0 | Mouse Movement
465 | 68 | 204 | 0 | Mouse Movement
466 | 65 | 197 | 0 | Mouse Movement
467 | 63 | 190 | 0 | Mouse Movement
468 | 63 | 184 | 0 | Mouse Movement
469 | 62 | 180 | 0 | Mouse Movement
470 | 62 | 177 | 0 | Mouse Movement
471 | 61 | 175 | 0 | Mouse Movement
472 | 61 | 174 | 0 | Mouse Movement
473 | 61 | 173 | 0 | Mouse Movement
474 | 60 | 173 | 0 | Mouse Movement
475 | 59 | 172 | 146 | Left Click Down
476 | 59 | 172 | 146 | Left Click Release
477 | RUN ACTION | WAIT SECONDS | 3
478 | 60 | 172 | 3882 | Mouse Movement
479 | 730 | 941 | 0 | Left Click Release
1 | 26 | 366 | 0 | Mouse Movement
2 | 26 | 366 | 0 | Mouse Movement
3 | 26 | 364 | 0 | Mouse Movement
4 | 45 | 333 | 0 | Mouse Movement
5 | 73 | 286 | 0 | Mouse Movement
6 | 83 | 269 | 0 | Mouse Movement
7 | 111 | 229 | 0 | Mouse Movement
8 | 149 | 181 | 0 | Mouse Movement
9 | 165 | 161 | 0 | Mouse Movement
10 | 194 | 132 | 0 | Mouse Movement
11 | 205 | 105 | 0 | Mouse Movement
12 | 245 | 85 | 0 | Mouse Movement
13 | 253 | 80 | 0 | Mouse Movement
14 | 257 | 73 | 0 | Mouse Movement
15 | 270 | 67 | 0 | Mouse Movement
16 | 271 | 67 | 0 | Mouse Movement
17 | 267 | 66 | 0 | Mouse Movement
18 | 264 | 65 | 0 | Mouse Movement
19 | 250 | 58 | 0 | Mouse Movement
20 | 237 | 56 | 0 | Mouse Movement
21 | 227 | 54 | 0 | Mouse Movement
22 | 209 | 49 | 0 | Mouse Movement
23 | 203 | 43 | 0 | Mouse Movement
24 | 198 | 41 | 0 | Mouse Movement
25 | 193 | 34 | 0 | Mouse Movement
26 | 187 | 22 | 0 | Mouse Movement
26 | RUN ACTION | SELECT WINDOW BY NAME | Contacts
27 | 186 | 21 | 237 | Left Click Down
28 | 186 | 21 | 97 | Left Click Release
29 | RUN ACTION | WAIT SECONDS | 3
30 | 189 | 32 | 0 | Mouse Movement
31 | 198 | 59 | 0 | Mouse Movement
32 | 203 | 80 | 0 | Mouse Movement
33 | 215 | 103 | 0 | Mouse Movement
34 | 219 | 109 | 0 | Mouse Movement
35 | 228 | 117 | 0 | Mouse Movement
36 | 242 | 139 | 0 | Mouse Movement
37 | 259 | 157 | 0 | Mouse Movement
38 | 267 | 167 | 0 | Mouse Movement
39 | 271 | 175 | 0 | Mouse Movement
40 | 280 | 187 | 0 | Mouse Movement
41 | 295 | 206 | 0 | Mouse Movement
42 | 309 | 219 | 0 | Mouse Movement
43 | 320 | 231 | 0 | Mouse Movement
44 | 323 | 237 | 0 | Mouse Movement
45 | 330 | 256 | 0 | Mouse Movement
46 | 335 | 275 | 0 | Mouse Movement
47 | 339 | 287 | 0 | Mouse Movement
48 | 340 | 296 | 0 | Mouse Movement
49 | 345 | 300 | 0 | Mouse Movement
50 | 347 | 307 | 0 | Mouse Movement
51 | 356 | 319 | 0 | Mouse Movement
52 | 360 | 322 | 0 | Mouse Movement
53 | 363 | 325 | 0 | Mouse Movement
54 | 364 | 326 | 0 | Mouse Movement
55 | 367 | 327 | 0 | Mouse Movement
56 | 368 | 327 | 0 | Mouse Movement
57 | 375 | 327 | 0 | Mouse Movement
58 | 378 | 326 | 0 | Mouse Movement
59 | 382 | 325 | 0 | Mouse Movement
60 | 384 | 324 | 0 | Mouse Movement
61 | 386 | 323 | 0 | Mouse Movement
62 | 387 | 323 | 0 | Mouse Movement
63 | 389 | 323 | 0 | Mouse Movement
64 | 390 | 323 | 0 | Mouse Movement
65 | 390 | 323 | 34 | Left Click Down
66 | 390 | 323 | 168 | Left Click Release
67 | RUN ACTION | WAIT SECONDS | 3
68 | 390 | 323 | 0 | Mouse Movement
69 | 386 | 323 | 0 | Mouse Movement
70 | 377 | 326 | 0 | Mouse Movement
71 | 365 | 331 | 0 | Mouse Movement
72 | 335 | 344 | 0 | Mouse Movement
73 | 287 | 355 | 0 | Mouse Movement
74 | 267 | 359 | 0 | Mouse Movement
75 | 249 | 361 | 0 | Mouse Movement
76 | 231 | 363 | 0 | Mouse Movement
77 | 202 | 364 | 0 | Mouse Movement
78 | 184 | 367 | 0 | Mouse Movement
79 | 167 | 369 | 0 | Mouse Movement
80 | 150 | 370 | 0 | Mouse Movement
81 | 146 | 370 | 0 | Mouse Movement
82 | 131 | 369 | 0 | Mouse Movement
83 | 124 | 370 | 0 | Mouse Movement
84 | 116 | 370 | 0 | Mouse Movement
85 | 113 | 371 | 0 | Mouse Movement
86 | 108 | 371 | 0 | Mouse Movement
87 | 104 | 372 | 0 | Mouse Movement
88 | 101 | 373 | 0 | Mouse Movement
89 | 98 | 375 | 0 | Mouse Movement
90 | 95 | 376 | 0 | Mouse Movement
91 | 93 | 377 | 0 | Mouse Movement
92 | 92 | 377 | 0 | Mouse Movement
93 | 92 | 377 | 246 | Left Click Down
94 | 92 | 377 | 146 | Left Click Release
95 | RUN ACTION | WAIT SECONDS | 3
96 | 93 | 376 | 0 | Mouse Movement
97 | 95 | 373 | 0 | Mouse Movement
98 | 120 | 363 | 0 | Mouse Movement
99 | 127 | 361 | 0 | Mouse Movement
100 | 146 | 361 | 0 | Mouse Movement
101 | 161 | 364 | 0 | Mouse Movement
102 | 203 | 368 | 0 | Mouse Movement
103 | 239 | 380 | 0 | Mouse Movement
104 | 272 | 392 | 0 | Mouse Movement
105 | 289 | 399 | 0 | Mouse Movement
106 | 335 | 409 | 0 | Mouse Movement
107 | 353 | 413 | 0 | Mouse Movement
108 | 387 | 423 | 0 | Mouse Movement
109 | 407 | 439 | 0 | Mouse Movement
110 | 435 | 447 | 0 | Mouse Movement
111 | 451 | 454 | 0 | Mouse Movement
112 | 475 | 463 | 0 | Mouse Movement
113 | 481 | 465 | 0 | Mouse Movement
114 | 493 | 468 | 0 | Mouse Movement
115 | 501 | 470 | 0 | Mouse Movement
116 | 520 | 473 | 0 | Mouse Movement
117 | 532 | 475 | 0 | Mouse Movement
118 | 540 | 475 | 0 | Mouse Movement
119 | 545 | 477 | 0 | Mouse Movement
120 | 550 | 479 | 0 | Mouse Movement
121 | 553 | 480 | 0 | Mouse Movement
122 | 559 | 484 | 0 | Mouse Movement
123 | 565 | 486 | 0 | Mouse Movement
124 | 581 | 492 | 0 | Mouse Movement
125 | 590 | 495 | 0 | Mouse Movement
126 | 597 | 498 | 0 | Mouse Movement
127 | 598 | 499 | 0 | Mouse Movement
128 | 604 | 499 | 0 | Mouse Movement
129 | 607 | 501 | 0 | Mouse Movement
130 | 608 | 502 | 0 | Mouse Movement
131 | 611 | 504 | 0 | Mouse Movement
132 | 613 | 507 | 0 | Mouse Movement
133 | 617 | 510 | 0 | Mouse Movement
134 | 617 | 510 | 360 | Left Click Down
135 | 617 | 510 | 203 | Left Click Release
136 | RUN ACTION | WAIT SECONDS | 3
137 | 600 | 505 | 0 | Mouse Movement
138 | 589 | 497 | 0 | Mouse Movement
139 | 574 | 485 | 0 | Mouse Movement
140 | 558 | 477 | 0 | Mouse Movement
141 | 539 | 471 | 0 | Mouse Movement
142 | 535 | 467 | 0 | Mouse Movement
143 | 516 | 459 | 0 | Mouse Movement
144 | 499 | 453 | 0 | Mouse Movement
145 | 499 | 451 | 0 | Mouse Movement
146 | 475 | 440 | 0 | Mouse Movement
147 | 465 | 427 | 0 | Mouse Movement
148 | 449 | 415 | 0 | Mouse Movement
149 | 435 | 405 | 0 | Mouse Movement
150 | 421 | 393 | 0 | Mouse Movement
151 | 405 | 388 | 0 | Mouse Movement
152 | 399 | 385 | 0 | Mouse Movement
153 | 387 | 379 | 0 | Mouse Movement
154 | 379 | 376 | 0 | Mouse Movement
155 | 371 | 371 | 0 | Mouse Movement
156 | 369 | 371 | 0 | Mouse Movement
157 | 367 | 370 | 0 | Mouse Movement
158 | 366 | 369 | 0 | Mouse Movement
159 | 366 | 369 | 47 | Left Click Down
160 | 366 | 369 | 190 | Left Click Release
161 | RUN ACTION | WAIT SECONDS | 3
162 | 366 | 368 | 0 | Mouse Movement
163 | 365 | 367 | 0 | Mouse Movement
164 | 364 | 367 | 0 | Mouse Movement
165 | 364 | 366 | 0 | Mouse Movement
166 | 362 | 366 | 0 | Mouse Movement
167 | 361 | 369 | 0 | Mouse Movement
168 | 357 | 375 | 0 | Mouse Movement
169 | 354 | 385 | 0 | Mouse Movement
170 | 352 | 393 | 0 | Mouse Movement
171 | 350 | 406 | 0 | Mouse Movement
172 | 345 | 426 | 0 | Mouse Movement
173 | 339 | 441 | 0 | Mouse Movement
174 | 335 | 471 | 0 | Mouse Movement
175 | 333 | 486 | 0 | Mouse Movement
176 | 331 | 509 | 0 | Mouse Movement
177 | 329 | 537 | 0 | Mouse Movement
178 | 329 | 543 | 0 | Mouse Movement
179 | 329 | 555 | 0 | Mouse Movement
180 | 331 | 576 | 0 | Mouse Movement
181 | 336 | 600 | 0 | Mouse Movement
182 | 340 | 619 | 0 | Mouse Movement
183 | 344 | 625 | 0 | Mouse Movement
184 | 349 | 639 | 0 | Mouse Movement
185 | 349 | 647 | 0 | Mouse Movement
186 | 353 | 665 | 0 | Mouse Movement
187 | 355 | 675 | 0 | Mouse Movement
188 | 356 | 680 | 0 | Mouse Movement
189 | 356 | 684 | 0 | Mouse Movement
190 | 356 | 697 | 0 | Mouse Movement
191 | 355 | 707 | 0 | Mouse Movement
192 | 353 | 718 | 0 | Mouse Movement
193 | 353 | 721 | 0 | Mouse Movement
194 | 353 | 724 | 0 | Mouse Movement
195 | 352 | 735 | 0 | Mouse Movement
196 | 352 | 743 | 0 | Mouse Movement
197 | 352 | 751 | 0 | Mouse Movement
198 | 352 | 759 | 0 | Mouse Movement
199 | 352 | 766 | 0 | Mouse Movement
200 | 352 | 771 | 0 | Mouse Movement
201 | 353 | 778 | 0 | Mouse Movement
202 | 353 | 783 | 0 | Mouse Movement
203 | 353 | 785 | 0 | Mouse Movement
204 | 353 | 789 | 0 | Mouse Movement
205 | 353 | 790 | 0 | Mouse Movement
206 | 354 | 792 | 0 | Mouse Movement
207 | 354 | 792 | 787 | Left Click Down
208 | 354 | 792 | 157 | Left Click Release
209 | RUN ACTION | WAIT SECONDS | 3
210 | 351 | 791 | 0 | Mouse Movement
211 | 343 | 784 | 0 | Mouse Movement
212 | 337 | 775 | 0 | Mouse Movement
213 | 309 | 763 | 0 | Mouse Movement
214 | 293 | 748 | 0 | Mouse Movement
215 | 273 | 741 | 0 | Mouse Movement
216 | 254 | 731 | 0 | Mouse Movement
217 | 243 | 718 | 0 | Mouse Movement
218 | 221 | 703 | 0 | Mouse Movement
219 | 188 | 689 | 0 | Mouse Movement
220 | 157 | 671 | 0 | Mouse Movement
221 | 146 | 655 | 0 | Mouse Movement
222 | 116 | 636 | 0 | Mouse Movement
223 | 111 | 620 | 0 | Mouse Movement
224 | 98 | 599 | 0 | Mouse Movement
225 | 83 | 582 | 0 | Mouse Movement
226 | 72 | 555 | 0 | Mouse Movement
227 | 61 | 523 | 0 | Mouse Movement
228 | 56 | 490 | 0 | Mouse Movement
229 | 55 | 485 | 0 | Mouse Movement
230 | 53 | 465 | 0 | Mouse Movement
231 | 53 | 457 | 0 | Mouse Movement
232 | 45 | 435 | 0 | Mouse Movement
233 | 39 | 418 | 0 | Mouse Movement
234 | 37 | 415 | 0 | Mouse Movement
235 | 37 | 414 | 0 | Mouse Movement
236 | 38 | 408 | 0 | Mouse Movement
237 | 41 | 403 | 0 | Mouse Movement
238 | 43 | 364 | 0 | Mouse Movement
239 | 42 | 347 | 0 | Mouse Movement
240 | 38 | 322 | 0 | Mouse Movement
241 | 31 | 301 | 0 | Mouse Movement
242 | 28 | 283 | 0 | Mouse Movement
243 | 27 | 257 | 0 | Mouse Movement
244 | 27 | 249 | 0 | Mouse Movement
245 | 27 | 246 | 0 | Mouse Movement
246 | 28 | 241 | 0 | Mouse Movement
247 | 29 | 237 | 0 | Mouse Movement
248 | 31 | 231 | 0 | Mouse Movement
249 | 32 | 227 | 0 | Mouse Movement
250 | 33 | 220 | 0 | Mouse Movement
251 | 36 | 215 | 0 | Mouse Movement
252 | 37 | 208 | 0 | Mouse Movement
253 | 38 | 202 | 0 | Mouse Movement
254 | 41 | 195 | 0 | Mouse Movement
255 | 41 | 191 | 0 | Mouse Movement
256 | 41 | 190 | 0 | Mouse Movement
257 | 42 | 186 | 0 | Mouse Movement
258 | 43 | 183 | 0 | Mouse Movement
259 | 45 | 179 | 0 | Mouse Movement
260 | 46 | 177 | 0 | Mouse Movement
261 | 46 | 177 | 349 | Left Click Down
262 | 46 | 177 | 146 | Left Click Release
263 | RUN ACTION | WAIT SECONDS | 3
264 | 51 | 175 | 0 | Mouse Movement
265 | 55 | 175 | 0 | Mouse Movement
266 | 57 | 177 | 0 | Mouse Movement
267 | 59 | 177 | 0 | Mouse Movement
268 | 63 | 180 | 0 | Mouse Movement
269 | 70 | 183 | 0 | Mouse Movement
270 | 80 | 189 | 0 | Mouse Movement
271 | 86 | 191 | 0 | Mouse Movement
272 | 93 | 196 | 0 | Mouse Movement
273 | 99 | 201 | 0 | Mouse Movement
274 | 113 | 208 | 0 | Mouse Movement
275 | 116 | 215 | 0 | Mouse Movement
276 | 131 | 222 | 0 | Mouse Movement
277 | 134 | 225 | 0 | Mouse Movement
278 | 144 | 235 | 0 | Mouse Movement
279 | 186 | 275 | 0 | Mouse Movement
280 | 205 | 289 | 0 | Mouse Movement
281 | 218 | 301 | 0 | Mouse Movement
282 | 231 | 314 | 0 | Mouse Movement
283 | 251 | 337 | 0 | Mouse Movement
284 | 257 | 348 | 0 | Mouse Movement
285 | 271 | 357 | 0 | Mouse Movement
286 | 281 | 363 | 0 | Mouse Movement
287 | 286 | 375 | 0 | Mouse Movement
288 | 313 | 397 | 0 | Mouse Movement
289 | 325 | 415 | 0 | Mouse Movement
290 | 335 | 429 | 0 | Mouse Movement
291 | 345 | 439 | 0 | Mouse Movement
292 | 347 | 444 | 0 | Mouse Movement
293 | 360 | 455 | 0 | Mouse Movement
294 | 371 | 469 | 0 | Mouse Movement
295 | 373 | 477 | 0 | Mouse Movement
296 | 379 | 486 | 0 | Mouse Movement
297 | 381 | 493 | 0 | Mouse Movement
298 | 383 | 500 | 0 | Mouse Movement
299 | 383 | 501 | 0 | Mouse Movement
300 | 383 | 504 | 0 | Mouse Movement
301 | 385 | 507 | 0 | Mouse Movement
302 | 385 | 509 | 0 | Mouse Movement
303 | 385 | 511 | 0 | Mouse Movement
304 | 387 | 515 | 0 | Mouse Movement
305 | 387 | 518 | 0 | Mouse Movement
306 | 389 | 521 | 0 | Mouse Movement
307 | 390 | 525 | 0 | Mouse Movement
308 | 391 | 525 | 4003 | Left Click Down
309 | 391 | 525 | 191 | Left Click Release
310 | RUN ACTION | WAIT SECONDS | 3
311 | 391 | 524 | 0 | Mouse Movement
312 | 383 | 522 | 0 | Mouse Movement
313 | 377 | 519 | 0 | Mouse Movement
314 | 363 | 517 | 0 | Mouse Movement
315 | 345 | 515 | 0 | Mouse Movement
316 | 319 | 511 | 0 | Mouse Movement
317 | 259 | 486 | 0 | Mouse Movement
318 | 240 | 473 | 0 | Mouse Movement
319 | 212 | 457 | 0 | Mouse Movement
320 | 201 | 448 | 0 | Mouse Movement
321 | 183 | 439 | 0 | Mouse Movement
322 | 172 | 431 | 0 | Mouse Movement
323 | 168 | 429 | 0 | Mouse Movement
324 | 165 | 426 | 0 | Mouse Movement
325 | 163 | 421 | 0 | Mouse Movement
326 | 156 | 415 | 0 | Mouse Movement
327 | 149 | 411 | 0 | Mouse Movement
328 | 141 | 408 | 0 | Mouse Movement
329 | 136 | 405 | 0 | Mouse Movement
330 | 131 | 403 | 0 | Mouse Movement
331 | 126 | 402 | 0 | Mouse Movement
332 | 122 | 400 | 0 | Mouse Movement
333 | 119 | 399 | 0 | Mouse Movement
334 | 116 | 398 | 0 | Mouse Movement
335 | 113 | 398 | 0 | Mouse Movement
336 | 109 | 397 | 0 | Mouse Movement
337 | 107 | 395 | 0 | Mouse Movement
338 | 103 | 394 | 0 | Mouse Movement
339 | 102 | 393 | 0 | Mouse Movement
340 | 100 | 391 | 0 | Mouse Movement
341 | 99 | 389 | 0 | Mouse Movement
342 | 99 | 388 | 0 | Mouse Movement
343 | 96 | 385 | 0 | Mouse Movement
344 | 94 | 382 | 0 | Mouse Movement
345 | 94 | 381 | 359 | Left Click Down
346 | 93 | 381 | 112 | Left Click Release
347 | RUN ACTION | WAIT SECONDS | 3
348 | 93 | 380 | 0 | Mouse Movement
349 | 95 | 380 | 0 | Mouse Movement
350 | 105 | 381 | 0 | Mouse Movement
351 | 114 | 381 | 0 | Mouse Movement
352 | 132 | 383 | 0 | Mouse Movement
353 | 145 | 385 | 0 | Mouse Movement
354 | 159 | 387 | 0 | Mouse Movement
355 | 173 | 389 | 0 | Mouse Movement
356 | 201 | 393 | 0 | Mouse Movement
357 | 233 | 398 | 0 | Mouse Movement
358 | 241 | 401 | 0 | Mouse Movement
359 | 291 | 406 | 0 | Mouse Movement
360 | 325 | 411 | 0 | Mouse Movement
361 | 343 | 414 | 0 | Mouse Movement
362 | 365 | 424 | 0 | Mouse Movement
363 | 397 | 435 | 0 | Mouse Movement
364 | 463 | 455 | 0 | Mouse Movement
365 | 503 | 467 | 0 | Mouse Movement
366 | 526 | 476 | 0 | Mouse Movement
367 | 544 | 484 | 0 | Mouse Movement
368 | 564 | 489 | 0 | Mouse Movement
369 | 573 | 492 | 0 | Mouse Movement
370 | 577 | 492 | 0 | Mouse Movement
371 | 585 | 493 | 0 | Mouse Movement
372 | 593 | 495 | 0 | Mouse Movement
373 | 598 | 497 | 0 | Mouse Movement
374 | 603 | 497 | 0 | Mouse Movement
375 | 605 | 500 | 0 | Mouse Movement
376 | 605 | 503 | 0 | Mouse Movement
377 | 605 | 503 | 281 | Left Click Down
378 | 605 | 503 | 180 | Left Click Release
379 | RUN ACTION | WAIT SECONDS | 3
380 | 606 | 503 | 0 | Mouse Movement
381 | 593 | 499 | 0 | Mouse Movement
382 | 583 | 496 | 0 | Mouse Movement
383 | 525 | 465 | 0 | Mouse Movement
384 | 462 | 432 | 0 | Mouse Movement
385 | 433 | 417 | 0 | Mouse Movement
386 | 403 | 401 | 0 | Mouse Movement
387 | 383 | 389 | 0 | Mouse Movement
388 | 369 | 376 | 0 | Mouse Movement
389 | 355 | 365 | 0 | Mouse Movement
390 | 349 | 359 | 0 | Mouse Movement
391 | 345 | 357 | 0 | Mouse Movement
392 | 344 | 357 | 0 | Mouse Movement
393 | 341 | 358 | 0 | Mouse Movement
394 | 340 | 359 | 0 | Mouse Movement
395 | 340 | 359 | 551 | Left Click Down
396 | 340 | 359 | 145 | Left Click Release
397 | RUN ACTION | WAIT SECONDS | 3
398 | 339 | 362 | 0 | Mouse Movement
399 | 338 | 365 | 0 | Mouse Movement
400 | 337 | 373 | 0 | Mouse Movement
401 | 335 | 393 | 0 | Mouse Movement
402 | 336 | 410 | 0 | Mouse Movement
403 | 337 | 420 | 0 | Mouse Movement
404 | 339 | 429 | 0 | Mouse Movement
405 | 343 | 451 | 0 | Mouse Movement
406 | 347 | 498 | 0 | Mouse Movement
407 | 352 | 533 | 0 | Mouse Movement
408 | 359 | 563 | 0 | Mouse Movement
409 | 363 | 585 | 0 | Mouse Movement
410 | 363 | 595 | 0 | Mouse Movement
411 | 366 | 610 | 0 | Mouse Movement
412 | 365 | 626 | 0 | Mouse Movement
413 | 360 | 642 | 0 | Mouse Movement
414 | 358 | 655 | 0 | Mouse Movement
415 | 353 | 684 | 0 | Mouse Movement
416 | 350 | 701 | 0 | Mouse Movement
417 | 349 | 707 | 0 | Mouse Movement
418 | 347 | 711 | 0 | Mouse Movement
419 | 347 | 715 | 0 | Mouse Movement
420 | 345 | 719 | 0 | Mouse Movement
421 | 345 | 723 | 0 | Mouse Movement
422 | 343 | 727 | 0 | Mouse Movement
423 | 342 | 732 | 0 | Mouse Movement
424 | 340 | 741 | 0 | Mouse Movement
425 | 338 | 751 | 0 | Mouse Movement
426 | 337 | 760 | 0 | Mouse Movement
427 | 337 | 771 | 0 | Mouse Movement
428 | 337 | 781 | 0 | Mouse Movement
429 | 337 | 785 | 0 | Mouse Movement
430 | 338 | 792 | 1170 | Left Click Down
431 | 338 | 792 | 146 | Left Click Release
432 | RUN ACTION | WAIT SECONDS | 3
433 | 337 | 790 | 0 | Mouse Movement
434 | 328 | 776 | 0 | Mouse Movement
435 | 319 | 763 | 0 | Mouse Movement
436 | 310 | 744 | 0 | Mouse Movement
437 | 291 | 723 | 0 | Mouse Movement
438 | 285 | 713 | 0 | Mouse Movement
439 | 267 | 680 | 0 | Mouse Movement
440 | 243 | 653 | 0 | Mouse Movement
441 | 229 | 621 | 0 | Mouse Movement
442 | 212 | 604 | 0 | Mouse Movement
443 | 183 | 565 | 0 | Mouse Movement
444 | 175 | 552 | 0 | Mouse Movement
445 | 168 | 542 | 0 | Mouse Movement
446 | 161 | 533 | 0 | Mouse Movement
447 | 156 | 524 | 0 | Mouse Movement
448 | 135 | 487 | 0 | Mouse Movement
449 | 127 | 455 | 0 | Mouse Movement
450 | 116 | 414 | 0 | Mouse Movement
451 | 99 | 366 | 0 | Mouse Movement
452 | 93 | 321 | 0 | Mouse Movement
453 | 90 | 290 | 0 | Mouse Movement
454 | 89 | 273 | 0 | Mouse Movement
455 | 86 | 260 | 0 | Mouse Movement
456 | 85 | 247 | 0 | Mouse Movement
457 | 85 | 237 | 0 | Mouse Movement
458 | 83 | 232 | 0 | Mouse Movement
459 | 82 | 224 | 0 | Mouse Movement
460 | 81 | 222 | 0 | Mouse Movement
461 | 79 | 219 | 0 | Mouse Movement
462 | 76 | 215 | 0 | Mouse Movement
463 | 68 | 204 | 0 | Mouse Movement
464 | 65 | 197 | 0 | Mouse Movement
465 | 63 | 190 | 0 | Mouse Movement
466 | 63 | 184 | 0 | Mouse Movement
467 | 62 | 180 | 0 | Mouse Movement
468 | 62 | 177 | 0 | Mouse Movement
469 | 61 | 175 | 0 | Mouse Movement
470 | 61 | 174 | 0 | Mouse Movement
471 | 61 | 173 | 0 | Mouse Movement
472 | 60 | 173 | 0 | Mouse Movement
473 | 59 | 172 | 146 | Left Click Down
474 | 59 | 172 | 146 | Left Click Release
475 | RUN ACTION | WAIT SECONDS | 3
476 | 60 | 172 | 3882 | Mouse Movement
477 | 730 | 941 | 0 | Left Click Release

User: zeak

Date: Sept 13, 2019 3:36:41 GMT

Hi Speakermatt, Congrats on getting PRO MMM, Can I ask if all the mouse movement is necessary? are they to open menus? If not you could try the code below that has all the movement removed and gives a bit longer for the delay between clicks.

1 | 186 | 21 | 500 | Left Click
2 | RUN ACTION | WAIT SECONDS | 3
3 | 390 | 323 | 500 | Left Click
4 | RUN ACTION | WAIT SECONDS | 3
5 | 92 | 377 | 500 | Left Click
6 | RUN ACTION | WAIT SECONDS | 3
7 | 617 | 510 | 500 | Left Click
8 | RUN ACTION | WAIT SECONDS | 3
9 | 366 | 369 | 500 | Left Click
10 | RUN ACTION | WAIT SECONDS | 3
11 | 354 | 792 | 1000 | Left Click
12 | RUN ACTION | WAIT SECONDS | 3
13 | 46 | 177 | 500 | Left Click
14 | RUN ACTION | WAIT SECONDS | 3
15 | 391 | 525 | 4000 | Left Click
16 | RUN ACTION | WAIT SECONDS | 3
17 | 94 | 381 | 500 | Left Click
18 | RUN ACTION | WAIT SECONDS | 3
19 | 605 | 503 | 500 | Left Click
20 | RUN ACTION | WAIT SECONDS | 3
21 | 340 | 359 | 500 | Left Click
22 | RUN ACTION | WAIT SECONDS | 3
23 | 338 | 792 | 2000 | Left Click
24 | RUN ACTION | WAIT SECONDS | 3
25 | 59 | 172 | 500 | Left Click
26 | RUN ACTION | WAIT SECONDS | 3
27 | RUN ACTION | SELECT WINDOW BY NAME | Contacts
28 | 186 | 21 | 500 | Left Click
29 | RUN ACTION | WAIT SECONDS | 3
30 | 390 | 323 | 500 | Left Click
31 | RUN ACTION | WAIT SECONDS | 3
32 | 92 | 377 | 500 | Left Click
33 | RUN ACTION | WAIT SECONDS | 3
34 | 617 | 510 | 500 | Left Click
35 | RUN ACTION | WAIT SECONDS | 3
36 | 366 | 369 | 500 | Left Click
37 | RUN ACTION | WAIT SECONDS | 3
38 | 354 | 792 | 1000 | Left Click
39 | RUN ACTION | WAIT SECONDS | 3
40 | 46 | 177 | 500 | Left Click
41 | RUN ACTION | WAIT SECONDS | 3
42 | 391 | 525 | 4000 | Left Click
43 | RUN ACTION | WAIT SECONDS | 3
44 | 94 | 381 | 500 | Left Click
45 | RUN ACTION | WAIT SECONDS | 3
46 | 605 | 503 | 500 | Left Click
47 | RUN ACTION | WAIT SECONDS | 3
48 | 340 | 359 | 500 | Left Click
49 | RUN ACTION | WAIT SECONDS | 3
50 | 338 | 792 | 2000 | Left Click
51 | RUN ACTION | WAIT SECONDS | 3
52 | 59 | 172 | 500 | Left Click
53 | RUN ACTION | WAIT SECONDS | 3

I also noticed that your rows restart half way through, this can mess with the program. It is always best to use relist rows function. When pasting code into forum, for some reason it adds a return between each line. This can make the post be really long to read. x7Jgh52.png Edit: Steve I thought I remember there being an option to turn off mouse movement capture in record options. ReEdit: Found it. You can turn off mouse movement capture by unchecking this mouse box. qDXDFMc.png


Adjusting Play Back Speed

URL: https://minimousemacro.proboards.com/thread/191/adjusting-play-back-speed
Date: Aug 20, 2019 22:23:21 GMT

User: zeak

Date: Aug 20, 2019 22:23:21 GMT

So I have noticed that the play back speed stops adjusting after the default x4. Eg. set custom speed to slow by x10 wont slow it that much. also trying to use the hotkeys to speed up or slow down only seems to speed up.

User: Steve

Date: Sept 4, 2019 7:19:44 GMT

Hi Zeak, I haven’t experienced this before. Consider this line:

1 | X | X | 100 | Mouse Movement

The mouse movement occurs after a 100 ms delay. If the playback speed is adjusted it is against the time value of the macro line. The code syntax might help clear this up for you:

    Private Function PlaybackSpeed(ByVal intSpeed As Integer) As Integer
        Dim boolPositive As Boolean
        Try
            If intPlayback &gt;= 1 Then
                boolPositive = True
                PlaybackSpeed = intSpeed / intPlayback
            ElseIf intPlayback = -1 Then
                boolPositive = False
                PlaybackSpeed = intSpeed * 2
            ElseIf intPlayback = -2 Then
                boolPositive = False
                PlaybackSpeed = intSpeed * 2
            ElseIf intPlayback = -3 Then
                boolPositive = False
                PlaybackSpeed = intSpeed * 3
            ElseIf intPlayback = -4 Then
                boolPositive = False
                PlaybackSpeed = intSpeed * 4
            Else
                If intPlayback &lt; -4 Then
                    boolPositive = False
                    PlaybackSpeed = intSpeed * Math.Abs(intPlayback)
                End If
            End If
        Catch ex As Exception
            boolRunErrors = True
            strErrorBack = " - Playback Speed: Failed to adjust the current playback value [" & intSpeed & "] to the new value [" & intSpeed & " x " & intPlayback & " ].  ERROR: " & ex.Message
            Return intSpeed
        End Try
        Dim strTitle() As String
        strTitle = (Split(Me.Text, " (", 2))
        If boolPositive = True Then
            SetText_metext(strTitle(0) & " (/" & intPlayback & ")")
        Else
            SetText_metext(strTitle(0) & " (x" & Math.Abs(intPlayback) & ")")
        End If
        If intPlayback = 0 Then
            If strTitle.Count &gt; 1 Then
                SetText_metext(strTitle(0))
            End If
        End If
        If PlaybackSpeed &lt; 0 Then
            Return 0
        End If
        Return PlaybackSpeed
    End Function

User: zeak

Date: Sept 4, 2019 23:39:26 GMT

Ok, thanks for clearing that up, I was wondering why it wasn’t speeding up on the conditions I had. Had you looked into what I said about the hotkeys?


Click on a moving graphic

URL: https://minimousemacro.proboards.com/thread/189/click-on-moving-graphic
Date: Aug 18, 2019 13:07:43 GMT

User: xpdite

Date: Aug 18, 2019 13:07:43 GMT

Hi I am not sure if it is possible or not but I have not had any luck trying to get this to work I have been playing with MMM to reduce some of the grinding in a game I am playing. I am looking for a way to have MMM click on a picture (Basically a ship (red ones, not green or blue)) on the screen and select the attack button when it pops. Rinse and repeat 100 times.  smiley.png I have been unable to find a way to do this.  Is this even possible? I have created a macro for some of the things I do on the screen that are stationary and it works well.  I think the macro I created can be improved a lot as it is not very dynamic.  What is the best way to learn this type of programing.  I really enjoyed creating the few macro’s that I have but would like them to evolve. HgNANGPxuDFMCZMyhwtZ.png

User: Steve

Date: Aug 19, 2019 7:45:31 GMT

An idea would be to have MMM detect the color of the ship using the pixel color condition (https://www.turnssoft.com/conditions.html#pixelcolor). The hard part Im guessing is going to be detecting the ships, i’m assuming they are not in the same place every time and are flying randomaly around the screen.
It might be possible, depending on how deep down the rabbit hole you want to go. It would be something like this pseudo code:

1 | FOR | I | = | 1 TO 1000 | NEXT
2 | IF | PIXEL COLOR | Color [R=145, G=228, B=247]::At Location [X:942 Y:536] | IS NOT THE SAME | CONTINUE
3 | 300 | 300 | 10 | LEFT CLICK
4 | FOR | NEXT

Best way to learn is to check out the examples in this forum. There is plenty of code here to reference. The search box function with this forum works pretty well. Start here ( minimousemacro.proboards.com/board/3/help?q=.gif ) for some live examples.
Check out the condition page for examples of conditions <www.turnssoft.com/conditions.html> . There are some video references here too <www.turnssoft.com/mmmyoutube.html>

User: zeak

Date: Aug 19, 2019 20:30:35 GMT

xpdite , would you be able to upload a gif of the ships/planets moving (30 seconds or so). I have an Idea but need to see how you interact with the objects on screen.

User: xpdite

Date: Aug 19, 2019 23:48:37 GMT

ovqiSZMQkcHXJsgduMbm.jpg Aug 19, 2019 20:30:35 GMT

zeak said: xpdite , would you be able to upload a gif of the ships/planets moving (30 seconds or so). I have an Idea but need to see how you interact with the objects on screen. Not sure if this will work.  Made an animated gif of the screen They are random on the screen and fly in a straight line.  at some point the will turn and head a different direction pIjgoIQitfcmKxDTzcOU.png

User: zeak

Date: Aug 20, 2019 0:06:31 GMT

Is this game like VEGA Conflict by any chance? can you show me what happens when you click on a ship or miss click?

User: zeak

Date: Aug 20, 2019 2:13:44 GMT

This is the only way I could think of doing this but it is extremely slow. This does a line of pixels at a time, took me about 5 minutes to scan the entire screen. If you can narrow down your Start and end points then it would be a lot quicker.

* | Loop Amount
1 | RUN ACTION | INPUT BOX | Please enter number of times to repeat::Loop Count::INTEGER
2 | IF | INTEGER VARIABLE | %INTEGER% | IS | 0 | GOTO MACRO LINE | Loop Amount
* | Screen Width (X) End Point <- Edit to suit your screen
3 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER1%::1365
* | Screen Hight (Y) End Point <- Edit to suit your screen
4 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER2%::760
* | Starting Points
* | (X) Start Point <- Edit to suit your screen
5 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER3%::10
* | (Y) Start Point <- Edit to suit your screen
6 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::10
* | Step Amount <- Edit to suit your screen
7 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER5%::10
* | Running Variable
8 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER6%::%INTEGER3%
* | Screen search for Red Dot
9 | IF | PIXEL COLOR | Color [R=202, G=102, B=102]::At Location [X:%INTEGER6% Y:%INTEGER4%] | IS THE SAME | GOTO MACRO LINE | Colour Found
* | 10 | %INTEGER6% | %INTEGER4% | 1 | Mouse Movement
11 | IF | INTEGER VARIABLE | %INTEGER6% | GREATER THAN EQUAL TO | %INTEGER1% | GOTO MACRO LINE | Next Line
12 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER6%::+%INTEGER5%
13 | RUN ACTION | GOTO MACRO LINE | Screen search for Red Dot
* | Next Line
14 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER6%::%INTEGER3%
15 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER4%::+%INTEGER5%
16 | RUN ACTION | GOTO MACRO LINE | Screen search for Red Dot
* | Colour Found
* | ## Put actions you would like to take below here ##
17 | %INTEGER6% | %INTEGER4% | 1000 | Left Click
* | ## Put actions you would like to above here ##
18 | RUN ACTION | DEFINE INTEGER VARIABLE | %INTEGER%::-1
19 | IF | INTEGER VARIABLE | %INTEGER% | IS | 0 | STOP
20 | RUN ACTION | GOTO MACRO LINE | Screen search for Red Dot

The only other way this could be done is if Steve can get the pixel color in PIXEL RANGE function working.

User: xpdite

Date: Aug 20, 2019 22:35:47 GMT

ovqiSZMQkcHXJsgduMbm.jpg Aug 20, 2019 0:06:31 GMT

zeak said: Is this game like VEGA Conflict by any chance? can you show me what happens when you click on a ship or miss click? Actually it is Star Trek Fleet Command (Android Game) on Blue Stacks. Tried to get a screen capture but I cannot get it small enough to post

User: zeak

Date: Aug 20, 2019 23:25:15 GMT

To record I use Screen to Gif.

And to upload I use Imgur. imgur.com/

User: xpdite

Date: Aug 21, 2019 0:20:59 GMT

imgur.com/a/1tQ30Pa Left click red ship, window pops up, click attack. Windows closes and ship is attacked automatically. Rinse and repeat I am not sure it is something that MMM can do. Someone suggested the Macrorecorder may be able to handle it.


Is there a way to do table lookup in MMM?

URL: https://minimousemacro.proboards.com/thread/187/table-lookup-mmm
Date: Aug 8, 2019 14:02:40 GMT

User: Johnc

Date: Aug 8, 2019 14:02:40 GMT

Hi Steve, good day! Is there a way to do table lookup in MMM? Something like an associative array in awk?
I have a text file like this:

John red honda
Mary blue toyota
Jimmy black gm
...

If I give MMM “John”, it should return “honda” etc…
Tks!

User: Johnc

Date: Aug 9, 2019 18:51:52 GMT

Found a way and it worked on Windows 7 x64!
Note %STRING% contains the search key e.g. John or Mary or …
The returned value from the lookup table people_car_list.txt is stored in the clipboard.
The | pipe operator was escaped by \ (i.e. |). Good job Steve! Now I don’t need to write “external” awk scripts as they can be embedded into MMM!

192 | RUN ACTION |  |  |  | RUN VIA CMD /C | title=runscript &  awk 'index($1,"%STRING%"){print $3; exit}' E:\File_John\F_variable\people_car_list.txt | CLIP
193 | RUN ACTION |  |  |  | WAIT SECONDS | 1
194 | IF | WINDOW TITLE | runscript | NOT EXIST | CONTINUE

User: Steve

Date: Aug 10, 2019 2:39:31 GMT

Hi John,
MMM natively can’t do a lot with strings. I’ve been meaning to add a lot more in for strings. The only way to get this done is to parse the output of MMM to an external tool like you’ve done with the Windows shell. Also, your MMM syntax with the gaps between your actions has been depreciated out of the code since version 6.8 back last October. There is still backward functionality but it’s best to try and avoid them if you can. It might cause some trouble later on.
So this:

192 | RUN ACTION |  |  |  | RUN VIA CMD /C | title=runscript &  awk 'index($1,"%STRING%"){print $3; exit}' E:\File_John\F_variable\people_car_list.txt | CLIP
193 | RUN ACTION |  |  |  | WAIT SECONDS | 1
194 | IF | WINDOW TITLE | runscript | NOT EXIST | CONTINUE

Turns to this:

192 | RUN ACTION | RUN VIA CMD /C | title=runscript &  awk 'index($1,"%STRING%"){print $3; exit}' E:\File_John\F_variable\people_car_list.txt | CLIP
193 | RUN ACTION | WAIT SECONDS | 1
194 | IF | WINDOW TITLE | runscript | NOT EXIST | CONTINUE

User: Johnc

Date: Aug 10, 2019 13:08:13 GMT

oic, let me get rid of all the gaps then. BTW, I am totally happy now with the way I can pipe things to the Windows shell and then get the results back from the clipboard. Somehow it was not possible before because the | pipe operator couldn’t be escaped. This way, I can keep all awk/sed codes inside a MMM macro rather than having to scatter them into many small .bat files. Thanks so much Steve for making this happen!