Problem bei korrekter Webbrowserdarstellung

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

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Developement.

    Problem bei korrekter Webbrowserdarstellung

    Hallo,
    ich habe folgendes Problem:
    Ich habe einen Webbrowser mit folgenden Eigenschaften in mein Programm eingebaut:
    Anchor: Top, Left
    Dock: Fill

    Jetzt habe ich aber aus mir unbekanntem Grund folgendes Problem:
    Mein Webbrowser wird am unteren Ende zwar angezeigt, nur es passiert nichts beim Draufklicken.
    Er erkennt jedoch, wenn man mit dem Mauszeiger drüber geht.
    Hier ein Bild (ab unter dem roten Strich also beim Play-Zeichen, vor, zurück, leiste, 0:00, dieser Bereich ist gemeint, auf welchen mein Problem zutrifft)

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

    @Developement Bei Dock <> None wird Anchor ignoriert.
    Wohin hast Du navigiert, dass dieses Bild kommt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Bei Dock <> None wird Anchor ignoriert.

    Okay, das beeinträchtigt in meinem Fall nicht das Problem (habe getestet).
    Hättest du irgendwelche Vorschläge/Vermutungen an was das Problem liegen könnte? Es ist nur der untere Bereich von genau dieser Webseite.
    Wenn ich im exakt gleichen Webbrowser eine andere Seite öffne, funktioniert der untere Bereich immer.
    Ich vermute also, dass es daran liegen könnte, das dieser Bereich auf der Seite nicht wirklich verarbeitet werden kann vom Webbrowser.
    Aber der Webbrowser ist ja eig nichts anderes wie ein integrierter Internet Explorer, bei dem ich die Seite getestet hab, alles lief perfekt, auch die Leiste unten.

    Developement schrieb:

    Vermutungen
    Wie ist das Verhalten, wenn Du die Seite im "normalen" Browser öffnest?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Developement Um Deinen Effektr nachzuvollziehen müsste ich mich dort anmelden, was ich nicht tun werde.
    Tut mir leid. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ist okay, bin mir mittlerweile ziehmlich sicher, dass es an einem Script liegt und der VB Browser die JavaScripts einfach nur nicht lesen kann/verwenden kann.
    Und ja, ich habe schon gegooglet und auch in diesem Forum Einträge zu den JavaScripten gesucht und gefunden, konnte aber nie wirklich etwa damit anfangen.
    Habe jetzt aber einen C# Code gefunden (der es anscheinend möglich macht, dass der eingebaute Webbrowser das JavaScript erkennt und benutzen kann) und mit einem Converter in VB.NET übersetzen lassen. Raus kam folgendes:

    VB.NET-Quellcode

    1. Public Shared Sub ExecuteJavaScript(browser As WebBrowser, Script As String, FunctionName As String, Params As Object())
    2. Dim head As HtmlElement = browser.Document.GetElementsByTagName("head")(0)
    3. Dim scriptEl As HtmlElement = browser.Document.CreateElement("script")
    4. Dim element As IHTMLScriptElement = DirectCast(scriptEl.DomElement, IHTMLScriptElement)
    5. element.text = Script
    6. head.AppendChild(scriptEl)
    7. browser.Document.InvokeScript(FunctionName, Params)
    8. End Sub

    Problem ist, er erkennt IHTMLScriptElement nicht. Da ich eher ein Anfänger in VB.NET bin und mich auch überhaupt nicht mit C# auskenne,
    wüsste ich nicht, wie ich IHTMLScriptElement umändern müsste, damit es klappt.

    Originalcode in C#:

    C#-Quellcode

    1. public static void ExecuteJavaScript(WebBrowser browser, string Script, string FunctionName, object[] Params)
    2. {
    3. HtmlElement head = browser.Document.GetElementsByTagName("head")[0];
    4. HtmlElement scriptEl = browser.Document.CreateElement("script");
    5. IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
    6. element.text = Script;
    7. head.AppendChild(scriptEl);
    8. browser.Document.InvokeScript(FunctionName, Params);
    9. }
    @Developement Das .NET WebBrowser-Control ist ja ein InternetExplorer-Derivat.
    Probier mal aus, wie das Verhalten im InternetExplorer und im FireFox | Opera, ... ist, welchen Du gerade benutzt.Im Ernstfall kannste ja auch das Gecko-Webbrowser-Control verwenden, gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Developement schrieb:

    dieser Browser
    hat den Firefox-Cernel drinne, da müsste das JavaScript auch drinne sein.
    Du müsstest dann gelegentlich mal nachsehen, ob es einen neueren gibt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Jetzt habe ich aber leider wieder ein Problem.
    Und zwar habe ich jetzt den Gecko Browser eingebaut, indem ich mir ne .rar heruntergeladen habe,
    das Zeug entpackt und den Inhalt vom Ordner in die Debug von meinem Programmpfad gespeichert.
    Dann die .dll eingebaut und der Webbrowser ging, jedoch als ich dann Debuggen gemacht habe kam folgende Meldung:
    ​System.InvalidOperationException ist aufgetreten.
    HResult=0x80131509
    Nachricht = Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Die Datei oder Assembly "Skybound.Gecko, Version=1.9.1.0, Culture=neutral, PublicKeyToken=3209ac31600d1857" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden..
    Quelle = Testing
    Stapelüberwachung:
    at Testing.My.MyProject.MyForms.Create__Instance__[T](T Instance) in :line 190
    at Testing.My.MyProject.MyForms.get_Form1()
    at Testing.My.MyApplication.OnCreateMainForm() in C:\Users\Niklas\Desktop\Mein Ordner\Programmierprojekte\Testing\Testing\My Project\Application.Designer.vb:line 35
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    at Testing.My.MyApplication.Main(String[] Args) in :line 81

    Innere Ausnahme 1:
    BadImageFormatException: Die Datei oder Assembly "Skybound.Gecko, Version=1.9.1.0, Culture=neutral, PublicKeyToken=3209ac31600d1857" oder eine Abhängigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.


    Zudem folgende Meldung als Warnung:
    ​Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Warnung Konflikt zwischen der Prozessorarchitektur des Projekts "AMD64", das erstellt wird, und der Prozessorarchitektur des Verweises, "Skybound.Gecko", "x86". Dieser Konflikt kann zu Laufzeitfehlern führen. Ändern Sie ggf. mithilfe des Konfigurations-Managers die als Ziel angegebene Prozessorarchitektur Ihres Projekts so, dass die Prozessorarchitekturen zwischen Ihrem Projekt und den Verweisen ausgerichtet werden, oder wählen Sie eine Abhängigkeit von Verweisen mit einer Prozessorarchitektur, die der als Ziel angegebene Prozessorarchitektur Ihres Projekts entspricht. Testing

    Developement schrieb:

    Es wurde versucht, eine Datei mit einem falschen Format zu laden.
    Da musst Du mal AnyCPU auf x86 oder x64 umstellen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Da musst Du mal AnyCPU auf x86 oder x64 umstellen.
    Mittlerweile habe ich das ganze nach dem Tutorial von jemanden vom Forum hier gemacht. Habe auch schon auf x86 umgestellt, da das Ganze nur auf 32Bit läuft. Ich habe alles nach dem Tutorial nachgemacht, erfahre aber den genau gleichen Fehler, wie ein anderer, der seinen Fehler hier postet, nur es wurde bis jetzt darauf keine Antwort gegeben.

    Zum Post

    RodFromGermany schrieb:

    Da musst Du mal AnyCPU auf x86 oder x64 umstellen.

    Also, hab das jetzt mal gemacht, bekomme dann zwei Warnungen:

    Meist kann man Warnungen ja ignorieren, aber beim Debuggen kam direkt dass aufgrund des oberen Fehlers in der Liste im Bild ein Debuggen nicht möglich ist.
    Verwende übrigens wie aus der Fehlermeldung herausgeht Version 29 von XULRunner und von GeckoFX, da ich zu den neueren Versionen keinerlei Tutorials gefunden habe.
    @Developement Nimmste den, wo keine Fehler kommen.
    Ich denke nicht, dass mit der neuesten Version die Tutorials ungültig werden. Wenn ich bedenke, wie oft sich der Firefox updatet, kommt davon gewiss auch einiges bei Gecko an.
    =====
    Kannst Du mal bitte Deinen Thread editieren und die nicht relevanten Tags löschen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Kannst Du mal bitte Deinen Thread editieren und die nicht relevanten Tags löschen?

    Hab.

    RodFromGermany schrieb:

    Nimmste den, wo keine Fehler kommen.

    In der neuen Version gibt es andere Dateien und habe dazu wirklich keine neuen Tutorials gesehen, mir reicht die alte Version auch komplett.
    Bei der mit keinen Warnungen (Ausgangseinstellung - 32-Bit) kommt halt der Fehler weswegen ich den Thread hier erstellt habe.
    Was kann ich weiter unternehmen bei diesem Fehler? Muss doch irgendeine Lösung geben :)


    'EDIT: Habe im falschen Thread geantwortet... SORRY