发信人: fishy()
整理人: fishy(2000-03-12 14:43:13), 站内信件
|
现在使用Tray来编程已经不是什么稀奇事了,但是,不知道大家注意了没有,在 VB中使用Tray,会在Windows\Temp下生成一个临时文件。
不过,不用担心,只要你的程序是正常退出,这个临时文件就会被自动删除。
但是,如果你的程序是后台运行的,随着Windows的关闭而退出的,问题就来了— —临时文件不会被删除!
So,怎么办?
其实,只要你的Tray是用API实现的(不是用的控件),只需要把原来的程序改一 下就可以了。
你的Tray程序中应该有这样一个函数(可能名字不同)来处理各种消息(比如在 Tray图标上单击鼠标右键):
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If wParam = uID Then
'处理Tray的消息
Select Case lParam
Case WM_RBUTTONDOWN
'show pop-up menu
Case .....
.....
End Select
End If
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lPara m)
End Function
你只需要从API察看器中Copy常量WM_QUERYENDSESSION的定义,然后把上面的函数 改称下面这样就可以了
Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case Is = WM_QUERYENDSESSION
'接受到Windows的关机消息
'运行退出程序的语句
Case Else
If wParam = uID Then
'处理Tray的消息
Select Case lParam
Case WM_RBUTTONDOWN
'show pop-up menu
Case .....
.....
End Select
End If
End Select
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lPara m)
End Function
编译后再看一看,讨厌的临时文件被自动删除了!
-- Dim fishy As Friend
回复时请打勾
------------
欢迎大家访问酷码工作室:http://comma.my163.net
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.37.14]
|
|