Avatar billede elv Nybegynder
15. august 2001 - 09:22 Der er 25 kommentarer

Sende andet program til systray

Hejsa

Kan det lade sig gøre at få et andet program til at lægge sig i system tray via nogle api calls? Og hvordan? Jeg så engang et program der sagde sig i den blå linie i toppen af alle windows-vinduer med en ekstra knap, så man kunne smide et hvilket som helst program ned i systray. Jeg skal ikke lave det med den ekstra knap...

Jeg forestiller mig noget i retning af at man først finder handlen med findwindow, men så kan jeg heller ikke komme længere....

MVH Elv
Avatar billede borrisholt Novice
15. august 2001 - 09:23 #1
elv >> Har du en handle til programmet ?

Jens B
Avatar billede phrozia Juniormester
15. august 2001 - 09:29 #2
Fedt program! Mon du kan komme i tanke om hvad det hedder?
Avatar billede elv Nybegynder
15. august 2001 - 10:37 #3
Kan ikke huske navnet på programmet.

Jeg har ikke handlen til programmet, men det kunne f.eks. være outlook express... så den ikke fylder i taskbren, men alligevel henter mail konstant...
Avatar billede phrozia Juniormester
15. august 2001 - 12:15 #4
Øv...
Avatar billede borrisholt Novice
15. august 2001 - 12:16 #5
jeg skal nok lave programmer, men det bliver altså ikke i dag !

Jeg tror ikke det er så svært ...

Jens B

Avatar billede elv Nybegynder
15. august 2001 - 13:18 #6
Lyder feeeeeedt, jeg venter bare...

MVH Elv
Avatar billede ziron Nybegynder
15. august 2001 - 13:18 #7
jeg ska nok ska nok :-)

/ZIRON
Avatar billede nico26 Nybegynder
15. august 2001 - 14:13 #8
Jeg har en gang lavet noget lignende - det kan være du kan bruge noget af det

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    Button2: TButton;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    IconData: array[0..999] of TNotifyIconData;
    IC: Integer;
  public
    { Public declarations }
  end;

function EnumWnds(Wnd: HWND; Data: LParam): Bool; stdcall;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function EnumWnds(Wnd: HWND; Data: LParam): Bool;
var
  Text: string;
begin
  SetLength(Text, 256);

  if GetWindowText(Wnd, PChar(Text), 255) <> 0 then
    Form1.ListBox1.Items.AddObject(Text, Pointer(Wnd));

  Result := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  EnumWindows(@EnumWnds, 0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to IC - 1 do
    Shell_NotifyIcon(NIM_DELETE, @IconData[i]);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if ListBox1.ItemIndex < 0 then
    Exit;

  with IconData[IC] do
  begin
    cbSize := SizeOf(TNotifyIconData);
    Wnd := HWND(ListBox1.Items.Objects[ListBox1.ItemIndex]);
    uID := IC;
    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    uCallBackMessage := 0;
    hIcon := Application.Icon.Handle;
    StrCopy(szTip, PChar(Copy(ListBox1.Items[ListBox1.ItemIndex], 1, 64)));
  end;

  Shell_NotifyIcon(NIM_ADD, @IconData[IC]);

  Inc(IC);
end;

end.
Avatar billede borrisholt Novice
15. august 2001 - 14:16 #9
nico22  >> Så langt så godt ... Men hvis du ikke hooker ding ind i dens message kø, kan du vel ikke få den tilbage ...

Jens B

Avatar billede nico26 Nybegynder
15. august 2001 - 14:32 #10
jeg tænkte man kunne subclasse det vindue man lægger i trayet
Avatar billede borrisholt Novice
15. august 2001 - 14:33 #11
jjoee .. Det er selvfølgelig nemmere ...

Jens B
Avatar billede ziron Nybegynder
09. september 2001 - 16:21 #12
er der stadig gang i dette spørgsmål???

/ZIRON
Avatar billede elv Nybegynder
09. september 2001 - 16:52 #13
Det ser lidt dødt ud..... jeg kan ikke helt se hvordan det kode der er givet, kan bruges til noget....
Avatar billede ziron Nybegynder
09. september 2001 - 17:18 #14
det var mere fordi jeg så vil gå igang med at lave et program til dig :-)

/ZIRON
Avatar billede elv Nybegynder
09. september 2001 - 17:35 #15
Lyder godt! :)
Avatar billede elv Nybegynder
15. september 2001 - 19:00 #16
Hvaaaaeeehhh... bliver det til noget? :)

MVH Emil
Avatar billede ziron Nybegynder
15. september 2001 - 19:02 #17
så så boy :-) jeg har da fået lavet noget bare rolig, har bare ikke så meget tid. men det er på vej...

/ZIRON
Avatar billede elv Nybegynder
15. september 2001 - 19:17 #18
hehe, jeg skulle bare lige høre om du havde glemt det :)
MVH Emil
Avatar billede ziron Nybegynder
15. september 2001 - 19:32 #19
:-) det er bare helt iorden...

/ZIRON
Avatar billede hermandsen Juniormester
20. marts 2002 - 00:14 #20
Hmmmm...
Faldt lige over spørgsmålet... Ville egentlig også lige høre om der stadig var gang i spørgsmålet... Det kunne da være lækkert at have et lille program der smed alle andre ned i trayen! :)
Avatar billede elv Nybegynder
21. september 2002 - 16:48 #21
zzzzzzzzzzz :)
Ziron, er du bare i gang med at lave et monster sejt program eller er vi gået lidt i stå? :)
Avatar billede hermandsen Juniormester
24. marts 2003 - 19:51 #22
Hejsa!!
Fandt lige det her, http://www.dntsoft.com/alltotray/ og kom i tanke om spørgsmålet! :)
Avatar billede elv Nybegynder
24. marts 2003 - 20:44 #23
Hehe, fino!  Men min pointe var også lidt at finde ud af hvordan man kan gøre det fra Delphi.... er det ikke en udfordring for dig? :)
Avatar billede hermandsen Juniormester
24. marts 2003 - 22:05 #24
Njaaaa... Tror dog alligevel det er for stor en mundfuld for mig!!
Håbede nu mere på at et par af de andre Delphi-gutter ville forsøge sig lidt!! ;)
Avatar billede elv Nybegynder
24. marts 2003 - 22:07 #25
Jaaaah, men hvis man nu kigger på hvornår spørgsmålet egentlig er oprettet.... Borrisholt, måtte selv du bukke under for dette? Det tror jeg ikke på :)
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