想让软件已运行就最小化为托盘程序,在电脑的右下角,不知道应该怎么做?

解决方案 »

  1.   

    新建一个模块module1,代码如下:
    Option ExplicitPublic Const DefaultIconIndex = 1    '图标缺省索引
    Public Const WM_LBUTTONDOWN = &H201    '按鼠标左键
    Public Const WM_RBUTTONDOWN = &H204    '按鼠标右键
    Public Const WM_RBUTTONUP = &H205
    Public Const NIM_ADD = 0    '添加图标
    Public Const NIM_MODIFY = 1    '修改图标
    Public Const NIM_DELETE = 2    '删除图标
    Public Const WM_MOUSEMOVE = &H200
    Public Const NIF_MESSAGE = 1    'message 有效
    Public Const NIF_ICON = 2    '图标操作(添加、修改、删除)有效
    Public Const NIF_TIP = 4    'ToolTip(提示)有效'图标操作
    Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
    '判断窗口是否最小化
    Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
    '设置窗口位置和状态(position)的功能
    Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    '定义类型
    '通知栏图标状态
    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 Function Icon_Add(iHwnd As Long, sTips As String, hIcon As Long, IconID As Long) As Long
        '参数说明:iHwnd:窗口句柄,sTips:当鼠标移到通知栏图标上时显示的提示内容
        'hIcon:图标句柄,IconID:图标Id号
    Dim IconVa As NOTIFYICONDATA
        With IconVa
            .hwnd = iHwnd
            .szTip = sTips + Chr$(0)
            .hIcon = hIcon
            .uID = IconID
            .uCallbackMessage = WM_MOUSEMOVE
            .cbSize = Len(IconVa)
            .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
            Icon_Add = Shell_NotifyIcon(NIM_ADD, IconVa)
        End With
    End Function
    '删除通知栏图标(参数说明同Icon_Add)
    Function Icon_Del(iHwnd As Long, lIndex As Long) As Long
    Dim IconVa As NOTIFYICONDATA
    Dim L As Long
        With IconVa
            .hwnd = iHwnd
            .uID = lIndex
            .cbSize = Len(IconVa)
        End With
        Icon_Del = Shell_NotifyIcon(NIM_DELETE, IconVa)
    End Function在窗体中添加如下代码:
    Option Explicit
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Form_Load()
        Call Icon_Add(Me.hwnd, Me.Caption, Me.Icon, 0) '将窗口图标加入通知栏
    End SubPrivate 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_RBUTTONUP
            SetForegroundWindow (hwnd)
            PopupMenu menu
        Case WM_LBUTTONDOWN
            Me.WindowState = 0
            Me.Show
    '        Call Icon_Del(Form1.hwnd, 0) '显示出窗体时删除托盘
        End Select
    End SubPrivate Sub Form_Resize() '判断窗口是否最小化状态,并且是按最小化按纽后第一次发生Resize事件
        If IsIconic(Me.hwnd) <> 0 Then
            Me.Visible = False
            Call Icon_Add(Me.hwnd, Me.Caption, Me.Icon, 0)
        End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Call Icon_Del(Form1.hwnd, 0)
    End Sub
      

  2.   

    http://www.j2soft.cn/static_html/200511092136103255admin.html
    这里有源码
      

  3.   

    这类源码。google搜一搜,源码一大堆,
      

  4.   

    WAR3窗口化鼠标锁定工具(VB6.0代码)从这里自己拆,封装成了一个类,比较方便:)
      

  5.   

    好象写的有问题啊,hwnd是什么啊,menu又是什么啊,根本运行不了
    还有如果要最小化托盘后,强制图标一直显示在托盘里怎么写