Avatar billede hclarsen Nybegynder
14. august 2004 - 21:57 Der er 7 kommentarer og
1 løsning

Program i taskbar

Jeg har nedenstående kode, som gør, at mit program ikke vises i taskbaren.
Hvordan kan jeg gøre således, at jeg kan skifte mellem at programmet skal vises i min taskbar, ved f.eks at bruge en checkbutton?


begin
ShowWindow(Application.Handle, SW_HIDE) ;
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    getWindowLong(Application.Handle, GWL_EXSTYLE) or
    WS_EX_TOOLWINDOW) ;
  ShowWindow(Application.Handle, SW_SHOW) ;
  end;
Avatar billede hclarsen Nybegynder
14. august 2004 - 22:11 #1
Ok, jeg fandt faktisk selv ud af noget, men har stadig brug for en hjælpende hånd.

procedure Taskbar;
begin
ShowWindow(Application.Handle, SW_HIDE) ;
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    getWindowLong(Application.Handle, GWL_EXSTYLE) or
    WS_EX_TOOLWINDOW) ;
  ShowWindow(Application.Handle, SW_SHOW) ;
  end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox1.checked = true
  then begin Taskbar
  end
  else if Checkbox1.Checked = false
    then begin ;
  end;
end;
end.

Hvad skal jeg skrive ved det sidste 'then begin', for at den disabler proceduren Taskbar? :)
Avatar billede Slettet bruger
14. august 2004 - 22:49 #2
Prøv med:

procedure ShowInTaskbar;
begin
  SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) and not WS_EX_TOOLWINDOW);
  ShowWindow(Application.Handle, SW_SHOW) ;
end;

procedure Taskbar;
begin
  ShowWindow(Application.Handle, SW_HIDE) ;
  SetWindowLong(Application.Handle, GWL_EXSTYLE, getWindowLong(Application.Handle, GWL_EXSTYLE) or
    WS_EX_TOOLWINDOW) ;
  ShowWindow(Application.Handle, SW_SHOW) ;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if Checkbox1.checked = true then
    Taskbar
  else if Checkbox1.Checked = false then
    ShowInTaskbar;
  end;
end;

(ikke testet)
Avatar billede hclarsen Nybegynder
14. august 2004 - 22:54 #3
Det virker vist ikke =)
Avatar billede nico26 Nybegynder
15. august 2004 - 14:36 #4
du skal bare gemme den gamle fra SetWindowLong når du fjerner den

var
  oldwl : Longint;

procedure ShowInTaskbar(Show : Boolean);
const
  SW : array[Boolean] of Cardinal = (SW_HIDE, SW_SHOW);
begin
  ShowWindow(Application.Handle, SW[Show]);

  if Show then
    SetWindowLong(Application.Handle, GWL_EXSTYLE, oldwl)
  else
    oldwl := SetWindowLong(Application.Handle, GWL_EXSTYLE,
      getWindowLong(Application.Handle, GWL_EXSTYLE) or
      WS_EX_TOOLWINDOW);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowInTaskbar(Checkbox1.Checked);
end;
Avatar billede hclarsen Nybegynder
15. august 2004 - 21:52 #5
Hmm ok. Det virker da!

Men kan mit eget eksempel bruges? Altså hvad kan/skal jeg skrive efter det sidste 'then begin', for at den disabler min procedure 'Taskbar'?
Avatar billede nico26 Nybegynder
21. august 2004 - 15:39 #6
forstår ikke rigtig hvad du mener med at disable procedure 'Taskbar'???
Avatar billede hclarsen Nybegynder
22. august 2004 - 17:36 #7
Fandt selv ud af det, så lukker tråden
Avatar billede hclarsen Nybegynder
18. juli 2005 - 21:47 #8
Lukker
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