Jump to content
Macro Express Forums

terrypin

Members
  • Posts

    2,232
  • Joined

  • Last visited

  • Days Won

    23

Everything posted by terrypin

  1. This version accepts a set of numbers, each of any length (well, under a billion!) separated by single spaces. I've just used a small test set, so add whatever input method suits, such as a prompt or imported text file etc. If you have difficulty understanding what's going on, sprinkle with Text Box Displays to show the changing values of key variables. It would be a mere three lines of script without that final 'and'! Variable Set String %tRawInput% to "1 23 456 7 8 999" // Test input Variable Modify String: Replace " " in %tRawInput% with ", " Variable Set Integer %nLenRaw% to the length of variable %tRawInput% Repeat Until %tChar% Contains "," Variable Modify String: Copy part of text in %tRawInput% starting at %nLenRaw% and 1 characters long to %tChar% Variable Modify Integer %nLenRaw%: Decrement End Repeat Variable Modify Integer: %nLenRaw% = %nLenRaw% + 2 Variable Modify String: Copy part of text in %tRawInput% starting at %nLenRaw% and 10 characters long to %tEnd% Variable Modify String: Delete part of text from %tRawInput% starting at %nLenRaw% and 10 characters long Variable Modify String %tRawInput%: Append Text ( and) Variable Modify String %tRawInput%: Append Text String Variable (%tEnd%) Text Box Display: RESULT <VARIABLE SET STRING Option="\x00" Destination="%tRawInput%" Value="1 23 456 7 8 999" NoEmbeddedVars="FALSE" _COMMENT="Test input"/> <VARIABLE MODIFY STRING Option="\x0F" Destination="%tRawInput%" ToReplace=" " ReplaceWith=", " All="TRUE" IgnoreCase="FALSE" NoEmbeddedVars="FALSE"/> <VARIABLE SET INTEGER Option="\x0D" Destination="%nLenRaw%" Text_Variable="%tRawInput%"/> <REPEAT UNTIL Variable="%tChar%" Condition="\x06" Value=","/> <VARIABLE MODIFY STRING Option="\x09" Destination="%tChar%" Variable="%tRawInput%" Start="%nLenRaw%" Count="1" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY INTEGER Option="\x08" Destination="%nLenRaw%"/> <END REPEAT/> <VARIABLE MODIFY INTEGER Option="\x00" Destination="%nLenRaw%" Value1="%nLenRaw%" Value2="2"/> <VARIABLE MODIFY STRING Option="\x09" Destination="%tEnd%" Variable="%tRawInput%" Start="%nLenRaw%" Count="10" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x0A" Destination="%tRawInput%" Start="%nLenRaw%" Count="10"/> <VARIABLE MODIFY STRING Option="\x06" Destination="%tRawInput%" Value=" and" NoEmbeddedVars="FALSE"/> <VARIABLE MODIFY STRING Option="\x07" Destination="%tRawInput%" Variable="%tEnd%" NoEmbeddedVars="FALSE"/> <TEXT BOX DISPLAY Title="RESULT" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 %tRawInput%\r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="TRUE" Keep_Focus="TRUE" Mode="\x00" Delay="0"/>
  2. Hi Alan, Minor point: I'd place %Results% in the body of the display, not the header, which will only accommodate a small number of digits. <TEXT BOX DISPLAY Title="RESULTS" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 %tResults%\r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="TRUE" Keep_Focus="TRUE" Mode="\x00" Delay="0"/>
  3. Thanks for testing Alan. I'm guessing that you're taking an extra step that I didn't: after step 5 are you stepping through your macro in response to successive messages that the variables mentioned don't exist, and allowing their assignment? In my case that takes a while but after dinner I'll do so and then: 1. See if the macro still runs 2. Compare the old and new variable list I'm also hazy about the many variables being used within my submacros. Directly after step 5 did you, like me, initially see on the variables page of the fresh macro only the standard 'T', 'N', etc?
  4. Thanks but no, pasting doesn't bring any variables across.
  5. I'm in the middle of a complex macro which has many sub-macros (some with sub-macros themselves). About 25 macros in total. My scripting has been a tad impatient and one consequence is that I now have about 60 variables of which maybe half are superfluous. Anyone with ideas on a fast way to isolate the redundant ones please? I could then confidently delete them from all macros in which they currently appear in the variables list. (Or maybe have a fun digression doing that with a macro.) The best I can think of is to run a macro to clear all 60 variables, run the main macro and all its sub-macros, then run a macro to display all variables, making the assumption that any which are still empty are redundant. With time zones in mind I'll probably try that shortly and report back promptly if it works OK. Friday 24 January 2020, 0955 UK GMT
  6. Hi Alan, Smart move! I’ll try that when (or possibly if) I get this Excel VBA macro finished.
  7. Thanks Alan. Yes, that’s nice. And it might have reduced the problems I had with my text editor, TextPad, at one stage of development, warning me that “Another program has modified your file; do want to reload?” I was admittedly in a hurry - this was a digression from the VBA macro that’s preoccupying me - so my edit was a bit rough. I’ve learnt something from your approach, thanks for investing the time.
  8. Thanks Alan, that is a tidier one, although I'm happy enough with your original. After making the various mods I described I've used it several times since my last post, in conjunction with the other three macros I added. // Alan's macro plus my edits // This macro checks each window. // If its title bar contains :\ we assume the window is an instance of the File Explorer // We extract the path and store it in a file: Variable Set String %ResultsFile% to "C:\Users\terry\Dropbox\Misc\All Results.txt" // Clear previous list of folders from text file Program Launch: "All Results.txt" (Normal) Parameters: Wait for Window Title: C:\Users\terry\Dropbox\Misc\All Results.txt] Text Type (Simulate Keystrokes): <CONTROL><HOME> // Go to start Delay: 0.1 seconds Text Type (Simulate Keystrokes): <CONTROL><SHIFT><END> // Select all text Delay: 0.1 seconds Text Type (Simulate Keystrokes): <DELETE> // Delete all text Delay: 0.1 seconds Text Type (Simulate Keystrokes): <CONTROL>s // Save the file // FOR THIS MACRO TO WORK... // 1. Set File Explorer options to display the full path in the title bar // LIMITATIONS // Testing for :\ may not be a foolproof way to determine if the window is an instance of File Explorer Variable Set Integer %Count% to 0 Repeat with Windows: Visible Windows: Store in variable %Title% If Variable %Title% Contains "Latest -" Continue End If If Variable %Title% Contains ":\" Variable Modify Integer %Count%: Increment Variable Set String %Result[%Count%]% to "%Title%" End If End Repeat Switch( %Count% ) Case: 0 // There are zero instances open MessageBox: Sorry! End Case Default Case // There is at least one instance Variable Set Integer %x% to 1 Repeat Start (Repeat %Count% times) Variable Modify String: Append %Result[%x%]% to text file, "%ResultsFile%" Variable Modify Integer %x%: Increment End Repeat End Case // Save 'All Results.txt' End Switch Text Type (Simulate Keystrokes): <CONTROL>s // Save finished file
  9. Thanks both, much appreciated. Will explore your helpful ideas later, Cory. Meanwhile, Alan, I've just tested the macro you prepared while I slept! Looked solid to me. I duly set titles to show full path - that will need automating later if I go ahead with this little project - and created an empty file. My only edit was to line 5: Variable Set String %ResultsFile% to "C:\Users\terry\Dropbox\Misc\All Results.txt" But running it (from F9) gave a very interesting result here, which was consistent on repeating. It promptly closed ME Pro! Well, not quite; Script Editor and Explorer and the tray icon vanished but (on being unable to promptly restart) I found in Task Mgr that MacExp.exe was still loaded. One other exception I would be able to filter out easily: my text editor, TextPad, displays tiltles containing its 'child' windows, e.g: Latest - TextPad - [C:\Users\terry\Dropbox\Electronics\Arduino\WORKFLOW.txt] As you warn, there may be others. I'm going out soon but will pick it up again late today. -------------------- EDIT: Tuesday 14 January 2020, 0936 Alan: I should have postponed my testing until after breakfast, or at least my first coffee; your macro now works a treat! 🙂 When defining each of your variables after pasting, I'd failed to set %Result% as an array. I've added an IF to skip that TextPad folder and I'd also probably clear the text before each run. That would still leave steps to toggle the full folder title. But after sleeping on it I'm hesitating about proceeding. Background is that an Excel VBA macro I'm developing does not work properly under Win 10 due to some obscure bug in the latter's API (above my know how level), if there are any File Explorer folders open. Hence my thought of toggling them on and off. But I've since thought of a way of accomplishing that part of the VBA macro's objective by using an MEP macro instead. I've been trying hard to rise above my 'copy-paste-edit' mode of working with VBA. But it's a struggle for someone who has never learnt an object-orientated programming language. MEP macro writing is so much more intuitive ... although I do love the speed of VBA. Neat work Alan, thank you! EDIT: 14:00 Back home earlier than expected and went ahead after all. Even if not used for the originally intended purpose this could be useful for other work occasionally. So I now have macros to toggle the folder full title on, close all folders except TextPad, create All results.txt, restore folders, and toggle folder full title off. Thanks again for giving me a kick start.
  10. Closing all Win 10 File Explorer folders at once is straightforward with this macro which simply uses the fixed position of the FE icon in the taskbar: Mouse Move: 164, 1182 Relative to Screen Delay: 0.1 seconds Mouse Right Click Delay: 0.3 seconds Mouse Move: 0, -38 Relative to Last Position Delay: 0.1 seconds Mouse Left Click Code: <MOUSE MOVE Option="\x01" X="164" Y="1182" _PROMPT="0x000A"/> <DELAY Flags="\x01" Time="0.1"/> <MOUSE RIGHT CLICK/> <DELAY Flags="\x01" Time="0.3"/> <MOUSE MOVE Option="\x03" X="0" Y="-38" _PROMPT="0x000A"/> <DELAY Flags="\x01" Time="0.1"/> <MOUSE LEFT CLICK/> But does anyone have any ideas on how to re-open them please? Presumably a matter of recording their full paths before they are closed, which eludes me right now. Half an hour searching the registry with targets like 'folders' and 'closed' found nothing relevant. Negative result from brief googling.
  11. Hi Alan, I just found it easier to keep track by splitting into those two sub-keys. I've never tried other locations which instinctively seems risky!
  12. Yes, me too. I chose a similar location, with separate keys for Integer and Text, and made it a 'Favorite' for fast access.
  13. Yes to the compatibility question (although you may want to make some minor changes). You could also take advantage of the free 30 day trial. On a possible discount I’d check with Insight Support either by direct email or via their Support Request form if you don’t get a response from them here.
  14. Gerry, I'd echo @acantor's suggestion to update to a current version. As you've discovered, 3.10 did not support arrays in the form we have now but in fact its entire variable structure was based on arrays. For example T[1], a unique string variable, was treated as the first in an array of 99. So if you do decide to stay with 3.10 then you could still follow the approach suggested, but it would be a little clumsier. Start with @cantor's code and tell us when you have difficulty progressing. Terry
  15. Yes. There are several ways you could do it. For instance you could use an array variable set up to contain the group names and its index could match the count through the Repeat loop.
  16. IMO it seems a strange design if so, with no obvious benefit and the clear disadvantage of losing an important item of information about each macro.
  17. I created a sub-category and moved about 50 macros to it from the parent. All the entries in the Modified column were changed to today. That data is quite useful when housekeeping so I'm very sorry to lose it. I don't regard a move as a file modification. Reproducible by others? A bug?
  18. I use a macro 'Comment (empty) below current line' with two alternative activations: Ctrl + F12 Mouse right-click on the Comment tool icon
  19. @Samrae: Neat! @snekmeseht: Seconds or milliseconds at the end? Terry, East Grinstead, UK
  20. “Sorry, I didn't read every message in this thread.“ Not even the most recent one? 😊
  21. @steynak: it would help us to help you if you show us the macro you have tried and describe the results you get. @kunkel321: I’m assuming that by ‘scripts’ the OP means ME scripts, I.e. commands. If not then he/she will no doubt tell us what type of external scripts.
  22. No screenshot or link as requested so I'll assume that you want to capture the text in pop-up boxes that do not allow the usual 'select then copy' approach. If the text needs to be pasted elsewhere but does not necessarily have to be 100% accurate, investigate OCR using a third party tool. If the text is brief and for your personal guidance after closing the message, consider capturing its image and displaying it conveniently, or saving it in a reference folder.
  23. Well, if you do have a question we’re going to need more information than that if you want help. Do you mean that you want to capture a particular type of message that does not allow copying to the clipboard? If so, describe an example in detail or tell us exactly how we can reproduce it. Show us some screenshots. Also, what script have you tried so far and what is the result? You can show your script commands and the resulting code using the Code tool, <>. Terry
×
×
  • Create New...