如何在不使用剪贴板的情况下从活动应用程序获取选定的文本

2024-04-02

我在做什么:

我的主要目的是使用户友好text to speech供个人在 Win 7 上使用。该方法应该适用于 Google Chrome、VS 和 Eclipse。

代码示例:

Following code creates global keyboard hook for ctrl + alt + space, called hookEvent. If event fires, it starts/stops speaking clipboard contents ( that can be updated with ctrl + c ).

    /// <summary>
    /// KeyboardHook from: http://www.liensberger.it/web/blog/?p=207
    /// </summary>
    private readonly KeyboardHook hook = new KeyboardHook();
    private readonly SpeechSynthesizer speaker = //
        new SpeechSynthesizer { Rate = 3, Volume = 100 };

    private void doSpeaking(string text)
    {
        // starts / stops speaking, while not blocking UI
        if (speaker.State != SynthesizerState.Speaking)
            speaker.SpeakAsync(text);
        else
            speaker.SpeakAsyncCancelAll();
    }
    private void hookEvent(object sender, KeyPressedEventArgs e)
    {
        this.doSpeaking(Convert.ToString(Clipboard.GetText()));
    }
    public Form1()
    {
        InitializeComponent();
        hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hookEvent);
        hook.RegisterHotKey(ModifierKeysx.Control|ModifierKeysx.Alt, Keys.Space);
    }

问题:

我宁愿不使用剪贴板。或者至少,恢复之后的值,例如:

    [MethodImpl(MethodImplOptions.Synchronized)]
    private string getSelectedTextHACK()
    {
        object restorePoint = Clipboard.GetData(DataFormats.UnicodeText);
        SendKeys.SendWait("^c");
        string result = Convert.ToString(Clipboard.GetText());
        Clipboard.SetData(DataFormats.UnicodeText, restorePoint);

        return result;
    }

我有什么选择?

Edit:

令我惊讶的是,我发现我的剪贴板阅读器是最好的选择。我创建了一个通知区域应用程序,它响应左键单击(说出剪贴板)和右键单击(打开菜单)。在菜单中,用户可以改变速度、说话或创建音频文件。


MS 提供的辅助工具确实涵盖了您想要做的事情。如果您查看有关屏幕抓取的文档。简而言之,每个组件都可以通过某种方式访问​​,如果您使用某些 Windows 调试工具,您可以看到其中的组件名称/结构。然后您可以使用它,但是,它很复杂,因为大多数时候您需要非常具体地了解您打算从中抓取的每个应用程序。

如果您设法进行抓取,则无需使用剪贴板,因为您可以直接访问应用程序的文本属性。这不是我必须做的事情,因此,我没有代码可以提供,但术语“屏幕抓取”应该为您指明正确的方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不使用剪贴板的情况下从活动应用程序获取选定的文本 的相关文章

随机推荐