Hiho...
Ich habe folgendes Problem mit meinem Programm:
Das Programm soll sobald es gestartet wird nur in der
TNA angezeigt werden
und von dort aus mittels PopUpMenu oder Linksklick auf das Icon auch wiederherzustellen sein.
Das klappt auch erstmal ganz gut, aber wenn man das Programm minimiert hat und es dann wiederherstellt,
erscheint es auf einmal doch in der Taskbar.
Habe ich was vergessen oder geht das nicht anders?
Hier der (leider
- bin halt noch in den Anfängen) teilweise aus verschiedenen Hilfe-Threads zusammengesuchte Quellcode:
Delphi-Quellcode:
procedure TForm1.TaskbarEvent(
var Msg: TMessage);
var Point : TPoint;
h:HWnd;
begin
{ Die WM_TaskbarEvent-Message "Msg" gibt in Msg.LParam
das genaue Ereignis an. Msg.LParam kann folgende Werte für
Mausereignisse annehmen:
WM_MouseMove
WM_LButtonDown
WM_LButtonUp
WM_LButtonDblClk
WM_RButtonDown
WM_RButtonUp
WM_RButtonDblClk }
{ Eventhandler-Beispiele von Robert Fischer: }
case Msg.LParam
of
WM_LBUTTONUP:
BEGIN
//Mach etwas nach einem Linksklick...
h:=
handle;
postmessage(h,WM_SYSCOMMAND,SC_RESTORE,1);
END;
WM_RBUTTONUP:
begin
// Rechtsklick
// Diese Zeile ist wichtig, damit das PopupMenu korrekt
// wieder geschlossen wird:
SetForegroundWindow(
Handle);
// PopupMenu anzeigen:
GetCursorPos(Point);
PopupMenu1.Popup(Point.X, Point.Y);
//oder ohne Variable Point:
//PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
end;
end;
end;
//...
procedure TForm1.Maximieren1Click(Sender: TObject);
var
h:HWnd;
begin
h:=
handle;
postmessage(h,WM_SYSCOMMAND,SC_RESTORE,0);
end;
procedure TForm1.Minimieren1Click(Sender: TObject);
var
h:HWnd;
begin
h:=
handle;
postmessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0);
end;
MfG Don