Link to home
Start Free TrialLog in
Avatar of drol
drol

asked on

How To hide my application from tasklist? (win95/98)

Hi!
    I tried to hide my application with following code:

    var i:longint;
        handle:longint;
    begin
    i:=GetCurrentProcessId;
    handle:=OpenProcess(PROCESS_ALL_ACCESS,true,i);
    RegisterServiceProcess(handle,1);
    end;

It do not work. Any idea?
Avatar of bdtikast
bdtikast

At designtime I set the mainform invisible and Application.ShowMainForm to false. Below is the part in the application's .DPR I changed (View, Project Source).

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.ShowMainForm:= false;
  Form1.Visible:= false;
  Application.Run;
end.

drol

I have done this to hide the button from the taskbar. Added this to the project source (you must also add Windows to uses)
example

program YourApplication;

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

{$R *.RES}

begin
  Application.Initialize;
  Application.ShowMainForm := False;
  Application.Title := 'Your Application';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TAboutForm, AboutForm);
  ShowWindow(Application.Handle, SW_HIDE);
  Application.Run;
end.
if you wanted to show it again you would use SW_RESTORE inplace of SW_HIDE

Regards
Chris
drol,

even though "RegisterServiceProcess" is supposed to register the application with the given handle, i have never seen/heard that it worked with third party programs.

if you are trying to remove YOUR program from the tasklist then you can call RSP with a parameter of 0 rather than the handle. The following works perfectly in Delphi.

ok := RegisterServiceProcess (0, RSP_SIMPLE_SERVICE);
if ok  = 0 then ShowMessage ('Error Registering Service');

i guess this is the info you're looking for.
Hi all,

  I could not undertand why you used OpenProcess, Simply try this

  RegisterServiceProcess(GetCurrentProcessID,1);

And as bdtikast  do not forget to hide the mainform

That is all I think,

Regards,

Sorry for mistyping the third to last line of my comment, it  would be

"And as bdtikast  SAID,  do not forget to hide the mainform "

Regards.
Avatar of drol

ASKER

i want to hide my application from tasklist not from taskbar.
Avatar of drol

ASKER

registerserviceprocess(0,1) does not work.
i'm running win98.
I use delphi 3 and include the function from kernel32.dll as 'external'. is there a unit that includes the function?

where in the code you use the function?
ASKER CERTIFIED SOLUTION
Avatar of ZifNab
ZifNab

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
drol,

RegisterServiceProcess(0, 1) works in Win95.
i Register the my serivces in the FormCreate method.
Avatar of drol

ASKER

Thank you all!
Now, it works.
I forgot the 'stdcall' statement. :-)
How do I hide the application from the taskbar and still have the main form unhidden?
Avatar of drol

ASKER

Hi Sageryd

try
Application.ShowMainForm:=false;
WRONG! That hides the form AND the taskbar-button. I want something that only hides my application from the taskbar, not the MainForm!