using System;
using System.IO;
using System.Text;
public static class ClipboardFusionHelper
{
// ===== Config =====
private const string ExportFolder = ""; // "" = Desktop. Or set e.g. "C:\\Backups\\ClipboardFusion"
private const string ExportFileName = "cf_pinned_export.csv";
private const bool TimestampFileName = false; // true = appends _YYYY-MM-DD_HHmmss before .csv
// ==================
public static string ProcessText(string text)
{
string folder = string.IsNullOrEmpty(ExportFolder)
? Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
: ExportFolder;
string fileName = ExportFileName;
if (TimestampFileName)
{
string stamp = DateTime.Now.ToString("yyyy-MM-dd_HHmmss");
string baseName = Path.GetFileNameWithoutExtension(ExportFileName);
string ext = Path.GetExtension(ExportFileName);
fileName = baseName + "_" + stamp + ext;
}
Directory.CreateDirectory(folder);
string exportPath = Path.Combine(folder, fileName);
var sb = new StringBuilder();
sb.AppendLine("index,type,content");
int total = BFS.ClipboardFusion.GetLocalPinnedItemCount();
int textCount = 0;
for (int i = 0; i < total; i++)
{
string type = "unknown";
string content = "";
if (BFS.ClipboardFusion.GetLocalPinnedItemContainsText(i))
{
type = "text";
content = BFS.ClipboardFusion.GetLocalPinnedText(i) ?? "";
textCount++;
}
else if (BFS.ClipboardFusion.GetLocalPinnedItemContainsImage(i))
{
type = "image";
content = "[image - not exported]";
}
else if (BFS.ClipboardFusion.GetLocalPinnedItemContainsFileList(i))
{
type = "files";
string[] files = BFS.ClipboardFusion.GetLocalPinnedFileList(i);
content = string.Join("; ", files);
}
content = content.Replace("\"", "\"\"");
sb.AppendLine(i + ",\"" + type + "\",\"" + content + "\"");
}
File.WriteAllText(exportPath, sb.ToString(), Encoding.UTF8);
System.Windows.Forms.MessageBox.Show(
"Exported " + total + " items (" + textCount + " text) to:\n" + exportPath);
return null;
}
}