To explain in more detail.
This is a macro I am using in my current clipboard app.
[KEY="001009SHIFT+TAB"]
[WAIT=500]
[KEY="001009SHIFT+TAB"]
[WAIT=500]
[KEY="001009SHIFT+TAB"]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[DOWN REPEAT=5]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[TAB REPEAT=2]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[DOWN REPEAT=6]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=200]
[TAB REPEAT=1]
<predefined text here>
[WAIT=500]
[TAB REPEAT=2]
[WAIT=500]
[RIGHT REPEAT=2]
[WAIT=500]
[TAB REPEAT=9]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[DOWN REPEAT=1]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[TAB REPEAT=3]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[DOWN REPEAT=12]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[TAB REPEAT=32]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[DOWN REPEAT=1]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[TAB REPEAT=3]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[DOWN REPEAT=2]
[WAIT=500]
[ENTER REPEAT=1]
[WAIT=500]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[KEY="001009SHIFT+TAB"]
[WAIT=500]
[RIGHT REPEAT=3]
I use this macro to automatically close a ticket in our ticketing system.
In this case, it is a major outage ticket, with a predefined text that I have removed.
I am able to open that other apps history tab, and look at all my other pinned clipboard items and macros, and choose what I need for the occasion, and it will close the history and paste it in the browser.
I saw ClipboardFusion and thought it could replace my existing app, as I think CF opens me up to even more possibilities.
I converted the above macro, to this:
using System;
using System.Collections.Generic;
// The 'text' parameter will contain the text from the:
// - Current Clipboard when run by HotKey
// - History Item when run from the History Menu
// The returned string will be:
// - Placed directly on the Clipboard
// - Ignored by ClipboardFusion if it is 'null'
public static class ClipboardFusionHelper
{
public static string ProcessText(string text)
{
//for more key codes, check out this website:
//https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys(v=vs.110).aspx
//send the tab key
//BFS.Input.SendKeys("{TAB}");
//send the enter key
//BFS.Input.SendKeys("{ENTER}");
//tell ClipboardFusion to ignore the result of this macro
//return null;
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{TAB}");
//Need code to paste predefined text here.
//--------------------------
//--------------------------
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{RIGHT}");
BFS.Input.SendKeys("{RIGHT}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{TAB}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{DOWN}");
BFS.Input.SendKeys("{ENTER}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{+TAB}");
BFS.Input.SendKeys("{RIGHT}");
BFS.Input.SendKeys("{RIGHT}");
BFS.Input.SendKeys("{RIGHT}");
return null;
}
}
Now, when I ran this macro, it caused a BSOD, so I need to find out what exactly went wrong, and therefore, start on a smaller scale, to work myself up.
I am guessing it has to do with wait times between commands.
I think "BFS.General.ThreadWait" can help here, but it will not be useful if I can't select the macro from a list, instead of running a hot-key every time.
EDIT: I found out that the primary fault with my Macro was {+TAB}. It should have been +{TAB}.
This has fixed everything, except starting the macro from the Macros tab on the History Popup.