System.Windows.Clipboard 可用于 WPF 应用程序,但不适用于控制台应用程序

问题描述 投票:0回答:1

我试着写了一个非常小的应用程序来操作系统剪贴板。使用的类是

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);
        }
    }
}

我怎样才能得到一个只悄悄改变剪贴板内容的应用程序?谢谢!

c# visual-studio clipboard
1个回答
0
投票

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>  
© www.soinside.com 2019 - 2024. All rights reserved.