Ich habe ein WinForms-Formular, das eine eigenständige Anwendung war, aber jetzt als Teil einer größeren WPF-App gestartet wird. Es ist immer noch ein separates Fenster, das nicht in einem WPF-Fenster enthalten ist. Das Problem, das ich sehe, ist, dass das ProcessCmdKey-Ereignis in dem Fenster nie mehr ausgelöst wird, so dass ich Probleme habe, spezielle Befehlsschlüssel zu behandeln. Dies funktionierte früher gut und der Shortcut-Handling-Code ist unverändert von früher.ProcessCmdKey feuert nie in WinForms Fenster gestartet von WPF App
Die Ursache des Problems scheint zu sein, dass das Formular nicht mehr von der WinForms Application.Run-Methode übernommen wird und daher keine eigene Nachrichtenschleife mehr aufweist. Gibt es eine Möglichkeit, dies zu beheben, während die WPF- und WinForms-Fenster weiterhin einen UI-Thread freigeben, oder muss ich einen separaten Thread für das WinForms-Fenster einrichten, damit dies funktioniert? Ich möchte es, wenn möglich, vermeiden, da ich dann die cross-thread Kommunikation für all die Dinge einrichten muss, die jetzt durch einfache Methodenaufrufe erledigt werden.
Ich sehe, danke für die Info. Die Z-Reihenfolge wäre in diesem speziellen Fall eigentlich kein Problem, da die Fenster auf separaten Monitoren im Vollbildmodus laufen sollen. Anstelle einer sauberen Lösung habe ich jetzt eine dreckige Lösung angewendet. Ich habe die wenigen Schlüssel registriert, die ich als globale Hotkeys brauchte (mit RegisterHotKey in user32.dll), und nur auf sie reagieren, wenn das Winforms-Fenster den Fokus hat. Das scheint jetzt in Ordnung zu sein, ich werde das Fenster in WPF wahrscheinlich zu einem späteren Zeitpunkt neu schreiben. –