win98 右下脚的控制台小窗口可以显示 时间,QQ, 输入法,声音等状态,在切换输入法,和QQ 来消息时,均显示当前输入法和QQ 消息闪动,如何在自己程序中做一个这样的控制台程序? 
高分请教 (200分)如不够可在加!

解决方案 »

  1.   

    这不叫控制台程序了.
    它只是将应用程序的图标放在了右下角(系统工程托盘).
    你可以SOU一下了以前的贴子多了.
      

  2.   

    实在是太多了,就是托盘http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=197
      

  3.   

    如果那个程序有不妥的地方,再参考这个。窗体
    Option ExplicitPrivate Sub MDIForm_Load()
        Hook Me.hWnd
    End SubPrivate Sub MDIForm_Unload(Cancel As Integer)
        Unhook
    End Sub模块
    Option Explicit
    Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
    Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
    Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
       ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public nfIconData As NOTIFYICONDATA
    Public Const WM_LBUTTONDOWN = &H201
    Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
    Public Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
    Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Declare Function ReleaseCapture Lib "user32" () As Long
    Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Public Const RGN_OR = 2
    Public Const WM_NCLBUTTONDOWN = &HA1
    Public Const HTCAPTION = 2
    Public Const WM_RBUTTONDOWN = &H204
    Public Const WM_RBUTTONUP = &H205
    Public Const WM_ACTIVATEAPP = &H1C
    Public Const NIF_ICON = &H2
    Public Const NIF_MESSAGE = &H1
    Public Const NIF_TIP = &H4
    Public Const NIM_ADD = &H0
    Public Const NIM_DELETE = &H2
    Public Const MAX_TOOLTIP As Integer = 64
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_LBUTTONDBLCLK = &H203Type NOTIFYICONDATA
       cbSize As Long
       hWnd As Long
       uID As Long
       uFlags As Long
       uCallbackMessage As Long
       hIcon As Long
       szTip As String * MAX_TOOLTIP
    End Type
    Private FHandle As Long
    Private WndProc As Long
    Private Hooking As Boolean
    Public Const WM_SYSCOMMAND = &H112Public Sub AddIconToTray(MeHwnd As Long, MeIcon As Long, MeIconHandle As Long, Tip As String)
    With nfIconData
       .hWnd = MeHwnd
       .uID = MeIcon
       .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
       .uCallbackMessage = WM_RBUTTONUP
       .hIcon = MeIconHandle
       .szTip = Tip & Chr$(0)
       .cbSize = Len(nfIconData)
    End With
    Shell_NotifyIcon NIM_ADD, nfIconData
    End SubPublic Sub RemoveIconFromTray()
        Shell_NotifyIcon NIM_DELETE, nfIconData
    End SubPublic Sub Hook(Lwnd As Long)
        If Hooking = False Then
            FHandle = Lwnd
            WndProc = SetWindowLong(Lwnd, GWL_WNDPROC, AddressOf WindowProc)
            Hooking = True
        End If
    End SubPublic Sub Unhook()
        If Hooking = True Then
            SetWindowLong FHandle, GWL_WNDPROC, WndProc
            Hooking = False
        End If
    End SubPublic Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If Hooking = True Then
            If lParam = WM_LBUTTONDOWN Then
                SetForegroundWindow hw
                MDIForm1.Show
                MDIForm1.WindowState = 0
                SetForegroundWindow hw
                RemoveIconFromTray
                Exit Function
            End If
            If uMsg = WM_SYSCOMMAND And wParam = 61472 Then
                MDIForm1.WindowState = 1
                MDIForm1.Hide
                AddIconToTray hw, MDIForm1.Icon, MDIForm1.Icon.Handle, "fdsa"
            End If
            WindowProc = CallWindowProc(WndProc, hw, uMsg, wParam, lParam) ' Pass it along
        End If
    End Function