We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

Remove the icon from the taskbar?

JasonC
JasonC asked
on
Medium Priority
584 Views
Last Modified: 2010-04-04
How can I remove the taskbar Icon and title text from the taskbar.

The forms are opened as modal windows in an Exchange Extension DLL. I don't want to see the Icons though.

I don't want to turn the window into a toolbox dialog.
Comment
Watch Question

Go to "Project>Options>Application" on the Delphi menu.  Enter a space for the Application Title and create a blank icon (completely transparent) and assign it to the application icon.  This is admittedly a hack but it does produce a comletely blank taskbar icon.

Heath

Author

Commented:
I don't think I worded it quite right, I don't want to see the Taskbar button created at all.
Do this:

ShowWindow(Application.Handle, SW_HIDE);

Cheers,

Raymond.
Oh...... Then do it rwilson's way.  That should do it.

Author

Commented:
No, sorry didn't work, the Extension is a DLL loaded by Outlook, the form has to be shown as a modal form.

Thanks anyway
How do you create your form? ..show us how you initiate the windowed controls and which parameters you are carrying with it.

regards,
Williams

Author

Commented:
MyForm:
  BorderIcons = [biSystemMenu]
  BorderStyle = bsSingle
  Position = poScreenCenter
  ShowHint = True

Application.CreateForm(TMyForm, MyForm);
MyForm.ShowModal;


Create a "dummy" main form. This form will NEVER be shown so make
it some small, empty box or whatever.
Do the following:

1) Create your application.
2) Add TWO forms, the first is your DUMMY main window, the second (and
more) will be the dialogs you want.
3) Change your DPR (application source), by adding the following lines
just before the "Application.Run" line:

program Project1;

uses
  Forms,
  Windows,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
{ add these next two lines}
  Application.ShowMainForm:=false;
  ShowWindow(Application.Handle,SW_HIDE);
{}
  Application.Run;
end.

- this will hide the mainform (actually, it will prevent it from ever
appearing - i.e. no flicker) and hides the app too.

Cheers,

Raymond.
Actually you can write

  ShowWindow(Application.Handle,SW_HIDE);

Before you initialize the application object, else you will be able to track a glitch of a button on the taskbar, but else I support wilsons example.

Regards,
Williams
JasonC,

Does this do the trick?

Cheers,

Raymond.

Author

Commented:
No, it must have something to do with the DLL being loaded by Microsoft Outlook. The only way I can work around the problem is to turn the border style to bsToolWindow. Which isn't the best as I liked to see the icon's in the title bar.

Commented:
Hmmm. You could try to override the TForm1.CreateParams function and in this function do this:

  Params.Style:=Params.Style (and (not WS_CHILD)) or WS_POPUP;
  Params.WndParent:=OutlookMainWindowHandle;

Perhaps this helps. Please try it...

Regards, Madshi.

Author

Commented:
procedure TForm1.FormCreate(Sender: TObject);
var
 MyParams : TCreateParams;

begin
Form1.CreateParams(MyParams);
MyParams.Style := MyParams.Style + (not WS_CHILD) or WS_POPUP;
MyParams.WndParent := FindWindow('Outlook.Application',nil);
Form1.CreateParams(MyParams);
end;

What is wrong with this code? Have I got in the wrong place?
Write this line

MyParams.Style := MyParams.Style + (not WS_CHILD) or WS_POPUP;

like this

MyParams.Style := MyParams.Style and (not WS_CHILD) or WS_POPUP;

Raymond.

Author

Commented:
Sorry Guys, it still shows on the taskbar.

Commented:
JasonC

I think what you need to do is use GetWindowLong, SetWindowLong etc like so...

        ShowWindow(Application.Handle, SW_HIDE);
        SetWindowLong(Application.Handle, GWL_EXSTYLE,
        GetWindowLong(Application.Handle, GWL_EXSTYLE) and not WS_EX_TOOLWINDOW);

Later
BoRiS

        ShowWindow(Application.Handle, SW_SHOW );

Commented:
Hmmm. I meant it this way:

type TForm1 = class(TForm)
  ...
  public
    { Public-Deklarationen }
    procedure CreateParams(var Params: TCreateParams); override;
  end;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  Params.Style:=(Params.Style and (not WS_CHILD)) or WS_POPUP;  // I'm not sure if these two lines have to be in fron of the inherited or behind of it...  :-)
  Params.WndParent:=OutlooksMainWindowsHandle;
  inherited;
  Params.Style:=(Params.Style and (not WS_CHILD)) or WS_POPUP;
  Params.WndParent:=OutlooksMainWindowsHandle;
end;

Regards, Madshi.

Author

Commented:
No, Sorry it still shows in the taskbar, maybe this is a problem with Outlook.

Commented:
Hmm. Perhaps. I don't think so, but perhaps. However, I've no more ideas... Sorry...  :-(

Commented:
Hey

Try either

      SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
or
     SetWindowLong(Application.Handle, GWL_EXSTYLE, not WS_EX_TOOLWINDOW);

on the FormCreate

Author

Commented:
Still doesn't work.
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
ExtendedStyle := GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle OR TOOLWINDOW AND NOT WS_EX_APPWINDOW);

Sorry this didn't work either all though I had to remove the TOOLWINDOW part because delphi didn't know what this was.

Thanks

Jason: I think he meant WS_EX_TOOLWINDOW

Raymond.

Author

Commented:
Yeah, sorry, I worked that out after I sent the comment, anyway, same problem, it shows on the taskbar still.

Thanks

Commented:
Hi Jason, if you want, you can send your whole project to "madshi@gmx.net". Then I'll look at it. But please tell me what I need to do to make Outlook load this dll.

Regards, Madshi.
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.