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;