加个模块:
代码如下
Option Explicit
Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONUP = &H205
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIF_MESSAGE = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
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
Public TrayIcon As NOTIFYICONDATA使用:
On Error GoTo err
TrayIcon.cbSize = Len(TrayIcon)
    TrayIcon.hWnd = Me.hWnd
    TrayIcon.uId = vbNull
    TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    TrayIcon.ucallbackMessage = WM_MOUSEMOVE
    TrayIcon.hIcon = imgIcon1.Picture
    TrayIcon.szTip = "你的程序" & Chr$(0)
    Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
    App.TaskVisible = False
err:在resize时间中检测窗体的状态。要是最下化就调用上面的代码。

解决方案 »

  1.   

    要是还有什么问题。email联系
    我的是[email protected]
    我直接发完整代码给你。
      

  2.   

    to liu_feng_fly(一只菜鸟,忽忽悠悠的就飞来了!!) 绝对不是广告!
    to pp616(平平) 谢谢!我试一试,有问题还要想你请教!
      

  3.   

    不行!我调试了半天没有成功!
    我也查过以前的帖子,但是都只是在Tray中创建了图标,当窗口最小化时,还是在Taskbar上。
    要不让他在Taskbar上到底要怎么做?
      

  4.   

    好象要改变窗口的style,改成toolbar,呵呵,我记得以前看到过,想不起来了
      

  5.   

    liu_feng_fly(一只菜鸟,忽忽悠悠的就飞来了!!) 
    麻烦你仔细想想!
      

  6.   

    我记得是在vc中看到的,vb不一定可以的
      

  7.   

    当主窗体最小化的时候 form.visible = true
    图标的事件触发时
    form.windowstate = 0
    form.show
      

  8.   

    Private Sub Form_Resize()
    If Me.WindowState = 1 Then Me.Hide
    End Sub
      

  9.   

    哈哈…………
    在最小化的时候隐藏窗体不就行了!
    不要老是想着API哦!
      

  10.   

    同意 seabluesky(海蓝天空) 
    在最小化的时候隐藏窗体就行了,
    这种程序我做的也多了,没有一次是不行的,但响应托盘的时间的方法跟你不一样
    你可以试试下面的代码:添加图标With ShowIcon
     .cbSize = Len(ShowIcon)
     .hIcon = Me.Icon
     .hwnd = Me.hwnd
     .szTip = "myTray" & vbNullChar
     .uCallbackMessage = WM_MOUSEMOVE
     .uFlags = NIF_MESSAGE Or NIF_TIP Or NIF_ICON
     .uID = 1
    End With
    Shell_NotifyIcon NIM_ADD, ShowIcon
    响应事件:Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If X = WM_LBUTTONDBLCLK Then ’双击左键时
        你要做的事情
        。
        。
    ElseIf X = WM_RBUTTONUP Then ‘右键松开时
        你要做的事情
        。
        。
    End If
    End Sub
      

  11.   

    lingll(凌零羚) 
    先谢谢了,我也是想着form.hide
    但是,在
    If TheForm.WindowState = vbMinimized Then _
                    '恢复到最小化前的窗体状态
                    TheForm.WindowState = TheForm.LastState
                TheForm.SetFocus '在这一句出错了!!!!!
    我在前面加了form.show
    也还是不行!
                
      

  12.   

    在VB的光盘上有一个现成的托盘控件,提供源码。在commons/tool/vb/......目录下找SYSTRAY文件夹
    我也懒得用,不知道有没有参考价值。
      

  13.   

    VB的SYSTRAY有时候在程序退出时不能删除托盘图标。
      

  14.   

    我用VB的SysTray多次,从来没有问题,我每天至少开机就有一个代托盘控件的程序自动运行,从没问题。