20 Ocak 2012, 11:15
#1 Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
Delphide yapılan programı system tray olarak görüntülemek
Soru ; Delphide bir program yazıp çalıştırıp kullanıldıktan sonra kapat butonuna bastığında system tray e nasıl gönderebilirim. İstediğim flashget programı gibi olması. programdan tam çıkış için system tray deki simgeye tıklanıp çıkılması gerekir. bunu nasıl yapabilirim?
Cevap ; Kod: Kodu kopyalamak için üzerine çift tıklayın!
Unit SysTray;
Interface
Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellApi, Menus,
StdCtrls;
Type
TForm1 = Class ( TForm)
menu : TPopupMenu;
menuHakkinda : TMenuItem;
menuAc : TMenuItem;
menuCikis : TMenuItem;
AcilisNotu : TMemo;
ButonTamam : TButton;
ButonCik : TButton;
Procedure FormCreate( Sender: TObject ) ;
Procedure FormMouseMove( Sender: TObject ; Shift: TShiftState; X, Y: Integer ) ;
Procedure menuHakkindaClick( Sender: TObject ) ;
Procedure menuCikisClick( Sender: TObject ) ;
Procedure menuAcClick( Sender: TObject ) ;
Procedure FormDestroy( Sender: TObject ) ;
Procedure ButonTamamClick( Sender: TObject ) ;
Procedure ButonCikClick( Sender: TObject ) ;
Private
TrayIcon : TNotifyIconData;
Procedure FormuGizle( Sender: TObject ) ;
Procedure FormuGoster;
Procedure MenuyuGoster;
Public
End ;
Var
Form1 : TForm1;
Implementation
{$R *.dfm}
Procedure TForm1. FormuGizle ( Sender: TObject ) ;
Begin
Shell_NotifyIcon( NIM_ADD, @ TrayIcon) ; // System Tray'e yeni bir Icon ekle
Form1. Visible : = False ; // Formu gizle
End ;
Procedure TForm1. MenuyuGoster ;
Var
FareninKonumu : TPoint;
Begin
GetCursorPos( FareninKonumu) ; // Mouse'un pozisyonunu öğren
menu. Popup ( FareninKonumu. X , FareninKonumu. Y ) ; // PopUp menüyü o pozisyona aç
PostMessage( Self . Handle , WM_NULL, 0 , 0 ) ; // Systeme Herhangibir Mesaj Gönderme
End ;
Procedure TForm1. FormCreate ( Sender: TObject ) ;
Begin
// TrayIcon'ın parametreleri aşağıda ayarlanıyor.
With TrayIcon Do
Begin
cbsize : = SizeOf ( TrayIcon) ;
wnd : = Self . Handle ;
hicon : = Application. Icon . Handle ;
uID : = 0 ;
sztip : = 'Mouse icon üzerindeyken görünecek mesaj.' ;
uflags : = NIF_ICON Or NIF_TIP Or NIF_MESSAGE;
uCallBackMessage : = WM_MOUSEMOVE;
End ;
Application. OnMinimize : = FormuGizle; // Form minimize edilince çalışacak procedure
End ;
Procedure TForm1. FormMouseMove ( Sender: TObject ; Shift: TShiftState; X, Y: Integer ) ;
Begin
// $201 Sol Tuş Basıldı
// $202 Sol Tuş Bırakıldı
// $203 Sol Tuş Çift Tıklandı
// $204 Sağ Tuş Basıldı
// $205 Sağ Tuş Bırakıldı
// $206 Sağ Tuş Çift Tıklandı
If ( x= $203 ) Then FormuGoster
Else If ( x= $205 ) Then MenuyuGoster;
End ;
Procedure TForm1. FormuGoster ;
Begin
Form1. Visible : = True ; // Formu göster
Application. BringToFront ; // Formu öne al
Application. Restore ; // Uygulamayı tekrar başlat
Shell_NotifyIcon( NIM_DELETE, @ TrayIcon) ; // System Tray'deki iconu sil
End ;
Procedure TForm1. menuHakkindaClick ( Sender: TObject ) ;
Begin
ShowMessage( 'System Tary Denemesi' + #13 +
'Copyright (C) 2002 Hakan HAMURCU' + #13 +
'hakan@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN... ] cu.com' ) ;
End ;
Procedure TForm1. menuCikisClick ( Sender: TObject ) ;
Begin
Application. Terminate ; // Uygulamayı bitir
End ;
Procedure TForm1. FormDestroy ( Sender: TObject ) ; // Form hafızadan atıldığı zaman
Begin
Shell_NotifyIcon( NIM_DELETE, @ TrayIcon) ; // System Tray'deki iconu sil
End ;
Procedure TForm1. menuAcClick ( Sender: TObject ) ;
Begin
FormuGoster;
End ;
Procedure TForm1. ButonTamamClick ( Sender: TObject ) ;
Begin
FormuGizle( Sender) ;
End ;
Procedure TForm1. ButonCikClick ( Sender: TObject ) ;
Begin
Application. Terminate ; // Uygulamayı bitir
End ;
End .
__________________ Doğruları biliyorsan, yalanları dinlemek eğlencelidir.