Binary Fortress
Binary Fortress Software
CheckCentral
ClipboardFusion
CloudShow
DisplayFusion
FileSeek
HashTools
LogFusion
Notepad Replacer
Online Base64 Decoder
Online Base64 Encoder
Online JSON Formatter
ShellSend
TrayStatus
VoiceBot
WallpaperFusion
Window Inspector
More Apps...
DisplayFusion
CheckCentral
CloudShow
ClipboardFusion
FileSeek
TrayStatus
VoiceBot
WallpaperFusion
Clipboard
Fusion
by Binary Fortress Software
Download
Download
Change Log
Download Beta
Beta Change Log
License (EULA)
Features
Features
HotKeys
Macros
Triggers
Clipboard Syncing
Clipboard Manager
Languages
Free vs Pro
Apps
More
Screenshots
Macros
Languages
Help
Help Guide
FAQ
Discussions
Contact Us
Find My License
Mailing Address
Advanced Settings
Purchase
Login / Register
WARNING: You currently have Javascript disabled!
This website will not function correctly without Javascript enabled.
Title
Message
OK
Confirm
Yes
No
Classic Style History Menu
Return to ClipboardFusion Macros
Description
This macro recreates the classic style of the history menu from ClipboardFusion 4.x.
Language
C#.net
Minimum Version
5.0+
Created By
Thomas Malloch (BFS)
Contributors
-
Date Created
Mar 23, 2017
Date Last Modified
Mar 23, 2017
Macro Code
Copy
Select All
using System; using System.Collections.Specialized; using System.Drawing; using System.Windows.Forms; // 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) { //create a new ContextMenuStrip to show the items using(ContextMenuStrip menu = new ContextMenuStrip()) { //dont show the padding on the left of the menu menu.ShowCheckMargin = false; menu.ShowImageMargin = false; //set the font so it isn't huge menu.Font = new Font(menu.Font.FontFamily, 8, FontStyle.Regular); //loop through the first 25 history items for(int i = 0; (i < BFS.ClipboardFusion.GetHistoryItemCount()) && (i < 25); i++) { //get the history item data text = BFS.ClipboardFusion.GetHistoryText(i); Bitmap image = BFS.ClipboardFusion.GetHistoryImage(i); string[] fileList = BFS.ClipboardFusion.GetHistoryFileList(i); //strip the newline characters out of the text for the title, and limit it to 50 characters string title = string.IsNullOrEmpty(text) ? "[Empty]" : text; title = title.Replace(Environment.NewLine, "\n").Replace("\r", "\n").Replace("\n", ""); if(title.Length > 50) title = title.Substring(0, 50); //make the context menu item ToolStripMenuItem item = new ToolStripMenuItem(title); //if the item contains an image, set the background image to the item if(image != null) { item.BackgroundImage = image; item.BackgroundImageLayout = ImageLayout.Stretch; } //make the ClipboardData object ClipboardData data = new ClipboardData(text, image, fileList); //set the click event, set the ClipboardData to the tag, and add the item to the menu item.Click += ItemClick; item.Tag = data; menu.Items.Add(item); } //add an item that you can click to close the menu menu.Items.Add("Close"); menu.Items[menu.Items.Count - 1].ForeColor = Color.Red; //show the menu menu.Show(BFS.Input.GetMousePositionX(), BFS.Input.GetMousePositionY()); //wait for the menu to close while(menu.Visible) Application.DoEvents(); //dispose the objects foreach(ToolStripMenuItem item in menu.Items) { ClipboardData data = item.Tag as ClipboardData; if(data != null) data.Dispose(); item.Dispose(); } } return null; } //this function will be called when you click on a regular menu item private static void ItemClick(object sender, EventArgs e) { try { //get the menu item object ToolStripMenuItem item = sender as ToolStripMenuItem; if(item == null) throw new Exception("ToolStripMenuItem is NULL"); //get the ClipboardData object ClipboardData data = item.Tag as ClipboardData; if(data == null) throw new Exception("ClipboardData is NULL"); //depending on what data we have, set the clipboard if(data.Image != null) { Clipboard.SetImage(data.Image); BFS.Clipboard.Paste(); } else if(data.FileList.Length > 0) { StringCollection collection = new StringCollection(); collection.AddRange(data.FileList); Clipboard.SetFileDropList(collection); BFS.Clipboard.Paste(); } else { BFS.Clipboard.PasteText(data.Text); } } catch(Exception ex) { //if something happened, show an error BFS.Dialog.ShowMessageError(ex.Message); } } //this is an object that will store the Clipboard History Item data private class ClipboardData : IDisposable { public string Text; public Bitmap Image; public string[] FileList; public ClipboardData(string text, Bitmap image, string[] fileList) { this.Text = text; this.Image = image; this.FileList = fileList; } public void Dispose() { if(this.Image != null) this.Image.Dispose(); } } }