![]() |
Eintrag Taskbar unterdrücken
Hallo,
ich habe mir ein Pluginframework auf Exe-Basis gebaut. Das funktioniert schon eine Ewigkeit. Mit unten stehenden Code unterdrücke ich den Taskbar-Eintrag der als Plugin gestarteten Exe-File. Mit D2007 kompiliert funktioniert das problemlos. Mit XE2 kompiliert stürzt diese Funktion bei ret (end) ab. Hat wer eine Idee, woran das liegen kann? Gruß Peter
Delphi-Quellcode:
function HideFromToolbar( ApplicationHandle: Cardinal ): LongInt; assembler;
asm push eax push 0 push eax call ShowWindow pop eax push eax push -20 push eax call GetWindowLong or eax, 128 pop edx push eax push GWL_EXSTYLE push edx call SetWindowLong push 5 push eax call ShowWindow end; |
AW: Eintrag Taskbar unterdrücken
Unterschiede wegen Application.MainFormOnTaskbar?
Wieso nimmst du hierfür nicht einfach normalen Pascal-Code statt hier schwerer zu verstehenden Assembler-Code einzusetzen? |
AW: Eintrag Taskbar unterdrücken
Wie wäre es damit? (hab ich irgendwo in den Tiefen meiner Delphi Units gefunden - bitte testen)
Delphi-Quellcode:
procedure HideAppFromTaskbar(Hide:Boolean);
type TStatus = array[False..True] of Integer; const status : TStatus = (SW_RESTORE, SW_HIDE); begin ShowWindow(Application.Handle, status[Hide]); end; |
AW: Eintrag Taskbar unterdrücken
Zitat:
@shmia: Wie Bernhard schon erwähnte, muß man da eh aufpassen. MainFormOnTaskbar=True ==> die MainForm (Hauptformular) ist in der Taskleiste verlinkt MainFormOnTaskbar=False oder dieses existiert noch nicht ==> die versteckte Application-MessageForm wird in der Taskleiste verlinkt |
AW: Eintrag Taskbar unterdrücken
Liste der Anhänge anzeigen (Anzahl: 1)
Die vorgeschlagene Alternative funktioniert auch nicht. Das wird wohl mit dem geänderten Mainwindow ab D2009 und MainFormOnTaskbar zusammenhängen.
64 bit benötige ich nicht. Da ist Delphi ein paar Jahre zu spät gekommen. Die Leute, die 64 bit benötigen, sind schon vor Jahren zu C# gewechselt. Die Lösung eine Exe als Plugin zu verwenden, hat sich übrigens bewährt und die bpl Hölle abgeschafft. Wen es interessiert, ich habe mal eine kleine Demo angehängt. Das Programm Main starten. Das Programm Test wird als Plugin aufgerufen und als Fenster oder einem Tabshet als Parent gehandelt. Gruß Peter |
AW: Eintrag Taskbar unterdrücken
[QUOTE=hanspeter;1147460]Die vorgeschlagene Alternative funktioniert auch nicht. Das wird wohl mit dem geänderten Mainwindow ab D2009 und MainFormOnTaskbar zusammenhängen./QUOTE]
Zitat:
Das ist das Handle zum versteckten Messagewindow. Stattdessen kann man auch ein Anderes Handle nutzen. Self.Handle, MyForm.Handle oder sowas wie Application.MainForm.Handle . |
AW: Eintrag Taskbar unterdrücken
Zitat:
Es scheint nur das die Create-Reihenfolge berücksichtigt werden muss. Sende ich das Kommando
Delphi-Quellcode:
zeitverzögert, dann funktioniert es wieder.
ShowWindow(Application.Handle, status[Hide]);
Also Problem erledigt. Gruß Peter |
AW: Eintrag Taskbar unterdrücken
Nja, wenn die MainForm in der Taskbar angezeigt wird, dann bringt es nicht viel den schon versteckten Taskbareintrag der Application nochmals verstecken zu wollen. :angle2:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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