【发布时间】:2016-08-09 16:04:30
【问题描述】:
我有一个“输出类型”为“Windows 应用程序”的控制台应用程序(实现无头行为,即没有 UI,没有控制台窗口)。目的是“清理” Windows 剪贴板中的文本,即修剪所有前导和尾随空格并删除格式。
它在调试时效果很好,但是当我从资源管理器中运行它时,它只会清除剪贴板内容。
这是我的代码:
[STAThread]
internal static void Main(string[] args)
{
var currentClipboardText = System.Windows.Clipboard.GetText();
// only if the clipboard has text; leave any other content intact.
if(!string.IsNullOrEmpty(currentClipboardText))
{
currentClipboardText = currentClipboardText.Trim();
var pattern = @"[\t\r\n\v\f\u2028\u2029]"; // match vert. whitesp & tabs
currentClipboardText = Regex.Replace(currentClipboardText, pattern, " ");
System.Windows.Clipboard.SetDataObject(currentClipboardText);
}
}
MS Word 格式的输入示例,复制到剪贴板:
在调试器中运行程序后(无论是“调试”模式还是“发布”模式,都没有区别),下面是从剪贴板粘贴回 Word 的结果:
如果我做同样的练习,但通过在 Windows 资源管理器中双击它来运行程序(即在 \bin\Debug 目录中),剪贴板上将没有文本可粘贴到 Word 中:
这里有什么区别?为什么它不能在 Visual Studio 之外工作?
【问题讨论】:
标签: c# .net visual-studio .net-4.5 clipboard