vb6下制作托盘程序

原创 2006年06月06日 17:44:00

Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4

Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const NIM_MODIFY = &H1

Public Const WM_MOUSEMOVE = &H200

Public Const trayLBUTTONDOWN = 7695
Public Const trayLBUTTONUP = 7710
Public Const trayLBUTTONDBLCLK = 7725

Public Const trayRBUTTONDOWN = 7740
Public Const trayRBUTTONUP = 7755
Public Const trayRBUTTONDBLCLK = 7770

Public Const trayMOUSEMOVE = 7680

Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_LBUTTONDBLCLK = &H203

Public rc As Long

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

Dim trayStructure As NOTIFYICONDATA

Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias _
"Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Public Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Public Declare Function GetTickCount Lib "kernel32" () As Long

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long


Public Sub Pause(lngInterval As Long)
   Dim lngEnd As Long, lngNow As Long, count1 As Long
   count1 = GetTickCount()
   lngEnd = count1 + (lngInterval * 1000)
   Do
     DoEvents
     lngNow = GetTickCount()
   Loop Until lngNow >= lngEnd
End Sub

Public Function AddIcon(pic As PictureBox, tip$)
   trayStructure.szTip = tip$ & Chr$(0)
   trayStructure.uFlags = NIF_MESSAGE + NIF_ICON + NIF_TIP
   trayStructure.uID = 100
   trayStructure.cbSize = Len(trayStructure)
  
   trayStructure.hwnd = pic.hwnd
   trayStructure.uCallbackMessage = WM_MOUSEMOVE
   trayStructure.hIcon = pic.Picture
   rc = Shell_NotifyIcon(NIM_ADD, trayStructure)
End Function

Public Function ChangeIcon(pic As PictureBox, tip$)
   trayStructure.szTip = tip$ & Chr$(0)
   trayStructure.uFlag = NIF_ICON + NIF_TIP
   trayStructure.hIcon = pic.Picture
   Shell_NotifyIcon NIM_MODIFY, trayStructure
End Function

Public Function DeleteIcon(pic As Control)
   trayStructure.uID = 100
   trayStructure.cbSize = Len(trayStructure)
   trayStructure.hwnd = pic.hwnd
   trayStructure.uCallbackMessage = WM_MOUSEMOVE
   rc = Shell_NotifyIcon(NIM_DELETE, trayStructure)
End Function

Public Sub NewTip(pic As Control, tip$)
    trayStructure.uFlag = NIF_TIP
    trayStructure.uID = 100
    trayStructure.cbSize = Len(trayStructure)
    trayStructure.hwnd = pic.hwnd
    trayStructure.uCallbackMessage = WM_MOUSEMOVE
    trayStructure.szTip = tip$ & Chr$(0)
    rc = Shell_NotifyIcon(NIM_MODIFY, trayStructure)
End Sub

需要说明的是Shell_NotifyIcon这个api,微软自带的api浏览器下写的是错的

Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias _
" Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
" Shell_NotifyIconA" 多加了一个空格

调用的时候

Private Sub Form_Load()
AddIcon Picture1, "hello world..."
Me.Hide
App.TaskVisible = False
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Hex(X) = "1E3C" Then
      Me.PopupMenu file
  End If
End Sub

file是菜单,这个很简单自己随便写一个就成了,别忘了写个end退出

VB6如何在托盘中写入应用程序图标

  1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False  2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.b...
  • jevylau
  • jevylau
  • 2007年02月25日 10:54
  • 565

vb6中使软件图标在托盘

1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False 2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas ...
  • luo_yu_
  • luo_yu_
  • 2008年04月18日 10:55
  • 167

WPF实现系统托盘

利用WinForm项目中自带NotifyIcon,contextMenuStrip控件,创建一个winForm控件项目,然后在WPF中引入使用即可。参考: http://mervyn807.blog....
  • icewizardry
  • icewizardry
  • 2013年12月11日 16:11
  • 2668

VB6.0实现点击窗体的系统最小化或关闭按钮将窗体最小化到系统托盘区

托盘,亦即程序最小化后程序图标隐藏到屏幕右下角的任务栏里。这种最小化方法比普通的最小化节约空间,因此备受欢迎,很多软件都具有这样的功能。在VB中,可用API函数来实现托盘功能,但比较复杂,不太好操作。...
  • michelson1
  • michelson1
  • 2014年03月03日 16:51
  • 2996

vb6中托盘程序

vb6中托盘程序   Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (By...
  • w_lion
  • w_lion
  • 2009年01月11日 11:27
  • 326

VC的托盘程序

见网友对VC中的托盘程序的评论很好,在这里记录一下以供以后可能参考:http://search.csdn.net/Expert/topic/2394/2394557.xml?temp=.363598 ...
  • hbxtlhx
  • hbxtlhx
  • 2004年11月24日 11:08
  • 3453

VB6.0实现系统托盘

VB6.0实现系统托盘 ...
  • enterpc
  • enterpc
  • 2008年01月18日 10:11
  • 1318

MFC为应用程序添加托盘(右键托盘,弹出菜单)

源代码:http://download.csdn.net/detail/nuptboyzhb/4137784 1.       导入一个托盘图标的资源(.ico)格式;资源ID为IDI_ICON1 ...
  • NUPTboyZHB
  • NUPTboyZHB
  • 2012年03月13日 19:34
  • 5812

Windows托盘程序实现

通过Shell_NotifyIcon函数托盘消息,其原型如下: WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, PNOTIFYI...
  • BraveJohn
  • BraveJohn
  • 2014年01月13日 15:34
  • 1616

WPF 系统托盘制作方案与窗体自动隐藏

//系统托盘制作(引用命名空间System.Windows.Forms.NotifyIcon) using System; using System.ComponentModel; us...
  • tf576776047
  • tf576776047
  • 2012年11月06日 11:30
  • 3490
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vb6下制作托盘程序
举报原因:
原因补充:

(最多只允许输入30个字)