View Full Version : قرار دادن آیکون برنامه کنار ساعت سیستم
  
Omid_hope
جمعه 08 خرداد 1388, 15:55 عصر
سلام دوستان . من می خواستم آیکن برنامه ام کنار ساعت سیستم قرار بگیره . اگه ممکنه کمکم کنید . ممنون می شم .:چشمک:
Nima NT
جمعه 08 خرداد 1388, 16:18 عصر
کفون :چشمک:
میتونی از کامپوننت Raize استفاده کنی.
Saeed_m_Farid
جمعه 08 خرداد 1388, 16:52 عصر
سلام دوستان . من می خواستم آیکن برنامه ام کنار ساعت سیستم قرار بگیره . اگه ممکنه کمکم کنید . ممنون می شم .:چشمک:
در اين مورد قبلا آقاي كشاورز اينجا (http://www.barnamenevis.org/forum/showthread.php?t=142798) توضيح دادن
کفون :چشمک:
میتونی از کامپوننت Raize استفاده کنی.
اولا :اين كفون يعني چي؟
ثانيا : واسه يه TrayIcon ساده يه مجموعه به اين بزرگي VCL رو استفاده كردن اصلا منطقي بنظر نميرسه! ازطرف ديگه با اينكار قابليت حمل برنامه ها هم كم ميشه، يعني توسعه گر نميتونه برنامه اش رو بخاطر استفاده از اين مجموعه (يا مجموعه هاي ديگه) همه جا بتونه كامپايل كنه و بايد اين toolkit ها رو هم با خودش همه جا ببره!
ثالثا : وقتي دارين به يكي كمك ميكنيد يه كمي توضيح هم بدين فكر كنم بد نباشه، مثلا Raise چيه (http://www.raize.com/DevTools/RzComps/Default.asp) و از بين اونهمه كامپوننت (فكر كنم يه 100 تايي كامپوننت داره!!!) كه نصب ميكنه كدومش تو اين زمينه به دردشون ميخوره ...
و در نهايت : اصلا قصدم جسارت به شما نبود، فقط جهت بيراهه نرفتن دوستان ...
آف تاپيك : چرا اينقد اسم شما شبيه Nima_NF (http://www.barnamenevis.org/forum/member.php?u=46043)  هست...   خيلي وقت بود ميخواستم بگم، اگه نمي گفتم بعدا سرخورده ميشدم !!!
Nima NT
جمعه 08 خرداد 1388, 19:15 عصر
کفون ( Kefoon )به ترکی یعنی حالت چطوره و این دوست آذر شهری مون فکر کنم گرفته باشه ( یه احول پرسی بود همین :لبخند: )
در مورد قابلیت حمل بودن برنامه هم درست می فرمائید ولی خوب دوستمون در مورد اینکه حتما" کد باشه و ... صحبتی نکرده بودن و من هم راحت ترین راه رو پیشنهاد کردم.
در مورد نحوه استفاده بعد از نصب کامپوننت فوق میتونید از لیست Raize Widgets کنترل TRzTrayIcon رو استفاده کنید , استفاده از اون راحت هست و فکر نمیکنم توضیح خاصی لازم داشته باشه.
درمورد شباهت اسمی هم , والا خودمم نمیدونم , در هر حال ایشون سرور ما هستن.
یا حق
Felony
جمعه 08 خرداد 1388, 19:49 عصر
میتونید از کامپوننت CoolTryIcon استفاده کنید .
Omid_hope
جمعه 08 خرداد 1388, 21:29 عصر
یاشا نیما جان ، ممنون از کمکت فقط اگه لطف کنی و لینک دانلود کامپوننت Raize رو برام بزاری یه دنیا ممنون می شم .
1485159
جمعه 08 خرداد 1388, 21:30 عصر
اینقدر بدم میاد ی چیز بپرسی بعد بگن که از کامپوننت استفاده کن....
راه دیگه ای نیست!؟..
Nima NT
جمعه 08 خرداد 1388, 21:49 عصر
یاشا نیما جان ، ممنون از کمکت فقط اگه لطف کنی و لینک دانلود کامپوننت Raize رو برام بزاری یه دنیا ممنون می شم . 		
متاسفانه یا خوشبختانه نمیشه تو سایت لینک مربوط به نرم افزارهای کرک شده رد و بدل کرد ( قانون 22 سایت )
پیدا کردم با پیغام خصوصی برات ارسال میکنم
اینقدر بدم میاد ی چیز بپرسی بعد بگن که از کامپوننت استفاده کن....
راه دیگه ای نیست!؟.. 		
خوب اگر از پاسخ های سایت برنامه نویس خوشتون نمیاد میتونید از Google.com استفاده کنید. !
1485159
جمعه 08 خرداد 1388, 22:07 عصر
خوب اگر از پاسخ های سایت برنامه نویس خوشتون نمیاد میتونید از Google.com استفاده کنید. ! 
شما اشتباه فهیمیدی!!!
در ضمن نیازی به دانلود کامپوننت نیست!!!
دلفی 2007 به بعد خودش داره!!!!
Felony
جمعه 08 خرداد 1388, 22:33 عصر
:متفکر:ببخشید اونی که دلفی 2007 به بعد داره کامپوننت نیست ؟!؟!
Nima NT
جمعه 08 خرداد 1388, 22:58 عصر
شما اشتباه فهیمیدی!!!
در ضمن نیازی به دانلود کامپوننت نیست!!!
دلفی 2007 به بعد خودش داره!!!! 		
در مورد اینکه میفرمائید دلفی 2007 به بعد خودش داره و .... بهتره اگر راه حلی دارید پیشنهاد بدید و به پاسخ های دوستان بی احترامی نکنید , اینجا کسی وظیفه ای در قبال کس دیگری نداره , اگر کسی داره پاسخی میده لطف کرده ( البته خودم رو نمیگم ).
1485159
جمعه 08 خرداد 1388, 23:12 عصر
:قهقهه:ببخشید اونی که دلفی 2007 به بعد داره کامپوننت نیست ؟!؟! 
منظ.رم اینه که نیازی به دانلود کامپوننت نیست!!!!
1485159
جمعه 08 خرداد 1388, 23:14 عصر
در مورد اینکه میفرمائید دلفی 2007 به بعد خودش داره و .... بهتره اگر راه حلی دارید پیشنهاد بدید و به پاسخ های دوستان بی احترامی نکنید , اینجا کسی وظیفه ای در قبال کس دیگری نداره , اگر کسی داره پاسخی میده لطف کرده ( البته خودم رو نمیگم ). 
مگه من با تو دعوا دارم!؟..
مگه من چی گفتم!؟..
برو اول خوب بخون بعد!!!
اگه نارحت شدی ببخش!!
Nima NT
جمعه 08 خرداد 1388, 23:28 عصر
دوست عزیز من هم با شما دعوا ندارم اینجا همه با هم دوست هستیم.
شما مطلب درست خودتون رو با لحنی یه کم تند بیان کردین , منظور شما این بود که بدون استفاده از کامپوننت هم میشه و بنده هم این رو متوجه شدم ولی شما با بیان اینکه "بدم میاد ..... " کمی تند برخورد کردید یا لااقل این طوری به نظر میرسید.
بنده کوچکترین عضو سایت هستم و اگر از بنده دلخور شدی عذر خواهی میکنم.
آخر سر هم به خاطر اینکه کل پستها به صحبت نگذشته باشه و برای دیگران هم مفید واقع بشه سورس کامل کامپوننت Tray icon ... :چشمک:
unit TrayIcon;
interface
uses
  SysUtils, Windows, Messages, Classes, Graphics, 
Controls, ShellAPI,
  Forms;
const WM_TOOLTRAYICON = WM_USER+1;
      WM_RESETTOOLTIP = WM_USER+2;
type
  TTrayIcon = class(TComponent)
  private
  { Field Variables }
    IconData: TNOTIFYICONDATA;
    fIcon : TIcon;
    fToolTip : String;
    fWindowHandle : HWND;
    fActive : boolean;
    fShowDesigning : Boolean;
  { Events }
    fOnClick     : TNotifyEvent;
    fOnDblClick  : TNotifyEvent;
    fOnRightClick : TMouseEvent;
    function AddIcon : boolean;
    function ModifyIcon : boolean;
    function DeleteIcon : boolean;
    procedure SetActive(Value : boolean);
    procedure SetShowDesigning(Value : boolean);
    procedure SetIcon(Value : TIcon);
    procedure SetToolTip(Value : String);
    procedure WndProc(var msg : TMessage);
    procedure FillDataStructure;
  protected
    constructor create(aOwner : TComponent); 
override;
    destructor destroy; override;
  public
  published
    property Active : boolean read fActive write
SetActive;
    property ShowDesigning : boolean read 
fShowDesigning write SetShowDesigning;
    property Icon : TIcon read fIcon write SetIcon;
    property ToolTip : string read fTooltip write 
SetToolTip;
    property OnClick     : TNotifyEvent read 
FOnClick write FOnClick;
    property OnDblClick  : TNotifyEvent read 
FOnDblClick write FOnDblClick;
    property OnRightClick : TMouseEvent  read
FOnRightClick write FonRightClick;
  end;
procedure Register;
implementation
{$R TrayIcon.res}
procedure TTrayIcon.SetActive(Value : boolean);
begin
   if value <> fActive then begin
     fActive := Value;
     if not (csdesigning in ComponentState) then 
begin
        if Value then begin
           AddIcon;
        end else begin
           DeleteIcon;
        end;
     end;
  end;
end;
procedure TTrayIcon.SetShowDesigning(Value : 
boolean);
begin
  if csdesigning in ComponentState then begin
     if value <> fShowDesigning then begin
        fShowDesigning := Value;
        if Value then begin
           AddIcon;
        end else begin
           DeleteIcon;
        end;
     end;
  end;
end;
procedure TTrayIcon.SetIcon(Value : Ticon);
begin
  if Value <> fIcon then
    begin
      fIcon.Assign(value);
      ModifyIcon;
    end;
end;
procedure TTrayIcon.SetToolTip(Value : string);
begin
   // This routine ALWAYS re-sets the field value 
and re-loads the
   // icon.  This is so the ToolTip can be set
blank when the component
   // is first loaded.  If this is changed, the 
icon will be blank on
   // the tray when no ToolTip is specified.
   if length( Value ) > 62 then
      Value := copy(Value,1,62);
   fToolTip := value;
   ModifyIcon;
end;
constructor TTrayIcon.Create(aOwner : TComponent);
begin
  inherited create(aOwner);
  FWindowHandle := AllocateHWnd( WndProc );
  FIcon := TIcon.Create;
  SetWindowLong(Application.Handle, GWL_EXSTYLE, 
WS_EX_TOOLWINDOW);
end;
destructor TTrayIcon.destroy;
begin
  if (not (csDesigning in ComponentState) and
fActive)
     or ((csDesigning in ComponentState) and 
fShowDesigning) then
        DeleteIcon;
  FIcon.Free;
  DeAllocateHWnd( FWindowHandle );
  inherited destroy;
end;
procedure TTrayIcon.FillDataStructure;
begin
  with IconData do
  begin
     cbSize := sizeof(TNOTIFYICONDATA);
     wnd := FWindowHandle;
     uID := 0; // is not passed in with message so 
make it 0
     uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
     hIcon := fIcon.Handle;
     StrPCopy(szTip,fToolTip);
     uCallbackMessage := WM_TOOLTRAYICON;
  end;
end;
function TTrayIcon.AddIcon : boolean;
begin
   FillDataStructure;
   result := Shell_NotifyIcon(NIM_ADD,@IconData);
   // For some reason, if there is no tool tip set 
up, then the icon
   // doesn't display.  This fixes that.
   if fToolTip = '' then
      PostMessage( fWindowHandle, 
WM_RESETTOOLTIP,0,0 );
end;
function TTrayIcon.ModifyIcon : boolean;
begin
   FillDataStructure;
   if fActive then
      result := 
Shell_NotifyIcon(NIM_MODIFY,@IconData)
   else
      result := True;
end;
function TTrayIcon.DeleteIcon : boolean;
begin
   result := Shell_NotifyIcon(NIM_DELETE,@IconData);
end;
procedure TTrayIcon.WndProc(var msg : TMessage);
var MouseCo: TPoint;
begin
   with msg do
     if (msg = WM_RESETTOOLTIP) then
        SetToolTip( fToolTip )
     else if (msg = WM_TOOLTRAYICON) then
     begin
       case lParam of
         WM_LBUTTONDBLCLK: if assigned 
(FOnDblClick) then FOnDblClick
                                                    
      (self);
         WM_LBUTTONUP    : if
assigned(FOnClick)then FOnClick(self);
         WM_RBUTTONUP    : if assigned
(FOnRightClick)then
                           begin
                              GetCursorPos(MouseCo);
FOnRightClick(self,mbRight,[],
MouseCo.x, MouseCo.y);
                           end;
       end;
     end
     else // Handle all messages with the default
handler
        Result := DefWindowProc(FWindowHandle, Msg,
wParam, lParam);
end;
procedure Register;
begin
  RegisterComponents('Win32', [TTrayIcon]);
end;
end.
Nima NT
جمعه 08 خرداد 1388, 23:30 عصر
این هم شاید به کار ملت بیاد :لبخندساده:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, 
Controls, Forms, Dialogs;
{new constant definitions}
const
  NIF_INFO = $10;
  NIF_MESSAGE = 1;
  NIF_ICON = 2;
  NOTIFYICON_VERSION = 3;
  NIF_TIP = 4;
  NIM_SETVERSION = $00000004;
  NIM_SETFOCUS = $00000003;
  NIIF_INFO = $00000001;
  NIIF_WARNING = $00000002;
  NIIF_ERROR = $00000003;
  NIN_BALLOONSHOW = WM_USER + 2;
  NIN_BALLOONHIDE = WM_USER + 3;
  NIN_BALLOONTIMEOUT = WM_USER + 4;
  NIN_BALLOONUSERCLICK = WM_USER + 5;
  NIN_SELECT = WM_USER + 0;
  NINF_KEY = $1;
  NIN_KEYSELECT = NIN_SELECT or NINF_KEY;
  NIN_BALLOONSHOW = WM_USER + 2;
  NIN_BALLOONHIDE = WM_USER + 3;
  NIN_BALLOONTIMEOUT = WM_USER + 4;
  NIN_BALLOONUSERCLICK = WM_USER + 5;
  NIN_SELECT = WM_USER + 0;
  NINF_KEY = $1;
  NIN_KEYSELECT = NIN_SELECT or NINF_KEY;
  {other constants can be found in vs.net---vc7's 
dir: PlatformSDK\Include\ShellAPI.h}
  {define the callback message}
  TRAY_CALLBACK = WM_USER + $7258;
  {new NotifyIconData structure definition}
type
  PNewNotifyIconData = ^TNewNotifyIconData;
  TDUMMYUNIONNAME    = record
    case Integer of
      0: (uTimeout: UINT);
      1: (uVersion: UINT);
  end;
  TNewNotifyIconData = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
   //Version 5.0 is 128 chars, old ver is 64 chars
    szTip: array [0..127] of Char;
    dwState: DWORD; //Version 5.0
    dwStateMask: DWORD; //Version 5.0
    szInfo: array [0..255] of Char; //Version 5.0
    DUMMYUNIONNAME: TDUMMYUNIONNAME;
    szInfoTitle: array [0..63] of Char; //Version 5.0
    dwInfoFlags: DWORD;   //Version 5.0
  end;
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    IconData: TNewNotifyIconData;
    procedure SysTrayIconMsgHandler(var Msg: 
TMessage); message TRAY_CALLBACK;
    procedure AddSysTrayIcon;
    procedure ShowBalloonTips;
    procedure DeleteSysTrayIcon;
  public
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
uses
  ShellAPI;
procedure TForm1.SysTrayIconMsgHandler(var Msg: 
TMessage);
begin
  case Msg.lParam of
    WM_MOUSEMOVE:;
    WM_LBUTTONDOWN:;
    WM_LBUTTONUP:;
    WM_LBUTTONDBLCLK:;
    WM_RBUTTONDOWN:;
    WM_RBUTTONUP:;
    WM_RBUTTONDBLCLK:;
    //followed by the new messages
    NIN_BALLOONSHOW:
    {Sent when the balloon is shown}
      ShowMessage('NIN_BALLOONSHOW');
    NIN_BALLOONHIDE:
    {Sent when the balloon disappears?Rwhen the 
icon is deleted,
    for example. This message is not sent if the 
balloon is dismissed because of
    a timeout or mouse click by the user. }
      ShowMessage('NIN_BALLOONHIDE');
    NIN_BALLOONTIMEOUT:
    {Sent when the balloon is dismissed because of 
a timeout.}
      ShowMessage('NIN_BALLOONTIMEOUT');
    NIN_BALLOONUSERCLICK:
    {Sent when the balloon is dismissed because the 
user clicked the mouse.
    Note: in XP there's Close button on he balloon
tips, when click the button,
    send NIN_BALLOONTIMEOUT message actually.}
      ShowMessage('NIN_BALLOONUSERCLICK');
  end;
end;
  {AddSysTrayIcon procedure add an icon to 
notification area}
procedure TForm1.AddSysTrayIcon;
begin
  IconData.cbSize := SizeOf(IconData);
  IconData.Wnd :=
AllocateHWnd(SysTrayIconMsgHandler);
  {SysTrayIconMsgHandler is then callback message' 
handler}
  IconData.uID := 0;
  IconData.uFlags := NIF_ICON or NIF_MESSAGE or 
NIF_TIP;
  IconData.uCallbackMessage := TRAY_CALLBACK;   
//user defined callback message
  IconData.hIcon := Application.Icon.Handle;    
//an Icon's Handle
  IconData.szTip := 'Please send me email.';
  if not Shell_NotifyIcon(NIM_ADD, @IconData) then
    ShowMessage('add fail');
end;
{ShowBalloonTips procedure carry out the new 
feature: Balloon Tips}
procedure TForm1.ShowBalloonTips;
var
  TipInfo, TipTitle: string;
begin
  IconData.cbSize := SizeOf(IconData);
  IconData.uFlags := NIF_INFO;
  TipInfo := 'Please send me email.';
  strPLCopy(IconData.szInfo, TipInfo,
SizeOf(IconData.szInfo) - 1);
  IconData.DUMMYUNIONNAME.uTimeout := 3000;
  TipTitle := 'Happyjoe@21cn.com';
  strPLCopy(IconData.szInfoTitle, TipTitle,
SizeOf(IconData.szInfoTitle) - 1);
  IconData.dwInfoFlags := NIIF_INFO;
//NIIF_ERROR;  //NIIF_WARNING;
  Shell_NotifyIcon(NIM_MODIFY, @IconData);
  {in my testing, the following code has no use}
  IconData.DUMMYUNIONNAME.uVersion :=
NOTIFYICON_VERSION;
  if not Shell_NotifyIcon(NIM_SETVERSION,
@IconData) then
    ShowMessage('setversion fail');
end;
{here's the deletion procedure}
procedure TForm1.DeleteSysTrayIcon;
begin
  DeallocateHWnd(IconData.Wnd);
  if not Shell_NotifyIcon(NIM_DELETE, @IconData) then
    ShowMessage('delete fail');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  AddSysTrayIcon;
  ShowBalloonTips;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  DeleteSysTrayIcon;
end;
end.
Nima NT
جمعه 08 خرداد 1388, 23:31 عصر
یکی منو از برق بکشه :لبخند:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics,
Controls,
  Forms, Dialogs, Menus, ShellAPI, ExtCtrls;
type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Open1: TMenuItem;
    Exit1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Open1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var
Action: TCloseAction);
  private
    { private declarations }
    procedure WndProc(var Msg : TMessage); override;
  public
    { public declarations }
    IconData : TNotifyIconData;
    IconCount : integer;
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WndProc(var Msg : TMessage);
var
  aPoint : TPoint;
begin
  case Msg.Msg of
    WM_USER + 1:
    case Msg.lParam of
      WM_RBUTTONDOWN:
      begin
         SetForegroundWindow(Handle);
         GetCursorPos(aPoint);
         PopupMenu1.Popup(aPoint.x, aPoint.y);
         PostMessage(Handle, WM_NULL, 0, 0);
      end
    end;
  end;
  inherited;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  BorderIcons := [biSystemMenu];
  IconCount := 0;
  IconData.cbSize := sizeof(IconData);
  IconData.Wnd := Handle;
  IconData.uID := 100;
  IconData.uFlags := NIF_MESSAGE + NIF_ICON +
NIF_TIP;
  IconData.uCallbackMessage := WM_USER + 1;
  IconData.hIcon := Application.Icon.Handle;
  StrPCopy(IconData.szTip, Application.Title);
  Shell_NotifyIcon(NIM_ADD, @IconData);
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
  Form1.Show;
  ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE, @IconData);
  Application.ProcessMessages;
  Application.Terminate;
end;
procedure TForm1.FormClose(Sender: TObject; var
Action: TCloseAction);
begin
  Action := caNone;
  Form1.Hide;
end;
begin
  ShowWindow(Application.Handle, SW_HIDE);
end.
Nima NT
جمعه 08 خرداد 1388, 23:35 عصر
{
Placing an icon the system tray
The system tray is the area at the right of the
task bar where "background"
applications can place their icons. To place an
icon in the tray you have to
call the Shell_NotifyIcon API declared in the
ShellAPI unit, passing it the
constant NIM_ADD (to tell it to add an icon) and
the address of a TNotifyIconData
record with the icon information that includes the
handle of the icon to show,
the text to show as tool tip when the mouse is over
the icon, the handle of the
window that will receive the messages of the icon
and the message type the icon
will send to this window.
}
uses
   {...}, ShellAPI;
const
  WM_ICONTRAY = WM_USER + 1;   // User-defined
message
type
  { ... }
var
  { ... }
  NotifyIconData : TNotifyIconData;
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
  with NotifyIconData do begin
    hIcon := Icon.Handle;
    StrPCopy(szTip, Application.Title);
    Wnd := Handle;
    uCallbackMessage := WM_ICONTRAY;
    uID := 1;
    uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
    cbSize := sizeof(TNotifyIconData);
  end;
  Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;
Handling icon messages
Form1 will receive WM_ICONTRAY messages from the
icon. To capture and handle these messages we have 
to declare a new method in our form. For example:
type
  TForm1 = class(TForm)
    { ... }
  private
    { Private declarations  }
    { ... }
    procedure Icontray(var Msg: TMessage); message 
WM_ICONTRAY;
  public
    { Public declarations  }
    { ... }
  end;
{
In the implementation of this method we can for
example display a pop-up menu
when the user right-clicks on the icon. Assuming 
you have created a pop-up menu
named PopupMenu1, the following code will do the 
trick:
}
procedure TForm1.Icontray(var Msg: TMessage);
var
  CursorPos : TPoint;
begin
  if Msg.lParam = WM_RBUTTONDOWN then begin
    GetCursorPos(CursorPos);
    PopupMenu1.Popup(CursorPos.x, CursorPos.y);
  end else
    inherited;
end;
{
Showing and hiding the form
Normally you will include a menu item in the pop-up
menu to show the form, so
all you have to do is write an event handler to 
call the Show method of the form
and optionally remove the icon from the system tray:
}
procedure TForm1.mnuShowClick(Sender: TObject);
begin
  Show;
  // Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;
{
When the user closes the form, you can for example 
hide it instead of closing it
and optionally show the icon again in the system
tray if you have removed it
when you made the form visible. For example:
}
procedure TForm1.FormClose(Sender: TObject; var 
Action: TCloseAction);
begin
  Action := caNone;
  Hide;
  // Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;
{
Finishing the application
You can have a menu item in the pop-up menu to exit
the application. In this
case you have to write an event handler for its 
click event to remove the icon
and finish the application:
}
procedure TForm1.mnuExitClick(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
  Application.ProcessMessages;
  Application.Terminate;
end;
Omid_hope
سه شنبه 12 خرداد 1388, 13:55 عصر
ممنون بچه ها. با CoolTryIcon تونستم این کارو انجام بدم .
as13851365
سه شنبه 12 خرداد 1388, 19:34 عصر
یه سوال : 
وقتی که آیکن برنامه در کنار ساعت قرار می گیره
حالا به هر دلیلی اگر Explorer.exe از رم بره بیرون و برگرده 
برنامه درحال اجرا است ولی آیکنش در کنار ساعت قرار نداره !!!!
برای حل این مشکل دوستان چه راه حل مناسبی دارن ؟
Nima NT
سه شنبه 12 خرداد 1388, 19:59 عصر
یه سوال : 
 
وقتی که آیکن برنامه در کنار ساعت قرار می گیره
حالا به هر دلیلی اگر Explorer.exe از رم بره بیرون و برگرده 
برنامه درحال اجرا است ولی آیکنش در کنار ساعت قرار نداره !!!!
 
برای حل این مشکل دوستان چه راه حل مناسبی دارن ؟
شاید بشه تو یه Thread مرتبا" آیکون رو به System Tray اضافه کرد , این طوری شاید مشکل حل بشه ( البته میدونم که اصولی نیست )
as13851365
چهارشنبه 13 خرداد 1388, 11:15 صبح
خوب حالا مشکل شد دوتا !:قهقهه:
من تا حالا با Thread کار نکردم ولی خیلی دوست دارم نحویه ساخت یک برنامه رو به صورت چند نخی بدونم می رم که در این باره کار کنم .
(ولی من برای اون مشکل از یک تایمر استفاده می کردم :افسرده:)
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.