C# 以编程方式在浏览器中获取选定文本

C# 以编程方式在浏览器中获取选定文本,c#,html,cross-browser,screen-scraping,text-extraction,C#,Html,Cross Browser,Screen Scraping,Text Extraction,在我的windows应用程序中,我想检测“Internet Explorer”、Firefox和任何其他浏览器中的选定文本 您知道我应该使用哪段代码来实现这一点吗 这个想法不是在IE中搜索文本,而是在IE中“捕获所选文本”。顺便说一句,不仅是IE,还有任何具有焦点的windows应用程序 我能想到的一件事是模拟ctrl+c复制选定的文本,然后读取剪贴板,但我也不喜欢这种解决方案 我几乎可以肯定应该有一种方法可以使用Windows API获取所选文本,我知道使用EM_GETSELTEXT、WM_G

在我的windows应用程序中,我想检测“Internet Explorer”、Firefox和任何其他浏览器中的选定文本

您知道我应该使用哪段代码来实现这一点吗

这个想法不是在IE中搜索文本,而是在IE中“捕获所选文本”。顺便说一句,不仅是IE,还有任何具有焦点的windows应用程序 我能想到的一件事是模拟ctrl+c复制选定的文本,然后读取剪贴板,但我也不喜欢这种解决方案


我几乎可以肯定应该有一种方法可以使用Windows API获取所选文本,我知道使用EM_GETSELTEXT、WM_GETTEXT、EM_GETSEL可能很有用,但它们在IE或任何其他浏览器中都不起作用,这是我的问题……

这是一个相当高的要求。我认为,使用IE实现这一目标的可能性微乎其微,在IE中,您可以将“外部”浏览器中加载的相同页面加载到控件中,并获取所选文本。据我所知,并根据长期以来一直寻求这样做的人的建议,Firefox没有一种自动化模型可以在不付出巨大努力和风险的情况下访问C#代码


你能控制这个页面吗?您可能会考虑使用jQuery注入一些东西来使用Ajax调用来发布选择,并设置一个服务器来侦听该调用。

< P>我建议您使用API来测试一个特定的字符串存在的网页。WatiN目前支持IE6、7和8,并且有一个用于测试Firefox2.x和3.x的版本。本文介绍了如何使用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();
        }
    }
}

VB脚本是实现这一点的一种方法,但仅在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>
选项显式
Dim objShell
设置objShell=CreateObject(“WScript.Shell”)
运行“iexplore.exe”http://www.google.com“'或您需要从中复制的任何页面
WScript.Sleep 7000'只需等待IE加载页面
objShell.SendKeys“^a”选择全部
objShell.SendKeys“^c”复制到剪贴板

我只是好奇,但你为什么要这么做?嗨,Zee99,我只是建议你用你在我的答案评论中发布的信息更新你的问题和标签。Thank.ProfK,WatiN CTP允许您以编程方式在Firefox浏览器中访问呈现的网页。感谢MagicAndi,但其目的不是在IE中搜索文本,而是在IE中“捕获所选文本”。顺便说一句,不仅是IE,还有任何具有焦点的windows应用程序。