2009-02-04 39 views
-1

我写了一个很小的代码示例在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(); 
     } 
    } 
+0

我不知道这是一个应该回答的问题。你为什么试图捕捉某人浏览器的击键? – 2009-02-04 23:31:02

+0

请给出一些背景,为什么你这样做。否则,人们会怀疑你正在尝试写一些恶意的东西,所以如果没有一些解释,你可能会被拒绝投票或者更糟。 – 2009-02-04 23:37:40

回答

4

那么,我们假定你是在这里,按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 Overview

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