我试着写了一个非常小的应用程序来操作系统剪贴板。使用的类是
System.Windows.Clipboard
.
当我用控制台应用程序的 VS 模板编写它时,它不起作用,报告:“名称‘DataFormats’在当前上下文中不存在”。
(Program.cs 中的代码)
using System;
using System.Windows;
namespace clipboard_console
{
public class Program
{
static void Main()
{
string textData = "XYZ";
DataObject data = new DataObject(DataFormats.UnicodeText, (Object)textData, true);
Clipboard.SetDataObject(data, true);
}
}
}
为了让它工作,我需要使用 WPF 应用程序的 VS 模板,但是运行该应用程序会弹出一个空白窗口。
(MainWindow.xaml.cs 中的代码)
using System;
using System.Windows;
namespace clipboard_wpf
{
public partial class MainWindow : Window
{
public MainWindow()
{
string textData = "XYZ";
DataObject data = new DataObject(DataFormats.UnicodeText, (Object)textData, true);
Clipboard.SetDataObject(data, true);
}
}
}
我怎样才能得到一个只悄悄改变剪贴板内容的应用程序?谢谢!
Clipboard 在
System.Windows
命名空间(PresentationCore.dll 包含在 WPF 应用程序中)和 System.Windows.Forms
命名空间(System.Windows.Forms.dll 包含在 WinForms 应用程序中)中可用。您可以通过执行以下操作(net 6 的示例)从您的控制台项目中引用:
PresentationCore.dll:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
System.Windows.Forms.dll:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
注意
-windows
上的TargetFramework
后缀,以及<UseWPF>true</UseWPF>
或<UseWindowsForms>true</UseWindowsForms>
的用法。您也可以像这样引用两者:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>