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

1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False

  2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas

  3、在Module1中写下如下代码:

  

  Option Explicit

  

  Public Const MAX_TOOLTIP As Integer = 64

  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 WM_MOUSEMOVE = &H200

  Public Const WM_LBUTTONDOWN = &H201

  Public Const WM_LBUTTONUP = &H202

  Public Const WM_LBUTTONDBLCLK = &H203

  Public Const WM_RBUTTONDOWN = &H204

  Public Const WM_RBUTTONUP = &H205

  Public Const WM_RBUTTONDBLCLK = &H206

  

  Public Const SW_RESTORE = 9

  Public Const SW_HIDE = 0

  

  Public nfIconData As NOTIFYICONDATA

  

  

  Public Type NOTIFYICONDATA

   cbSize As Long

   hWnd As Long

   uID As Long

   uFlags As Long

   uCallbackMessage As Long

   hIcon As Long

   szTip As String * MAX_TOOLTIP

  End Type

  

  Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

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

 

 

4、在Form1的Load事件中写下如下代码:

  

  Private Sub Form_Load()

  

   '以下把程序放入System Tray====================================System Tray Begin

   With nfIconData

    .hWnd = Me.hWnd

    .uID = Me.Icon

    .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP

    .uCallbackMessage = WM_MOUSEMOVE

    .hIcon = Me.Icon.Handle

    '定义鼠标移动到托盘上时显示的Tip

    .szTip = App.Title + "(版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")" & vbNullChar

    .cbSize = Len(nfIconData)

   End With

   Call Shell_NotifyIcon(NIM_ADD, nfIconData)

   '=============================================================System Tray End

   Me.Hide

  End Sub

  5、在Form1的QueryUnload事件中写入如下代码:

  

  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

  Call Shell_NotifyIcon(NIM_DELETE, nfIconData)

  End Sub

  6、在Form1的MouseMove事件中写下如下代码:

  

  Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

   Dim lMsg As Single

   lMsg = X / Screen.TwipsPerPixelX

   Select Case lMsg

    Case WM_LBUTTONUP

     'MsgBox "请用鼠标右键点击图标!", vbInformation, "实时播音专家"

     '单击左键,显示窗体

     ShowWindow Me.hWnd, SW_RESTORE

     '下面两句的目的是把窗口显示在窗口最顶层

     'Me.Show

     'Me.SetFocus

     '' Case WM_RBUTTONUP

     '' PopupMenu MenuTray '如果是在系统Tray图标上点右键,则弹出菜单MenuTray

     '' Case WM_MOUSEMOVE

     '' Case WM_LBUTTONDOWN

     '' Case WM_LBUTTONDBLCLK

     '' Case WM_RBUTTONDOWN

     '' Case WM_RBUTTONDBLCLK

     '' Case Else

   End Select

  End Sub

  7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。单击此图标,Form1就自动弹出来了。

SysTray控件用法详解 VB SYSTRAY 托盘图标VB6自带的systray.ocx控件实现托盘图标程序 : 补充: 然后在自己的VB程序中添改控件(工程-部件-浏览)。   最好把这个ocx放到C:\WINDOWS\system32。   改控件的属性InTray属性用来设置是否显示在托盘中,True为显示在托盘,False为不显示。TrayIcon属性是在托盘中显示的图标式样。TrayTip属性是鼠标移到改控件上面显示的提示文字。如果要使程序最小化时显示到托盘,如下:   Private Sub Form_Resize()    If Me.WindowState = vbMinimized Then    cSysTray1.InTray = True    Me.Visible = False End If   End Sub   点击托盘图标后让程序显示出来,如下:   Private Sub cSysTray1_MouseDown(Button As Integer, Id As Long)    Me.WindowState = vbNormal    Me.Visible = True    cSysTray1.InTray = False    Me.SetFocus   End Sub '单击关闭不退出程序 Private Sub Form_Unload(Cancel As Integer) 主程序.Hide Cancel = False End Sub '单击关闭不退出程序 Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Cancel = 1 主程序.Hide End Sub ’tui为窗体菜单-退出选项名称 Private Sub tui_Click()’快捷键设ALT+F1 End End Sub '注:"主程序"代表一个窗体(Form),窗体菜单-退出选项需设置快捷键ALT+F1 '这个控件有一个小小的问题,如果托盘菜单有退出选项,不能直接用"End 语句",否则在编译后运行期间用户选择退出后,操作系统会报错,以上使用发送按键方法避免出错 ,当然还有其他避免出错方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值