WPF C#复制并粘贴到剪贴板

时间:2020-03-19 22:17:41

标签: c# wpf windows

我想制作一个WPF程序来转换单位(其他应用程序中的数字)。 我使程序可以在系统托盘上运行,也可以设置全局热键。 但这是我第一次制作WPF程序,所以遇到了一些问题。

当用户按下全局热键时调用此功能。 为了进行计算,我需要从其他应用程序中复制/粘贴选定的文本。 如果您能帮助我,我将不胜感激。 (代码可能有点混乱)

  • 我的用户想要自动转换他选择的文本。
  • 他现在正在像这样使用我的应用程序:1.选择文本2.按 Ctrl + C 3.按下Ctrl + D(全局热键)4.按下Ctrl + V。
  • 他想要的是:1.选择文本2.按Ctrl + D(全局热键),然后完成。

    void ClipboardCalc()
    {
        string resultStr = string.Empty;
        string temp = string.Empty;
        string digit = string.Empty;
        double result = 0;
        temp = Clipboard.GetText();
    
        // Need to copy "selected text from other application" to clipboard here.
    
        resultStr = Clipboard.GetText();
        resultStr = string.Join(string.Empty, Regex.Match(resultStr, @"\d+(\.\d+)?"));
        try
        {
            result = Convert.ToDouble(resultStr);
        } 
        catch (Exception ee)
        {
        }
        if (reverse_mode == false)
            result *= 3.30579;
        else
            result /= 3.30579;
        digit = "F" + textBox2.Text;
    
        if (result == (int)result)
            resultStr = result.ToString();
        else
            resultStr = result.ToString(digit);
        resultStr = string.Format("{0:0.##########}", Convert.ToDouble(resultStr));
    
        if (print_measure != false)
        {
            if (reverse_mode != false)
                resultStr += "평";
            else
                resultStr += "m²";
        }
        Clipboard.SetText(resultStr);
    
        // Then paste clipboard text here.
    
        //Clipboard.SetText(temp);
    }
    

1 个答案:

答案 0 :(得分:0)

这是一个庞然大物,但似乎是一个庞然大物的程序,所以我还是把它放在那里。

如果您成功设置了“全局热键”,那么我假设您已经进入p /调用领域。因此,我不妨向您介绍SendInput。这种本机方法允许应用程序“将击键,鼠标动作和按钮单击合成到当前活动的窗口”。您可以使用它将Ctrl + C发送到活动窗口。

同样,这是一个有很多假设的综合解决方案,但在大多数情况下都可能有效。

请注意,您必须分别发送按键按下和按键输入(即依次按“ Ctrl向下”,“ C向下”,“ C向上”,“ Ctrl向上”)。