PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Modalen Dialog für externes Programm simulieren?


Mr. Lolman
2017-09-07, 11:43:45
Hi,

1. Software A startet Software B.
2. Software B ist die gesamte Zeit im Hintergrund aktiv und soll über die Software A in den Vordergrund geholt werden. Währenddessen soll in Software A keine Eingabe möglich sein.


Ist es irgendwie möglich, dass sich die Software B als temporär als Modaler Dialog mit Parentwindow Windowhandle aus Software A registriert?

Ich will nämlich nicht über Software A checken müssen, ob das Programm im Vordergrund ist, noch aktiv ist, und direkt in Software A mittels einem HAck die Eingaben blockieren. Ein Modaler Dialog wär da am praktischten. Ich hab auch versucht, über WinAPI Calls (so kommunizieren beide Programme) Software A zu blockieren, in dem ich einfach den WinAPi Call solang blockiere, wie notwendig.

In Software B wird allerdings die GeckoFX Engine verwendet und die hebt die Blockade auf, sobald ich irgendwo im Gecko-Kontext eine neue Message erzeuge (warum auch immer).


Ich such eine möglichst einfache sichere Lösung für das Problem und die Idee mit dem Modalen Dialog scheint für mich am praktischsen. Software B ist in C# geschrieben, Software A in einer anderen Programmiersprache. Gemeinsamer Nenner ist die WinAPI.

Marscel
2017-09-07, 12:47:40
Nur eine Idee: SetWindowsHookEx zum Abgreifen von Events für die Message-Queue des speziellen Fensters nutzen und für die Dauer discarden.

Monger
2017-09-07, 14:17:10
Ich seh da schwarz. Die Windows API sagt selbst zu Fenster in den Vordergrund holen: ist maximal ne Bitte, aber kein "muss". Windows kann das ohne Angabe von Gründen verweigern.

Ist auch vernünftig, weil die Versuchung mit solchen Mitteln die Kontrolle über den Desktop zu kriegen, ist groß. Und spätestens wenn zwei Anwendungen programmatisch um die Hoheit der Vordergrundfensters kämpfen, wirds lustig.

Wie Windows das handhabt, unterscheidet sich von Windows zu Windows Version auch geringfügig. Zu XP Zeiten schoben sich Fenster vorwiegend tatsächlich in den Vordergrund, ab Win8 blinken sie öfters freundlich in der Taskleiste um Aufmerksamkeit.

Warum genau soll denn in Applikation A keine Eingabe möglich sein? Und wären vielleicht andere Alternativen auch akzeptabel? (z.B. alle Buttons disablen)

Ganz allgemein sollte man heutzutage eigentlich die Finger von modalen Dialogen lassen. Aus Design Gesichtspunkten ist es ziemlich fies, den Desktop mit Fenstern vollzukleistern die der Anwender nicht bedienen darf.