托盘怎么实现(高分求解)

托盘如何实现(高分求解)
我想让目标程序隐藏到后台,然后在右小角显示个图表, 点他就出出来
谁能提供下实现方法
我的油箱:59952804@qq.com


------解决方案--------------------
Delphi(Pascal) code
rxlib组件包里的RXTrayIcon

下载地址
http://www.winu.cn/thread-1666-1-1.html


1、设置RXTrayIcon的icon和icons
2、给popupmenu关联一个右键菜单
3、在它的onDblClick事件中写一下代码
procedure TFormMain.RxTrayIcon1DblClick(Sender: TObject);
begin
 ShowWindow(Application.Handle, SW_RESTORE);
 setwindowpos(application.handle,HWND_TOPMOST,0,0,0,0,swp_hidewindow);
end;

------解决方案--------------------
给楼主贴一段代码看看: 

unit Unit1; 

interface 

uses 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
Dialogs,ShellAPI, ImgList, Menus; 

const WM_NOTIFY = WM_USER + 101; // TRAY消息 
WM_TOOLTRAYICON = WM_USER+1; 
type 
TfrmMain = class(TForm) 
imlToolbar: TImageList; 
PopupMenu1: TPopupMenu; 
N1: TMenuItem; 
procedure FormCreate(Sender: TObject); 
procedure N1Click(Sender: TObject); 
private 
{ Private declarations } 
procedure OnAppMinimize(Sender: TObject); // 应用程序最小化响应函数 
procedure OnNotify(var Msg : TMessage); message WM_NOTIFY; 
procedure ToolMSG(var Msg: TWMSYSCOMMAND); Message WM_TOOLTRAYICON; 
public 
{ Public declarations } 
end; 

var 
frmMain: TfrmMain; 
NotifyIcon : TNotifyIconData; 

implementation 

{$R *.dfm} 

procedure TfrmMain.FormCreate(Sender: TObject); 
var 
Icon : TIcon; 
begin 

// 
//NotifyIcon为全局变量,在程序的开头已经定义了 
// 
with NotifyIcon do 
begin 
cbSize:=SizeOf(TNotifyIconData); 
Wnd:=Handle; //指向当前窗体frmMain的句柄 
uID:=1; 
uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP; 
uCallBackMessage:=WM_NOTIFY; 
hIcon:=Application.Icon.Handle; 
icon := TIcon.Create(); 
frmmain.imlToolbar.GetIcon(0, icon); 
hIcon := icon.Handle; 
szTip:= '短信程序 '; 
end; 
Application.OnMinimize := OnAppMinimize; 
end; 

// 
// 应用程序最小化时调用此函数 
// 
procedure TfrmMain.OnAppMinimize(Sender: TObject); 
begin 
// if Config.m_Config.m_Hide then 
 // begin 
frmMain.Visible := False; 
// 
// 把设置好的变量NotifyIcon加入到系统中以便处理 
// 
Shell_NotifyIcon(NIM_ADD,@NotifyIcon); 
 // end; 
end; 

// 
// 托盘图标响应事件 
// 
procedure TfrmMain.OnNotify(var Msg: TMessage); 
var 
pos : TPoint; 
begin 
case Msg.LParam of 
WM_LBUTTONDBLCLK: // 双击事件 
begin 
frmMain.Visible := True ; 
Shell_NotifyIcon(NIM_DELETE,@NotifyIcon); 
Application.Restore(); 
SetForegroundWindow(frmMain.Handle); 
end; 
WM_RBUTTONUP: // 右键点击 
begin 
GetCursorPos(pos); 
frmMain.PopupMenu1.Popup(pos.X, pos.Y);