从其他应用程序问题捕获所选文本

我在C#中编写了一小段代码来捕获其他应用程序中的选定文本:

SendKeys.SendWait("^c"); string searchedText = Convert.ToString(Clipboard.GetText()); 

我的问题是,如果我从浏览器中捕获文本,它无法正常工作Chrome有人知道为什么会发生这种情况或者是否有其他方法可以执行相同的任务

UPDATE

我正在执行此应用程序以从任何其他应用程序捕获所选文本,并在用户按热键时将其保存在文件中。

 protected override void WndProc(ref System.Windows.Forms.Message m) { // let the base class process the message base.WndProc(ref m); // if this is a WM_HOTKEY message, notify the parent object const int WM_HOTKEY = 0x312; if (m.Msg == WM_HOTKEY) { SendKeys.SendWait("^c"); string searchedText = Convert.ToString(Clipboard.GetText()); Save(searchedText); Clipboard.Clear(); } } 

好吧,你在这里假设Ctrl-C总是要在每个应用程序中将文本复制到剪贴板。 这是一个很大的禁忌,你不知道什么会将文本复制到剪贴板。

此外,应该说如果您没有专门尝试更改剪贴板的内容,使用剪贴板是一个非常糟糕的主意。 看来你只是用它来复制另一个应用程序的内容。

话虽这么说,我建议你使用Microsoft UI自动化库。 它的参考在这里:

http://msdn.microsoft.com/en-us/library/ms747327.aspx

MSDN杂志上还有一篇关于这个主题的好文章:

http://msdn.microsoft.com/en-us/magazine/cc163288.aspx

具体而言,如果您希望获得所选文本,那么您需要查看位于以下位置的UI Automation TextPattern概述 :

http://msdn.microsoft.com/en-us/library/ms745158.aspx