系统托盘程序如何在程序中变换右下角的图标。像QQ一有人发信息过来时变换图标。

解决方案 »

  1.   

    强烈推荐用.net,简单,根本不用什么API,只要两个控件NotifyIcon、ContextMenu即可实现系统托盘,设置Icon属性就可以变换图标。
      

  2.   

    '窗体
    Option ExplicitPrivate Sub Command1_Click()
        Dim nid As NOTIFYICONDATA
        
        nid.cbSize = Len(nid)
        nid.hWnd = Me.hWnd
        nid.uID = 9999
        nid.uFlags = NIF_ICON
        nid.hIcon = Me.Icon
        
        Shell_NotifyIcon NIM_ADD, nid   ' 
    End SubPrivate Sub Command2_Click()
        Dim nid As NOTIFYICONDATA
        
        nid.cbSize = Len(nid)
        nid.hWnd = Me.hWnd
        nid.uID = 9999
        
        Shell_NotifyIcon NIM_DELETE, nid
    End SubPrivate Sub Command3_Click()
        Dim nid As NOTIFYICONDATA
        
        nid.cbSize = Len(nid)
        nid.hWnd = Me.hWnd
        nid.uID = 9999
        nid.uFlags = NIF_ICON
        nid.hIcon = Image1.Picture
        
        Shell_NotifyIcon NIM_MODIFY, nid
    End SubPrivate Sub Command4_Click()
        Dim nid As NOTIFYICONDATA
        
        nid.cbSize = Len(nid)
        nid.hWnd = Me.hWnd
        nid.uID = 9999
        nid.uFlags = NIF_TIP
        nid.szTip = "cool qqyy_sj" + Chr(0)
        
        Shell_NotifyIcon NIM_MODIFY, nid
        
        MsgBox "请将鼠标移到 KJ 图标之上以检查'提示信息'是否设定成功!"
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Command2_Click
    End Sub
    '模块
    Option ExplicitPublic Const NIM_ADD = 0
    Public Const NIM_MODIFY = 1
    Public Const NIM_DELETE = 2Public Const NIF_MESSAGE = 1
    Public Const NIF_ICON = 2
    Public Const NIF_TIP = 4Type NOTIFYICONDATA
           cbSize As Long
           hWnd As Long
           uID As Long
           uFlags As Long
           uCallbackMessage As Long
           hIcon As Long
           szTip As String * 64
    End TypeDeclare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
      

  3.   

    还要在窗体中加一个image控件 用来加载你要变成的ico
      

  4.   

    可是我只会微软的东东,况且这是在VB版,并不排斥VB.NET,我总不能在这里推荐Java吧,放弃微软,说说而已,不会真的放弃的,吼吼