ورود

View Full Version : سوال: ایکون tray



alimooghashang
شنبه 22 آبان 1389, 18:16 عصر
با سلام
چطوری میشه برنامه ای که نوشتیم رو در tray کنار ساعت نشون بدیم؟
یعنی مثلا یه برنامه داشته باشیم که اجرا باشه و تو tray نمایش بده که اجراست!
و وقتی که اجراش تموم شد از tray حذف بشه؟

Felony
شنبه 22 آبان 1389, 18:52 عصر
بارها بحث شده ، اگر از دلفی 7 استفاده میکنید از کامپوننت CoolTary و اگر از دلفی 2009 به بعد استفاده میکنید خودش کامپوننت TaryIcon داره .

majidbestgame
شنبه 22 آبان 1389, 19:33 عصر
میتونی از کتابخانه ی Shellapi استفاده کنی.....
با کد زیر فک کنم کارت راه بیفته....این کد آیکون برنامه را به Tray آیکون اضافه میکنه

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Shellapi, ExtCtrls;

const WM_NotifyIcon = WM_User+333;
...
private
{ Private declarations }
tnid: TNotifyIconData; // use shell api
HMainIcon:HIcon;
procedure CMClickIcon (var msg: TMessage); Message WM_NotifyIcon; // baraye control click roye tray icon

public
{ Public declarations }
end;
...
...
procedure Tform1.CMClickIcon(var msg: Tmessage);
begin
case msg.LParam of
WM_LButtonDown: Show;
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
HMainIcon :=loadicon(MainInstance,'MainICon');

shell_NotifyIcon(NIM_Delete,@tnid);

tnid.cbSize :=sizeof(TNotifyIconData);
tnid.Wnd :=handle;
tnid.uID :=0147;
tnid.uFlags :=Nif_Message or Nif_Icon or Nif_tip;
tnid.uCallbackMessage :=WM_NotifyIcon;
tnid.hIcon :=HMainIcon;
tnid.szTip :='majidbestgame';

Shell_NotifyIcon(NIM_add,@tnid);
end;

بعد برای حذف Tray آیکون بعد از بستن برنامه از کد زیر استفاده کن

Shell_NotifyIcon(NIM_Delete,@tnid);

با این کد ها نیازی به هیچ کامپونتی نداری...