You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UWP中区分剪贴板内容变更来自本应用还是其他应用

UWP中区分剪贴板内容变更来源(本应用/其他应用)

UWP的Clipboard类没有直接提供判断内容变更来源的API,我们可以通过记录本应用复制的内容,再在ContentChanged事件中对比的方式来实现区分:

实现步骤

  1. 声明私有变量存储本应用最后一次复制到剪贴板的文本
  2. 在本应用的复制操作中,同步把复制的文本存入该变量
  3. 在Clipboard_ContentChanged事件里,对比当前剪贴板文本和存储的变量,判断变更来源

修改后的完整代码

XAML(无需改动)

<Grid>
    <StackPanel>
        <Button x:Name="CopyToClipBoard" Click="CopyToClipBoard_Click">Copy To ClipBoard</Button>
        <TextBlock x:Name="CopiedFrom"> Clipboard Content Changed From : </TextBlock>
        <TextBlock x:Name="DispalyText" FontWeight="Bold"/>
    </StackPanel>
</Grid>

C#代码

private string _lastCopiedTextFromApp; // 存储本应用复制的文本

public MainPage()
{
    this.InitializeComponent();
    Clipboard.ContentChanged += Clipboard_ContentChanged;
}

private async void Clipboard_ContentChanged(object sender, object e)
{
    string str = "";
    var clipboardContent = Clipboard.GetContent();
    
    // 先判断剪贴板是否包含文本内容
    if (clipboardContent.Contains(StandardDataFormats.Text))
    {
        string currentClipboardText = await clipboardContent.GetTextAsync();
        
        // 对比当前剪贴板文本和本应用最后复制的文本
        if (!string.IsNullOrEmpty(_lastCopiedTextFromApp) && currentClipboardText == _lastCopiedTextFromApp)
        {
            str = "Text Copied from Our App";
            // 执行本应用触发变更的操作(Action-1)
            _lastCopiedTextFromApp = null; // 重置变量,避免后续重复误判
        }
        else
        {
            str = "Text Copied from other app";
            // 执行其他应用触发变更的操作(Action-2)
        }
        
        DispalyText.Text = $"{str}: {currentClipboardText}";
    }
    else
    {
        DispalyText.Text = "Clipboard content is not text";
    }
}

private void CopyToClipBoard_Click(object sender, RoutedEventArgs e)
{
    string copiedText = "Hello Clipboard !!";
    DataPackage dataPackage = new DataPackage();
    dataPackage.SetText(copiedText);
    Clipboard.SetContent(dataPackage);
    
    _lastCopiedTextFromApp = copiedText; // 记录本应用复制的文本
}

注意事项

  • 匹配成功后要重置_lastCopiedTextFromApp,避免用户后续从其他应用复制相同文本时误判
  • 如果需要支持非文本格式的剪贴板内容,可以扩展逻辑,比如记录数据格式和内容哈希值,提升匹配准确性

内容的提问来源于stack exchange,提问作者PremKumar Shanmugam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:42:34