Avatar billede lsn1 Nybegynder
26. januar 2001 - 10:30 Der er 10 kommentarer og
1 løsning

Fjern fra pcoceslinjen

Jeg vil gerne lave et program, som kan fjerne programmet fra Windows Proceslinjen, altså den der Hvor minimerede vinduer er vist i. Jeg vil ikke have mit program vist dernede.

Altså når brugeren trykker på Buttton1 bliver programmet fjernet fra proceslinjen, og når brugeren trykker på Button2, bliver programmet/vindeuet synligt igen.

Kan nogen af jer komme med nogle eksempler?
UDEN \"FUNCTION\"!!!

LSN
Avatar billede delphi Nybegynder
26. januar 2001 - 10:34 #1
The following will keep the application from showing in the task manager
add this after the implementation
const
RSPSIMPLESERVICE = 1;
RSPUNREGISTERSERVICE = 0;
function RegisterServiceProcess( dwProcessID, dwType : DWord ): Dword;
stdcall; external \'KERNEL32.DLL\';

add this to formcreate
RegisterServiceProcess( GetCurrentProcessID, RSPSIMPLESERVICE );

add this to form close
RegisterServiceProcess( GetCurrentProcessID, RSPUNREGISTERSERVICE


Delphi
Avatar billede delphi Nybegynder
26. januar 2001 - 10:34 #2
Øhh...kommer lige i tvivl om det løser problemet....

Må lige prøve selv.

Peter.
Avatar billede delphi Nybegynder
26. januar 2001 - 10:37 #3
Niks det virker ikke.  Det vil bare forhindre dig i at kunne lukke et program ved at trykke CTRL-ALT-DELETE, idet programmet ikke optræder i tast listen.

Sorry, glem det svar....

Peter
Avatar billede borrisholt Novice
26. januar 2001 - 10:46 #4
Hej Lasse

Du giver din form et OnResize Event og i det skriver du der her :

  ShowWindow(Application.Handle, SW_HIDE);

altså :

procedure TForm1.FormResize(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;
Jens B
Avatar billede delphi Nybegynder
26. januar 2001 - 10:51 #5
Jens> Den løsning virker umiddelbart, dvs. applicationen starter uden at være i process linien.  Hvis du så minimere dit program, så kommer den frem der nede - og den bliver der selvom man maximere eller gendanner windowet igen.

Martin Djernæs har på sin site et afsnit om problemet.  Her er et link: http://www.djernaes.dk/martin/delphi.html#HideTask

Peter
Avatar billede borrisholt Novice
26. januar 2001 - 11:45 #6
Delphi >> Jeg kenner godt den artikke jeg synes ikke den er ret god, nok mest fordi den ikke virker ...


hvis du vil fjerne en applikation effiktivt fra din taskbar, som faktisk hedden en Application bar,  skal du overstyre message handleren for WM_SYSCOMMAND. Der udover skal du have et OnRestore event på din Application .... Og et par andere små tricks ...

Alt i alt så kommer koden til at se således ud :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  AppEvnts;

type
  TForm1 = class(TForm)
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
    procedure ApplicationOnRestore(Sender: TObject);

  public
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormResize(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
  case Message.CmdType of
    SC_MINIMIZE:
    begin
      ShowWindow(Handle, SW_HIDE);
      Application.Minimize;
      ShowWindow(Application.Handle, SW_SHOW);
    end;
    SC_RESTORE:
    begin
      Application.Restore;
      ShowWindow(Handle, SW_RESTORE);
      ShowWindow(Application.Handle, SW_HIDE);
    end;
    else
      inherited;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
  Application.Title := Caption;
  Application.OnRestore := ApplicationOnRestore;
end;

procedure TForm1.ApplicationOnRestore(Sender: TObject);
begin
  ShowWindow(Handle, SW_RESTORE);
  ShowWindow(Application.Handle, SW_HIDE);
end;

end.

Jens B
Avatar billede borrisholt Novice
26. januar 2001 - 11:46 #7
Bemærk at linjen ShowWindow(Application.Handle, SW_SHOW); er sat der for at du kan genskabe dit vindue, indtil du får et ikon nede i dit systray ....

Jens B
Avatar billede loke-liscom Nybegynder
26. januar 2001 - 13:42 #8
Var det ikke sådan her det skulle virke?

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_SHOW);
end;
Avatar billede borrisholt Novice
26. januar 2001 - 13:47 #9
loke-liscom  >> joeee men var det ikke meningen at det skulle ske automatisk ...
jens B
Avatar billede loke-liscom Nybegynder
26. januar 2001 - 14:32 #10
læg lige mærke til hvad isn1 skriver aller først i spørgsmålet:
\"Altså når brugeren trykker på Buttton1 bliver programmet fjernet fra proceslinjen, og når brugeren trykker på Button2, bliver programmet/vindeuet synligt igen. \"

Avatar billede borrisholt Novice
26. januar 2001 - 14:51 #11
oooh ... dit\'nt catch that...

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester