使用Office Word从任何窗口捕获选定的文本都不成功

时间:2014-08-13 08:20:33

标签: .net vb.net

我试图编写一个托盘程序,只要用户通过光标选择它就可以在任何窗口上捕获文本。我使用的语言是VB.NET。

  1. 解决方案1:查找活动窗口并在user32中使用SendMessage方法 lib与VM_GETTEXT,VM_GETSEL ...以获取所选文本。
  2. 解决方案2:发送击键" Ctrl_C"通过user32中的SendMessage方法 lib来定位窗口句柄,然后从剪贴板中获取文本
  3. 解决方案3:备份剪贴板数据,发送按键" Ctrl_C"通过 Sendkeys.sendWait方法到目标窗口,然后获取捕获的文本 从剪贴板到最后恢复剪贴板数据。
  4. 我想从任何地方捕获文本,所以我在解决方案1中失败了因为并非所有应用程序都使用buildin win32控件来保存文本。

    解决方案2和解决方案3采用相同的方法。当我试图实现解决方案2时,我可以捕获文本形式的chrome,文件浏览器,记事本...但是使用Adobe pdf阅读器,办公室文字... ...

    解决方案3更好,现在我只能从办公室文字中捕获文字。我不知道为什么我不能将按键Ctrl_C发送到Word并将文本放入剪贴板。

    我不知道天气它还有另一种方法可以从.net程序中捕获Office Word(或Excel ...)中的选定文本吗?请告诉我 或者请告诉我有关从几乎窗口捕获所选文本的更好方法的建议。 感谢

    以下是我捕获文字的代码:

    'backup clipboard
            Dim Clipboard_Backup As IDictionary(Of Object, Object)
            Clipboard_Backup = GetClipboardData()
            Clipboard.Clear()
    
            'send Ctrl+C by sendkeys
            Try
                SendKeys.SendWait("^c")
            Catch ex As Exception
                Debug.WriteLine(ex.ToString)
            End Try
    
            'get text from clipboard
            Dim w As String = Clipboard.GetText()
            w = w.Trim()
    
            'restore clipboard
            SetClipboardData(Clipboard_Backup)
    
            Return w
    

0 个答案:

没有答案