怎样使应用程序图标显示在任务栏的右下角,即输入法显示的地方?
又如何使它在任务栏正常显示,
或同时在任务栏和系统栏显示?

解决方案 »

  1.   

    给你个类模块,非常好用。' To use on form:
    ' Public myTrayIcon As New clsSysTrayIcon
    ' myTrayIcon.RemoveIcon Me
    ' myTrayIcon.ShowIcon Me
    ' myTrayIcon.ChangeIcon Me, (Image, Picture Box, Etc)
    ' myTrayIcon.ChangeToolTip Me, InputBox("Enter Tool Tip")
    '
    ' ****** Tray Menu Source ****** (Drop In Form)
    '
    'Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ' Remember..... The value of X will be different if the icon is minimised
    ' to the system tray.  The values in this case will be as follows,
    '       7680   ' MouseMove
    '       7695   ' Left MouseDown
    '       7710   ' Left MouseUp
    '       7725   ' Left DoubleClick
    '       7740   ' Right MouseDown
    '       7755   ' Right MouseUp
    '       7770   ' Right DoubleClick
    'If myTrayIcon.bRunningInTray Then          'Check to see if form is in the system tray
    '    Select Case X                           'If it is, use X to get message value
    '        Case 7710: PopupMenu Me.mnuBar1, vbPopupMenuRightButton  'Show a menubar
    '        Case 7725: myTrayIcon.RemoveIcon Me
    '    End Select
    'End If
    '
    'End SubOption ExplicitPrivate 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
      
    Private FormHandle As Long
    Private mvarbRunningInTray As Boolean
    Private SysIcon As NOTIFYICONDATA
    Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As LongPrivate Property Let bRunningInTray(ByVal vData As Boolean)
        mvarbRunningInTray = vData
    End Property
    Property Get bRunningInTray() As Boolean
        bRunningInTray = mvarbRunningInTray
    End PropertyPublic Sub ShowIcon(ByRef sysTrayForm As Form)
        SysIcon.cbSize = Len(SysIcon)
        SysIcon.hwnd = sysTrayForm.hwnd
        SysIcon.uId = vbNull
        SysIcon.uFlags = 7
        SysIcon.ucallbackMessage = 512
        SysIcon.hIcon = sysTrayForm.Icon
        SysIcon.szTip = sysTrayForm.Caption + Chr(0)
        Shell_NotifyIcon 0, SysIcon
        mvarbRunningInTray = True
    End SubPublic Sub RemoveIcon(sysTrayForm As Form)
        SysIcon.cbSize = Len(SysIcon)
        SysIcon.hwnd = sysTrayForm.hwnd
        SysIcon.uId = vbNull
        SysIcon.uFlags = 7
        SysIcon.ucallbackMessage = vbNull
        SysIcon.hIcon = sysTrayForm.Icon
        SysIcon.szTip = Chr(0)
        Shell_NotifyIcon 2, SysIcon
        'If sysTrayForm.Visible = False Then sysTrayForm.Show    'Incase user can't see form
        mvarbRunningInTray = False
    End SubPublic Sub ChangeIcon(sysTrayForm As Form, picNewIcon As ListImage)If mvarbRunningInTray = True Then   'If running in the tray
        SysIcon.cbSize = Len(SysIcon)
        SysIcon.hwnd = sysTrayForm.hwnd
        'SysIcon.uId = vbNull
        'SysIcon.uFlags = 7
        'SysIcon.ucallbackMessage = 512
        SysIcon.hIcon = picNewIcon.Picture
        'SysIcon.szTip = sysTrayForm.Caption + Chr(0)
        Shell_NotifyIcon 1, SysIcon
    End IfEnd SubPublic Sub ChangeToolTip(sysTrayForm As Form, strNewTip As String)If mvarbRunningInTray = True Then   'If running in the tray
        SysIcon.cbSize = Len(SysIcon)
        SysIcon.hwnd = sysTrayForm.hwnd
        SysIcon.szTip = strNewTip & Chr(0)
        Shell_NotifyIcon 1, SysIcon
    End IfEnd Sub
      

  2.   

    去看看吧!!
    http://www.hongen.com/pc/program/apitutor/api0012/api01.htm
      

  3.   

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

  4.   


    这个很精典:
    http://www.yesky.com/20011024/202037_4.shtml
      

  5.   

    是托盘吧。FAQ里有可以去看一下
      

  6.   

    金山词霸启示录——定制系统菜单     如何做到当我们单击窗体的最小化和关闭按钮时,窗体先最小化到任务栏成为按钮,然后消失呢?金山词霸能做到,我们也可以做到。    只要我们能截获这两个事件发送给窗体的消息,然后换成我们自定义的过程,问题就解决了。首先,用CloseWindow使窗体最小化;然后,用Form1.Visible = False使窗体消失。    这两个事件共用一个消息:WM_SYSCOMMAND,不同的是传递给窗口函数的wp参数。为取得这两个事件的wp参数,有两个方法    1、用vb的常数,这是一些以SC_为前缀的常数(S代表SYS,C代表COMMAND)    2、编程取得它们,事实上,我采用的是这种方法。在窗口放两个文本框,当任何WM_SYSCOMMAND消息发生时,先在文本框里显示wp和lp的值,很容易的发现,单击最小化按钮时,wp=61472;单击关闭按钮时,wp=61536。现在就可以开始编程了。    为了实现对窗体的子类处理,采用MsgHook32控件。    源代码如下:    Option Explicit    ' API函数声明
        Private Declare Function CloseWindow Lib "user32" (ByVal hwnd As Long) As Long    ' 常数声明
        Private Const WM_SYSCOMMAND = &H112    Private Sub Form_Load()
            Msghook1.HwndHook = Form1.hwnd
            ' 将Msghook1绑定到Form1上
            Msghook1.Message(WM_SYSCOMMAND) = True
            ' Msghook1拦截WM_SYSCOMMAND消息
        End Sub    Private Sub Msghook1_Message(ByVal msg As Long, ByVal wp As Long, ByVal lp As Long, result As Long)
            Text1.Text = wp
            Text2.Text = lp
            If wp = 61472 Or wp = 61536 Then
            ' 单击的是最小化或关闭按钮
                CloseWindow Form1.hwnd
                ' 最小化窗口
                Form1.Visible = False
                ' 使窗口消失
                Unload Form1
                ' 卸载窗口。如果有通知栏图标,就不用卸载窗口
            Else
                Call Msghook1.InvokeWindowProc(msg, wp, lp)
                ' 其他的事件由默认窗口函数处理
            End If
        End Sub    不仅是单击窗口右上角的按钮,其实,在系统菜单里选择最小化和关闭菜单项,也有同样的效果。到此,对金山词霸的一个小秘密就发觉出来了,接下来,就看看如何实现通知栏图标吧。
      

  7.   

    金山词霸启示录——通知栏图标     通知栏图标,可以用一个免费的小控件:SysTray实现。也可以用一个子类处理控件来实现。后一种方法比较自由,所以我采用了后一种方法。除了一个子类处理控件,还需要一个api函数:Shell_NotifyIcon,以及一个结构:NOTIFYICONDATA。关于它们的说明本站都有,这里就不用费舌了。    添加、修改、移除通知栏图标都比较简单,关键是如何让它响应鼠标事件。在NOTIFYICONDATA结构中,uCallbackMessage字段定义了通知栏图标响应的事件,hwnd字段则定义了响应事件的对象。    在程序里,利用一个图片框来响应通知栏图标的鼠标事件。只需简单的定义NOTIFYICONDATA.hwnd = Picture1.hwnd,那么一旦uCallbackMessage定义的消息在Picture1上发生,就可以看作通知栏图标事件发生了。    所以将子类处理控件绑定到图片框,其拦截的消息为uCallbackMessage定义的消息编号,这里令NOTIFYICONDATA.uCallbackMessage = WM_TrayIcon,而WM_TrayIcon = &H2000(自定义消息)    一旦这个消息被拦截,就可以根据不同的lp参数判断发生的是那一个鼠标动作,事实上我们只需要对鼠标的左右按钮单击事件作出响应(这两个消息分别为WM_LBUTTONUP、WM_RBUTTONUP)    然后再做一个菜单,当WM_RBUTTONUP发生时,就弹出来。    最后请注意,卸载程序时记得移除通知栏图标