如何实现让我的程序可以象QQ那样显示在任务栏里?分不够可以再加。

解决方案 »

  1.   

    http://www.fantasiasoft.net/Zyl910/SysTray1.zip
    系统托盘编程大全 For VB
    作者:zyl910这个程序包括了所有的托盘程序设计技巧:
    1.托盘菜单可以消去
    2.Explorer非法操作后能自动恢复图标
    3.气泡提示
    4.托盘图标的隐藏
      

  2.   

    给你一个我收集的例子:
    在模块中:
    Option Explicit
    Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias _
         "Shell_NotifyIconA" (ByVal dwMessage As Long, _
         lpData As NOTIFYICONDATA) As LongPublic Type NOTIFYICONDATA
        cbSize As Long
        hwnd As Long
        uId As Long
        uFlags As Long
        uCallBackMessage As Long
        hIcon As Long
        szTip As String * 128
        dwState As Long
        dwStateMask As Long
        szInfo As String * 256
        uTimeoutOrVersion As Long   '由于VB中没有Union类型,只能用Long型代替
        szInfoTitle As String * 64
        dwInfoFlags As Long
    End Type
     
    Public Const NOTIFYICON_VERSION = 3
    Public Const NOTIFYICON_OLDVERSION = 0Public Const NIM_ADD = &H0
    Public Const NIM_MODIFY = &H1
    Public Const NIM_DELETE = &H2Public Const NIM_SETFOCUS = &H3
    Public Const NIM_SETVERSION = &H4
     
    Public Const NIF_MESSAGE = &H1
    Public Const NIF_ICON = &H2
    Public Const NIF_TIP = &H4Public Const NIF_STATE = &H8
    Public Const NIF_INFO = &H10
     
    Public Const NIS_HIDDEN = &H1
    Public Const NIS_SHAREDICON = &H2
     Public Const NIIF_NONE = &H0
    Public Const NIIF_WARNING = &H2
    Public Const NIIF_ERROR = &H3
    Public Const NIIF_INFO = &H1Public nfIconData As NOTIFYICONDATA
    在窗体中:
    Option ExplicitPrivate Sub Form_Load()
        With nfIconData
            .cbSize = Len(nfIconData)
            .hwnd = Me.hwnd
            .uId = vbNull
            .uFlags = NIF_INFO Or NIF_ICON Or NIF_TIP Or NIF_MESSAGE
            .hIcon = Me.Icon
            .szTip = "你的小消息可以放在此..." & vbNullChar
            .dwState = 0
            .dwStateMask = 0
            .szInfo = "这是一个Balloon Style Tool-tip!又一个小技巧可以应用了       " & Chr(13) & ":)" & vbNullChar
            .uTimeoutOrVersion = 15000
            .szInfoTitle = "哈哈,看到了么" & vbNullChar
            .dwInfoFlags = NIIF_INFO
        End With     Call Shell_NotifyIcon(NIM_ADD, nfIconData)
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
         Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
         End
    End Sub
      

  3.   

    http://www.csdn.net/cnshare/soft/16/16015.shtmVB版主lihonggen0(李洪根)写的一个局域网消息发送器,全力推荐下载,OICQ界面,垂直菜单控件技术,局域网消息发送技术,网络资源访问技术,系统托盘技术,资源管理器界面的分隔条技术,API函数使用等,为初学者提供一个代码例子。
      

  4.   

    '在模块中定义
    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 TypePublic Const WM_LBUTTONDOWN = &H201
    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 = &H200Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long'在窗口中定义
    Private Sub Form_Load()
        TrayIcon.cbSize = Len(TrayIcon)
        TrayIcon.hWnd = hWnd
        TrayIcon.uId = vbNull
        TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        TrayIcon.ucallbackMessage = WM_MOUSEMOVE
        TrayIcon.hIcon = Me.Icon
        TrayIcon.szTip = ls_Caption(50, li_Language) & Chr(0)
        
        '在系统栏添加拖盘
        Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    '构造系统拖盘结构
        TrayIcon.cbSize = Len(TrayIcon)
        TrayIcon.hWnd = Me.hWnd
        TrayIcon.uId = vbNull
        
        '删除系统栏的拖盘
        Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)
        Unload frmRight
        Unload frmDown
    End Sub
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    On Error Resume Next
        Dim Message As Long
        
        Message = X / Screen.TwipsPerPixelX    '判断鼠标消息,执行不同的功能
        Select Case Message
          Case WM_LBUTTONDOWN
              frmDown.Timer1.Enabled = frmDown.lb_FlagV
              frmMain.Show
              frmRight.Show
              frmDown.Show
              frmMain.WindowState = vbNormal
              SetForegroundWindow frmMain.hWnd
          Case WM_RBUTTONUP
              SetForegroundWindow frmMain.hWnd
              'PopupMenu mnuPopup
        End Select
    End Sub