GeckoWebbrowser - Problem bei .Focus()

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von KidRick.

    GeckoWebbrowser - Problem bei .Focus()

    Hallo,
    ich habe ein Programm und möchte, dass via Code eine Leertaste gedrückt wird, die der Webbrowser empfängt,
    da die Seite meines Webbrowsers bei Drücken von STRG + Rechter Pfeil zum nächsten Song springt.
    Und nein, die Möglichkeit, das über InvokeMember zu machen geht nicht, das habe ich schon probiert.

    Ich habe nun folgenden Code:

    VB.NET-Quellcode

    1. If CBool((GetAsyncKeyState(176))) Then 'KeyCode 176 = Vorwärts-Taste
    2. GeckoWebBrowser1.Focus()
    3. System.Windows.Forms.SendKeys.Send("^{RIGHT}")
    4. End If


    Ich kann den Code ausführen, ohne dass mich Visual Studio im Vorhinein schon auf Fehler aufmerksam macht.
    Sobald ich dann aber die Taste mit dem KeyCode 176 = Vorwärts-Taste drücke, kommt folgende Meldung von Visual Studio:



    Was habe ich falsch gemacht / was kann ich anders machen?
    Arbeitest Du mit Threads, was die Fehlermeldung nahelegt? Falls ja, dann stellt sich die Frage, in welcher Zeile der Fehler kommt. Ich tippe zwar auf Zeile#2, aber meine Glaskugel ist wegen spontaner Selbsttrübung beim Hersteller. Ein CE darf nur in jenem Thread direkt manipuliert werden, in dem es erstellt wurde. Alter Hut.
    Was würde passieren, wenn Du die Zeilen #1, #3 und #4 auskommentierst und in einen anderen Zusammenhang bringst? Will heißen: Ich glaub zwar nicht, dass GetAsyncKeyState direkt was mit dem Fehler zu tun hat, kann es aber momentan nicht ausschließen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed habe das ganze in nem BackgroundWorker, weil ich will, dass die Vorwärts-Taste auch im Hintergrund erkannt wird.

    VB.NET-Quellcode

    1. ​Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    2. up:
    3. 'Weiter
    4. If CBool((GetAsyncKeyState(176))) Then
    5. GeckoWebBrowser1.Focus()
    6. System.Windows.Forms.SendKeys.Send("^{RIGHT}")
    7. End If
    8. System.Threading.Thread.Sleep(100)
    9. GoTo up
    10. End Sub


    Fehler kommt in Zeile 2
    *Auf-die-Finger-Klatsch* für GoTo!
    Den BGW zu nutzen, sehe ich auch als deplatziert. Da kann man heutzutage mit Async und Await arbeiten. Dazu Invoke. Fertig. Jene Schlüsselwörter bieten zahlreichen Treffer mit der Foren-Suchfunktion.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.