none
Meine WPF Anwendung wird vom Standardbrowser blockiert! RRS feed

  • Frage

  • Aus meiner WPF Anwendung starte ich durch Klick auf ein Menü des Hauptfensters den Standardbrowser in einem separaten Prozeß mit Aufruf einer WEB Seite und in der gleichen Funktion wird ein kleines Fenster modal geöffnet:


    private bool StartBrowser(ref string pDatasetName, ref string pUserIdent, ref string pCurrPassword) { string dataSetName; string userIdent; string currPassword; string url; string browserFilespec; ... ... // Ermittlung des Standard-Browsers SearchBrowserClass browser = new SearchBrowserClass(); browserFilespec = browser.GetDefaultBrowser(); browserProcessName = Path.GetFileNameWithoutExtension(browserFilespec); // Starten des Browser Prozesses mit // Öffnung der gewünschten Internetseite try { using (browserProcess = new Process()) { browserProcess.StartInfo.FileName = browserFilespec; browserProcess.StartInfo.Arguments = url; browserProcess.Start(); } } catch (Exception ex) { return false; } pDatasetName = dataSetName; pUserIdent = userIdent; pCurrPassword = currPassword; return true; } private void CallWebMnuItem_Click(object sender, RoutedEventArgs e) { string datasetName = string.Empty; string userIdent = string.Empty; string currPassword = string.Empty; if (StartBrowser(ref datasetName, ref userIdent, ref currPassword)) {//Öffnen des Drag and Drop Fensters widgetWnd = new WidgetWnd(datasetName, userIdent, currPassword); widgetWnd.Left = 30; widgetWnd.Top = 80; widgetWnd.ShowDialog(); } }

    Das kleine Fenster enthält 2 Buttons, mit welchen zwei Strings (mittels Drag and Drop) auf die WEB Seite gezogen werden. Klickt man nun auf den Button [Anmelden] auf der Webseite, so verliert natürlich das kleine Fenster den Fokus. Würde man jetzt das kleine Fenster schließen, so erhält bei Mausklick auf die X-Button das kleine Fenster den Focus zurück und wird geschlossen. Soweit, so gut!

    Normalerweise arbeitet man nun auf der geöffneten Webseite, ruft dort weitere Fenster oder Register auf. Will man jetzt das kleine Fenster über den X-Button schließen, so zeigt der Cursor bei Erreichen des kleinen Fensters an Stelle des Pfeils eine Sanduhr und in der Titelleiste des kleinen Fensters erscheint „keine Rückmeldung“. Das kleine Fenster ist blockiert und mit ihm das Hauptfenster meiner Anwendung!

    Was muß ich machen um diese Blockade sicher zu vermeiden? Kann mir da jemand helfen?



    Klaus

    Samstag, 19. Dezember 2020 09:33

Antworten

Alle Antworten

  • Hallo Klaus,

    Damit man einen besseren Überblick bekommt, würdest Du näher auf die Steuerelemente CallWebMnuItem und widgetWnd eingehen? Wie wurden sie definiert, von welchen Klassen (Schnittstellen) erben sie? Ist mit dem kleinen Fenster widgetWnd gemeint? Wenn dem so ist und der Fokus vorlorengeht, versuch es mit der genauen Angabe des Besitzerfensters, wie in diesen Threads vorgeschlagen:
    How do I focus a modal WPF Window when the main application window is clicked
    Modal dialog focus problems on WPF application (letzte Antwort)

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Montag, 21. Dezember 2020 08:46
    Administrator
  • Guten Morgen Dimitar,

    danke für Deine Antwort. Das kleine Fenster (widgetWnd) ist ein normales Wpf Fenster. Es enthält 2 Buttons, welche per Drag and Drop 2 Strings auf die im Browser geöffnete Webseite gezogen werden. Das funktioniert einwandfrei. Das kleine Fenster, und damit meine ganze Anwendung wird erst dann blockiert, wenn ich auf der Webseite eine Aktion durchführe.

    Der Witz dabei ist allerdings, daß die Blockade nur dann eintritt. wenn ich die Exe meiner Anwendung von Außen aufrufe, rufe ich die Anwendung aus der Entwicklungsumgebung (Visual Studio 2019 Community) heraus auf, so wird nichts blockiert und man kann auf der Webseite soviel agieren wie man will!!!

    Kapierst Dun das? Ich jedenfalls nicht!

    Ich habe Deine Hinweise (widgetWnd.Owner = this) natürlich ausprobiert, leider ohne Erfolg.


    Klaus

    Montag, 28. Dezember 2020 09:51
  • Hallo Ditmar,

    das Problem ist gelöst! Ich habe einen Programmierfehler, eine falsche Deklaration einer String-Variablen gefunden und korrigiert. Sau blöd so etwas, aber das wars! Danke für Deine Mühe.

    Gruß
       Klaus.


    Klaus

    Montag, 8. Februar 2021 11:03