Rated 5 stars at SnapFiles
   Shareware and Freeware

This Month's Donators T. Selnekovic (Top Donator) "Zawacki Enterprises" C. Deichman R. Grunwald ... more PayPal


Use with caution.
These public beta programs contain new fixes and new features that haven't been fully tested. I need you to tell me if you find any problems with these program or even if the changes listed work as you expect.

joejoe Dec-19-15 12:05 PM CST

A "Killer Script"

To be successful to more than just advanced users, I think the new JavaScript feature needs a script(s) that shows off what it can do.

This is more difficult than it sounds. Usually, a script is so specific for one user's needs that it won't work for anyone else. This is the point of adding JavaScript support in the first place. In Rename Master, having example scripts was an easy task. I'd often get questions about "how can you rename X to Y?" and it would be the same renaming process for other users.

Something as simple as "extract all URLs" sounds great, but is an extremely difficult task to do correctly. Several libraries exist for this task and almost all of them have issues. I've even written my own for the MakeLinks browser extension, to detect "may be" links. Still, this is a candidate for a "killer script".

I've one user that is copying address information and pasting it into a form. The addresses can be in multiple forms and each needs special detection and treatment. While this is another difficult task, it sounds like it may also be a candidate.

I'll be looking through my archive of user feedback to find more.


Another feature that might need to included is a way to get scripts from the website, instead of just using hard coded examples. Will scripts be added or updated frequently enough to merit this work? I'm not sure. This feature may have to wait for a future version.

joejoe Dec-17-15 2:49 PM CST

ArsClip JavaScript Explained

In the newest Public Beta, a new clip type has been added: JavaScript (technically JScript/ECMAScript3 for this implementation). This is obviously for advanced user.

Currently, the clipboard state is passed as a parameter to the "main" function. The Popup Clips are optionally included as an array of string. This is the only data that AC directly includes in the script. Indirectly, the script can have AC execute the [TOTEXTFILE=""] command to store the changed clipboard to a file. This may change in a later version.

The JavaScript clip uses 2 special labels for embedding AC macros. The "start_ac_macro:" and "end_ac_macro:' labels mark the beginning and ending of this code. This is just syntax sugar for using the "manuallyExecuteMacro(macro)" function.

Some notes about the implementation:

Currently, cscript is used to execute the "main.js" file. This command line program has been a part of Windows since XP. Mozilla's SpiderMonkey engine may be used instead in a future update. The simplest method was tried first.

Cscript is executed using a hidden command prompt to prevent any focus issues with the script.

Any number of start/end label can be used and they conditionally executed or loop executed by the script.

AC shows a single JavaScript function to be executed, but this is wrapped with supporting code be hind the scenes before execution.

AC and the script use a named pipe for inter-process communication. This will likely be used even if the implementation changes.

Error messages will reference the line number of "main.js", not the line number of the current clip.

joejoe Dec-14-15 7:10 PM CST

ArsClip Plans

Version 5.07 of ArsClip will be released as an official version soon. Preparations are being made to ensure that if a hotfix is needed, it can be addressed quickly.

Version 5.08 of ArsClip work has already started. I've adding basic JavaScript support, using the build-in WIndows cscript tool. The change will look like the following:

screen cap

The edit clip window has been altered to support the new clip type. AC will use this single function to generate a full script. The start/end macro labels are a special syntax used to insert a block of AC's macro code directly into JavaScript. More than one of these blocks can be used if needed.

All the details are preliminary and may change. The only incoming data from AC in this version is the clipboard in plaintext format. I'll need to find an efficient way of including other data, like the Popup Clips, into the script. I may use some more special syntax for this, so it's only conditionally included.

joejoe Dec-11-15 12:51 PM CST

Flexibility Needed 2

I've come to the conclusion that it will most likely be easier to add JavaScript support to ArsClip's macros that it would be to advance AC's macros beyond simple linear routines. While this is not 100% definite, I'll likely be adding this support in v5.08 of ArsClip.

Why add JavaScript, who's going to use it?

Most users won't use it. Most users don't need macros either. Those users that do need macros use the hell out of them. The current process now is that a user must send in a request to support a feature. Usually, an ArsClip macro will already do the task. If the idea seems like a good fit, the program may be updated with a new command to support the feature directly. A lot of requests are too specific or beyond the scope of ArsClip to support directly in the program. Adding in JavaScript support will allow users to customize macros without having to rely on a program update that may never occur.

As an example, look at the new CLIPBOARSPLIT command. With JavaScript, this feature could have been added to the macro window as a template. As a script, a user can customize the command; change the separator string to a Regular Expression. As a hard-coded command, it's extremely limited in use.

How will it work?

Good question. I don't have a 100% answer yet. I do, however, have the requirements. AC macros need to easily integrate with the JavaScript. That means it needs to be trivial to pass information between the two. It also means that the JavaScript needs to be able to control the flow AC macros and possibly create macros dynamically. Most likely, AC will create some custom syntax that will actually be converted to script behind the scenes.

Addons for ArsClip?

With JavaScript support, this could be possible in the future. Just like a Web Browser can be expanded in functionality with addons, Permanent Macros perform a similar task. They add functionality to the program to fit a very specific need - often too specific to be useful for most users. Instead of updating the program itself to support new macro commands, these new commands could be created as addons.

joejoe Dec-10-15 12:36 PM CST

Flexibility Needed

The Split Clipboard command is great for doing a single routine repeatedly, but it doesn't account for the case when the split pieces need to be treated differently.


The above is a bit of a hack that will fill the Temporary Clip List with pieces. From here, pieces can be removed from the list and pasted using:


This works, but it's far from intuitive. Having the Split Clipboard command implicitly be a loop may be a mistake. The command may be better served just saving the clipboard as pieces. Then, the pieces can be inserted one at a time or inserted using a loop. This is much more flexible and more intuitive.


The above shows the case where the number of splits is known ahead of time. The user copies a block of text with 3 separate lines and those lines are pasted without linefeeds.


The above show the case where the number of splits is not known ahead of time or all splits can be treated the same. The Split Item looks the same, but an index variable is used instead of a hardcoded number.

The "Insert" menu would have 2 versions of the Split Command to use for templates. While not perfect, this seems to be a better solution that allows for much more flexibility.

joejoe Dec-08-15 10:14 AM CST

A New ArsClip Command

Work is being done on a new command that will split the clipboard into pieces. This will basically be an insert command that functions like a loop. I had written a long post describing it in detail, accidentally closed it, and I'm too lazy to repeat it. The idea is (based on a user request) is as follows:


Any command or text could be placed before or after the [INSERTPIECE] command. For example, keystroke simulation could be added after the insert. This command is tailored for advanced users and is clearly targeted for pasting automation. The example given to me by a user was to copy an address and paste it into a form. The command for that would look like the following:


Each line from the clipboard is pasted and a tab key is simulated. In the case that City/State are on the same line separated by a comma, the following would work (only if the one comma is present):


This could replace the tedious task of copying each individual line and then using Form Mode or the "keep open" keystroke to paste the parts.

joejoe Dec-06-15 10:32 AM CST

Invisible Helper

Thank you to whomever is reporting ArsClip Mini crashes on an Asus MeMo. Once nice thing about Android apps and the Play store is that it reports the exact line of source code that is causing the crash, if the users presses the "report" button.

ACM uses the "accessibility" features to receive reports when a textbox is clicked on. For some unknown reason, some Android systems just don't implement or incorrectly implement these notifications. This is causing the ACM service to crash because of an unhandled exception. Since I can only test on one real device and several virtual machines, I can't replicate these issues. I can, however, add exception handlers to the code that usually wouldn't need it.

For the user, it would seem that ACM was randomly crashing. Actually, this seemed to be occurring on when a users was clicking on a textbox in a browser page and the system was returning only partial accessibility notifications.

In any case, the last reported crash showed that my first attempt only partially solved the issue. In the latest update (v1.7), this crash has been resolved. I may have to further refine some code, but this "bug" appears to have been squashed.

joejoe Dec-02-15 9:38 AM CST

ArsClip Hidden Settings

In the latest Public Beta of ArsClip, a new section has been added to the arsclip.ini file. This "hidden" section will contain settings that were formerly hardcoded in the program. For example, "MinClipLength" defines how long a text clip must be for adding to the Popup Clips list.

From now on, new default values will always be added to the INI file. This allows expert users to tinker with advanced customization option, before an option exists in the Configuration window. If a setting becomes popular, these settings may be added as an option under Configuration.

This will bridge the gap between the failed "just add an option" design and the new "don't clutter the Configuration" design. User requests for setting can be added to the "hidden" section with almost not consequences, as long as the setting doesn't interfere with the normal flow of the program. For example, the setting "ShowClipCues" was added for disabling the small tooltip that appears when a new clip is ignored by the program, or when the paste method is overridden. This setting is something that would almost never be used and the new "cues" feature has been an overwhelming success. It doesn't hurt to have it as a hidden setting.

joejoe Nov-24-15 1:35 PM CST

ArsClip Database Size

There's an issue that may start revealing itself in ArsClip for users with large amounts of clips: the database(DB) size. In the last beta, the entire clip table had to be re-created to fix an issue with a few columns. This required creating a new copy of the table and removing the old. This doubles the size of the file, even though most of the space is empty.

In future versions, when the DB is updated like this, the program will automatically run the "compact" command to get rid of all the blank space. Since the DB isn't updated often, the "Edit Clips" tab for databases will also have a place to compact the local DB. This will also help those that use ArsClip on a thumb drive.

Older Items

Got an idea for improvement, a bug to report? Just want to say hello? Send me your feedback.
I can be contacted at jackass.joejoe@gmail.com English only please.