質問

I have to get avatar picture from a website without ask credentials to user of my app. Just one pre-requisites, user memorize his credentials in Internet Explorer before running app.

So, I open an Internet Explorer and navigate using mshtml and SHDocVw. (Login not asked because memorized)

I can navigate to an url with the only content is the picture, but can't find how to download it.

Finded a mshtml.HTMLImg in my HtlmDocument but can't retrieve stream of the picture.

Some one have the solution ?

Thanks in advance for help.

Regards.

EDIT: Find something like that to put image data in clipboard

// avatar is my mshtml.HTMLImg

mshtml.IHTMLElement2 body2 = (mshtml.IHTMLElement2)doc.body;

mshtml.IHTMLControlRange controlRange = (mshtml.IHTMLControlRange)body2.createControlRange();

controlRange.add((mshtml.IHTMLControlElement)avatar);

controlRange.execCommand("Copy", false, System.Reflection.Missing.Value); controlRange.remove(0);

But this code is blocking on the exec command ...no error but stuck in this line.

(Info: Internet explorer 10 is used)

役に立ちましたか?

解決

hi here is a one function I am using to copy captcha images form webbrowser control without navigating to image url or refersh page ,You need to change the image parameters as per your need

U have not specified any html tag for Avatar so I am unable to edit following function which exactly suit ur need,

Private Function copyImageToClipBoard() As String
    Dim doc As mshtml.IHTMLDocument2 = DirectCast(wc.Document.DomDocument, mshtml.IHTMLDocument2)
    Dim imgRange As mshtml.IHTMLControlRange = DirectCast(DirectCast(doc.body, mshtml.HTMLBody).createControlRange(), mshtml.IHTMLControlRange)

    For Each img As mshtml.IHTMLImgElement In doc.images
        imgRange.add(DirectCast(img, mshtml.IHTMLControlElement))
        If img.src.Contains("recaptcha/api/image?c=") Or img.src.Contains("seccode.php") Then
            imgRange.execCommand("Copy", False, Nothing)
            If isManual = True Then
                Using bmp As Bitmap = DirectCast(Clipboard.GetDataObject().GetData(DataFormats.Bitmap), Bitmap)
                    Dim ofrmCap As New frmCaptcha(bmp)
                    ofrmCap.BringToFront()
                    ofrmCap.ShowDialog()
                    mCaptcha = vars.mCaptcha
                    vars.mCaptcha = Nothing
                End Using
            Else
                bgwDecaptcher.RunWorkerAsync(Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
            End If
        End If

    Next
    Return mCaptcha
End Function
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top