2009-02-04 40 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