ich habe ein Beispiel von RSBasic etwas umgeändert um vom Main Programm aus den Ermittelten
Fenster Name des Fenster das gerade den Fokus hat auszugeben. Damit es wegen des Hook kein Zugriff Problem
gibt habe ich einen Mutex verwendet. Es funktioniert auch ... aber ich bin mir nicht sicher ob das so reicht.
Code: Alles auswählen
EnableExplicit
Define HWINEVENTHOOK
#EVENT_SYSTEM_FOREGROUND = $3
Global WindowAsFokus.s
Global WindowAsFokusOld.s
Global Mutex = CreateMutex()
Global Event,Quit
Procedure WinEventProc(hWinEventHook, event, hwnd, idObject, idChild, idEventThread, dwmsEventTime)
Protected Title$
Select event
Case #EVENT_SYSTEM_FOREGROUND
Title$ = Space(250)
GetWindowText_(hwnd, @Title$, Len(Title$))
LockMutex(Mutex)
WindowAsFokus.s = Title$
UnlockMutex(Mutex)
EndSelect
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StickyWindow(0,#True)
HWINEVENTHOOK = SetWinEventHook_(#EVENT_SYSTEM_FOREGROUND, #EVENT_SYSTEM_FOREGROUND, 0, @WinEventProc(), 0, 0, 0)
Repeat
LockMutex(Mutex)
If WindowAsFokus.s <> WindowAsFokusOld.s
WindowAsFokusOld.s = WindowAsFokus.s
SetWindowTitle(0,WindowAsFokus.s)
EndIf
UnlockMutex(Mutex)
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
UnhookWinEvent_(HWINEVENTHOOK)
Quit = 1
EndSelect
Delay(10)
Until Quit
EndIf
End
HWINEVENTHOOK = SetWinEventHook_(#EVENT_SYSTEM_FOREGROUND, #EVENT_SYSTEM_FOREGROUND, >Handler ????<, @WinEventProc(), 0, 0, 0)
Gruss TFT