高分求救:任务栏托盘里的图标删除问题

orinyangyang 2005-12-08 09:07:01
各位大侠请指教:
我用TerminateProcess函数结束了一个应用进程,可是该进程在任务栏托盘里的图标却不会马上消失,非得要等到下次鼠标经过任务栏托盘时该图标才会消失。曾试验发送wm_paint消息给任务栏窗体以及用UPDATEWINDOW函数更新任务栏窗体都不行。请各位大侠帮帮忙想想办法,不胜感激!!
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
迈克揉索芙特 2006-02-06
  • 打赏
  • 举报
回复
SendMessage hWnd, WM_CLOSE, 0, 0
rainstormmaster 2006-02-05
  • 打赏
  • 举报
回复
同意楼上,建议给窗口发送WM_CLOSE消息或者使用ExitProcess结束进程
zyl910 2006-02-05
  • 打赏
  • 举报
回复
用TerminateProcess强制结束进程不会释放资源的
慎用
faysky2 2006-02-05
  • 打赏
  • 举报
回复
别人写的代码

'以下中模块代码
Public Type NOTIFYICONDATA '托盘结构
cbSize As Long
hwnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 128
dwState As Long
dwStateMask As Long
szInfo As String * 256
uTimeoutAndVersion As Long
szInfoTitle As String * 64
dwInfoFlags As Long
End Type

Const niif_info = &H1

Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const NIF_INFO = &H10


Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONUP = &H205
Public Const WM_MOUSEMOVE As Long = &H200

Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean '托盘函数
Public Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long

Public TrayI As NOTIFYICONDATA
Public Title_tray As String




'以下是窗体代码
Option Explicit

Private Sub Form_Load()
On Error Resume Next
Title_tray = "你好,这是一个托盘程序演示"
With TrayI
.cbSize = Len(TrayI)
.hwnd = Form1.hwnd
.uID = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Form1.Icon
.szTip = Title_tray & vbNullChar
End With
Call Shell_NotifyIcon(NIM_ADD, TrayI)
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Me.WindowState = vbNormal
Me.Visible = True
SetForegroundWindow Me.hwnd
Form1.PopupMenu Form1.bb '弹出菜单
End If
If Button = 2 Then
'右键

End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call Shell_NotifyIcon(NIM_DELETE, TrayI)
End Sub
orinyangyang 2005-12-09
  • 打赏
  • 举报
回复
各位高人,帮忙出出注意啊,是在是急啊:(

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧