´ÒǹìâËÅ´â»Ãá¡ÃÁ RSS Reader ä´é·Õè¹Õè ...

|
|
|
Visitors - Session views |       
7 ¸Ñ¹ÇÒ¤Á ¾.È.2549 56 Users On-Line. |
|
Visitors - Page views |        1 ¡ØÁÀҾѹ¸ì ¾.È.2551 |
|
|
|
 |
|
¡ÒÃáÊ´§äͤ͹㹠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 |
|
|