![]() |
aktives Fensterhandle bekommen
Hi
ich habe mal wieder eine Frage und zwar wie kann ich das Handle eines Fensters (gesamte Fenster...), das aktive und oben liegt herausfinden? Nun kommt die Schwierigkeit. Normalerweise ginge, dass ja mit GetForeGroundWindow(), doch jetzt liegt mein Programm in der TNA und wenn auf das Icon ein Rechtsklich gemacht wird, erscheinnt ein PopUpMenü und wenn dann auf ein Item geklickt wird, soll das Handle herausgefungen werden. Das Problem dabei ist ja, dass das Fenster nicht mehr aktiv ist (durch den Klick). D.h. ja das ich das Handle schon vorher rausbekommen muss. Nur wie? //Nachtrag: Folgendermaßen packe ich meine Anwendung in die TNA bzw. entferne es, usw.:
Delphi-Quellcode:
procedure TForm1.WMTASKBAREVENT(var message: TMessage);
var point: TPoint; begin case message.LParamLo of WM_RBUTTONDOWN: begin GetCursorPos(point); popupmenu1.popup(point.x, point.y); end; end; end; procedure TaskBarAddIcon; var tnid : TNOTIFYICONDATA ; begin tnid.cbSize := sizeof(TNOTIFYICONDATA); tnid.Wnd := Form1.handle; tnid.uID := 1; tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; tnid.uCallbackMessage := WM_TASKBAREVENT; // tnid.hIcon := form1.image2.picture.icon.handle; tnid.hIcon := form1.Icon.Handle; strcopy(tnid.szTip,'TNA'); Shell_NotifyIcon(NIM_ADD, @tnid); end; procedure TaskBarRemoveIcon; var tnid : TNOTIFYICONDATA ; begin tnid.cbSize := sizeof(TNOTIFYICONDATA); tnid.Wnd := Form1.handle; tnid.uID := 1; Shell_NotifyIcon(NIM_DELETE, @tnid); end; |
Da durch den Klick im Popupmenü das aktive Fenster geändert wird, musst du das aktive Fenster ermitteln, bevor du im Popupmenü klickst.
Also z.B. bei WM_MOUSEMOVE über der Position des Popupmenüs. |
hi, das dachte ich mir auch schon, doch irgendwie klappt, das nciht. Du meinst das so, oder?
Delphi-Quellcode:
procedure TForm1.WMTASKBAREVENT(var message: TMessage);
var point: TPoint; begin case message.LParamLo of WM_RBUTTONDOWN: begin GetCursorPos(point); popupmenu1.popup(point.x, point.y); end; WM_MOUSEMOVE: begin test := GetForeGroundWindow(); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz