.net – 如何在我的控制台应用程序中将字符串复制到剪贴板而不添
发布时间:2020-12-13 20:48:48 所属栏目:Windows 来源:网络整理
导读:我有一个.NET 4.0控制台应用程序,它生成SQL并将其存储在字符串变量中。我希望将此字符串直接复制到剪贴板。 到目前为止,我所有的研究都表明,可以通过添加对System.Windows.Forms的引用来实现这一目标。我不想添加对与控制台应用程序无关的程序集的引用。
我有一个.NET 4.0控制台应用程序,它生成SQL并将其存储在字符串变量中。我希望将此字符串直接复制到剪贴板。
到目前为止,我所有的研究都表明,可以通过添加对System.Windows.Forms的引用来实现这一目标。我不想添加对与控制台应用程序无关的程序集的引用。 在我们当前存在的Universe中,有一种已知的方法是将一串文本复制到控制台应用程序中的剪贴板,该方法不涉及添加对System.Windows.Forms的引用,也不涉及其目的与a无关的任何其他程序集。裸机控制台应用程序?
Platform invoking剪贴板API是一种可能的解决方案。例:
using System.Runtime.InteropServices; class Program { [DllImport("user32.dll")] internal static extern bool OpenClipboard(IntPtr hWndNewOwner); [DllImport("user32.dll")] internal static extern bool CloseClipboard(); [DllImport("user32.dll")] internal static extern bool SetClipboardData(uint uFormat,IntPtr data); [STAThread] static void Main(string[] args) { OpenClipboard(IntPtr.Zero); var yourString = "Hello World!"; var ptr = Marshal.StringToHGlobalUni(yourString); SetClipboardData(13,ptr); CloseClipboard(); Marshal.FreeHGlobal(ptr); } } 这只是一个例子。在代码周围添加一点错误处理,比如检查P / Invoke函数的返回值,将是一个很好的补充。
作为第一个参数传入的13是数据格式。 13 means a Unicode string。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Windows中进行Qt开发.我需要为Microsoft工具付费吗?
- windows – 错误:fetch-pack的waitpid失败:没有子进程
- windows-server-2008 – WIndows 2008入侵检测
- 如何将文件从本地计算机复制到Windows上的docker容器
- Windows – 如何启用BitLocker而不向最终用户提示
- AVX2字节用uint16索引收集到__m256i中
- windows-phone-8 – 如何使用WP8的LongListSelector电话控制
- vbscript – 如何使用Windows脚本以安全模式重新启动计算机
- windows-server-2008 – Windows Server 2008 – 自动用户登
- Windows Azure SDK for C
推荐文章
站长推荐
- .net – Windows 8 Embedded中缺少MSVCR120_CLR0
- Microsoft SQL Server备份physical_device_name
- entity-framework – 在Windows 7 64位上安装Vis
- ssh on cygwin(win10):read_passphrase:无法打
- active-directory – ADFS 3.0需要Powershell命令
- windows – Hyper-V:移动过程中出错:不支持操作
- dos生成目录树
- windows10s的具体内容和永久激活步骤和方法
- windows-vista – 为什么要使用64位操作系统?
- Microsoft Windows – 安装更新并重新启动(而不是
热点阅读