Jump to content
Macro Express Forums

Samrae

Members
  • Posts

    452
  • Joined

  • Last visited

  • Days Won

    22

Posts posted by Samrae

  1. Again, as explained in answer to your previous post the short answer is NO.

    Macro Express does not enter information into a program directly. Macro Express asks Windows to enter information into a program. Windows will not enter information into any program that does not have focus whether it is entering that information from the keyboard and mouse or for if it is responding to Macro Express' request to type something.

    There is one exception to this. Windows supports something called Window Controls. Each program must be written to support Window Controls. Many do not. This article explains more: I would like to work in one application window while a macro is running in window in the background?

  2. Here is an idea about how to tackle it. You will need two macros.

    Macro 1 - gets the list of files and stores them in a file. Run this only once to set up. Something like this. (You will need to change the paths):

    // Delete registry counter and files to set things up to process files
    Delete Registry Value: HKEY_CURRENT_USER\Software\Insight Software Solutions\Macro Express 4\$Temp\NextFileNumber // Delete the file number, if it exists
    Delete File/Files: "e:\FilesToProcess.txt" // Delete output file, if it exists
     
    // Get a list of the files to process
    Repeat with Folder e:\temp
      Variable Modify String: Append %File% to text file, "e:\FilesToProcess.txt"
    End Repeat

    Macro 2 - opens the next file from the list. Run each time you are finished manually processing one file. (Again, you will need to change the paths):

    // Use a hotkey activation for this macro
     
    // Get the NextFileNumber from the registry
    Variable Set Integer %NextFileNumber% to 1 // Default in case the registry value does not exist
    Read Registry Value "HKEY_CURRENT_USER\Software\Insight Software Solutions\Macro Express 4\$Temp\NextFileNumber" into %NextFileNumber% // Get number of file to use
     
    // Get the name of the next file in the list
    Text File Begin Process: e:\FilesToProcess.txt
      Break // Only get one file
    Text File End Process
     
    // If NextFilename is blank then all files have been processed
    If Variable %NextFilename% Equals ""
      Text Box Display: Done
      Macro Stop
    End If
     
    // Increment and save the NextFileNumber to the registry
    Variable Modify Integer %NextFileNumber%: Increment
    Write Registry Value "%NextFileNumber%" into HKEY_CURRENT_USER\Software\Insight Software Solutions\Macro Express 4\$Temp\NextFileNumber // Get number of file to use
     
     
    Variable Set From File path // Get file extension
     
    Text Box Display: Opening file
    If Variable %Ext% Equals ".pdf" // Process pdf files
      OR
    If Variable %Ext% Equals ".txt" // or txt files
      OR
    If Variable %Ext% Equals ".doc" // or doc files
      OR
    If Variable %Ext% Equals ".docx" // or docx files
      OR
    If Variable %Ext% Equals ".jpg" // or jpg files
      OR
    If Variable %Ext% Equals ".png" // or png files
      OR
    If Variable %Ext% Equals ".ini" // or ini files
      Change Directory/Folder to "e:\temp"
      Program Launch: "%NextFilename%" (Normal)
    Parameters: 
    Else
      Delay: 1 seconds
    End If

    Here is code you can copy and paste for the "Get filenames" macro:

    <COMMENT Value="----------------------------------------------------------------------------------------------------------------------------------"/>
    <COMMENT Value="  Get filenames -"/>
    <COMMENT Value="----------------------------------------------------------------------------------------------------------------------------------"/>
    <COMMENT/>
    <COMMENT Value="Delete registry counter and files to set things up to process files"/>
    <DELETE REGISTRY VALUE Value="HKEY_CURRENT_USER\\Software\\Insight Software Solutions\\Macro Express 4\\$Temp\\NextFileNumber" _IGNORE="0x0025" _COMMENT="Delete the file number, if it exists"/>
    <DELETE FILE/FILES Path="e:\\FilesToProcess.txt" Progress="FALSE" Recurse="FALSE" Permanent="FALSE" _COMMENT="Delete output file, if it exists"/>
    <COMMENT/>
    <COMMENT Value="Get a list of the files to process"/>
    <REPEAT WITH FOLDER Path="e:\\temp" OnlyFiles="TRUE" Destination="%File%" FullPath="FALSE" ProcSubfolders="FALSE"/>
    <VARIABLE MODIFY STRING Option="\x12" Destination="%File%" Filename="e:\\FilesToProcess.txt" Strip="TRUE" NoEmbeddedVars="FALSE"/>
    <END REPEAT/>

    Here is code you can copy and past for the "Process one file" macro:

    <COMMENT Value="----------------------------------------------------------------------------------------------------------------------------------"/>
    <COMMENT Value="Process one file - "/>
    <COMMENT Value="----------------------------------------------------------------------------------------------------------------------------------"/>
    <COMMENT Value="Use a hotkey activation for this macro"/>
    <COMMENT/>
    <COMMENT Value="Get the NextFileNumber from the registry"/>
    <VARIABLE SET INTEGER Option="\x00" Destination="%NextFileNumber%" Value="1" _COMMENT="Default in case the registry value does not exist"/>
    <READ REGISTRY VALUE Key="HKEY_CURRENT_USER\\Software\\Insight Software Solutions\\Macro Express 4\\$Temp\\NextFileNumber" Destination="%NextFileNumber%" _COMMENT="Get number of file to use"/>
    <COMMENT/>
    <COMMENT Value="Get the name of the next file in the list"/>
    <TEXT FILE BEGIN PROCESS Filename="e:\\FilesToProcess.txt" Start_Record="%NextFileNumber%" Process_All="TRUE" Records="1" Variable="%NextFilename%"/>
    <BREAK _COMMENT="Only get one file"/>
    <TEXT FILE END PROCESS/>
    <COMMENT/>
    <COMMENT Value="If NextFilename is blank then all files have been processed"/>
    <IF VARIABLE Variable="%NextFilename%" Condition="\x00" IgnoreCase="FALSE"/>
    <TEXT BOX DISPLAY Title="Done" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n{\\colortbl ;\\red0\\green0\\blue255;}\r\n\\viewkind4\\uc1\\pard\\qc\\cf1\\f0\\fs24 All files have been processed.\\cf0\\f1\\fs20 \r\n\\par }\r\n" Left="Center" Top="Center" Width="337" Height="125" Monitor="0" OnTop="FALSE" Keep_Focus="TRUE" Mode="\x00" Delay="0"/>
    <MACRO STOP/>
    <END IF/>
    <COMMENT/>
    <COMMENT Value="Increment and save the NextFileNumber to the registry"/>
    <VARIABLE MODIFY INTEGER Option="\x07" Destination="%NextFileNumber%"/>
    <WRITE REGISTRY VALUE Key="HKEY_CURRENT_USER\\Software\\Insight Software Solutions\\Macro Express 4\\$Temp\\NextFileNumber" Destination="%NextFileNumber%" _COMMENT="Get number of file to use"/>
    <COMMENT/>
    <COMMENT/>
    <VARIABLE SET FROM FILE Filename="e:\\temp\\%NextFilename%" Option="\x01" Extension="%Ext%" Expand="FALSE" Flags="\x08" _COMMENT="Get file extension"/>
    <COMMENT/>
    <TEXT BOX DISPLAY Title="Opening file" Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Tahoma;}{\\f1\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 Opening File %NextFilename%\r\n\\par Extension: %Ext%\\f1 \r\n\\par }\r\n" Left="Center" Top="Top" Width="574" Height="97" Monitor="0" OnTop="TRUE" Keep_Focus="FALSE" Mode="\x01" Delay="0"/>
    <IF VARIABLE Variable="%Ext%" Condition="\x00" Value=".pdf" IgnoreCase="TRUE" _COMMENT="Process pdf files"/>
    <OR/>
    <IF VARIABLE Variable="%Ext%" Condition="\x00" Value=".txt" IgnoreCase="TRUE" _COMMENT="or txt files"/>
    <OR/>
    <IF VARIABLE Variable="%Ext%" Condition="\x00" Value=".doc" IgnoreCase="TRUE" _COMMENT="or doc files"/>
    <OR/>
    <IF VARIABLE Variable="%Ext%" Condition="\x00" Value=".docx" IgnoreCase="TRUE" _COMMENT="or docx files"/>
    <OR/>
    <IF VARIABLE Variable="%Ext%" Condition="\x00" Value=".jpg" IgnoreCase="TRUE" _COMMENT="or jpg files"/>
    <OR/>
    <IF VARIABLE Variable="%Ext%" Condition="\x00" Value=".png" IgnoreCase="TRUE" _COMMENT="or png files"/>
    <OR/>
    <IF VARIABLE Variable="%Ext%" Condition="\x00" Value=".ini" IgnoreCase="TRUE" _COMMENT="or ini files"/>
    <CHANGE DIRECTORY/FOLDER Path="e:\\temp"/>
    <PROGRAM LAUNCH Path="%NextFilename%" Mode="\x00" Default_Path="TRUE" Wait="1" Get_Console="FALSE"/>
    <ELSE/>
    <DELAY Flags="\x01" Time="1"/>
    <END IF/>

     

  3. As far as I know you need to install Macro Express on the remote computer. However, I found some articles about using Macro Express with Remote Desktop Connection that hint otherwise. It sounds like it may be possible for your macros to work on the remote computer. Maybe you could try what the articles suggest and let us know how it turns out.

    macros do not work when using a Remote Desktop Connection in full screen mode

    How can I use Macro Express with Remote Desktop Connection?

    using the Remote Desktop Client in full-screen mode, my macros will not work

  4. The first thing to determine is whether or not the macro is being activated. You can do this one of several ways.

    1. Put a Text Box display at the top of your macro. It may say something like "The macro has started"
    2. Put a Sound File command at the top of your macro.
    3. Open the Macro Explorer. Click Options, Preferences, Playback and the Miscellaneous tab. Click to enable the "Play a sound when a macro runs" and choose a sound.

    If your macro is not being activated choose a different activation. If you continue to have trouble tell us specifically what activation you are trying to use.

    If the macro is being activated then you can use several techniques to debug it. Here are some ideas:

    1. Use the built-in debugger to step line by line through your macro
    2. Put Text Box Display commands throughout your macro

     

     

  5. Try "Variable Set String: Prompt" and "Variable Set Integer: Prompt" commands. Something like this may get you started:

    Variable Set String %Used%: Prompt
    Variable Set String %New%: Prompt
    Variable Set Integer %iUnits%: Prompt
    Text Type (Simulate Keystrokes): Finished with %Used% vehicles vs %New% in ___ 2016 (%Units%)
    <VARIABLE SET STRING Option="\x01" Destination="%Used%" Prompt="Enter used vehicles" Mask="FALSE" OnTop="FALSE" Left="Center" Top="Center" Monitor="0"/>
    <VARIABLE SET STRING Option="\x01" Destination="%New%" Prompt="Enter new vehicles" Mask="FALSE" OnTop="FALSE" Left="Center" Top="Center" Monitor="0"/>
    <VARIABLE SET INTEGER Option="\x01" Destination="%iUnits%" Prompt="Enter number of units" Mask="FALSE" OnTop="FALSE" Left="Center" Top="Center" Monitor="0"/>
    <TEXT TYPE Action="0" Text="Finished with %Used% vehicles vs %New% in ___ 2016 (%Units%)"/>

     

  6. The only way I am aware of to run Macro Express Pro as administrator without the UAC prompt is via the Task Scheduler. Your description of the task in Task Scheduler differs from this documentation: How to Run Macro Express as Administrator when Windows Starts. That example does not use cmd.exe.

    Because I do not load Macro Express Pro as admin I use the standard Macro Express Pro startup option found in Options, Preferences, Startup.

    If a startup macro does not consistently run when Macro Express Pro is loaded when Windows starts you may want to try the "Wait for [  ] seconds before initializing the program" setting found in Options, Preferences, Startup. This article has more information: Startup macros do not work when Macro Express is loaded when Windows starts.

  7. Here are two other ways to append a carriage return to a text file. Note that in Windows lines are terminated with two control characters: CR LF

    1. The "Variable Modify String: Append %T1% to Text File" has a checkbox that says to include CR/LF. You could use this with an empty variable to append only CRLF.

    2. This is what I do. At the top of my macro I include these:

    Variable Set %T13% to ASCII Char of 13
    Variable Set %T10% to ASCII Char of 10

    Then when setting strings I do something like this: Variable Set String %T1% "SomeValue%T13%%T10%"

    • Like 1
  8. Try this:

    Variable Set Integer %N1% to 0
    Text File Begin Process: "FileIn.txt"
      Variable Modify Integer: Inc (%N1%)
    Text File End Process
    
    // Here %N1% contains the number of lines

    Copy and paste this code:

    <IVAR2:01:01:0><BTFBEG:001:000001:000000:c:\Users\username\Documents\FileIn.txt><NMVAR:08:01:0:0000001:0:0000000><BTFEND><REM2:><REM2:Here %N1% contains the number of lines>

     

  9. I think rberg's explanation is likely valid. I have a suggestion that doesn't address your original question. You can delete multiple characters by holding down the shift key and pressing the arrow right key multiple times. If you also hold down the ctrl key you can highlight a word with each arrow key press. Then when everything is highlighted you can press the delete key once.

  10. 1 hour ago, boristhemoggy said:

    Sorry, I'm surprised you can't read what I'm saying but...

    I did not understand either until you explained further.

    I have no idea why it used to work and does not now work. Perhaps it is caused by a Windows update or installing a new application. Have you rebooted your computer recently?

    Here are some ideas to try:

    1. Try increasing the Delay after clipboard commands found in Options, Preferences, Delays. By default this is 250. Try a very large value, perhaps 1500, to see if it helps and then reduce the value.

    2. Add Delays:

    Clipboard start copy
    "My Text"
    Clipboard end copy
    Delay 1 Seconds
    Clipboard paste
    Text type <ENTER>
    Clipboard start copy
    "My Text 2"
    Clipboard end copy
    Delay 1 Seconds
    Clipboard paste
    Text type <ENTER>
    Clipboard start copy
    "My Text 3"
    Clipboard end copy
    Delay 1 Seconds
    Clipboard paste
    Text type <ENTER>

    Again, use large delays to see if it helps and if it does help reduce the amount of delay.

    3. I do not use the Clipboard start copy and Clipboard end copy commands. This is how I would write this sample macro:

    Text Type: My Text
    Text Type: <ENTER>
    Text Type: My Text 2
    Text Type: <ENTER>
    Text Type: My Text 3
    Text Type: <ENTER>

    Inside the Text Type commands that include My Text click the box that says "Use Clipboard to Paste Text".

    You may still need some small delays. I usually need to add delays after typing <ENTER>:

    Text Type: My Text
    Text Type: <ENTER>
    Delay 0.1 Seconds
    Text Type: My Text 2
    Text Type: <ENTER>
    Delay 0.1 Seconds
    Text Type: My Text 3
    Text Type: <ENTER>
    Delay 0.1 Seconds

     

  11. 1 hour ago, jaffy1229 said:

    it does helps, Thanks so much! I am already an administrator on the computer but it only seem to work when I run it as administrator. A bit strange, but at least it works.

    For security purposes Windows (since Vista) does not allow a program running with normal privileges to interact with a program running with elevated privileges. This article describes how to run Macro Express as Administrator when Windows starts up: https://www.macros.com/faq/1.92.html

  12. This is what I do:

    1. Open the macro to debug in the Scripting Editor.

    2. Click Debug, Debug Windows, Variable Values to display the Variables window.

    3. Highlight the line in the macro where you want to test.

    4. Press Ctrl+B to set a breakpoint

    5. Click the run button (green arrow)

    The macro will run up to the breakpoint. Note the values in the variables in the Variables window.

    6. Press the F8 button to step on macro line at a time. Watch the variables change in the Variables window.

    I hope this helps.

  13. You can tell the Text Type command to send an <ENTER> by either putting in the <ENTER> tag or by pressing the Enter key on your keyboard. In this example:

    Line #1<ENTER>
    
    Line #2
    
    Line #3<ENTER>Line #4<ENTER>

    Two Enters will be typed between Line #1 and Line #2. One because of the <ENTER> and the other because of the non-visible Enter.

    There will be one line between Line #2 and Line #3 and between Line #3 and Line #4.

  14. I need to press (down and up) <ALT>, that means <ALT>, and nothing else

    I find <ALT> often does not work, specifically with Office programs. I generally use <ALTD> and <ALTU> instead. Have you tried

    Text Type (Simulate Keystrokes): <ALTD><ALTU>
    

    Outlook may even want a small delay in between:

    Text Type (Simulate Keystrokes): <ALTD>
    Delay: 0.05 seconds
    Text Type (Simulate Keystrokes): <ALTU>
    

    or this

    Keystroke Speed: 30 milliseconds
    Text Type (Simulate Keystrokes): <ALTD><ALTU>
    Keystroke Speed: 0 milliseconds
    
    
  15. You may have read that backwards.

     

    Some programs do not allow Macro Express Pro to see mouse events from it or send mouse events to it.

     

    Windows calls these events messages. So, program XX does not let Macro Express Pro see messages generated from inside program XX. And it ignores messages Macro Express Pro sends messages to program XX. This starts to occur when the mouse is over program XX or when program XX is active/focused.

×
×
  • Create New...