TCSCode
asked on
How do I make my app hide from the taskbar.
How do I hide my application from the windows taskbar? I want my application to load in the system try witch i use a component called TrayIcon. But when I minimize my application, I want it to stay in the try and hide from the taskbar. I have tried:
ShowWindow(Application.Han dle, SW_HIDE);
SetWindowLong(Application. Handle, GWL_EXSTYLE,
GetWindowLong(Application. Handle, GWL_EXSTYLE)
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
But all the above code does hide my application from the taskbar until I minimize it. Then a window appears on my desktop like a child Mdi window.
How can i fix this?
Thank's TCSCode.
ShowWindow(Application.Han
SetWindowLong(Application.
GetWindowLong(Application.
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
But all the above code does hide my application from the taskbar until I minimize it. Then a window appears on my desktop like a child Mdi window.
How can i fix this?
Thank's TCSCode.
listening..
Add this line to the first line of your project (*.dpr):
[begin]
SetWindowLong(Application. Handle, GWL_EXSTYLE, GetWindowLong(Application. Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
[Application.Initialize;
...]
Regards, Madshi.
[begin]
SetWindowLong(Application.
[Application.Initialize;
...]
Regards, Madshi.
ASKER
When I load my Application I want to use it. When I minimize my application I want it to disapear like Hideing the form ( Form1.Hide ) But with all the code i have shown you and all the code that I have been given in this question does'nt work completely. When I minimize my application useing Application.Minimize; I see a toolwindow or whatever it's called above my taskbar and on the desktop. How can I fix that problem I am useing Delphi 5 Pro. Thank's.
Try this:
type
TYourMainForm = class(TForm)
private
procedure SysCommand(var Message: TWMSYSCOMMAND); message WM_SYSCOMMAND;
...
procedure TYourMainForm.SysCommand(v ar Message: TWMSYSCOMMAND);
begin
if Message.CmdType and $FFF0 = SC_MINIMIZE then begin
Message.result := 0;
Hide;
end else
inherited;
end;
This should fix the behaviour when the user clicks the minimize button. Don't call Application.Minimize, call Application.MainForm.Hide instead.
type
TYourMainForm = class(TForm)
private
procedure SysCommand(var Message: TWMSYSCOMMAND); message WM_SYSCOMMAND;
...
procedure TYourMainForm.SysCommand(v
begin
if Message.CmdType and $FFF0 = SC_MINIMIZE then begin
Message.result := 0;
Hide;
end else
inherited;
end;
This should fix the behaviour when the user clicks the minimize button. Don't call Application.Minimize, call Application.MainForm.Hide instead.
I had the same problem. The solution was placing the code in the right event of the form. Try different events, like create, or onactivate. I can look it up for you when i'm at home, but with a little puzzling you will find it. (sorry that i can not tell you the right event now, i'm at work...;) )
By the way, you used the right code. I can also give you the code to let it dissappear from the events list (when you press CTRL-ALT-DEL, again, i shall look it up for you.)
By the way, you used the right code. I can also give you the code to let it dissappear from the events list (when you press CTRL-ALT-DEL, again, i shall look it up for you.)
hi,
you must hide the parent-window , which is created by delphi and not shown! that is the solution.
you must only make a small change in your code:
var
owner:thandle;
begin
....
owner:=getwindow(handle,GW _OWNER);
showwindow(owner,SW_HIDE);
....
end;
These two lines of code you must insert, when the window shall be hidden from the taskbar.
cheers
titz
you must hide the parent-window , which is created by delphi and not shown! that is the solution.
you must only make a small change in your code:
var
owner:thandle;
begin
....
owner:=getwindow(handle,GW
showwindow(owner,SW_HIDE);
....
end;
These two lines of code you must insert, when the window shall be hidden from the taskbar.
cheers
titz
sorry, one line code forgotten:
correct is:
.....
owner:=getwindow(handle,GW -OWNER);
showwindow(owner,SW_HIDE);
self.hide;
.....
this is now correct.
titz
correct is:
.....
owner:=getwindow(handle,GW
showwindow(owner,SW_HIDE);
self.hide;
.....
this is now correct.
titz
ASKER
Still does'nt work.
ASKER
titz your code is what i am looking for thank's to get your points just answer this message and i'll send them. Thank's.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
hi TCSCode,
you can choose my comment as answer. then i will get the points.
Therefor it is not necessary that i send a new answer !
sorry for i am retutning so late, but here was canaval ! you know, ...
cheers
titz
you can choose my comment as answer. then i will get the points.
Therefor it is not necessary that i send a new answer !
sorry for i am retutning so late, but here was canaval ! you know, ...
cheers
titz
ASKER
No problem, Thank's again.
procedure TServerForm.FormCreate(Sen
begin
ServerForm.Top := 5000;
end;
procedure TServerForm.FormActivate(S
begin
Application.Minimize;
ShowWindow(Application.Han
end;
The first code is for creating the first form on top = 5000, so it's off the user screen, so the user can't see the blinking for while it disappear
The second code is for minimize it and then hide it.
Hope this helps :)