Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Herausfinden welche Anwendung vorher aktiv war (https://www.delphipraxis.net/172950-herausfinden-welche-anwendung-vorher-aktiv-war.html)

relocate 30. Jan 2013 07:55

Herausfinden welche Anwendung vorher aktiv war
 
Hallo,

gibt es die Möglichkeit (wenn möglich ohne großen Aufwand, also z.B. ständig das System zu überwachen) welche Anwendung vorher aktiv war, also quasi von welcher Anwendung der Benutzer zur eigenen Anwendung gewechslt ist, wenn möglich sogar dann, wenn zwischenzeitlich der Anwender in/auf dem Desktop unterwegs war.

Gruß relocate

WM_CLOSE 30. Jan 2013 08:54

AW: Herausfinden welche Anwendung vorher aktiv war
 
ALT-Tab kann das, vllt geht das auch programmatisch?

DeddyH 30. Jan 2013 09:04

AW: Herausfinden welche Anwendung vorher aktiv war
 
Manche Messages (WM_SETFOCUS, WM_ACTIVATE) enthalten doch IIRC auch fremde Fensterhandles, könnte man da vielleicht ansetzen?

relocate 30. Jan 2013 09:32

AW: Herausfinden welche Anwendung vorher aktiv war
 
@ WM_CLOSE

Es scheint tatsächlich zu stimmen, dass bei Alt-Tab die Reihenfolge der jeweils angeklickten Anwendungen quasi gespeichert wird. Ist mir bisher so nicht aufgefallen.

@DeddyH
Per Google bin ich auf diesen Beitrag gestoßen
http://www.entwickler-ecke.de/topic_..._101932,0.html

Es scheint bei OnActivate und OnDeactivate nur innerhalb der eigenen Anwendung geklappt zu haben, ich wollte das schon testen nur ein paar Ansätze sammeln, ggf. hat jemand ja so etwas schon gemacht.
Da gibt es mal wieder ein Suchwort Problem, nach welchen Stichwörtern soll ich suchen, ich habe schon einige probiert Anwendung wechseln / vorher aktive Anwendung /~s Programm etc. gibt alles leider nichts her.

Gruß relocate

lbccaleb 30. Jan 2013 10:37

AW: Herausfinden welche Anwendung vorher aktiv war
 
Das ist einfach über WM_ACTIVATE herauszubekommen!

1.Einfach die Message abfangen
2.LoWord von wParam auf (WA_ACTIVE or WA_CLICKACTIVE) checken
3.Das Handle zum deaktivierten Fenster ist in lParam gespeichert ;)

Sir Rufo 30. Jan 2013 10:39

AW: Herausfinden welche Anwendung vorher aktiv war
 
IMHO wird mit Alt-TAB die Z-Order der Anwendungsfenster durchlaufen.

Jedes Fenster liegt entweder vor oder hinter einem Fenster. Wird eine Anwendung aktiviert, dann liegt dieses Fenster vor den anderen. Daran kann man das erkennen.

relocate 30. Jan 2013 11:52

AW: Herausfinden welche Anwendung vorher aktiv war
 
Durch das Durchwandern mit der EnumWindows Funktion klappt es soweit, nur habe ich bemerkt, beim Durchklicken der Tasks in der Taskbar erhält teilweise beim Umschalten von einem zum anderen Tasks ein bereits davor angeklickter Task wieder kurz den Fokus und bringt damit die Reihenfolge durcheinander. Arrgh.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz