2013-03-28 33 views
1

我的代碼現在只能從文本框中獲取文本。我想從窗口中獲取文本,例如從網頁或文本文件到文本框。我該怎麼做?如何在Window中的光標下找到該單詞?

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

回答

0

以面值的問題,在充分的通用性,能夠爲所有可能的窗口做到這一點的唯一方法是屏幕抓取,並使用OCR轉換爲文本。這是因爲沒有一個單一的通用界面可以讓所有程序用來生成文本。

現在,有些事情你可以做,這將適用於很多程序。您可以使用輔助功能或自動化API。這些與屏幕閱讀器使用的技術相同。文檔可以在這裏找到:

據我所知,UIA是MSAA的繼承者,在新的應用程序中是首選。

相關問題