中关村在线

首页 排行 新品 问答 下载 论坛 手机 笔记本 数码相机 主板 显卡 平板电脑 更多

怎么让程序最小化后到系统托盘

举报
讨论回答 (9)
honey456
6621625
guozhimi
技术问题
0523ben
WANGQI19871121
songzhishuai
1237890
在模块中写上

------------------------------
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
'---------- dwMessage可以是以下NIM_ADD、NIM_DELETE、NIM_MODIFY 标识符之一----------
Private Const NIM_ADD = &H0 '在任务栏中增加一个图标
Private Const NIM_DELETE = &H2 '删除任务栏中的一个图标
Private Const NIM_MODIFY = &H1 '修改任务栏中个图标信息

Private Const NIF_MESSAGE = &H1 'NOTIFYICONDATA结构中uFlags的控制信息
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

Private Const WM_MOUSEMOVE = &H200 '当鼠标指针移至图标上

Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONUP = &H205

Private Type NOTIFYICONDATA
cbSize As Long '该数据结构的大小
hwnd As Long '处理任务栏中图标的窗口句柄
uID As Long '定义的任务栏中图标的标识
uFlags As Long '任务栏图标功能控制,可以是以下值的组合(一般全包括)
'NIF_MESSAGE 表示发送控制消息;
'NIF_ICON表示显示控制栏中的图标;
'NIF_TIP表示任务栏中的图标有动态提示。
uCallbackMessage As Long '任务栏图标通过它与用户程序交换消息,处理该消息的窗口由hWnd决定
hIcon As Long '任务栏中的图标的控制句柄
szTip As String * 64 '图标的提示信息
End Type

Dim t As NOTIFYICONDATA '---------以上是在系统托盘显示图标的代码

Dim sHour, sMinute '自动关机的时间小时和分钟

'---------以下是不显示标题栏等的代码
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000 ' WS_BORDER 或 WS_DLGFRAME
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_SYSMENU = &H80000

Private 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

Private Enum ESetWindowPosStyles
SWP_SHOWWINDOW = &H40
SWP_HIDEWINDOW = &H80
SWP_FRAMECHANGED = &H20 ' The frame changed: send WM_NCCALCSIZE
SWP_NOACTIVATE = &H10
SWP_NOCOPYBITS = &H100
SWP_NOMOVE = &H2
SWP_NOOWNERZORDER = &H200 ' Don't do owner Z ordering
SWP_NOREDRAW = &H8
SWP_NOREPOSITION = SWP_NOOWNERZORDER
SWP_NOSIZE = &H1
SWP_NOZORDER = &H4
SWP_DRAWFRAME = SWP_FRAMECHANGED
HWND_NOTOPMOST = -2
End Enum

Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Function ShowTitleBar(ByVal bState As Boolean)
Dim lStyle As Long
Dim tR As RECT

' 获取窗口的位置:
GetWindowRect Me.hwnd, tR

' 调整标题栏是否可见:
lStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
If (bState) Then
Me.Caption = Me.Tag
If Me.ControlBox Then
lStyle = lStyle Or WS_SYSMENU
End If
If Me.MaxButton Then
lStyle = lStyle Or WS_MAXIMIZEBOX
End If
If Me.MinButton Then
lStyle = lStyle Or WS_MINIMIZEBOX
End If
If Me.Caption <> "" Then
lStyle = lStyle Or WS_CAPTION
End If
Else
Me.Tag = Me.Caption
Me.Caption = ""
lStyle = lStyle And Not WS_SYSMENU
lStyle = lStyle And Not WS_MAXIMIZEBOX
lStyle = lStyle And Not WS_MINIMIZEBOX
lStyle = lStyle And Not WS_CAPTION
End If
SetWindowLong Me.hwnd, GWL_STYLE, lStyle

' 重新设定窗口:
SetWindowPos Me.hwnd, 0, tR.Left, tR.Top, tR.Right - tR.Left, tR.Bottom - tR.Top, SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED
Me.Refresh

' 你可能需要在Form_Resize中加一点代码,因为客户区的大小已经改变:
'Form_Resize

End Function '----------------以上是不显示标题栏工具栏等代码
Sub TaskSet(s As Integer)
Dim sTmp
t.cbSize = Len(t)
t.hwnd = Me.hwnd
t.uID = 0
t.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
t.uCallbackMessage = WM_MOUSEMOVE
t.hIcon = Me.Icon.Handle
sTmp = "标 题"
t.szTip = sTmp
Select Case s
Case 1
Shell_NotifyIcon NIM_ADD, t
Case 2
Shell_NotifyIcon NIM_DELETE, t
End Select
End Sub

-------------------------------------------------------
在load中写上
ShowTitleBar False '让窗口标题消失
TaskSet 1 '不显示界面,在系统托盘显示
App.TaskVisible = False

me.icon是右下角图标
understand77
moneydonkey
展开查看全部 9 条讨论
精品应用推荐
新浪微博 新浪微博 天气通 天气通 淘宝特价版 淘宝特价版 UC浏览器 UC浏览器
相关问题

家电

1.3万 浏览 1044 回答

手机性能天梯榜讨论

4349 浏览 615 回答

显卡

2.1万 浏览 614 回答

硬盘

1.5万 浏览 601 回答

显示器

8956 浏览 587 回答

扩展阅读

惠普满血焕新服务

评论 2

惠普满血焕新服务

外观果味十足还不够,为了“圈果粉”OPPO还有新大招

评论 8

外观果味十足还不够,为了“圈果粉”OPPO还有新大招

高素质便携变焦镜头 松下LUMIX S 18-40mm F4.5-6.3拍摄体验

评论 3

高素质便携变焦镜头 松下LUMIX S 18-40mm F4.5-6.3拍摄体验

零卡德芙实至名归,OPPO Reno13 Pro系统评测

评论 2

零卡德芙实至名归,OPPO Reno13 Pro系统评测

高效AI体验 长效续航能力 体验华硕无畏Pro 14 AI超轻薄本

评论 3

高效AI体验 长效续航能力 体验华硕无畏Pro 14 AI超轻薄本
热门问题

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

1.2万 浏览 6 回答

求推荐一款笔记本。工科研究生用,便于随身携带。平时做科研,处理数据,查阅文献。不玩网游和单机,至多玩棋牌游戏和影音。喜欢摄影,需要修图。附加:纠结要不要带数字键盘区。预算最多8000。尽量便宜些。

有一样东西,比雪还白,比黑板还黑,男的一天用三次,女的一辈子用一次,是什么?

6431 浏览 6 回答

有一样东西,比雪还白,比黑板还黑,男的一天用三次,女的一辈子用一次,是什么?

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

2.3万 浏览 4 回答

256gSSD是否够用?打算买个笔记本,办公为主,查阅文献等。不玩大型游戏,至多玩一些棋牌类游戏和影音娱乐。手里有2T移动硬盘,但也想在笔记本上存少量的电影。平时玩单反,处理图片比较多。

荣耀Magic7 Pro

9750 浏览 1 回答

荣耀Magic7 Pro

免费韩国漫画在线观看的地址有么?

8047 浏览 4 回答

免费韩国漫画在线观看的地址有么?

麒麟9100谁代工

2884 浏览 6 回答

麒麟9100谁代工

手机在哪里登录192.168.1.1设定页面?

9448 浏览 7 回答

手机在哪里登录192.168.1.1设定页面?

制作一个AE视频大概有多少酬劳?

2704 浏览 6 回答

制作一个AE视频大概有多少酬劳?

肿么找回QQ浏览器历史记录

7297 浏览 6 回答

肿么找回QQ浏览器历史记录

苹果手机怎么打开apk文件

2万 浏览 6 回答

苹果手机怎么打开apk文件
最新问答

在电脑中怎么使中文文件名按数字从大到小排序

1.2万 浏览 4 回答

在电脑中怎么使中文文件名按数字从大到小排序

wps找不到产品管理中心

6019 浏览 6 回答

wps找不到产品管理中心

w10系统肿么连惠普M1005打印机?

713 浏览 7 回答

w10系统肿么连惠普M1005打印机?

打印机MFC-7340扫描的时候,在打印机那儿按就一直显示正在连接计算机,不

6106 浏览 6 回答

打印机MFC-7340扫描的时候,在打印机那儿按就一直显示正在连接计算机,不

卡卡布三部曲是什么平台上的啊?

2207 浏览 5 回答

卡卡布三部曲是什么平台上的啊?
举报
举报成功

经过核实后将会做出处理,感谢您为社区和谐做出贡献。

请选择删除原因
删除成功
确定推荐该回答?
推荐成功

更多频道

频道导航
辅助工具