* dTMRTRAY.PRG LPARAMETERS pIcon, pTips, pDblClick, pRightClick, pRepeat SET PROCEDURE TO dTMRTRAY.PRG ADDITIVE IF PEMSTATUS(_SCREEN, "TMRTRAY1", 5) _SCREEN.REMOVEOBJECT("TMRTRAY1") ENDIF PPCOUNT=PCOUNT() DO CASE CASE PPCOUNT = 0 _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY") CASE PPCOUNT = 1 _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon) CASE PPCOUNT = 2 _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips) CASE PPCOUNT = 3 _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips, pDblClick) CASE PPCOUNT = 4 _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips, pDblClick, pRightClick) CASE PPCOUNT = 5 _SCREEN.ADDOBJECT("TMRTRAY1", "TMRTRAY", pIcon, pTips, pDblClick, pRightClick, pRepeat) ENDCASE * Start Hide in Tray! _SCREEN.WINDOWSTATE = 1 ** Starting System Tray PROCEDURE AddTray LPARAMETERS pIcon, pTips, pDblClick, pRightClick, pRepeat PUBLIC SysIconNum IF TYPE("SysIconNum")="L" SysIconNum = 1 ELSE IF SysIconNum < 5 SysIconNum = SysIconNum + 1 ELSE SysIconNum = 1 ENDIF ENDIF IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) SET LIBRARY TO BSYSTRAY.FLL ENDIF PPCOUNT=PCOUNT() DO CASE CASE PPCOUNT = 0 AddSysTrayIcon(SysIconNum, [Skat.ico], ALLTRIM(STR(SysIconNum))+[ Demo on Using System Tray], [Messagebox("DblClick me! Great Test!")], [Messagebox("RightClick me! Wonderful!")], .T.) CASE PPCOUNT = 1 AddSysTrayIcon(SysIconNum, pIcon, [Demo on Using System Tray], [Messagebox("DblClick me! Great Test!")], [Messagebox("RightClick me! Wonderful!")], .T.) CASE PPCOUNT = 2 AddSysTrayIcon(SysIconNum, pIcon, pTips, [Messagebox("DblClick me! Great Test!")], [Messagebox("RightClick me! Wonderful!")], .T.) CASE PPCOUNT = 3 AddSysTrayIcon(SysIconNum, pIcon, pTips, pDblClick, [Messagebox("RightClick me! Wonderful!")], .T.) CASE PPCOUNT = 4 AddSysTrayIcon(SysIconNum, pIcon, pTips, pDblClick, pRightClick, .T.) CASE PPCOUNT = 5 AddSysTrayIcon(SysIconNum, pIcon, pTips, pDblClick, pRightClick, pRepeat) ENDCASE ENDPROC PROCEDURE ModTray LPARAMETERS pIcon, pTips PUBLIC SysIconNum IF TYPE("SysIconNum")="L" SysIconNum = 1 ENDIF IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) SET LIBRARY TO BSYSTRAY.FLL ENDIF PPCOUNT=PCOUNT() DO CASE CASE PPCOUNT = 0 ModSysTrayIcon(SysIconNum, [Skat.ico], [Terence, You can go ahead!]) CASE PPCOUNT = 1 ModSysTrayIcon(SysIconNum, pIcon, [Terence, You can go ahead!]) CASE PPCOUNT = 2 ModSysTrayIcon(SysIconNum, pIcon, pTips) ENDCASE ENDPROC PROCEDURE DelTray PUBLIC SysIconNum IF TYPE("SysIconNum")="L" SysIconNum = 1 ENDIF IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) SET LIBRARY TO BSYSTRAY.FLL ENDIF DelSysTrayIcon(SysIconNum) ENDPROC PROCEDURE RestoreWIN _SCREEN.VISIBLE = .T. _SCREEN.WINDOWSTATE = 2 ENDPROC ************************************************** *-- Class: tmrtray *-- ParentClass: timer *-- BaseClass: timer * DEFINE CLASS tmrtray AS timer Height = 23 Width = 23 Interval = 1000 jIcon = [] jtips = [Traffic Light System Demo] jdblclick = [RestoreWin()] jrightclick = [RestoreWin()] * jrightclick = [IIF(MessageBox("(Yes) for Restore Window, (No) for Quit?", 4+32, "Fun....")=6, RestoreWIN(), QUIT)] jrepeat = .T. Name = "tmrtray" PROCEDURE Init LPARAMETERS jIcon, jTips, jDblClick, jRightClick, jRepeat PPCOUNT = PCOUNT() IF PPCOUNT > 0 * Appoint Icon, ZERO PARAMETERS WILL USE DEFAULT THIS.jIcon = jIcon PUBLIC IconFace IconFace = jIcon ENDIF IF PPCOUNT > 1 THIS.jTips = jTips ENDIF IF PPCOUNT > 2 THIS.jDblClick = jDblClick ENDIF IF PPCOUNT > 3 THIS.jRightClick = jRightClick ENDIF IF PPCOUNT > 4 THIS.jRepeat = jRepeat ENDIF THIS.TIMER() ENDPROC PROCEDURE Timer IF WEXIST([DEBUG]) THIS.INTERVAL = 0 THIS.ENABLED = .F. ENDIF IF ! [BSYSTRAY.FLL] $ SET([LIBRARY]) SET LIBRARY TO BSYSTRAY.FLL SET PROCEDURE TO COMMON.PRG ADDITIVE ENDIF ** Start to Minimized on Tray! IF _SCREEN.WINDOWSTATE = 1 && Minimized _SCREEN.VISIBLE = .F. PUBLIC IconFace DO CASE CASE TYPE([IconFace]) = "L" IconFace = [Trflight.ico] CASE IconFace = [Trflight.ico] IconFace = [Trfred.ico] CASE IconFace = [Trfred.ico] IconFace = [Trfyellw.ico] CASE IconFace = [Trfyellw.ico] IconFace = [Trfgreen.ico] CASE IconFace = [Trfgreen.ico] IconFace = [Trflight.ico] OTHERWISE * Do Nothing Because Init gives Defined Icon! ENDCASE PUBLIC SysIconNum IF TYPE("SysIconNum")="L" AddTray(IconFace, THIS.jTips, THIS.jDblClick, THIS.jRightClick, THIS.jRepeat) ELSE ModTray(IconFace, THIS.jTips) ENDIF ENDIF ** Restore From Tray! IF INLIST(_SCREEN.WINDOWSTATE, 0, 2) && Normal PUBLIC SysIconNum IF TYPE("SysIconNum")<>"L" DelTray() RELEASE SysIconNum _SCREEN.WINDOWSTATE = 2 ENDIF ENDIF ENDPROC ENDDEFINE * *-- EndDefine: tmrtray **************************************************