私はこれを見つけました(wはWebBrowserオブジェクトです)。
最初に、WebBrowserのサイズをキャプチャ画像サイズに設定します。これは、以下のコードがWebBrowserで表示される部分を占めるためですが、WebBrowser自体が表示される必要はありません。
'scroll to the picture, so we have a WebBrowser object just like a picture box
For Each i As HtmlElement In w.Document.GetElementsByTagName("img")
If i.GetAttribute("src").Contains("here string to identify captcha image") Then
i.ScrollIntoView(True)
End If
Next
'Create bitmap
Dim bmp As New Bitmap(w.Width, w.Height, Imaging.PixelFormat.Format32bppArgb)
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmp)
Dim hdc As IntPtr = g.GetHdc
'Do the Drawing
Dim pUnk As IntPtr = System.Runtime.InteropServices.Marshal.GetIUnknownForObject(w.ActiveXInstance)
OLE32.OleDraw(pUnk, 1, hdc, New Rectangle(0, 0, w.Width, w.Height))
System.Runtime.InteropServices.Marshal.Release(pUnk)
'Release DC and dispose
g.ReleaseHdc(hdc)
g.Dispose()
また、OLE32クラスを宣言する必要があります
Public Class OLE32
Public Declare Function OleDraw Lib "ole32.dll" (ByVal pUnk As IntPtr, ByVal dwAspect As Integer, ByVal hdcDraw As IntPtr, ByRef lprcBounds As Rectangle) As Integer
End Class
このようにして、コントロールのコンテンツをbmpとして取得し、新しいページを要求せずにOCRを実行できます。