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

Я не знаю, что это вопрос, на который нужно ответить. Почему вы пытаетесь захватить нажатие клавиш у кого-то в браузере? –

+0

Просьба указать, почему вы это делаете. В противном случае люди будут подозревать, что вы пытаетесь написать что-то вредоносное, так что без какого-либо объяснения вы рискуете попасть вниз или проголосовать. –

+0

Не могу проверить это сейчас, так как у меня нет Chrome, установленного в этом поле, но попробовали ли вы проверить код Chrome, чтобы подтвердить, что они обрабатывают CTRL + C так, как вы ожидаете? – arul

ответ

4

Ну, вы предполагаете, что Ctrl-C всегда будет копировать текст в буфер обмена в каждом приложении. Это большой нет-нет, вы не знаете, что скопирует текст в буфер обмена.

Кроме того, следует сказать, что использование буфера обмена для этого - очень плохая идея, если вы специально не пытаетесь изменить содержимое буфера обмена. Кажется, вы просто используете его для копирования содержимого из другого приложения.

При этом я рекомендую вам использовать библиотеку автоматизации Microsoft UI для этого. Ссылка на это здесь:

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

Существует также хорошая статья на эту тему в журнале MSDN:

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

Specifcally, если вы хотите, чтобы получить выделенный текст, затем вы хотите посмотреть на UI Automation TextPattern Overview, расположенного по адресу:

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

+0

Мой вопрос: используя эту автоматизацию microsoft ui, я могу захватить выделенный текст из других приложений? –

+0

Да, вы можете. Я отредактировал свой ответ, чтобы подумать, где вам нужно посмотреть. – casperOne

+0

Спасибо человеку, швы, что эти вещи помогут мне слишком много, но мне нужно будет подробно прочитать и найти несколько примеров и написать несколько примеров, чтобы я мог его полностью понять. Кстати, о чем-то новом, о котором я раньше не думал, Большое спасибо –