QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3613|回复: 12
收起左侧

[已解决] 如何在VB开发中增加"小化到托盘"功能

[复制链接]
发表于 2008-11-28 11:23:24 | 显示全部楼层 |阅读模式 来自: 中国广东深圳

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
求助各位老大,如何在做好的PM二次中添加"小化到托盘"功能,就象QQ一样
发表于 2008-11-28 11:29:01 | 显示全部楼层 来自: 中国广东东莞
VB实现将程序最小化到托盘区
* \' h1 w7 @. S% c0 t/ n  i8 d9 ^9 f
* }2 ?8 Q/ b+ b

; }" }/ K8 C' _0 O1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False , |0 {6 l4 P! e: N* I% G
# K* M6 b2 @' J) |
2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas
1 b' l& j5 l  C, H, {, E% F( e3 _! K- r
3、在Module1中写下如下代码:
# ~7 o$ H$ H( \6 J6 H# ?: D) a7 U% ?" d8 i8 a
Option Explicit
* j& s( D# S+ l
, {' h# i/ P; a! `: `1 B/ I2 ]Public Const MAX_TOOLTIP As Integer = 64   Y1 e5 o1 _) U$ Q
Public Const NIF_ICON = &H2
6 }. x: ]% i2 f& M/ CPublic Const NIF_MESSAGE = &H1 7 T( R# F( a9 |' [9 U
Public Const NIF_TIP = &H4 + d( }1 P; s+ A8 G! Y3 ^
Public Const NIM_ADD = &H0
4 n* j% b. @) j- J* c/ B1 o( b3 UPublic Const NIM_DELETE = &H2 & W- R. Y3 `9 K, g+ U
Public Const WM_MOUSEMOVE = &H200
) r6 s% ^3 {6 P% mPublic Const WM_LBUTTONDOWN = &H201 $ ]1 v. A. {( R
Public Const WM_LBUTTONUP = &H202 6 d4 M  Y, c; T
Public Const WM_LBUTTONDBLCLK = &H203 8 r0 c4 z* E. n2 ^# i
Public Const WM_RBUTTONDOWN = &H204
# D; e1 \0 v3 Y' p4 w2 H$ lPublic Const WM_RBUTTONUP = &H205 ( V' r2 ?  @% l- H; T4 _' W+ x( z2 A
Public Const WM_RBUTTONDBLCLK = &H206
- s7 ~" t' R* d* g6 t0 a6 X. e3 D3 v$ R3 w# x* y$ Q
Public Const SW_RESTORE = 9 5 O% I9 F! T; ?7 k+ F" B
Public Const SW_HIDE = 0 ) E( N+ w- Z: V7 B
1 h+ i; H; U  P, m  ^8 @
Public nfIconData As NOTIFYICONDATA 4 h* s9 x) {' `, }  `1 \

5 A" c0 A" X% g8 J. h9 O' j6 y& P3 W& y
Public Type NOTIFYICONDATA 5 e$ ^$ c5 S0 ~% f
cbSize As Long ' u8 o; ], w) J6 n
hWnd As Long 3 |3 _. A- d7 k* C6 {
uID As Long
4 }- K) T+ P. k& v8 B7 }7 s. N% QuFlags As Long
2 m; g( @# v/ YuCallbackMessage As Long
; j3 {; ^. z% y* a3 @1 ThIcon As Long / p8 i. U- `. a
szTip As String * MAX_TOOLTIP
8 Y: {4 A8 P* f  ], bEnd Type
/ A2 ]( b7 W1 F  Z# {7 N& m0 v8 O9 B- y
Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
8 l- Z! W) T( u2 m7 s; X" j( [# Z% aPublic Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long ) e. Z/ H, P5 l- r8 @$ S
- R) Y$ P$ @/ {6 w! |/ x
'4、在Form1的Load事件中写下如下代码: ! C- A% o& w* P5 s6 x

7 o2 |3 I, J; Y# G, \; }" m- S" BPrivate Sub Form_Load() ; `4 q2 d# k7 y% H
% g& A* K; ^% R
'以下把程序放入System Tray====================================System Tray Begin
  G7 t/ v0 y0 m- J* E5 @( NWith nfIconData , D2 U& g, W% _
.hWnd = Me.hWnd
' s& }1 Y+ s  |3 A.uID = Me.Icon
2 k& h& F! Q1 r, M.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
5 d5 \+ P* l2 Q2 o; t- z/ k; r.uCallbackMessage = WM_MOUSEMOVE
& P* j8 E( q) S2 C3 Z5 q% l6 z.hIcon = Me.Icon.Handle
; i1 @) e' F& Y  E'定义鼠标移动到托盘上时显示的Tip ) i& l4 D  K, Q& s  ^) L2 ^  \
.szTip = App.Title + "(版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")" & vbNullChar & ~7 B8 ]& [: h7 A0 C2 E- W& d
.cbSize = Len(nfIconData)
# B# W$ \! L9 mEnd With 7 I* m  d* k; v6 W3 _  K( l  d
Call Shell_NotifyIcon(NIM_ADD, nfIconData)
" r. y8 U' w- A: b+ K% Y6 e'=============================================================System Tray End
: o/ r9 l7 O9 h0 X; LMe.Hide
0 v1 n. x  M6 ~) @7 f& ~8 B+ pEnd Sub ! ]  M, d- g* Q. v2 V! P

# A# ]0 l+ |# h& u( @- b( C'5、在Form1的QueryUnload事件中写入如下代码:
% c* {! T4 L, A# v& P1 Y; H! f/ ~6 k1 S5 j, e$ }6 w- Z  H2 v( Y) E
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
, o6 L0 x; I7 YCall Shell_NotifyIcon(NIM_DELETE, nfIconData) 2 ~* l" r" J0 u0 S* \; H/ Z
End Sub
+ e9 r+ L* l0 I# ?
) Y2 @/ x# ^) ^& p'6、在Form1的MouseMove事件中写下如下代码: 6 A, ]9 _# P+ J3 f2 D; U: V

9 }/ F7 y" r, U2 j& V. r8 E- g6 IPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
0 Z' i- o( K$ }  n, Z" ?8 NDim lMsg As Single
' `: Q4 {3 J: zlMsg = X / Screen.TwipsPerPixelX
$ ~" G2 M6 E) P5 ]  ~- rSelect Case lMsg 7 F: c. i8 B3 g
Case WM_LBUTTONUP ' d; B9 u: @1 ~& S2 T' z* p3 |
'MsgBox "请用鼠标右键点击图标!", vbInformation, "实时播音专家" * Y& S' k$ V3 U5 ?$ }$ L: |
'单击左键,显示窗体
1 m- B; \+ T: Q2 O) D; ZShowWindow Me.hWnd, SW_RESTORE
2 C! o( ?1 G* |' J6 H'下面两句的目的是把窗口显示在窗口最顶层
% k' D( `: Y9 ?'Me.Show
: F( m9 k( C6 p9 m- }'Me.SetFocus
2 {3 m9 M" X9 D: t4 C'' Case WM_RBUTTONUP
4 _) x% a/ N6 X5 F/ x'' PopupMenu MenuTray '如果是在系统Tray图标上点右键,则弹出菜单MenuTray 9 q, u! w& g8 |7 f  z2 {& c' g
'' Case WM_MOUSEMOVE
/ R! c. q8 @  n- j( X1 r'' Case WM_LBUTTONDOWN 3 ?# g, a5 h4 n( K' a3 t
'' Case WM_LBUTTONDBLCLK
3 d! `  M3 T$ ?# ^0 R8 f'' Case WM_RBUTTONDOWN $ l, S! X5 V0 ^& b9 z/ u3 A
'' Case WM_RBUTTONDBLCLK
1 c  N1 F# _& E' t'' Case Else
9 E3 U. U/ e) |# u) ~& W, R+ |End Select
2 G: o# f: ]) r; n. |End Sub
0 L/ x. x/ ]  A! d0 X$ u5 X' {: @! P) Z8 h
7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。单击此图标,Form1就自动弹出来了。
发表于 2008-11-28 11:30:03 | 显示全部楼层 来自: 中国广东东莞
在最小化之后才显示托盘图标??- y/ N( B3 O6 z" j% |2 V" z- ^* h
Private Sub Form_Resize() % ]# Z; {+ {% k' I  t
If Me.WindowState = 1 Then
# l2 N4 P+ K1 u+ H% C. K'添加系统托盘图标的代码
# V2 b6 V/ v$ q+ \End If 7 K* Q( s  V! C) ~+ O
End Sub
+ u* r4 Y6 u) L8 Z'不要在Form_Load里面添加系统托盘图标。
 楼主| 发表于 2008-11-28 11:37:35 | 显示全部楼层 来自: 中国广东深圳
感谢吉米老大
 楼主| 发表于 2008-11-28 12:07:38 | 显示全部楼层 来自: 中国广东深圳
还得请吉米老大看看...
BVC%DOUL$ZYC10HYWQCM2L3.jpg
 楼主| 发表于 2008-11-28 13:08:43 | 显示全部楼层 来自: 中国广东深圳
搞不定...5 G/ f& b3 S( z4 V/ b
偶刚学VB,我把他传上来,会整的帮我整下吧... 加开机自动运行和小化到脱盘功能....先谢谢师傅们

PM集合.rar

2.97 KB, 下载次数: 53

发表于 2008-11-28 13:27:15 | 显示全部楼层 来自: 中国广东东莞
原帖由 380557319 于 2008-11-28 13:08 发表 http://www.3dportal.cn/discuz/images/common/back.gif
3 j0 y8 @) H4 e 搞不定...& N# u6 F5 X4 Z- h! V' L0 A# n
偶刚学VB,我把他传上来,会整的帮我整下吧... 加开机自动运行和小化到脱盘功能....先谢谢师傅们

$ T/ K; D" e- u
& q% ^; A6 \4 o) c3 I: W已改好

PM集合_小化到托盘.rar

4.24 KB, 下载次数: 156

 楼主| 发表于 2008-11-28 13:31:11 | 显示全部楼层 来自: 中国广东深圳
原帖由 jimmycnc 于 2008-11-28 13:27 发表 http://www.3dportal.cn/discuz/images/common/back.gif
6 r7 h0 I9 {& i* E
/ G4 k/ X/ B8 F( J+ n
4 A& ~/ z- {6 G: u3 E已改好
+ v2 C/ r0 D; z+ F! n( q
谢谢吉米老大,可能是代码的格式我还没掌握好      看来还得努力学习
发表于 2008-11-29 10:22:01 | 显示全部楼层 来自: 中国吉林长春
永远支持吉米老大
发表于 2008-11-29 12:38:45 | 显示全部楼层 来自: 中国广东中山
厉害啊。。
发表于 2009-3-3 09:14:26 | 显示全部楼层 来自: 中国广东东莞
吉米老大, 可不可让它自动隐藏 鼠标一碰又出来  我见你做有个外挂是这样的 赐教
6 p' f/ h: }( h) I5 @8 y  [还有一个问提可能除你没人可帮我了 POWER8.0 有时图档打不开 有解决的办法不 赐教
发表于 2009-3-3 09:15:20 | 显示全部楼层 来自: 中国广东东莞
是这样的   。。。。。。
123.JPG
发表于 2009-3-12 22:31:23 | 显示全部楼层 来自: LAN

先下了,我找这个都一个月了

先顶下这个,我都找过好多网站了.找的好象就是这个.先多谢楼上的无私奉献.
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表