1

我的代码现在只能从文本框中获取文本。我想从窗口中获取文本,例如从网页或文本文件到文本框。我该怎么做?

    private void textBox2_MouseMove(object sender, MouseEventArgs e)
    {
        if (!(sender is TextBox)) return;
        var targetTextBox = sender as TextBox;
        if (targetTextBox.TextLength < 1) return;

        var currentTextIndex = targetTextBox.GetCharIndexFromPosition(e.Location);
        var wordRegex = new Regex(@"(\w+)");
        var words = wordRegex.Matches(targetTextBox.Text);
        if (words.Count < 1) return;

        var currentWord = string.Empty;
        for (var i = words.Count - 1; i >= 0; i--)
        {
            if (words[i].Index <= currentTextIndex)
            {
                currentWord = words[i].Value;
                break;
            }
        }

        if (currentWord == string.Empty) return;
        //toolTip1.SetToolTip(targetTextBox, currentWord);
        textBox3.Text = currentWord;
    }
4

1 回答 1

0

从表面上看问题,一般来说,能够对所有可能的窗口执行此操作的唯一方法是屏幕抓取并使用 OCR 转换为文本。这是因为没有一个通用接口可供所有程序用来生成文本。

现在,您可以做一些适用于许多程序的事情。您可以使用可访问性或自动化 API。这些技术与屏幕阅读器使用的技术相同。文档可以在这里找到:

据我了解,UIA 是 MSAA 的继承者,在新应用程序中是首选。

于 2013-03-28T11:56:51.613 回答