Webbrowser Bedienung mit der Maus nicht zulassen

  • VB.NET

Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von HDebus.

    HDebus schrieb:

    Der Fehler kommt in der Zeile siehe Screenshot.

    Dabei handelt es sich um einen Copy&Paste Fehler aus einem Projekt von mir. Entfern diese Zeile einfach.

    Edit:// @HDebus
    Wie gesagt ich kenne mich auch gerade nicht aus, bzw weiß nicht was dein Problem jetzt noch ist :(
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Hey, ich nochmal,

    wir / ich nähere mich so langsam, dank Deiner Hilfe, aber der ScreenShot wird noch zur falschen Zeit gemacht.

    Ich weiß aber nicht wo ich den Aufruf noch hinsetzen soll :=(

    Vielleicht hast Du / Ihr ja noch eine Idee

    Hier mal die komplette Source:


    VB.NET-Quellcode

    1. Imports System.Threading
    2. Public Class Form1
    3. Private bLoaded As Boolean = False
    4. Private WeiterGehts As Boolean = False
    5. Private ms As Integer
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. AdvWebbrowser1.Visible = False
    8. Panel1.Visible = True
    9. bLoaded = False
    10. WebBrowser1.Navigate("192.168.xxx.x")
    11. Do While Not bLoaded
    12. System.Windows.Forms.Application.DoEvents()
    13. Loop
    14. WebBrowser1.Document.GetElementById("uiPass").InnerText = "Passwort"
    15. WebBrowser1.Document.GetElementById("submitLoginBtn").InvokeMember("click")
    16. online_Monitor()
    17. ApplyTransparentOverlay(Color.FromArgb(50, SystemColors.Control), AdvWebbrowser1)
    18. End Sub
    19. Private Sub online_Monitor()
    20. bLoaded = False
    21. ' Warten, bis Webseite vollständig geladen wurde
    22. Do While Not bLoaded
    23. System.Windows.Forms.Application.DoEvents()
    24. Loop
    25. WebBrowser1.Document.Links(2).InvokeMember("click") 'Online-Monitor
    26. End Sub
    27. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    28. bLoaded = True
    29. End Sub
    30. Private Sub ApplyTransparentOverlay(ByVal c As Color, ByVal wb As AdvWebbrowser)
    31. Dim bit As Bitmap = TakeScreenShot(wb)
    32. Dim g As Graphics = Graphics.FromImage(bit)
    33. g.FillRectangle(New SolidBrush(c), New Rectangle(0, 0, bit.Width, bit.Height))
    34. Dim p As New Panel
    35. p.Size = Size
    36. wb.Controls.Add(p)
    37. p.Dock = DockStyle.Fill
    38. g = p.CreateGraphics()
    39. g.DrawImage(bit, 0, 0)
    40. End Sub
    41. Private Function TakeScreenShot(ByVal Control As Control) As Bitmap
    42. Dim tmpImg As New Bitmap(Control.Width, Control.Height)
    43. Using g As Graphics = Graphics.FromImage(tmpImg)
    44. g.CopyFromScreen(Control.PointToScreen(New Point(0, 0)), New Point(0, 0), New Size(Control.Width, Control.Height))
    45. End Using
    46. PictureBox1.Image = tmpImg
    47. Return tmpImg
    48. End Function
    49. End Class


    Ergebnis siehe Screenshot
    Bilder
    • fritz7.JPG

      23,82 kB, 393×270, 81 mal angesehen
    Punkt 1. Wieso hast du folgendes implementiert:
    Webbrowser Bedienung mit der Maus nicht zulassen

    2. Du musst herausfinden, wann die komplette Seite geladen ist, dann kannst du

    VB.NET-Quellcode

    1. ApplyTransparentOverlay(Color.FromArgb(50, SystemColors.Control), AdvWebbrowser1)
    Anwenden.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    zu 1. Da habe ich festgestellt, welchen Screenshot er macht zu welchem Zeitpunkt. Und der AdvWebbrowser1 zeigt immer einen grauen Hintergrund an und nicht den des Webbroser1. Dann habe ich es mit der PictureBox versucht und da habe ich dann gesehen was für einen Screenshot er macht und wann. Aber .....
    zu 2. den Richtigen habe ich noch nicht gefunden. Die Webseite ist vom Rahmen her geladen. Der Rest noch nicht, aber die Form ist ebend auch noch nicht geladen? Daher immer noch ein Hintergrund der nichts mit dem Prog. zu tun hat

    Holger
    aus meiner Sicht wäre es doch einfacher einfach einen Webbrowser zu schreiben der bei Aufruf der URLs die ich Person x vorenthalten will einfach wo anders hin navigiert. Dann könnte ich mir das komplette drüber legen von Controls Positionierung etc. die evtl. bei anderer Bildschirmauflösung nicht mehr funktioniert sparen.

    Oder was auch eine alternative Möglichkeit wäre den HTML Code nach herunterladen der Seite nachträglich so zu manipulieren, dass die entsprechenden Links entfernt werden. Wenn das immer ein bestimmtes Menü in deiner Fritzbox ist ginge das wahrscheinlich viel schneller, sicherer und einfacher obendrein
    Hallo nochmal,

    da das alles nicht so richtig funzt, versuche ich nun erstmal die nicht so elegante aber doch effektive lösung, die Mouse nicht auf das WebbrowserControl setzen zu können.
    Also will ich beim Mouseover die Maus automatisch wieder auf die Linke obere Ecke des Controls plazieren.

    Dazu muss ich erstmal die linke obere Ecke ermitteln um dann die Maus zu setzen (den Curser)

    ich verusche das wie folgt:

    VB.NET-Quellcode

    1. Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
    2. Dim p As Point = Panel1.FindForm().PointToClient(Panel1.Parent.PointToScreen(Panel1.Location))
    3. p.Y = p.Y
    4. p.X = p.X
    5. Windows.Forms.Cursor.Position = New Point(p.X, p.Y)
    6. End Sub


    Das Ergebnis ist nun folgendes.

    1. Die Maus kann nichts auf dem Webbrowser machen :=))
    2. Die Position ist allerdings nicht ganz korrekt. Hier wird die Maus um ganau so viele Picel nach oben links versetzt, wie das Form zum Bildschirm von oben links nach rechts unten versetzt ist ;=(

    was mache ich hier falsch

    Danke
    Holger
    Hallo Mokki,

    das habe ich auch so gesehen, aber gibt es nix elegantes??

    ansonsten werde ich den Thread schließen, meine Box so konfigurieren, dass man sein KW eingeben muss und dann über die Benutzersteuerung das ganze abfangen wer was darf :=((


    Holger
    Naja du kannst die absolute Position berechnen, indem du die realtive Position vom Pannel mit der absoluten Position der Form verrechnest. Das Problem ist das die Form nicht ganz der relativen Position 0,0 entspricht, da die Leiste mit Schliesen usw. Platz verbraucht.

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread