Die Story:
Effekt:
Seit dem Update kann man nach dem, ein WebView2 Fenster zerstört wurde, keine COM Class Factory in unserem Programm aufrufen.
Intern scheint das WebView2 CoSuspendClassObjects aufzurufen wenn das Control zerstört wird. Die Folge unser IMessageFilter springt an und es kommt ein Dialog, der auf einen nicht reagierenden COM Server hinweist.
Der nicht reagierende COM-Server ist unsere eigene Anwendung…
Toll!
Einziger für uns möglicher Workaround für uns ist leider, die alte Version 119 auf jedem Client lokal zu installieren. Dann über einen Registry Eintrag (HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\WebView2\BrowserExecutableFolder) den Aufruf von der aktuellen Version umzubiegen.
Netterweise kann man das für jede Anwendung separat steuern.
Details zum Nachlesen auf GitHub.
Nachtrag: Der Bug verschwand mit dem Update 120.0.2210.77 in der evergreen Version. Bei mir wurde der Fix am Montag den 18.12.2023 automatisch installiert.
Man sollte also einen Rollback mit Vorsicht verwenden. Er eignet sich also nicht einfach und schnell ein Problem zu umgehen. Es sind einige Nacharbeiten nötig.
Nach der Installation des Updates ging keine Step-Debug-Funktion mehr (Step-In, Step-Over, Step-Out, etc.) im Mixed Mode Debugging. Native Mode Debugging scheint zu gehen.
Egal was man macht man bekommt den Fehler:
Unable to step. Operation not supported. Unknown error: 0x8ede0018.
In der Developer Community für VS ist dieser Bug auch bereits bekannt und angeblich gibt es einen Fix. Der ist aber noch nicht öffentlich.
Leider arbeite ich an einigen C++/CLI Modulen und benötige den Mixed-Mode.
Das erste mal habe im Visual Studio Installer einen Rollback versucht. Leider hat der Rollback meine Extension zum Teil deinstalliert. Mein Visual Assist von Whole Tomato war auf einmal nicht mehr vorhanden. Toll…
Nachtrag: Das Problem ist in der Version 17.8.4 behoben, die am 10.01.2024 veröffentlicht wurde.
Ich habe heute eine neue Version bereitgestellt.
Hier der entsprechende Link auf mein Repository mit der neuesten Version:
https://github.com/xMRi/PTZControl
Ich will einfach mal die Features erwähnen, die ich wirklich jeden Tag nutze.
Das ist vermutlich nicht mal gerade mal die Spitze des Eisberges bei all den Funktionen vom SpeedCommander. Aber es sind die Funktionen, die ich nicht mehr missen möchte bei meiner ganz alltäglichen Arbeit.
Ich habe mich entschieden den Code auf GitHub zu veröffentlichen. Ich hoffe, dass dies anderen hilft, oder es nützt den Sourcecode anderweitig zu verwenden.
Vielleicht hilft es so, anderen das Streaming der Gottesdienste mit der PTZ 2 Pro oder Rally einfacher zu gestalten.
Hier der entsprechende Link auf mein Repository:
https://github.com/xMRi/PTZControl
Was ist alles neu?
Die neue Version findet Ihr hier unter dem folgenden Link.
Kaum hate ich die Tastatur angeschlossen fingen die Probleme an.
Die Umlaute und alle Tasten mit Umschalt+Numerische Taste lieferten die Zeichen der englischen Tastatur.
Aber in Android war alles korrekt eingestellt. Deutsche Tastatur.
Lange musste ich suchen bis ich einen Hinweis fand.
Die Lösung ist relativ einfach:
Einstellungen -> Allgemeine Verwaltung -> Zurücksetzen -> Eingabehilfeeinstellungen zurücksetzen
Ich war mit gar nicht bewusst, dass ich hier etwas eingetragen oder verstellt habe. Letzten habe ich dann auch den Auslöser für das Problem gefunden:
In den Eingabehilfen kann man einen automatischen Zoom mit einem Dreichfach-Tap auslösen.
Wird diese Einstellung vorgenommen, dann geht die Tastatur nicht mehr.
Sollte also jemand wieder diese Zoom Einstellung einrichten (was ich wieder getan hatte), dann funktioniert sofort auch die Tastatur nicht mehr wie erwartet.
Ich habe ein Samsung S Tablet und eine passende Samsung Tastatur. Ich habe mir mal die Mühe gemacht hier einige der Tastenkürzel zusammen zu stellen.
Die Betriebssystem-Taste wie Sie in der Samsung Beschreibung genannt wird kürze ich mit OS ab (bei meiner Tastatur ist eine Lupe abgebildet Lupe.
Kürzel | Bedeutung |
---|---|
Strg+C | Kopieren in die Zwischenablage |
Strg+X | Ausschneiden in die Zwischenablage |
Strg+V | Einfügen aus der Zwischenablage |
Strg+Z | Rückgängig machen |
Umschalt+ Cursor-Tasten | Zeichen markieren (erweitern) |
Umschalt+Strg+ Cursor-Tasten | Wort markieren |
Strg+0-9 | Wechselt in das entsprechende Tab in Chrome |
Alt+Tab | App wechseln |
Alt+Links | Im Browser zurück |
Alt+Rechts | Im Browser vorwärts |
Alt+E | Adressleiste im Chrome Browser anspringen |
OS | Google Assistent öffnen |
OS+Tab | App Übersicht öffnen |
OS+Backspace | Zurück |
OS+Ü / OS++ | Apps nebeneinander anzeigen / starten |
OS+B | Browser App öffnen |
OS+C | Kontakte öffnen |
OS+D | Start Bildschirm anzeigen |
OS+E | Email-App starten |
OS+F | Such Funktion öffnen |
OS+I | Bixby App öffnen |
OS+H | Samsung Spracheingabe öffnen |
OS+K | Kalender App öffnen |
OS+L | Gerät sperren |
OS+M | Google Maps öffnen |
OS+N | Benachrichtigungen anzeigen |
OS+P | Music-Player App öffnen |
OS+Q | Einstellungsmenü |
OS+R | App Eigene Dateien öffnen |
OS+S | SMS App |
OS+W | Samsung DeX starten/beenden |
OS+U | Einstellungen für Eingabehilfen öffnen |
OS+V | Lautstärkeregelung öffnen |
OS+X | Aktuelle App schließen |
OS+Y | Smartview App öffnen |
OS+Z | Android Einstellungen öffnen |
OS+ß | Tastaturkürzel Übersicht anzeigen (leider nicht vollständig) |
Im großen und ganzen funktionieren viele Tastenkombinationen ähnlich wie auf einem Windows PC, besonders was das Editieren betrifft. Das betrifft besonders auch den Chrome Browser bei dem die Tastatur wirklich nützlich ist, wenn man gewöhnt ist den Browser mit der Tastatur zu bedienen.
Selten musste ich so viele Dinge auf einmal unter den Hut bringen und lernen und zeitgleich ein Team aufbauen, dass das Videostreaming seit Mai 2020 aufrechterhält.
Und wie es aussieht, wird es keinen Schritt mehr zurückgeben. Jetzt haben wir Streaming als bleibenden Dienst mit einem festen Mitarbeiterteam und die Gemeinde hat sich mehr oder weniger auch an diesen Luxus gewöhnt. Das ist positiv wie negativ (aber das ist vielleicht etwas für einen späteren Blogartikel).
In kürzester Zeit musste ich mich für eine Technik, Hardware und Software entscheiden. Dabei sollte die Lösung natürlich preiswert, einfach, kompatibel und billig sein.
Was auch sonst?
Wir haben uns entschieden ohne Video Schnittboard (ATEM Board oder ähnliches) zu arbeiten. Der Preis für digitale Kameras schockte mich etwas, zudem fand ich festinstallierte Kameras zu statisch.
Ich dann schnell kam zu der folgenden Lösung:
Alles in allem sind wir damit unter 1.800€ geblieben.
Die Logitech PTZ 2 Pro erschien mir mit einem 10fach Zoom und der hohen Bildqualität als ideal und preiswerte Kamera. Ich habe beide Kameras als B-Ware (1 Jahr Garantie) für um die 450€ erwerben können.
Beim Start des Streamens mit einer Kamera konnten wir noch die Fernbedienung nutzen, aber das war hakelig. Zudem stört das Zoomen und Scharfstellen, das Streaming-Erlebnis. Das Video wirkt nervös und unprofessionell.
Also wurde eine zweite Kamera angeschafft. Damit können wir nun überblenden von einer Szene in die andere (was sehr professionell wirkt). Eine neue Kameraposition anfahren mit der inaktiven Kamera und wieder überblenden, nun ganz einfach.
Das Problem war nur die Steuerung von zwei Kameras.
Man hätte es einfach machen können und eine Kamera mit fester Position nutzen können und bei der anderen die PTZ (Pan Tilt Zoom) Funktionen. Damit hätte man zumindest ein flexibles Überblenden ermöglicht.
Aber auch das „Zielen“ mit der Fernbedienung auf die Kamera war während des Streamens suboptimal. Zudem die Kamera hinter dem Mitarbeiter an der Wand montiert war. Also Blick nach vorne auf OBS und mit der Fernbedienung hinter sich zielen.
Idealer wäre also eine Softwaresteuerung für beide Kameras.
Also habe ich geschaut was man machen kann, um die Kameras per Software zu steuern. Denn eigentlich müsste sich alles über das DirectInput Interface von Windows steuern lassen.
Herausgekommen ist ein kleines PTZControll.exe. Dieses kann alle Kamera Features komplett ausnutzen.
Die Funktionen des kleinen Tools sind:
Das PTZControl.exe unterstützt 2 Steuerungsvarianten für den Motor. Das eine ist die direkte Schrittsteuerung über eine Logitech internes Interface. Die andere benutzt einen Timer mit einer „Motor an/aus“ Steuerung. Der Timer ist programmierbar (Standard 70msec). Die zweite Steuerung erwies sich als etwas feiner.
Das Programm kann frei heruntergeladen und genutzt werden.
Nutzung auf eigenes Risiko und Gefahr.
Anmerkung zum Programm: Das Programm wurde mit C++ auf VS-2019 entwickelt und nutzt die MFC und ATL.
Wichtig: Das Programm sucht nach Kameras die den Text „PTZ 2 Pro“ im Namen haben und verwendet nur diese. Ich habe keine Teste mit anderen PTZ Kameras gemacht.
Es gibt eine neue Version des PTZControl.exe.
Siehe hier.