当前位置: 首页 > 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.dtcms.com/a/211121.html

相关文章:

  • SQL语句的执行流程
  • 鼠标连点器 ,实现鼠标自动点击
  • 虚拟环境中的PyQt5 Pycharm设置参考
  • 使用YouDDNS-Docker为飞牛NAS配置YouDDNS动态域名解析
  • H3C-W2000-G2【透明代理模式】
  • 用wsl实现 kerberos 认证协议
  • 优启通添加自定义浏览器及EXLOAD使用技巧分享
  • vector中reserve导致的析构函数问题
  • 如何提高自己的实际操作技能以通过客运从业资格考试?
  • Python实现对大批量Word文档进行自动添加页码(16)
  • 一张纸决定的高度
  • DAY01:【ML 第二弹】高等数学
  • 初学c语言20(动态内存管理)
  • SYN Flood攻击:原理、危害与防御指南
  • 产品迭代与放弃的判断:MVP、PMF 与 Scale Fit 的三重验证
  • 开发者工具箱-鸿蒙金额转换开发笔记
  • (泛函分析)范数和收敛
  • LangChain
  • 讲述我的PLC自学之路 第九章
  • WHAT - 兆比特每秒 vs 兆字节每秒
  • 品鉴JS的魅力之防抖与节流【JS】
  • 2025年—ComfyUI_最新插件推荐及使用(实时更新)
  • 2942. 查找包含给定字符的单词
  • 【AI News | 20250523】每日AI进展
  • 文件夹图像批处理教程
  • NLP学习路线图(六):数据处理与可视化
  • Vue框架1(vue搭建方式1,vue指令,vue实例生命周期)
  • Symbol、Set 与 Map:新数据结构探秘
  • 关于gt的gt_data_valid_in信号
  • RV1126+FFMPEG多路码流监控项目大体讲解