高分请教!

jsa 2003-08-20 09:08:14
VB中如何使程序像FlashGet那样,打开程序后不在任务栏留下痕迹,而直接在系统栏中出现一图标???
...全文
62 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
如果你没找到,这里就是SysTray控件

http://www.fangchen.net/sites/fangchen/share/systray.zip

建议你按我的方法,作系统托盘,不用控件
http://www.csdn.net/cnshare/soft/16/16015.shtm
IANCHAN42 2003-08-20
  • 打赏
  • 举报
回复
同意楼上观点
多看点VB资源光盘 里边有很多
射天狼 2003-08-20
  • 打赏
  • 举报
回复
能用API完成的时候最好不要用控件~~
射天狼 2003-08-20
  • 打赏
  • 举报
回复
Option Explicit

Private Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uId As Long
uFlags As Long
ucallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type

Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_RBUTTONUP = &H205
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIF_MESSAGE = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const WM_MOUSEMOVE = &H200

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long


Dim TrayIcon As NOTIFYICONDATA

Private Sub Form_Load()
TrayIcon.cbSize = Len(TrayIcon)
TrayIcon.hWnd = hWnd
TrayIcon.uId = vbNull
TrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
TrayIcon.ucallbackMessage = WM_MOUSEMOVE
TrayIcon.hIcon = Me.Icon
TrayIcon.szTip = "拖盘" & Chr(0)

'在系统栏添加拖盘
Call Shell_NotifyIcon(NIM_ADD, TrayIcon)
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'构造系统拖盘结构
TrayIcon.cbSize = Len(TrayIcon)
TrayIcon.hWnd = Me.hWnd
TrayIcon.uId = vbNull

'删除系统栏的拖盘
Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Dim Message As Long

Message = X / Screen.TwipsPerPixelX

'判断鼠标消息,执行不同的功能
Select Case Message
Case WM_LBUTTONDOWN
'点击拖盘
Case WM_RBUTTONUP
SetForegroundWindow Me.hWnd
'按右键弹出菜单
'PopupMenu mnuPopup
End Select
End Sub
zyl910 2003-08-20
  • 打赏
  • 举报
回复
http://www.fantasiasoft.net/Zyl910/SysTray1.zip


系统托盘编程大全 For VB
作者:zyl910

这个程序包括了所有的托盘程序设计技巧:
1.托盘菜单可以消去
2.Explorer非法操作后能自动恢复图标
3.气泡提示
4.托盘图标的隐藏
maolei3204 2003-08-20
  • 打赏
  • 举报
回复
谁能告诉我怎样才能提出问题?非常感谢!!!
我是VB新手,有个小问题,那为大虾帮我啊?
设s=1^1*2^2*3^3*……*n^n,求S不大于400000时最大的n。
我想了几天都不知到该怎么做。
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
VB的安装盘

COMMON\TOOLS\VB\UNSUPPRT\SYSTRAY

用vb6打开,编辑成*.ocx


-------------------------

http://www.dapha.net/down/list.asp?id=173
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
VB的安装盘

COMMON\TOOLS\VB\UNSUPPRT\SYSTRAY

用vb6打开,编辑成*.ocx
jsa 2003-08-20
  • 打赏
  • 举报
回复
SysTray控件在哪里???我找不到!!!
踏平扶桑 2003-08-20
  • 打赏
  • 举报
回复
在VB6中新建一工程,将FORM1的ScalMode的属性设为3,加入一个image控件和一个对话框控件(要加入对话框控件,须在部件中选取Microsoft Common Dialog Control 6.0),将image1的visible属性改为False,为该Form添加一个菜单,菜单设置如下:

标题 名称
文件(&F) mnuFile (一级菜单)
退出(&E) mnuExit (二级菜单)
Popup mnuTray (一级菜单,去掉该项的"可见"项)
更换图标(&I) mnuTrayChangeIcon (以下全为二级菜单)
恢复(&R) mnuTrayRestore
最小化(&N) mnuTrayMinimize
最大化(&X) mnuTrayMaximize
- mnuTrayLine
关闭(&C) mnuTrayClose
Option Explicit

Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_SYSCOMMAND = &H112
Private Const SC_RESTORE = &HF120&

Private LastState As Integer '保留原窗口状态

'---------- 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 myData As NOTIFYICONDATA

Private Sub Form_Load()
 If WindowState = vbMinimized Then
  LastState = vbNormal
 Else
  LastState = WindowState
 End If

 With myData
  .cbSize = Len(myData)
  .hwnd = Me.hwnd
  .uID = 0
  .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
  .uCallbackMessage = WM_MOUSEMOVE
  .hIcon = Me.Icon.Handle '默认为窗口图标
  .szTip = "提示" & vbNullChar
 End With

 Shell_NotifyIcon NIM_ADD, myData

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 Select Case CLng(X)
  Case WM_RBUTTONUP '鼠标在图标上右击时弹出菜单
    Me.PopupMenu mnuTray
  Case WM_LBUTTONUP '鼠标在图标上左击时窗口若最小化则恢复窗口位置
    If Me.WindowState = vbMinimized Then
     Me.WindowState = LastState
     Me.SetFocus
    End If
 End Select
End Sub

Private Sub Form_Unload(Cancel As Integer)
 Shell_NotifyIcon NIM_DELETE, myData '窗口卸载时,将状态栏中的图标一同卸载
End Sub

Private Sub mnuExit_Click()
 Unload Me
End Sub

Private Sub mnuTrayChangeIcon_Click()
 On Error GoTo ErrHandler
 With cdlOpen
  .CancelError = True ' 设置标志
  .InitDir = App.Path ' 默认的文件夹为当前文件夹
  .Flags = cdlOFNHideReadOnly ' 设置过滤器
  .Filter = "图标文件 (*.ico)|*.ico" ' 指定缺省的过滤器为图标文件
  .ShowOpen ' 显示选定文件的名字
 End With

 Image1.Picture = LoadPicture(cdlOpen.FileName)

 With myData
  .hIcon = Image1.Picture
  .uFlags = NIF_ICON
 End With
 Shell_NotifyIcon NIM_MODIFY, myData

ErrHandler: ' 用户按了"取消"按钮
  Exit Sub
End Sub

Private Sub mnuTrayClose_Click()
 Unload Me
End Sub

Private Sub Form_Resize()
 Select Case WindowState
  Case vbMinimized
   mnuTrayMaximize.Enabled = True
   mnuTrayMinimize.Enabled = False
   mnuTrayRestore.Enabled = True
  Case vbMaximized
   mnuTrayMaximize.Enabled = False
   mnuTrayMinimize.Enabled = True
   mnuTrayRestore.Enabled = True
  Case vbNormal
   mnuTrayMaximize.Enabled = True
   mnuTrayMinimize.Enabled = True
   mnuTrayRestore.Enabled = False
 End Select
 If WindowState <> vbMinimized Then LastState = WindowState
End Sub

Private Sub mnuTrayMaximize_Click()
 WindowState = vbMaximized
End Sub

Private Sub mnuTrayMinimize_Click()
 WindowState = vbMinimized
End Sub

Private Sub mnuTrayRestore_Click()
 SendMessage hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&
End Sub
jsa 2003-08-20
  • 打赏
  • 举报
回复
to maolei3204: 在小类论坛中点击“提问”连接即可。
jsa 2003-08-20
  • 打赏
  • 举报
回复
大家帮忙看一下http://expert.csdn.net/Expert/topic/2163/2163473.xml?temp=.1325037
jsa 2003-08-20
  • 打赏
  • 举报
回复
Thanks very much!!!
to maolei3204(小小鸟):你的意思是不是1*4*9*……*n*n?
of123 2003-08-20
  • 打赏
  • 举报
回复
VB光盘中有自带的SysTray控件。
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
http://www.yesky.com/20020106/212828.shtml








Option Explicit

Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_SYSCOMMAND = &H112
Private Const SC_RESTORE = &HF120&

Private LastState As Integer '保留原窗口状态

'---------- 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 myData As NOTIFYICONDATA

Private Sub Form_Load()
 If WindowState = vbMinimized Then
  LastState = vbNormal
 Else
  LastState = WindowState
 End If

 With myData
  .cbSize = Len(myData)
  .hwnd = Me.hwnd
  .uID = 0
  .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
  .uCallbackMessage = WM_MOUSEMOVE
  .hIcon = Me.Icon.Handle '默认为窗口图标
  .szTip = "提示" & vbNullChar
 End With

 Shell_NotifyIcon NIM_ADD, myData

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 Select Case CLng(X)
  Case WM_RBUTTONUP '鼠标在图标上右击时弹出菜单
    Me.PopupMenu mnuTray
  Case WM_LBUTTONUP '鼠标在图标上左击时窗口若最小化则恢复窗口位置
    If Me.WindowState = vbMinimized Then
     Me.WindowState = LastState
     Me.SetFocus
    End If
 End Select
End Sub

Private Sub Form_Unload(Cancel As Integer)
 Shell_NotifyIcon NIM_DELETE, myData '窗口卸载时,将状态栏中的图标一同卸载
End Sub

Private Sub mnuExit_Click()
 Unload Me
End Sub

Private Sub mnuTrayChangeIcon_Click()
 On Error GoTo ErrHandler
 With cdlOpen
  .CancelError = True ' 设置标志
  .InitDir = App.Path ' 默认的文件夹为当前文件夹
  .Flags = cdlOFNHideReadOnly ' 设置过滤器
  .Filter = "图标文件 (*.ico)|*.ico" ' 指定缺省的过滤器为图标文件
  .ShowOpen ' 显示选定文件的名字
 End With

 Image1.Picture = LoadPicture(cdlOpen.FileName)

 With myData
  .hIcon = Image1.Picture
  .uFlags = NIF_ICON
 End With
 Shell_NotifyIcon NIM_MODIFY, myData

ErrHandler: ' 用户按了"取消"按钮
  Exit Sub
End Sub

Private Sub mnuTrayClose_Click()
 Unload Me
End Sub

Private Sub Form_Resize()
 Select Case WindowState
  Case vbMinimized
   mnuTrayMaximize.Enabled = True
   mnuTrayMinimize.Enabled = False
   mnuTrayRestore.Enabled = True
  Case vbMaximized
   mnuTrayMaximize.Enabled = False
   mnuTrayMinimize.Enabled = True
   mnuTrayRestore.Enabled = True
  Case vbNormal
   mnuTrayMaximize.Enabled = True
   mnuTrayMinimize.Enabled = True
   mnuTrayRestore.Enabled = False
 End Select
 If WindowState <> vbMinimized Then LastState = WindowState
End Sub

Private Sub mnuTrayMaximize_Click()
 WindowState = vbMaximized
End Sub

Private Sub mnuTrayMinimize_Click()
 WindowState = vbMinimized
End Sub

Private Sub mnuTrayRestore_Click()
 SendMessage hwnd, WM_SYSCOMMAND, SC_RESTORE, 0&
End Sub
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=197
http://www.dapha.net/down/list.asp?id=1565
http://www.dapha.net/down/list.asp?id=1549
lihonggen0 2003-08-20
  • 打赏
  • 举报
回复
系统托盘程序


http://www.csdn.net/cnshare/soft/16/16015.shtm

7,763

社区成员

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

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