Solved

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

Posted on 1998-11-21
14
387 Views
Last Modified: 2010-04-04
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?
0
Comment
Question by:drol
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
  • 2
  • +4
14 Comments
 

Expert Comment

by:bdtikast
ID: 1347527
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.

0
 
LVL 1

Expert Comment

by:xpher
ID: 1347528
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.
0
 
LVL 1

Expert Comment

by:xpher
ID: 1347529
if you wanted to show it again you would use SW_RESTORE inplace of SW_HIDE

Regards
Chris
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 7

Expert Comment

by:ahalya
ID: 1347530
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.
0
 

Expert Comment

by:msac_m
ID: 1347531
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,

0
 

Expert Comment

by:msac_m
ID: 1347532
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.
0
 

Author Comment

by:drol
ID: 1347533
i want to hide my application from tasklist not from taskbar.
0
 

Author Comment

by:drol
ID: 1347534
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?
0
 
LVL 8

Accepted Solution

by:
ZifNab earned 80 total points
ID: 1347535
Hi drol,

this should work :

const
  RSP_SIMPLE_SERVICE = 1;
  RSP_UNREGISTER_SERVICE = 0;

function RegisterServiceProcess(dwProcessID, dwType: DWORD):DWORD;
stdcall; external 'KERNEL32.DLL';

When the program starts :
RegisterServiceProcess(GetCurrentProcessID, RSP_SIMPLE_SERVICE);

When the program stops :
RegisterServiceProcess(GetCurrentProcessID, RSP_UNREGISTER_SERVICE);

Regards, Zif.
0
 
LVL 7

Expert Comment

by:ahalya
ID: 1347536
drol,

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

Author Comment

by:drol
ID: 1347537
Thank you all!
Now, it works.
I forgot the 'stdcall' statement. :-)
0
 
LVL 1

Expert Comment

by:sageryd
ID: 1347538
How do I hide the application from the taskbar and still have the main form unhidden?
0
 

Author Comment

by:drol
ID: 1347539
Hi Sageryd

try
Application.ShowMainForm:=false;
0
 
LVL 1

Expert Comment

by:sageryd
ID: 1347540
WRONG! That hides the form AND the taskbar-button. I want something that only hides my application from the taskbar, not the MainForm!
0

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

710 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question