2012-07-03 3 views
0

.net 웹 브라우저 컨트롤을 사용하여 여러 개의 브라우저 창을 시작하고 HTML을 가져 와서 상호 작용할 수 있기를 원합니다. 문제는 C# 웹 브라우저 컨트롤에 STA 스레딩이 필요하며 이로 인해 프로그램이 느려지고 오류가 발생하기 쉽습니다. 실제 IE 브라우저 또는 Chrome, Firefox 등과 대화 할 수있는 방법입니까?C# webbrowser 컨트롤없이 웹 브라우저 제어

저는 제 3 자 솔루션과 물건을 지급 받았지만 믿을만하고 작동하는 무료 라이브러리를 알고 있는지 궁금합니다. 내가하고있는 일에 HttpWebRequest를 사용할 수 없으므로 제발 제안하지 마세요.

Windows에서 C#을 사용하여 실행됩니다.

+1

WebKit.NEt은 좋은 출발점. –

답변

1

Awesomeium은 WebBrowser 컨트롤과 마찬가지로 .NET 래퍼를 통해 대화 할 수있는 Webkit/Chromium (Chrome) 기반 브라우저입니다. STA 스레딩 요구 사항에 잘 모르겠습니다.

STA 스레딩의 경우 응용 프로그램이 "느리고 오류가 발생하기 쉽습니다"- 이상하게 들릴 수도 있지만 해결 방법을 조사해야합니다.

+0

시도해 보겠습니다. – kyleb

+0

양식 필드를 채우고이 컨트롤로 제출 버튼을 클릭하려면 어떻게해야합니까? .NET IE 브라우저를 통해 element.SetAttribute() 및 element.InvokeMember ('click')를 말할 수 있습니다. 이 sdk에서 이것과 동일한 것은 무엇입니까? – kyleb

+0

나는 그것을 직접 시도한 적이 없지만 문서에 따라 임의의 [Javascript] (http://awesomium.com/docs/1_6_4/sharp_api/html/0cb62099-bd17-342a-d988-be8302d611c2.htm)를 실행할 수 있습니다. 메소드를 사용하면 페이지와 상호 작용할 수 있습니다. Javascript에서 콜백을 설정하여 JS가 비동기 적으로 사용자에게 알릴 수 있도록 할 수도 있습니다. 나는 100 % 당신이 C#에서 DOM에 직접 접근 할 수 있다고 확신하지는 않는다.하지만 JS에서 그렇게해야 할 수도있다. –

1

IE의 경우에만. 무료 : Microsoft 인터넷은 내가 WebKit.NET 사용한

foreach (InternetExplorer brIns in _allWindows) 
      { 
       var htmlDoc = brIns.Document as HTMLDocument; 
       if (htmlDoc != null && htmlDoc.all.item(elementName) != null) 
       { 
        var elem = htmlDoc.all.item(elementName) as HTMLInputElement; 
        if (elem != null && attributeName == null) 
        { 
         _ieCurrentDoc = htmlDoc; 
         _currentHtml = htmlDoc.documentElement.outerHTML; 
         return true; 
        } 
        if (elem != null && elem.getAttribute(attributeName) != null) 
        { 
         _ieCurrentDoc = htmlDoc; 
         _currentHtml = htmlDoc.documentElement.outerHTML; 
         return true; 
        } 

       } 
      } 
+0

아래에 같은 ActiveX를 사용하고 있으며 STA가 필요합니다. – kyleb

2

등의 작업을 수행 할 수있는 이들과 함께

using SHDocVw; 

마이크로 소프트 HTML 개체 라이브러리

using mshtml; 

을 제어합니다. 그 무료 및 작품 (플래시, CSS를 지원, 제대로 렌더링, 자바 스크립트 엔진을 가지고) 위대한 작품. 당신이하고있는 일을 위해 광범위 할 수도 있고 아닐 수도 있습니다.

http://webkitdotnet.sourceforge.net/

는 가이드의 많음이있다, 그리고 데모는 완전한 기능의 탭 시스템을 가지고 있습니다.

편집 : 나는 그것으로 장난되었고, 데모

enter image description here

1

또는 다른 웹 브라우저 컨트롤의 향상된 버전 만든 : http://code.google.com/p/geckofx/

Embeding Firefox Brower In C# Using GeckoFX

+0

Geckofx에는 STA가 필요합니다 (최소한 충돌을 원하지 않는 경우) – Tom

+1

또한 링크의 geckofx 버전은 아주 오래된 Firefox 버전에서만 작동합니다. 여기에 최신 버전에 대한 링크가 있습니다. https://bitbucket.org/geckofx/geckofx-13.0/downloads – Tom

관련 문제