ËÒ¡ÁÕ¤Ó¶ÒÁ ¢ÍãËéä»â¾Êµìŧ àÇ纺ÍÃì´¨Õ·Ù¨Õà¹çµ´Íµ¤ÍÁ µÑÇãËÁèá·¹¹èФÃѺ

ËÃ×͵ԴµèÍà¢éÒÁÒ·Ò§ Inbox ·Õè à¿«ºØê¤ ¼Á¤ÃѺ

˹éÒËÅÑ¡
¢èÒÇÊÒà - º·¤ÇÒÁ ·Ñé§ËÁ´
VB 6/VB.Net
ASP/ASP.Net
¨Ñº©èÒ¤ÍÁ¾ÔÇàµÍÃì
àÃÕ¹ÃÙé¼èÒ¹ Flash Movie
º·¤ÇÒÁ·ÕèÁÕ¼ÙéµÍºÅèÒÊØ´  
 RSS Feeds
 ´ÒǹìâËÅ´â»Ãá¡ÃÁ RSS Reader ä´é·Õè¹Õè ...   Download â»Ãá¡ÃÁ RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 6 1 6 1 0 2

7 ¸Ñ¹ÇÒ¤Á ¾.È.2549
56 Users On-Line.
Visitors - Page views
 8 9 7 3 8 4 5
1 ¡ØÁÀҾѹ¸ì ¾.È.2551

Google   
àÇçº g2gnet.com
¢¹Ò´µÑÇÍÑ¡ÉÃ:  

¡ÒÃáÊ´§äͤ͹㹠System Tray

Category »  VB 6/VB.Net
â´Â : Webmaster àÁ×èÍ 5/11/2549 13:11:00
(ÍèÒ¹ : 40370) 
㹺·¤ÇÒÁ¹Õé¼Á¨Ð¹Óàʹ͵ÑÇÍÂèҧ㹡ÒÃáÊ´§äͤ͹㹠System Tray ¡çÊèǹ·ÕèáÊ´§Ê¶Ò¹Ð¢Í§·ÒÊ¡ìºÒÃì µÃ§á¶Çæ¹ÒÌÔ¡Ò¹Ñè¹áËÅФÃѺ â´Â·ÕèàÃÒ¨ÐÍÒÈÑ API à¾×èÍáÊ´§äͤ͹㹠System Tray ä´é§èÒÂæ ´éÇ¡ÒÃàÃÕ¡ãªé§Ò¹ Shell_NotifyIcon
¿Ñ§¤ìªÑè¹ Shell_NotifyIcon ¨ÐÁÕÅѡɳдѧµèÍ仹Õé
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" & _
(ByVal dwMessage As Long, & _
pnid As NOTIFYICONDATA) As Boolean

â´Â·Õè
´ÙÃÒÂÅÐàÍÕ´à¾ÔèÁàµÔÁä´é·Õè MSDN Library:
» HOWTO: Use the System Tray Directly from Visual Basic 5.0
Article ID: Q176085
» HOWTO: Use Icons with the Windows 95 System Tray
Article ID: Q149276

´ÒǹìâËÅ´ Source Code (VB6) ·Õè¹Õè...

dwMessage ¤×Í àÁÊàʨà¾×èÍÃкØÇèÒµéͧ¡Ò÷ӧҹ㴠â´ÂÁÕ¤èҴѧµèÍ仹Õé ¤×Í
' Constants required by Shell_NotifyIcon API call:
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
' -----------------------------------------
' ¤Ó͸ԺÒÂ:
NIM_ADD ãªéà¾ÔèÁäͤ͹à¢éÒä»ã¹ System Tray
NIM_MODIFY á¡éä¢äͤ͹
NIM_DELETE źäͤ͹ÍÍ¡¨Ò¡ System Tray

pnid ¤×Í Pointer ·ÕèªÕéä»Âѧâ¤Ã§ÊÃéÒ§ NOTIFYICONDATA «Ö觨лÃСͺ´éÇÂÊÁÒªÔ¡µèÍ仹Õé
' User defined type required by Shell_NotifyIcon API call
Public Type NOTIFYICONDATA
    cbSize As Long
    hwnd As Long
    uId As Long
    uFlags As Long
    uCallBackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type

â´ÂÊÁÒªÔ¡áµèÅеÑǨÐÁÕ¤ÇÒÁËÁÒ´ѧµèÍ仹Õé

cbSize
¢¹Ò´¢Í§¢éÍÁÙÅã¹â¤Ã§ÊÃéÒ§ NOTIFYICONDATA àÃÒÊÒÁÒöãªé¿Ñ§¤ìªÑè¹ Len à¾×èÍËÒ¢¹Ò´¢Í§â¤Ã§ÊÃéÒ§¹Õé

hWnd
áιà´ÔŢͧ Windows ·Õè¨ÐÃѺàÁÊàʨ àÃÒÊÒÁÒöãªé¤Ø³ÊÁºÑµÔ hWnd ¢Í§¤Í¹â·ÃÅ ËÃ×Í ¿ÍÃìÁÊÓËÃѺ¾ÒÃÒÁÔàµÍÃìµÑǹÕé

uId
µÑÇÃкØäͤ͹·Õè¨ÐáÊ´§ã¹ System Tray ÊÒÁÒö¡Ó˹´à»ç¹¤èÒã´æ¡çä´é ËÃ×ÍÍÒ¨¡Ó˹´à»ç¹ vbNull

uFlags
à»ç¹ÍÒàÃÂì¢Í§á¿Å¡ (Flag) à¾×èÍÃкØÇèÒÊÁÒªÔ¡µèÒ§æã¹â¤Ã§ÊÃéÒ§¹Õé áÊ´§¶Ö§¢éÍÁÙÅã´ ´éÇ¡ÒùӤèҢͧáµèÅÐá¿Å¡ÁҺǡ¡Ñ¹´éÇ âÍà»ÍÃìàÃàµÍÃì OR â´ÂáµèÅÐá¿Å¡¨ÐÁÕ¤ÇÒÁËÁÒ´ѧµèÍ仹Õé ¤×Í
' ¡ÒáÓ˹´¤èÒã¹Êèǹ¢Í§ uFlags
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4

NIF_ICON ÃкØÇèÒ¤èÒ hIcon ¤×Íäͤ͹·Õè¨ÐáÊ´§ã¹ System Tray
NIF_MESSAGE ÃкØÇèÒ¤èÒ uCallBackMessage ¨Ð¶Ù¡ãªéÊÓËÃѺ¡Òà Callback message
NIF_TIP ÃкØÇèÒ¤èÒ szTip ãªéÊÓËÃѺáÊ´§·ÙÅ·Ô» (ToolTip) ¢Í§äͤ͹

uCallBackMessage
àÁÊàʨ·Õè¨Ð¶Ù¡Êè§¡ÅѺÁÒËÒâ»Ãá¡ÃÁ à¾×èÍÃкØÇèÒÁÕà˵ءÒóì (Event) à¡Ô´¢Öé¹·Õè System Tray »¡µÔàÃÒ¨Ðãªé WM_MOUSEMOVE à¾ÃÒÐÁÕ¤èÒà·èҡѺÍÕàǹ·ì MouseMove ã¹ Visual Basic ·ÓãËéäÁèµéͧ·Ó Sub Class à¾×èÍ´Ñ¡¨ÑºàÁÊàʨ Íѹ¨Ð·ÓãËéâ»Ãá¡ÃÁÁÕ¤ÇÒÁ«Ñº«é͹ÁÒ¡¢Öé¹

hIcon
áιà´ÔŢͧäͤ͹·Õè¨ÐáÊ´§º¹ System Tray ÍÒ¨¨Ðà»ç¹¤Ø³ÊÁºÑµÔ Icon ¢Í§¤Í¹â·ÃÅ image ¢Í§¤Í¹â·ÃÅ image ËÃ×Í ÀÒ¾äͤ͹

szTip
¢éͤÇÒÁ·Õè¨Ðãªéà»ç¹·ÙÅ·Ô» ¤ÇÒÁÂÒǤ§·Õè 64 äºµì ¢éͤÇÒÁ¹Õéµéͧŧ·éÒ´éÇÂÍÑ¡¢ÃÐ Null (ËÃ×Í vbNullChar) àÊÁÍ


¡Ò÷ӧҹ


Íѹ´ÑºááàÃÒµéͧ¡Ó˹´¢éÍÁÙŵèÒ§ÊÓËÃѺ¿Ñ§¤ìªÑè¹ Shell_NotifyIcon ãËéÊÁºÙóì (µÒÁÃÒÂÅÐàÍÕ´´éÒ¹º¹) â´Â¡Ó˹´äÇéã¹ Module ᡵèÒ§ËÒ¡¨Ò¡¿ÍÃìÁ¹èФÃѺ µèèͨҡ¹Ñé¹àÃÒ¨Ö§¨Ðà¾ÔèÁäͤ͹à¢éÒä»äÇéã¹ System Tray ´Ñ§¹Õé¤×Í

Private Sub Form_Load()
    'the form must be fully visible before calling Shell_NotifyIcon
    Me.Show
    Me.Refresh
    With nid
        .cbSize = Len(nid)
        .hwnd = Me.hwnd
        .uId = vbNull
        .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        .uCallBackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon
        .szTip = "Your ToolTip" & vbNullChar
    End With
    '
    Shell_NotifyIcon NIM_ADD, nid
End Sub

àÁ×èÍàÃÒàÃÕ¡ãªé§Ò¹¿Ñ§¤ìªÑè¹¹Õé äͤ͹¢Í§¿ÍÃìÁ¨Ð»ÃÒ¡¯ÍÂÙ躹 System Tray ËÅѧ¨Ò¡¹Ñé¹àÁ×èÍàÅ×è͹àÁÒÊì¾ÍÂàµÍÃìä»à˹×Íäͤ͹º¹ System Tray ¿ÍÃìÁ¡ç¨Ðä´éÃѺàÁÊàʨ WM_MOUSEMOVE «Öè§¡ç¤×Í¡ÒÃà¡Ô´à˵ءÒóì MouseMove ¢Í§¿ÍÃìÁ¹Ñè¹àͧ

¤èÒ Argument X ¢Í§â»Ã«ÕàÂÍÃì Form_MouseMove ·Ó˹éÒ·ÕèÃкض֧àÁÒÊìÍÔ¹¾Øµ Íѹä´éá¡è ¡ÒäÅÔê¡«éÒÂ, ¤ÅÔê¡¢ÇÒ ËÃ×Í ¡ÒᴴѺàºÔéŤÅÔê¡ áÅФسÊÁºÑµÔ TwipsPerPixelX ¢Í§¨ÍÀÒ¾ àÃÒÊÒÁÒöÃѺ¤èÒàÁÒÊìÍÔ¹¾Øµ´éÇ¡ÒÃËÒäèÒ Argument ´éǤسÊÁºÑµÔ¹Õé (Screen.TwipsPerPixelX) áÅéǹӤèÒ·Õèä´éÁÒ»ÃÐÁÇżŵÒÁµéͧ¡Òà àªè¹

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'this procedure receives the callbacks from the System Tray icon.
Dim Result As Long
Dim msg As Long
    ' The value of X will vary depending upon the scalemode setting
    If Me.ScaleMode = vbPixels Then
        msg = X
    Else
        msg = X / Screen.TwipsPerPixelX
    End If
    Select Case msg
        Case WM_LBUTTONUP ' 514 restore form window
            Me.WindowState = vbNormal
            Result = SetForegroundWindow(Me.hwnd)
            Me.Show
        Case WM_LBUTTONDBLCLK ' 515 restore form window
            Me.WindowState = vbNormal
            Result = SetForegroundWindow(Me.hwnd)
            Me.Show
        Case WM_RBUTTONUP ' 517 display popup menu
            Result = SetForegroundWindow(Me.hwnd)
            Me.PopupMenu Me.mPopupSys
    End Select
    '
End Sub

¡ÒÃźäͤ͹ÍÍ¡¨Ò¡ System Tray ãËé¡Ó˹´¤èÒ dwMessage à»ç¹ NIM_DELETE áÅéǨ֧àÃÕ¡ãªé¿Ñ§¤ìªÑè¹ Shell_NotifyIcon ÍÕ¡¤ÃÑ駴ѧ¹Õé

Private Sub Form_Unload(Cancel As Integer)
    ' This removes the icon from the system tray
    Shell_NotifyIcon NIM_DELETE, nid
End Sub

Code ·ÕèàËÅ×ͧ͢â»Ãá¡ÃÁ
Private Sub Form_Resize()
    ' This is necessary to assure that the minimized window is hidden
    If Me.WindowState = vbMinimized Then Me.Hide
End Sub

Private Sub mPopExit_Click()' µéͧä»ÊÃéÒ§ã¹ Menu Editor ãËéª×èÍÇèÒ mPopupExit
    ' Called when user clicks the popup menu Exit command
    Unload Me
End Sub

Private Sub mPopRestore_Click()' µéͧä»ÊÃéÒ§ã¹ Menu Editor ãËéª×èÍÇèÒ mPopupRestore
Dim Result As Long
    ' Called when the user clicks the popup menu Restore command
    Me.WindowState = vbNormal
    Result = SetForegroundWindow(Me.hwnd)
    Me.Show
End Sub

¡ÒÃÊÃéÒ§àÁ¹Ù à¾×èÍ·Õè¤Ø³¨ÐÊÒÁÒö¤ÅÔê¡¢ÇÒÕèàÁÒÊì㹡ÒÃàÅ×Í¡à˵ءÒóì MouseMove ä´é


à»ç¹ä§ºéÒ§ÅèФÃѺ ¨Ò¡ÃÒÂÅÐàÍÕ´·Õè¼èÒ¹ÁÒ ¼Áä´éáÊ´§ãËéàËç¹¶Ö§¡ÒÃà¾ÔèÁ áÅРźäͤ͹à¢éÒä»äÇéã¹ System Tray ¹Ñ鹤è͹¢éÒ§¨Ð§èÒ´Ò (àÊÕÂàËÅ×Íà¡Ô¹) ¼Å·Õèä´é¹ÕéÁѹ¡ç·ÓãËéâ»Ãá¡ÃÁ·ÕèàÃҾѲ¹Ò¢Öé¹ÁÒ´Ù´ÕÁÕªÒµÔµÃСÙÅ¢Öé¹ÍÕ¡â¢àŤÃѺ â»Ãá¡ÃÁ¨Ò¡ÃÒ¤Ò 200 ¡çÍÒ¨¢ÂѺ价Õè 299 ºÒ·¢Ò´µÑÇ¡çà»ç¹ä´é¹èÐ ÍÔÍÔÍÔ

ÊÓËÃѺÃÒÂÅÐàÍÕ´à¾ÔèÁàµÔÁ ¤Ø³¤§µéͧà¢éÒä»ÈÖ¡ÉÒ·Õè MSDN Library
HOWTO: Use the System Tray Directly from Visual Basic 5.0
Article ID: Q176085
áÅÐ
HOWTO: Use Icons with the Windows 95 System Tray
Article ID: Q149276

¨Õ ·Ù ¨Õ à¹çµ ´Íµ ¤ÍÁ - g2gNet Dot Com
àÅ¢·ÐàºÕ¹¾Ò³ÔªÂìÍÔàÅç¡·Ã͹ԡÊì 0407314800231
CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
Email: [email protected] ËÃ×Í â·Ã. 08-6862-6560