Получить выбранный текст в браузере программно - PullRequest
4 голосов
/ 04 января 2010

В моем приложении Windows я хочу обнаружить выбранный текст в «Internet Explorer», Firefox и любом другом браузере.

Знаете ли вы, какой код я должен использовать для достижения этой цели?

Идея состоит не в том, чтобы искать текст в IE, а в том, чтобы «захватить выделенный текст» в IE. Кстати не только IE, но и любое Windows-приложение, которое имеет фокус Одна вещь, о которой я могу подумать, это смоделировать Ctrl + C, чтобы скопировать выделенный текст, а затем прочитать буфер обмена, но мне это решение тоже не нравится.

Я почти уверен, что должен быть способ получить выделенный текст с помощью Windows API, я знаю, что использование EM_GETSELTEXT, WM_GETTEXT, EM_GETSEL может быть полезным, но они не работают в IE или любом другом браузере, вот моя проблема. ...

Ответы [ 3 ]

1 голос
/ 04 января 2010

Я бы посоветовал вам изучить использование WatiN API для проверки веб-страницы на наличие определенной строки. В настоящее время WatiN поддерживает IE 6, 7 и 8, и существует CTP версия для тестирования с Firefox 2.x и 3.x. Эта статья описывает, как использовать WatiN для поиска фрагмента текста на веб-странице, и на сайте WatiN есть документация, в которой описано , как вызывать WatiN из вашего приложения .

Начальной отправной точкой для вашего кода будет:

using System;
using WatiN.Core;

public static class WatiNExample
{

    public static bool CheckUrlForText(string p_sUrl, string p_sText)
    {
        // Open a new Internet Explorer window and
        // go to the google website.
        IE ie = new IE(p_sUrl);

        try    
        {
            return ie.Text.Contains(p_sText));
        }
        finally
        {
            ie.Close();
        }
    }
}
1 голос
/ 04 января 2010

Это довольно высокий заказ. Я думаю, что у вас может быть только небольшой шанс достичь этого с IE, где вы можете загрузить ту же страницу, что загружена во «внешний» браузер, в элемент управления WebBrowser и получить выбранный текст. Насколько мне известно, и по совету человека, который давно стремился сделать что-то подобное, просто не существует модели автоматизации для Firefox, которая была бы доступна для кода C # без огромных усилий и риска.

Есть ли у вас контроль над страницей? Возможно, вы захотите внедрить что-то вроде jQuery, чтобы опубликовать выборку с помощью вызова Ajax, и настроить сервер для прослушивания этого вызова.

0 голосов
/ 08 марта 2010

VB Script - это способ достижения этого, но только в IE и только для копирования (все веб-страницы) в буфер обмена. Затем вы можете вставить его и манипулировать полученной строкой в ​​любом приложении, которое вам нравится.

Option Explicit <br>
Dim objShell <br>
Set objShell=CreateObject("WScript.Shell") <br>
objShell.Run "iexplore.exe http://www.google.com" ' or whatever page you need to copy from <br>
WScript.Sleep 7000 ' just to wait IE to load the page <br>
objShell.SendKeys "^a" ' selects all <br>
objShell.SendKeys "^c" ' copy into clipboard <br>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...