2011-12-24 13 views
1

私のVB6プログラムでのHTMLコードをダウンロードしたいと思います。 Webbrowserコントロールが良いですが、それがハングアップしても、それだけでHTMLHTMLのみを取得するinet&webbrowserコントロールの代わりに?

Inetコントロールが優れているが、それは「バグだらけ」

あるを得るために、このようなJavaScriptを無効にする必要などの問題、PICなどを持っています

他のコントロールはありますか?

+0

[ファイルのダウンロード - VB6]の可能複製(http://stackoverflow.com/questions/1976152/download-ファイルをvb6) – MarkJ

答えて

4

ページのHTMLのみをダウンロードしたい場合は、Winsockのコントロールを簡単に使用できます。

Private Sub Form_Load() 
    Winsock1.Connect "stackoverflow.com", 80 
End Sub 

Private Sub Winsock1_Close() 
    Winsock1.Close 
End Sub 

Private Sub Winsock1_Connect() 
    Winsock1.SendData "GET /questions/8624871/vb6-alternative-to-inet-webbrowser-control HTTP/1.1" & vbCrLf & "Host: stackoverflow.com" & vbCrLf & vbCrLf 
End Sub 

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 
    Dim s As String 

    Winsock1.GetData s, vbString 
    RichTextBox1.Text = RichTextBox1.Text & s 
End Sub 
+0

Hrm、これはより良い解決策です。私は実際に質問を読むべきだったでしょう... +1 –

+0

どのくらいの割合のページがダウンロードされてknw? –

+1

@NokImchenヘッダーに 'Content-Length:XXXXX'があり、' bytesTotal'の累積値を比較できます。ヘッダーに 'Content-Length'がない場合は、接続が閉じられたときに完了したことだけがわかります。 – GSerg

3

他の.NETコントロールと同じように、VB6アプリケーションにWebKit.NETをホストすることをお勧めします。

これは.NETコントロールですが、これはVB6でネイティブですぐに動作しないことを意味します。VB6アプリケーションで.NETで開発されたコントロールを使用することは可能です。マイクロソフトはInterop Forms Toolkitを2つの言語間の相互運用性メカニズムとして提供しています。

基本的には、.NET言語(VB.NETである必要はなく、C#を使用することもできます)を使用してUserControlを含むActiveX DLLを作成し、COM相互運用機能用に登録します。次に、このActiveXコントロールをVB 6プロジェクトに追加し、発生させたイベントを処理するために接続することができます。

これを行う方法の詳細については、here on CodeProjectまたはhere on CodeGuruのサンプルを参照してください。実際には、このアプローチは実装するのが簡単ではありません。 VB6が普及していて誰もVB6の新しいコントロールを開発していないとき、IEがブラウザ市場を支配していたことを考慮すると、バンドルされたWebBrowserコントロールの唯一の選択肢だと思う。

+0

これを振り返ると、私は質問を誤解しているのを見ています(私の防衛では、編集されました、[元の] http://stackoverflow.com/revisions/8624871/1) 。他の解決策のいくつかは、この特定のタスクに対してはるかに優れています。しかし、私は自分の答えを削除しません。組み込みWebBrowserコントロールの他の制限を打ち破った人には役に立ちます。 –

+0

はい私は自分の解決策を削除してくれてうれしく思います。私はあなたの答えの多くが非常に数年後に役立つことを発見した、ありがとう。 – kjack

2

あなたはWebKitの相互運用性を必要としない、あなたはInetを必要としない、あなたはWinSockを必要としない、API呼び出しを必要としません。ネイティブのVB6コードを使用して簡単にやりましょう。サンプルコード付きの優れたarticle by Karl Petersonがあります。

1

これは良いコードであり、ASP、VBScriptでも動作します。

Function GetHTMLCode(strURL) As String 
    Dim strReturn     ' As String 
    Dim objHTTP      ' As MSXML.XMLHTTPRequest 
    If Len(strURL)=0 Then EXIT FUNCTION 
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
    objHTTP.open "GET", strURL,False 
    objHTTP.send     'Get it. 
    strReturn =objHTTP.responseText 
    Set objHTTP = Nothing 
    GetHTMLCode = strReturn 
End Function 

今、この(常にプロトコルで書く)のように、この関数を呼び出します。

Msgbox GetHTMLCode("http://www.stackoverflow.com") 
関連する問題