coffent Posted January 2, 2009 Report Share Posted January 2, 2009 I have a macro which, for testing purposes, I have scheduled "After the computer has been idle for 2 minutes [to] run every 1 minute." However, it runs much less frequently than this. During an 18:00 (min:sec) idle interval (no keyboard or mouse use), it ran only three times, at 2:51, 10:51, and 14:31. The running time of the macro is very short - perhaps 1 sec. The macro does not simulate either keyboard or mouse. Any ideas as to why it doesn't run every 1 min after the 3-min wait? Quote Link to comment Share on other sites More sharing options...
terrypin Posted January 2, 2009 Report Share Posted January 2, 2009 I have a macro which, for testing purposes, I have scheduled "After the computer has been idle for 2 minutes [to] run every 1 minute." However, it runs much less frequently than this. During an 18:00 (min:sec) idle interval (no keyboard or mouse use), it ran only three times, at 2:51, 10:51, and 14:31. The running time of the macro is very short - perhaps 1 sec. The macro does not simulate either keyboard or mouse. Any ideas as to why it doesn't run every 1 min after the 3-min wait? When I get time I'll try it myself, but meanwhile are you confident nothing else is running that could invalidate the 'idle' criteria? I've never really understood whether 'idle' is defined simply as 'no keyboard or mouse activity'. 'Idle' seems obvious enough until you run a utility like Filemon or Procmon and see thousands of entries in a few seconds! BTW, I take it the macro can't run without your being aware of it? In your closing sentence did you mean 2-min wait? --------- A little later I wrote a similar macro myself. It's set to run after 1 min of idle time and then every 2 mins. But, after 10 mins or so of staring at the inactive screen, it hasn't run once yet! FWIW, here's my macro: Delay: 100 milliseconds Text Box Display: Announcement Macro Return <DELAY Flags="\x02" Time="100"/> <TEXT BOX DISPLAY Title="Announcement" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2057{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs16 Macro started. Will terminate in a few seconds and then run again every 2 mins.\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="TRUE" Keep_Focus="TRUE" Mode="\x01" Delay="5"/> <MACRO RETURN/> Incidentally, surely if your macro runs every 1-min there is a high likelihood that it breaks the 2-min idle period, so there will never be another run? Does the setting under the Range tab have any bearing? -- Terry, East Grinstead, UK Quote Link to comment Share on other sites More sharing options...
terrypin Posted January 2, 2009 Report Share Posted January 2, 2009 I revised that macro to this: Delay: 100 milliseconds Text Box Display: Announcement Window Activate: ScheduleTest2.txt Wait for Window Title: ScheduleTest2.txt Text Type (Simulate Keystrokes): Time macro started (approx) = Delay: 100 milliseconds Delay: 100 milliseconds Date/Time: Type out the current date/time using "hh:mm:ss" as the format Delay: 100 milliseconds Text Type (Simulate Keystrokes): <ENTER> Delay: 100 milliseconds Macro Return <DELAY Flags="\x02" Time="100"/> <TEXT BOX DISPLAY Title="Announcement" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2057{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs16 Macro started. It will write the time to the open Textpad document then terminate and run again as specified in Activations.\\f1 \r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="TRUE" Keep_Focus="TRUE" Mode="\x01" Delay="5"/> <WINDOW ACTIVATE Title="ScheduleTest2.txt" Exact_Match="FALSE" Wildcards="FALSE" _IGNORE="0x0006"/> <WAIT FOR WINDOW TITLE Title="ScheduleTest2.txt" Partial="TRUE" Wildcards="FALSE" Indefinite="TRUE" Hours="0" Minutes="0" Seconds="0"/> <TEXT TYPE Action="0" Text="Time macro started (approx) = "/> <DELAY Flags="\x02" Time="100"/> <DELAY Flags="\x02" Time="100"/> <DATE/TIME Format="hh:mm:ss" Flags="\x30" Date="02/01/2009 11:53:06" Day_Offset="0" Month_Offset="0" Year_Offset="0" Hour_Offset="0" Minute_Offset="0" Second_Offset="0" Left="Center" Top="Center" Monitor="0" IsDateVar="FALSE"/> <DELAY Flags="\x02" Time="100"/> <TEXT TYPE Action="0" Text="<ENTER>"/> <DELAY Flags="\x02" Time="100"/> <MACRO RETURN/> It gave these results (pasted from my text editor): Time macro started (approx) = 12:37:34 Time macro started (approx) = 12:40:34 Time macro started (approx) = 12:43:54 Time macro started (approx) = 12:46:54 Time macro started (approx) = 12:49:54 Time macro started (approx) = 12:53:54 Time macro started (approx) = 12:56:54 Time macro started (approx) = 13:00:44 Time macro started (approx) = 13:03:54 Time macro started (approx) = 13:06:54 Time macro started (approx) = 13:09:54 Time macro started (approx) = 13:14:04 Time macro started (approx) = 13:17:04 Time macro started (approx) = 13:20:04 Time macro started (approx) = 13:23:54 Time macro started (approx) = 13:26:54 Time macro started (approx) = 13:29:54 Note how the intervals are mainly 3s but sometimes 4s. -- Terry, East Grinstead, UK Quote Link to comment Share on other sites More sharing options...
coffent Posted January 2, 2009 Author Report Share Posted January 2, 2009 I originally had the schedule for my macro set to wait 10 min, run every 15 min, but I was having the same problem as terrypin that the macro never ran, so I shortened the time to 2 min / 1 min for testing. As I understand from the explanatory material, "After the computer has been idle for m minutes, run every n minutes" means that in the absence of keyboard/mouse activity the macro will run at (m+n) minutes, (m+2n) minutes, (m+3n) minutes, etc. Thus I did mean 3 minutes in my closing question. (Actually, it would seem to make more sense to have the scheduler run the macro at m, m+n, m+2n... minutes, but I suppose that's another issue.) My computer was not absolutely idle during the wait period in the sense that there were various background programs running, but nothing, as far as I know, that simulated keystrokes or mouse actions. Since terrypin's 2nd macro does simulate keystrokes I would expect a 3-min repeat time for it, based on a 2 min / 1 min schedule. My macro calls a Visual Basic executable which writes to a file, but I didn't think writing to a file constituted keyboard activity. Quote Link to comment Share on other sites More sharing options...
Cory Posted January 2, 2009 Report Share Posted January 2, 2009 Idle time is tricky due to other possible applications running on your system. One troubleshooting method I often employ is to boot to safe mode with no networking and also check the processes to make sure nothing else is running. If it works then it's a prog on your system. Then you can use MS Config or an application like Startup Cop to selectively disable applications at startup until you find the culprit. And for the record I have never seen the cause of the problem be ME, it's always been something else. Quote Link to comment Share on other sites More sharing options...
coffent Posted January 3, 2009 Author Report Share Posted January 3, 2009 The problem with shutting down other running processes is that one may in fact want them to be running during idle time. Out of curiosity, does Macro Express use a Windows utility to determine whether there's been keyboard/mouse activity? Since keyboard/mouse activity constitutes a rather low-level input process, I would think (perhaps naively) that it would be relatively easy to reliably determine whether such activity had occurred or not. Quote Link to comment Share on other sites More sharing options...
Cory Posted January 3, 2009 Report Share Posted January 3, 2009 I wasn't suggesting you permanently disable these tasks but rather as a troubleshooting technique to determine what application is causing the problem so that you can address it. Often adware will cause such a problem and in this case you do want it off. In any case if it's another application that's tripping the inactivity timer then it's not MEP's fault. I of course don't forget that macros can cause the problem. I don't know for sure but I know Windows has an inactivity timer that it uses in it's scheduler for things like firing off tasks or turning on a screen saver or suspending. I believe MEP just uses this timer but you would need to ask one of the ISS guys to confirm. Quote Link to comment Share on other sites More sharing options...
chris Posted January 12, 2009 Report Share Posted January 12, 2009 Macro Express uses its own hook system to determine if the computer has been idle. If the mouse or keyboard hooks see any activity whatsoever (this can be caused by anything injecting keystrokes or mouse movements) then the idle time is reset. A lot of times there are programs that will inject an unused key into keyboard buffer to determine some state (we do this with the "Wait for Text Playback" command). Because there is a keystroke going through our hook (we cannot determine where the key came from at the hook level, btw) the idle time is reset and the countdown starts again. We chose to do this because there is no system command to determine "idle" time as Windows doesn't even have a definition for idle (is it no keyboard/mouse, no CPU cycles being used by third-parties, etc?). We are looking into this, but I would also take Cory's advice and start shutting down applications, just in case there is an application that is injecting keystrokes into the keyboard buffer. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.