terrypin Posted October 18, 2009 Report Share Posted October 18, 2009 This is probably glaringly obvious, but ... what's the simplest way to handle the following frequent requirement please? Suppose I have a macro that uses a program, say Notepad, that may or may not already be running when the macro is activated. So I use Activate or Launch at the start of the macro. But what's the easiest way to close Notepad again at the end of the macro, but only if it was launched? If it was already open then I want to leave it open. -- Terry, East Grinstead, UK Quote Link to comment Share on other sites More sharing options...
Phonemes Posted October 18, 2009 Report Share Posted October 18, 2009 You could probably split your macro in an 'if program running" and "if not program running" section. Quote Link to comment Share on other sites More sharing options...
terrypin Posted October 18, 2009 Author Report Share Posted October 18, 2009 You could probably split your macro in an 'if program running" and "if not program running" section. Thanks, yes, that's certainly one approach. But, given that ME Pro 'knows' that it's had to launch the program, I'm wondering if there's some indication of that I could access somehow? -- Terry, East Grinstead, UK Quote Link to comment Share on other sites More sharing options...
rberq Posted October 18, 2009 Report Share Posted October 18, 2009 ... given that ME Pro 'knows' that it's had to launch the program, I'm wondering if there's some indication of that I could access somehow?I don't think ME stores any indicator that you can access. However, as Phonemes says, why not make your own indicator? Do a simple test, before the ACTIVATE OR LAUNCH, where you set a switch to be checked at the end of your macro. IF PROGRAM 'NOTEPAD' RUNNING VARIABLE SET T99 = 1 END IF ACTIVATE OR LAUNCH OTHER MACRO STUFF IF T99 <> 1 TERMINATE PROCESS 'NOTEPAD' END IF If there are multiple instances of NOTEPAD running, TERMiNATE closes one instance -- in my testing, it seems to close the one that was chronologically the first one started. But you would probably want to test that further before assuming that it is so. The Help screens did not say. Quote Link to comment Share on other sites More sharing options...
terrypin Posted October 18, 2009 Author Report Share Posted October 18, 2009 Thanks both, that looks easy enough. I'd forgotten about the If Program Running command - I'll add it to my Favorite Commands list right now. -- Terry, East Grinstead, UK Quote Link to comment Share on other sites More sharing options...
stevecasper Posted October 18, 2009 Report Share Posted October 18, 2009 What Bob said................................ I use that kind of indicator all the time for stuff. I usually annoy myself with them. In fact, I think they are tedious and inelegant, but they are very handy. I probably use them where something different would probably work better, but this whole Macro Express thing is a constant learning experience. Here's an example from a recent macro I tweaked. I have a macro that processes huge text files, searching for specific information with in them. Sometimes the text files are hundreds of MBs in size, sometimes they are just a few KBs. To keep track of the huge ones, I had built some extra code to change/update a text box displaying the percentage of processes that had been completed (the big ones take 6-8 minutes), so that the user (usually me), can be confident that the macro really is still working. Unfortunately, this extra code dramatically slowed down the small files. Overall time spent was negligible, but without the "updates" the small ones were done almost instantly, with the updates, the macro took 3-5 seconds. Not a big deal, but not really necessary. So I considered options, and ended up building an initial indicator: Set Variable %N10% to size of XYZ.txt. If variable %N10% < 1000000 Set Variable %T8% to SKIP. Then whenever the macro gets to the "update" section, I use: If Variable %T8% <> SKIP Update code Of course, I could probably just us the "If variable N10 <1000000" code rather than set the %T8% to SKIP... But then, that's part of what annoys me Quote Link to comment Share on other sites More sharing options...
terrypin Posted October 19, 2009 Author Report Share Posted October 19, 2009 Thanks for the follow-up, Steve. I should get into the habit of using that sort of technique more often myself, as 'deferred decisions' seem to arise frequently in my macros. It's been decades since I did any real programming (if you exclude a little BASIC on the BBC Micro and a brief flirtation with VBA in Excel years ago), but we used to call them 'flags' and test for their status with diamond-shaped elements in block diagrams. -- Terry, East Grinstead, UK 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.