![]() |
TNA Nach RESTORE doch eine Anzeige in der Taskbar -.-
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 :oops: - bin halt noch in den Anfängen) teilweise aus verschiedenen Hilfe-Threads zusammengesuchte Quellcode:
Delphi-Quellcode:
MfG Don
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; |
Re: TNA Nach RESTORE doch eine Anzeige in der Taskbar -.-
wie verhinderst du das dein Programm in der Taskbar angezeigt wird? In dem bisher geposteten Source ist nix davon zu finden.
|
Re: TNA Nach RESTORE doch eine Anzeige in der Taskbar -.-
Sry... hab nur den Teil mit dem RESTORE/MINIMIZE kopiert :wall: .... der komplette Quellcode folgt
//EDIT: Habs gefunden *freu*... Das was da unter FormShow steht muss auch in die beiden IFs unter WMSysCommand. MfG Dragon
Delphi-Quellcode:
implementation
{$R *.dfm} procedure TForm1.WMSysCommand(var Message: TMessage); begin if(Message.Msg = WM_SYSCOMMAND) and (Message.wParam = SC_RESTORE) then Application.Restore; inherited; if (Message.Msg = WM_SYSCOMMAND) and (Message.wParam = SC_MINIMIZE) then Hide else inherited; end; procedure TForm1.FormShow(Sender: TObject); var Owner : HWnd; begin Owner:=GetWindow(Handle,GW_OWNER); ShowWindow(Owner,SW_HIDE); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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