Webbrowser bild bestimmter Location in Picturebox

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Sekki.

    Webbrowser bild bestimmter Location in Picturebox

    Hi

    Auch wenn es Überschrift technisch sich so liest das ich ein bild einer Website in eine picturebox möchte ist es doch nicht ganz so einfach.


    Mein Ziel:

    Website mit VB Webbrowser Aufrufen bild einer an einer ganz bestimmten Location im Browser in eine picturebox laden.

    Dazu habe ich schon einiges gelesen... aber ich habe trotzdem aktuell kein plan wie ich das ganze umsetzen soll.

    Idee Nr 1 An der bestimmten stelle einen screenshot machen diesen Screenshot irgendwo abspeichern und dann in die picturebox laden. (Kein plan wie ich das umsetzen soll)

    Idee Nr 2 Webbrowser mit regex auslesen , von regex habe ich ahnung aber wie ich damit einen offenen webbrowser auslesen kann ohne eine neue instanz zu öffnen habe ich auch keine ahnung.

    Das problem ist das bild wechselt ständig und ich muss die selbe website in dem zustand nutzen können in der auch das bild angezeigt wird.


    Noch genauer wenn ich die website im Webbrowser lade Und es wird bild Nr 0001 Angezeigt dann muss ich diesen webbrowser nutzen und nicht zum beispiel einen download string öfnen hier wird ja eine neue anfrage gesendet und dann Bild 0002 angezeigt.

    Ich hoffe ich habs irgendwie verständlich erklären können. ansonsten nochmal sagen wenn was unverständlich ist

    danke



    Nachtrag regex habe ich hinbekommen nicht durchführbar ich brauche die screenshot methode



    VB.NET-Quellcode

    1. Private Sub ScreenShot(ByVal x As Integer, ByVal y As Integer)
    2. Try
    3. Browser.ClientSize = New Size(220, 50)
    4. Browser.Focus()
    5. Dim bitmap As System.Drawing.Bitmap = New System.Drawing.Bitmap(220, 50)
    6. Browser.Document.Window.ScrollTo(New Point(x, y))
    7. Browser.DrawToBitmap(bitmap, Browser.Bounds)
    8. bitmap.Save("C:\Users\User\Documents\Visual Studio 2015\Projects\WindowsApplication7\WindowsApplication7\bin\Debug\Temp.jpg")
    9. 'PictureBox1.ImageLocation = Temp
    10. Catch exception As System.Exception
    11. ProjectData.SetProjectError(exception)
    12. Interaction.MsgBox(exception.Message, MsgBoxStyle.OkOnly, Nothing)
    13. ProjectData.ClearProjectError()
    14. End Try
    15. End Sub



    Habe das gefunden wenn ich das aber so mache bleibt das gespeicherte bild leer Schwarz

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „bigbase“ ()

    Ich habe vom Thema komplett vorbeigeschossen, vermute ich. Ich packe trotzdem mal das ganze in einen Spoiler, damit der Post nicht einfach leer ist. Vielleicht hilft es dir weiter.

    "Spoiler"

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. htmlDocument = WebBrowser1.Document
    3. AddHandler htmlDocument.MouseOver, AddressOf Document_MouseOver
    4. End Sub
    5. Private Sub Document_MouseOver(sender As Object, e As HtmlElementEventArgs)
    6. TextBox1.Text = TryCast(sender, HtmlDocument).GetElementFromPoint(e.ClientMousePosition).GetAttribute("src")
    7. End Sub





    Und hier nochmal die einfachere Methode(meiner Meinung nach) ein Bild zu speichern:

    VB.NET-Quellcode

    1. Dim elem As HtmlElement = WebBrowser1.Document.GetElementById("im_sec")
    2. Dim cap As Object = WebBrowser1.Document.DomDocument.bOdy.createControlRange()
    3. cap.Add(elem.DomElement)
    4. cap.execCommand("Copy")
    5. PictureBox1.Image = My.Computer.Clipboard.GetImage



    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Sekki“ ()

    Regex ist für HTML überhaupt nicht geeignet, ich empfehle hier die Library HtmlAgilityPack: Habe damit sehr gute Erfahrungen gemacht, es kommt auch mit "real-world-html", also fehlerhaftem HTML, ganz gut klar. Hier kannst du mit geschickten Filtern schnell dein Bild finden.

    Wenn es wirklich Screenshots sein müssen, empfehle ich GDI+ (SO-Thread):
    1. Erstelle eine Bitmap, in die der Screenshot landen soll
    2. Erstelle ein Graphics-Objekt vom Bitmap (Graphics.CreateFromImage)
    3. Erstelle den Screenshot mithilfe des Graphics-Objekt
    4. Weise den Screenshot der Image-Eigenschaft deiner Picturebox zu!
    Wichtig: Graphics-Objekte und Bitmaps nach Benutzung wieder freigeben.
    @Marcus Gräfe

    Stimmt.. Der Spoiler hat den Code wahrscheinlich so hingerichtet.. :/ Danke!
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.