Entwickler-Ecke
Windows API - Wie bestimmen, ob Anwendung vor n Schritten aktiv war?
uko - Do 02.09.10 16:33
Titel: Wie bestimmen, ob Anwendung vor n Schritten aktiv war?
Hi,
Ausgangslage ist wie folgt:
- meine Anwendung ist gestartet und es istschon damit gearbeitet worden.
- der Benutzer hat nun eventuell ein anderes Programm zum Arbeiten in den Vordergrund geholt (z.B. Word)
- durch ein äußeres Signal (kommt von einer Hardware) wird nun eine dritte Anwendung aktiviert
- diese sendet nun an ALLE laufenden Anwendungen das Signal, daß sich etwas geändert hat
- Wenn nun z.B. Word zuletzt aktiv war, dann soll meine Anwendung nur Daten im Hintergrund umstellen (sprich inaktiv bleiben)
- Wenn aber meine Anwendung die aktive war, dann soll sie nun in den Vordergrund geholt werden
Nun meine Frage: wie könnte man das machen? Genauer, kann man irgendwie bestimmen ob eine bestimmte Anwendung aktiv war und danach mehr als eine weitere Anwendung aktiviert wurde?
Grüße,
Uli
uko - Fr 03.09.10 09:38
Danke für die Hints. Die haben aber leider nicht das gewünschte Ergebnis: GetActiveWindow geht nur auf die MessageQueue des aufrufenden Threads und GetForegroundWindow liefert mir das falsche Handle (nämlich das der durch das Signal aktivierten Anwendung).
Aber es hat mich auf eine Idee gebracht: ich müßte herauskriegen, ob meine Anwendung das erste in der Liste der Programme ist, die man mit ALT+TAB erhält. Kennst Du dafür einen Suchbegriff oder einen Link, der beschreibt, welche Daten dort liegen und wie man sie rankommt?
Nur noch zur allgemeinen Info: es geht darum, auf die Werkzeugauswahl der SMART Whiteboard Software zu reagieren.
EDIT: Problem gelöst: ich bestimme mir eine Liste aller Taskfenster mit den Funktionen aus madKernel (MadShi) mittel 'TaskWindows' und filtere daraus noch die Fenster ohne Text heraus.
Wenn dann das Handle des ersten Elements der Liste gleich meinem MainForm-Fensterhandle ist, dann war meine Anwendung zum Zeitpunkt des Signal im Vordergrund und mit SetForegroundWindow, AttachThreadInput etc. ist sie es dann auch gleich wieder.
Andernfalls war eine andere Anwendung im Vordergrund und ich tut nur die Rohdaten verarbeiten.
Grüße,
Uli
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!