当前位置: 首页 > news >正文

自动转换剪贴板中的字符串方便c#的$““符号输出

效果,剪贴板复制一个字符串,希望用c#的$""输出方便后续修改其中的某些变量。

比如字符串:

ksal;kgal;kglkda;kks;lfaks\\a\sa[d]asdsa\s][[[[]][[][][][{}{}{{}{}{}{[S"ADSa''aG'SA"G"sa"G"AS"G""asfgasfafs{}{}{}

希望得到的字符串:

$"ksal;kgal;kglkda;kks;lfaks\\a\sa[d]asdsa\s][[[[]][[][][][{{}}{{}}{{{{}}{{}}{{}}{{[S\"ADSa''aG'SA\"G\"sa\"G\"AS\"G\"\"asfgasfafs{{}}{{}}{{}}"

如果手工写比较麻烦,于是我写了这个小工具,使用MFC框架实现。

实现直接转换剪贴板中的字符串,方便c#代码输出。

直接上代码:


#include <windows.h>
#include <atlstr.h>CString ConvertStringForCsharpCode(CString& strPath)
{CString result;for (int i = 0; i < strPath.GetLength(); i++){TCHAR ch = strPath[i];switch (ch){case _T('"'):  // 双引号转义为\"result += _T("\\\"");break;case _T('{'):  // 左花括号转义为{{result += _T("{{");break;case _T('}'):  // 右花括号转义为}}result += _T("}}");break;//case _T('\\'): // 反斜杠转义为\\(根据场景决定是否需要)//	result += _T("\\\\");//	break;default:result += ch;}}return "$\"" + result + "\"";
}int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR     lpCmdLine,int       nCmdShow)
{char* buffer = nullptr;CString strFromClipboard;if (OpenClipboard(NULL)){HANDLE hData = GetClipboardData(CF_TEXT);char* buffer = (char*)GlobalLock(hData);strFromClipboard = buffer;int nLen = strFromClipboard.GetLength();if (nLen > 0){EmptyClipboard();strFromClipboard = ConvertStringForCsharpCode(strFromClipboard);size_t cbStr = (strFromClipboard.GetLength() + 1) * sizeof(TCHAR);HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);memcpy_s(GlobalLock(hData), cbStr, strFromClipboard.LockBuffer(), cbStr);strFromClipboard.UnlockBuffer();UINT nFormat = (sizeof(TCHAR) == sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT);::SetClipboardData(nFormat, hData);}GlobalUnlock(hData);CloseClipboard();}return 0;
}

下面是隐藏黑窗口的方法:

要将命令行程序改为窗口程序并隐藏黑框,可以采用下面的方法:

使用WinMain入口点(推荐)

  1. 将main改为WinMain
  2. 在项目属性中设置子系统为Windows
  3. 添加/SUBSYSTEM:WINDOWS链接器选项
http://www.xdnf.cn/news/630451.html

相关文章:

  • 2.2.1 05年T2
  • leetcode hot100刷题日记——15.岛屿数量
  • unordered_set与unordered_map实现详解剖析
  • 《100天精通Python——基础篇 2025 第20天:Thread类与线程同步机制详解》
  • PyLink 使用指南
  • AVL树简介与部分实现
  • C++篇——C++11的更新内容
  • 模型各个参数详解
  • Aciviti工作流
  • 【栈OJ题解】有效的括号
  • 6个月Python学习计划 Day 3
  • 力扣热题——查找包含给定字符的单词
  • 多模态智能体架构
  • 236.二叉树的最近公共祖先
  • Day35打卡 @浙大疏锦行
  • 深度解析NL2SQL:从语义理解到工程实践的全链路探索
  • DC-DC电路的自举电容电路原理
  • Linux(7)——进程(概念篇)
  • 介绍一下什么是反射(面试题详细讲解)
  • VBA 读取指定范围内的单元格数据,生成csv文件
  • 英语学习5.24
  • Java中是值传递还是引用传递 ?
  • vue2中el-table 实现前端分页
  • 5.Java 面向对象编程入门:类与对象的创建和使用​
  • uint8_t是什么数据类型?
  • WSL 基础命令
  • 整平机实战手册:从参数调试到工艺优化的全流程指南
  • “天启” AI 技术演进任重道远
  • 为什么我输入对了密码,还是不能用 su 切换到 root?
  • 推荐系统里真的存在“反馈循环”吗?