tray icon ...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seperate
Üye
Mesajlar: 9
Kayıt: 06 Nis 2004 11:53

tray icon ...

Mesaj gönderen seperate »

Merhaba dostlar...

Şu sormak istiyorum.. Şimdi baloon efekti ile hint vermek istiyorum program tray e yerleşmek için minimize edildiğinde ama çıkacak balonun yerini nasıl ayarlayacağım ... kullandığım komponentin x ve y değerleri ile yerinin belirtilmesi gerekiyor... Problemi basite indirgersem şöyle , tray e yerleşen programımın yerini nasıl alabilirim? Fikri olan varsa sevinirim...
Teşekkürler...
Kullanıcı avatarı
feinpus
Üye
Mesajlar: 214
Kayıt: 17 Kas 2003 04:37
Konum: İstanbul
İletişim:

Mesaj gönderen feinpus »

Hint'in çıkacağı yeri mouse'nin koordinatlarına göre ayarlayabilirsin.
X ve Y'yi mousenin X ve Y'sine eşitle...
Oldeye Software
http://www.oldeye.com
seperate
Üye
Mesajlar: 9
Kayıt: 06 Nis 2004 11:53

Mesaj gönderen seperate »

feinpus sanırım yapmak istediğimi anlamadın. Ben programı minimize ettikten sonra mouse ile bi işim kalmıyo zaten. Yapmak istediğim windows ve msn messenger ilk kez kapandığında hemen tray e yerleşiyor ve ardından messenger ın yerleştiği yerin hemen üstünde program hala çalışıyor şeklinde bir balon çıkıyor. Benim de yapmak istediğim o. Yani mouse ile bir işim yok...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kod: Tümünü seç

unit systray2;

interface

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

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;

  TRAY_CALLBACK = WM_USER + $7258;

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;
    szTip: array[0..127] of Char;
    dwState: DWORD;
    dwStateMask: DWORD;
    szInfo: array[0..255] of Char;
    DUMMYUNIONNAME: TDUMMYUNIONNAME;
    szInfoTitle: array[0..63] of Char;
    dwInfoFlags: DWORD;
  end;

type
  TFrmSysTray2 = 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
  FrmSysTray2: TFrmSysTray2;

implementation

{$R *.DFM}

uses
  ShellAPI;

procedure TFrmSysTray2.SysTrayIconMsgHandler(var Msg: TMessage);
begin
  case Msg.lParam of
    WM_MOUSEMOVE: ;
    WM_LBUTTONDOWN: ;
    WM_LBUTTONUP: ;
    WM_LBUTTONDBLCLK: ;
    WM_RBUTTONDOWN: ;
    WM_RBUTTONUP: ;
    WM_RBUTTONDBLCLK: ;
    NIN_BALLOONSHOW:
      ShowMessage('NIN_BALLOONSHOW');
    NIN_BALLOONHIDE:
      ShowMessage('NIN_BALLOONHIDE');
    NIN_BALLOONTIMEOUT:
      ShowMessage('NIN_BALLOONTIMEOUT');
    NIN_BALLOONUSERCLICK:
      ShowMessage('NIN_BALLOONUSERCLICK');
  end;
end;

procedure TFrmSysTray2.AddSysTrayIcon;
begin
  IconData.cbSize := SizeOf(IconData);
  IconData.Wnd := AllocateHWnd(SysTrayIconMsgHandler);
  IconData.uID := 0;
  IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  IconData.uCallbackMessage := TRAY_CALLBACK;
  IconData.hIcon := Application.Icon.Handle;
  IconData.szTip := 'Lütfen Bana Mail Gönderin';
  if not Shell_NotifyIcon(NIM_ADD, @IconData) then
    ShowMessage('Ekleme Basarısız');
end;

procedure TFrmSysTray2.ShowBalloonTips;
var
  TipInfo, TipTitle: string;
begin
  IconData.cbSize := SizeOf(IconData);
  IconData.uFlags := NIF_INFO;
  TipInfo := 'Lütfen Bana Mail Gönderin';
  strPLCopy(IconData.szInfo, TipInfo, SizeOf(IconData.szInfo) - 1);
  IconData.DUMMYUNIONNAME.uTimeout := 3000;
  TipTitle := 'blabla@blabla.com';
  strPLCopy(IconData.szInfoTitle, TipTitle, SizeOf(IconData.szInfoTitle) - 1);
  IconData.dwInfoFlags := NIIF_INFO;
  Shell_NotifyIcon(NIM_MODIFY, @IconData);
  IconData.DUMMYUNIONNAME.uVersion := NOTIFYICON_VERSION;
  if not Shell_NotifyIcon(NIM_SETVERSION, @IconData) then
    ShowMessage('Setversion Basarısız');
end;

procedure TFrmSysTray2.DeleteSysTrayIcon;
begin
  DeallocateHWnd(IconData.Wnd);
  if not Shell_NotifyIcon(NIM_DELETE, @IconData) then
    ShowMessage('Silme Basarısız');
end;

procedure TFrmSysTray2.FormCreate(Sender: TObject);
begin
  AddSysTrayIcon;
  ShowBalloonTips;
end;

procedure TFrmSysTray2.FormDestroy(Sender: TObject);
begin
  DeleteSysTrayIcon;
end;

end.
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla