วิธีการใช้ถาดของระบบโดยตรงจาก Visual Basic

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 176085 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการใช้ประโยชน์จากทั้งหมดของถาดระบบ Windows หรือพื้นที่การแจ้งเตือนแถบงาน การใช้ Visual Basic จะวางไอคอนที่คุณเลือกลงในพื้นที่แจ้งเตือนของแถบงานที่จะแสดงคำแนะนำเครื่องมือที่คุณเลือกเมื่อเมาส์ rested ผ่านนั้น จะคืนค่าโปรแกรมประยุกต์เมื่อคลิก และจะแสดงเมนูแบบผุดขึ้น เมื่อ right-clicked นี่คือทั้งหมดที่เป็นไปได้เนื่องจากความสามารถของ Visual Basic เพื่อจัดการ callbacks โดยตรง ดังนั้น ใช้ประโยชน์จากฟังก์ชัน Shell_NotifyIcon เต็มรูปแบบที่ถูกส่งออก โดย Shell32.dll

ข้อมูลเพิ่มเติม

ตัวอย่างต่อไปนี้สามารถถูกเพิ่มไปยังโครงการพื้นฐานแสดงผลที่มีอย่างน้อยหนึ่งฟอร์มและโมดูลมาตรฐาน

ตัวอย่าง step-by-Step

  1. เพิ่มรหัสต่อไปนี้ไปยังส่วน declarations ของโมดูลมาตรฐานในโครงการของคุณ:
          '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
    
          'constants required by Shell_NotifyIcon API call:
          Public Const NIM_ADD = &H0
          Public Const NIM_MODIFY = &H1
          Public Const NIM_DELETE = &H2
          Public Const NIF_MESSAGE = &H1
          Public Const NIF_ICON = &H2
          Public Const NIF_TIP = &H4
          Public Const WM_MOUSEMOVE = &H200
          Public Const WM_LBUTTONDOWN = &H201     'Button down
          Public Const WM_LBUTTONUP = &H202       'Button up
          Public Const WM_LBUTTONDBLCLK = &H203   'Double-click
          Public Const WM_RBUTTONDOWN = &H204     'Button down
          Public Const WM_RBUTTONUP = &H205       'Button up
          Public Const WM_RBUTTONDBLCLK = &H206   'Double-click
    
          Public Declare Function SetForegroundWindow Lib "user32" _
          (ByVal hwnd As Long) As Long
          Public Declare Function Shell_NotifyIcon Lib "shell32" _
          Alias "Shell_NotifyIconA" _
          (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    
          Public nid As NOTIFYICONDATA
    					
  2. เพิ่มรหัสต่อไปนี้ในแบบฟอร์มใด ๆ ในโครงการของคุณที่คุณต้องการการตอบสนองต่อไปยังไอคอนถาดของระบบ หรือไอคอนการแจ้งเตือน สำหรับโปรแกรมประยุกต์ของคุณ:
          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
    
          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
    
          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 Form_Unload(Cancel As Integer)
           'this removes the icon from the system tray
           Shell_NotifyIcon NIM_DELETE, nid
          End Sub
    
          Private Sub mPopExit_Click()
           'called when user clicks the popup menu Exit command
           Unload Me
          End Sub
    
          Private Sub mPopRestore_Click()
           'called when the user clicks the popup menu Restore command
           Dim Result As Long
           Me.WindowState = vbNormal
           Result = SetForegroundWindow(Me.hwnd)
           Me.Show
          End Sub
    					
  3. ตรวจสอบการตั้งค่าคุณสมบัติต่อไปนี้ในแบบฟอร์มเดียวกันที่คุณเพิ่มรหัสที่ด้านบน:
       Property         Required Setting for Taskbar Notification Area example
       -----------------------------------------------------------------------
       Icon           = The icon you want to appear in the system tray.
       Minbutton      = True
       ShownInTaskbar = False
    					
  4. เพิ่มรายการเมนูต่อไปนี้ให้กับฟอร์มเดียวกันที่ใช้ตัวแก้ไขเมนู:
       Caption      Name          Enabled   Visible   Position
       ---------------------------------------------------------
       &SysTray     mPopupSys      True      False    Main Level
       &Restore     mPopRestore    True      True     Inset one
       &Exit        mPopExit       True      True     Inset one
    					
คุณสามารถเพิ่มรายการเมนูที่เพิ่มเติมตามความจำเป็น

ความยืดหยุ่นพื้นที่แจ้งเตือนของแถบงาน

คุณสามารถปรับเปลี่ยนการแนะนำเครื่องมือที่ปรากฏอยู่เหนือการแจ้งเตือนที่ไอคอน โดยการเปลี่ยนบรรทัดต่อไปนี้ในขั้นตอน Form_Load:
   .szTip = "Your ToolTip" & vbNullChar
				
แทน "ของคุณแนะนำเครื่องมือ" พร้อมกับข้อความที่คุณต้องการให้ปรากฏ

คุณสามารถปรับเปลี่ยนไอคอนที่ปรากฏในพื้นที่แจ้งเตือนของแถบงาน ด้วยการเปลี่ยนบรรทัดต่อไปนี้ในขั้นตอน Form_Load:
   .hIcon = Me.Icon
				
แทน Me.Icon ด้วยไอคอนใด ๆ ในโครงการของคุณ

คุณสามารถเปลี่ยนการตั้งค่าพื้นที่แจ้งเตือนของแถบงานตลอดเวลาหลังจากการใช้ค่าคง NIM_ADD โดยกำหนดใหม่ค่าในตัวแปร nid และใช้การเปลี่ยนแปลงต่อไปนี้ของการเรียก Shell_NotifyIcon API แล้ว:
   Shell_NotifyIcon NIM_MODIFY, nid.
				
อย่างไรก็ตาม ถ้าคุณต้องการให้แบบฟอร์มต่าง ๆ จะได้รับการเรียกกลับ แล้วคุณ จะต้องการลบไอคอนปัจจุบันก่อน การใช้ "Shell_NotifyIcon NIM_Delete, nid" ตามฟังก์ชัน NIM_Modify จะไม่ยอมรับแบบ Hwnd ใหม่ หรือคุณจะต้องเพิ่มไอคอนอื่น systray สำหรับการใหม่ฟอร์มใช้ " Shell_NotifyIcon NIM_ADD, nid " หลังจากการเติมสินค้าชนิด nid กับข้อความใหม่ในแบบฟอร์ม Hwnd นอกจากนี้คุณสามารถประกาศชนิด nid สำเนาแยกต่างหากสำหรับแต่ละฟอร์มที่คุณต้องการแสดงไอคอนสำหรับในถาดของระบบ Windows และการเปลี่ยนแปลงในแต่ละฟอร์ม ของเปิดใช้งานเหตุการณ์ที่มีการใช้ลำดับ NIM_DELETE และ NIM_ADD

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ถาดของระบบ หรือใช้พื้นที่แจ้งเตือนแถบงาน จาก Visual Basic 4.0 หรือรุ่นก่อนหน้านี้ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
149276วิธีการใช้ไอคอนกับ Windows 95/98/Me แถบงานพื้นที่แจ้งเตือน

คุณสมบัติ

หมายเลขบทความ (Article ID): 176085 - รีวิวครั้งสุดท้าย: 7 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Keywords: 
kbbug kbhowto kbmt KB176085 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:176085

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com