Webbrowser Bedienung mit der Maus nicht zulassen

  • VB.NET

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

    Webbrowser Bedienung mit der Maus nicht zulassen

    Hey,

    wie kann ich die Bedienung einer Website mit der Maus im Webbrowser sperren.

    Ich will das man nur das anklicken kann, was ich zulasse. (Per MenüStrip oder Button, das läuft auch schon alles soweit)

    Danke
    Holger
    Hey Mokko,

    ich lass so den Zugrif auf Geräten zu, die PW geschützt sind. Ich möchte aber, dass die Anwender nur auf bestimmte Dinge zugreifen können, und so könnte ich das steuern.

    z.B.: Zugriff auf einen Router um den Status abzufragen. Mehr aber auch nicht.

    Wenn nun aber die Seite angezeigt wird, kann man auf alle weiteren Buttons / Links im WebBrowser klicken und somit kommt man auf Dinge, die man besser nicht macht.

    Holger
    Hallo Mokki,

    ja leider, aber das bleibt "Hausintern" ;=) (Familie)

    Aber ich kann nicht immer überall hinfahren etc. Will mir nur einiges einfacher machen, aber die anderen sollen sich nicht auch noch einfach verklicken können. Also mit dem PW ist das nicht so schlimm.

    Normalerweise hast Du natürlich recht und ich würde das PW dann auch nicht mit herausgeben.


    Aber kann man nun überhaupt die Bedienung im Webbroser sperren und nur per Button zulassen?



    Holger
    Kann mir hier vielleicht jemand noch helfen?

    ich habe nun viel gesucht, aber nichts gefunden.

    Ich müsste ja z.B.: eine Picturebox über den Webbrowser legen, aber wie bekomme ich nun die Picturebox durchsichtig?


    z.B.: das mit dem Transparencykey oder Opacity (nur für eine Form) geht einfach nicht.


    Danke
    Holger
    Ohne irgendwas zu im HTML Code zu editieren, bzw. zu entfernen kannst du die .Enabled Eigenschaft verwenden:
    Einzelne Elemente

    Mit dieser Methode kannst du einzelne Elemente de- oder aktivieren:

    VB.NET-Quellcode

    1. webBrowser.Document.GetElementById("myCombo").Enabled = False
    2. webBrowser.Document.GetElementById("myCombo").Enabled = True


    Edit://
    Ich bin nun darauf gestoßen:
    Das Webbrowser-Control besitzt zwar keine .Enabled-Eigenschaft an sich. Dennoch lässt sich dies, über einen kleinen Umweg, bewerkstelligen.
    Grundsätzlich einfach mit: CType(Me, System.Windows.Forms.Control).Enabled = value
    Dennoch hier schnell als Control, damit du es direkt als Eigenschaft hast:

    VB.NET-Quellcode

    1. Public Class AdvWebbrowser : Inherits WebBrowser
    2. Private _Enabled As Boolean = True
    3. <Browsable(True)>
    4. <DefaultValue(True)>
    5. <Description("Indicates, whether this webbrowser is enabled or not.")>
    6. <Category("Behavior")>
    7. Public Property IsEnabled As Boolean
    8. Get
    9. Return _Enabled
    10. End Get
    11. Set(value As Boolean)
    12. _Enabled = value
    13. CType(Me, System.Windows.Forms.Control).Enabled = value
    14. End Set
    15. End Property
    16. End Class


    Das Ganze dürfte auch ein eindeutig schönerer Weg sein als von @Mokki oder @ChOoSeMyNaMe vorgeschlagen wurde.

    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


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

    Wollte dich auch nurmal darauf hinweisen, habe bemerkt dass du nach soetwas gesucht hast :D
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Hallo Gather, hallo Mokki

    ich habe also folgendes in einer neuen Class eingegeben:

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Public Class Webbrowser_Transparent : Inherits WebBrowser
    3. Private _Enabled As Boolean = True
    4. <Browsable(True)>
    5. <DefaultValue(True)>
    6. <Description("Indicates, whether this webbrowser is enabled or not.")>
    7. <Category("Behavior")>
    8. Public Property IsEnabled As Boolean
    9. Get
    10. Return _Enabled
    11. End Get
    12. Set(ByVal value As Boolean)
    13. _Enabled = value
    14. CType(Me, System.Windows.Forms.Control).Enabled = value
    15. End Set
    16. End Property
    17. End Class


    Danach habe ich dann natürlich das neue Control in meiner Toolbox (siehe Screenshot1):

    Wenn ich das dann nun einbauen und die Parameter wie folgt setze, sieht es aber aus wie auf dem Screenshot2:

    VB.NET-Quellcode

    1. Private Sub OnlineAuslastungToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OnlineAuslastungToolStripMenuItem.Click
    2. Webbrowser_Transparent1.IsEnabled = True




    Das ich dadurchklicken kann oder nicht klappt, aber wie bekomme ich es nun auch noch transparent, so dass der Hintergrund vom Webbrowser angezeigt wird.


    Ich glaube, dass es an der folgenden Zeile liegt

    VB.NET-Quellcode

    1. Public Class Webbrowser_Transparent : Inherits WebBrowser

    Denn eigentlich heißt der Webbrowser über dem das Transparente Control liegt Webbrowser1

    Der wird mir aber nicht angeboten

    Was mache ich hier falsch?

    Danke
    Holger
    Bilder
    • fritz2.JPG

      13,81 kB, 203×92, 385 mal angesehen
    • fritz1.JPG

      25,39 kB, 384×348, 129 mal angesehen
    Uhm.. Wie genau machst du denn den Webbrowser halb durchsichtig? (transparent)
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ja zeig mir mal das andere Control :) (Das halbtransparente)

    Edit:// @HDebus Und außerdem, nenn den Webbrowser doch um, denn mit einem Unterstrich ist das ganze eher unschön. --> z.B. TransparentWebbrowser
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Hey, die Namespaces werde ich noch machen, aber da ist nichts halbtransparentes.

    Es gibt hier das Form
    Darauf befindet sich das Menüstrip
    Darunter zwei Panles
    Auf Panel 1 befindet sich das Webbrowswer Control (was die Fritzbox anzeigt)
    Darauf dann das Control von Dir.

    Dann gibt es noch das zweite Panel und daruf befindet sich ein Button eine TextBox und ein Listview (wir erst nach klicken auf einem Menüpunkt sichtbar und das Panel 1 ausgeblendet.

    Also ich sehe nicht halbtransparentes vielleicht sieht man das ja auf dem Screenshot

    Holger



    Edit

    nun habe ich das Panel2 auf die richtige Postition zurückgesetzt, und dann bleibt das Control irgendwie im Vordergrund. Ich habe es aber auf das Panel1 gelegt. (siehe Screen4)


    Soll ich mal das Projekt mal mailen? oder schick mir ne Mail und ich schicke Dir nen Link zum downloaden
    Bilder
    • fritz3.JPG

      28,22 kB, 611×420, 114 mal angesehen
    • fritz4.JPG

      13,01 kB, 245×226, 108 mal angesehen

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

    Jagut.. ich habe auch nirgends etwas eingebaut dass ein halbtransparentes control ermöglicht :)
    Ich weiß leider noch nicht ganz was du willst.

    Aber Controls in den Vordergrund bringen kannst du entweder im Designer (Rechtsklick -> In den Vordergrund) oder via. .BringToFront()
    Bzw. kannst du natürlich auch andere in den Hintergrund bringen.

    Falls du nun über dem Webbrowser eine Art "Transparentes Panel" haben willst probier folgendes.

    VB.NET-Quellcode

    1. Private Sub ApplyTransparentOverlay(c As Color, wb as AdvWebbrowser)
    2. Dim bit As Bitmap = TakeScreenShot(wb)
    3. Dim g As Graphics = Graphics.FromImage(bit)
    4. g.FillRectangle(New SolidBrush(c), New Rectangle(0, 0, bit.Width, bit.Height))
    5. Dim p As New Panel
    6. p.Size = Size
    7. wb.Controls.Add(p)
    8. p.Dock = DockStyle.Fill
    9. g = p.CreateGraphics()
    10. g.DrawImage(bit, 0, 0)
    11. End Sub
    12. Private Function TakeScreenShot(ByVal Control As Control) As Bitmap
    13. Dim tmpImg As New Bitmap(Control.Width, Control.Height)
    14. Using g As Graphics = Graphics.FromImage(tmpImg)
    15. g.CopyFromScreen(Control.PointToScreen(New Point(0, 0)), New Point(0, 0), New Size(Control.Width, Control.Height))
    16. End Using
    17. Return tmpImg
    18. _BitmapCreated = True
    19. End Function
    20. 'Aufruf:
    21. ApplyTransparentOverlay(Color.fromargb(50, SystemColors.Control), AdvWebbrowser1)
    22. 'Entfernen:
    23. AdvWebbrowser1.Controls.Clear

    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Gather“ ()

    Hallo Ganther,

    Das funktioniert leider nicht so ganz ;=(

    Der Fehler kommt in der Zeile siehe Screenshot.

    Eine Demo habe ich mal hier hinterlegt.

    Danke
    Holger
    Bilder
    • fritz6.JPG

      68,71 kB, 936×504, 100 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „HDebus“ ()