分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:
api函数shell_notifyicon
1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False
2、菜单:工程--添加模块 按“打开”这样就添加了一个新模块,名为Module1,保存为Module1bas
3、在Module1中写下如下代码:
Option Explicit
Public Const MAX_TOOLTIP As Integer = 64
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const SW_RESTORE = 9
Public Const SW_HIDE = 0
Public nfIconData As NOTIFYICONDATA
Public Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String MAX_TOOLTIP
End Type
Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
4、在Form1的Load事件中写下如下代码:
Private Sub Form_Load()
'以下把程序放入System Tray====================================System Tray Begin
With nfIconData
hWnd = MehWnd
uID = MeIcon
uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
uCallbackMessage = WM_MOUSEMOVE
hIcon = MeIconHandle
'定义鼠标移动到托盘上时显示的Tip
szTip = AppTitle + "(版本 " & AppMajor & "" & AppMinor & "" & AppRevision & ")" & vbNullChar
cbSize = Len(nfIconData)
End With
Call Shell_NotifyIcon(NIM_ADD, nfIconData)
'=============================================================System Tray End
MeHide
End Sub
5、在Form1的QueryUnload事件中写入如下代码:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End Sub
6、在Form1的MouseMove事件中写下如下代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lMsg As Single
lMsg = X / ScreenTwipsPerPixelX
Select Case lMsg
Case WM_LBUTTONUP
'MsgBox "请用鼠标右键点击图标!", vbInformation, "实时播音专家"
'单击左键,显示窗体
ShowWindow MehWnd, SW_RESTORE
'下面两句的目的是把窗口显示在窗口最顶层
'MeShow
'MeSetFocus
'' Case WM_RBUTTONUP
'' PopupMenu MenuTray '如果是在系统Tray图标上点右键,则d出菜单MenuTray
'' Case WM_MOUSEMOVE
'' Case WM_LBUTTONDOWN
'' Case WM_LBUTTONDBLCLK
'' Case WM_RBUTTONDOWN
'' Case WM_RBUTTONDBLCLK
'' Case Else
End Select
End Sub
7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。单击此图标,Form1就自动d出来了。
首先看看提示的程序是什么,可能是这个程序出现问题,如果是卸载重装。如果开机出现提示,可以将这个程序的开机启动去掉。如果查不出来或提示的不是程序是系统进程,你可以回忆一下,当你出现这种故障前你都下载了什么程序软件、插件、补丁或是驱动,如果想起先将它们全部卸载试试。
如果无法查找,建议先查杀一下木马,修复一下系统试试。
建议你下载windows清理助手清理一下系统,查杀木马。
1、请你用系统自带的系统还原,还原到你没有出现这次故障的时候修复(或用还原软件进行系统还原,如果进不了系统,开机按F8进入安全模式还原系统)。
2、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。
3、如果故障依旧,在BIOS中设置光驱为第一启动设备插入原装系统安装盘按R键选择“修复安装”即可。
4、如果故障依旧,建议重装 *** 作系统。
使用系统自带的系统还原的方法:
系统自带的系统还原:“开始”/“程序”/“附件”/“系统工具”/“系统还原”,点选“恢复我的计算机到一个较早的时间”,按下一步,你会看到日期页面有深色的日期,那就是还原点,你选择后,点击下一步还原(Win7还原系统,在控制面板然后设备和安全子选项然后备份和还原子选项)。
清理启动项:
方法一、
1、按住键盘上微软徽标键的同时,按下 R 键,就会d出”运行“的界面,输入”msconfig“点击确定;
2、进入”系统配置“的界面后,选择”启动“选项卡,将不需要开机启动的软件前面的勾取消,然后点击确定;
方法二、使用电脑管家清理启动项。
1、点击“启动项”
2、禁用不必要的启动项即可。
360Trayexe
进程文件: 360Tray或者 360Trayexe 进程名称: 360Trayexe 描述:360安全卫士实时监控程序(可将此程序添加到杀毒软件的“可信任区域”) 出品者: 奇虎360公司 系统进程: 否 后台程序: 是 使用网络: 是 硬件相关: 否 常见错误: 未知N/A 内存使用: 未知N/A 安全等级 (0-5): 0 间谍软件: 否 广告软件: 否 病毒: 否 木马: 否 进程类别:系统安全 介绍:360安全卫士使用新的木马评估技术,搭载新版360云查杀引擎,更精确的识别和打击木马、病毒,由360安全专家潜心研制的木马特征识别技术,大幅提升侦测未知木马的能力,特有的威胁感知技术,能有效解决木马绕过传统扫描引擎侵害系统的问题,优化vista、win7补丁检测速度,提升补丁升级成功率,软件管家里增加优化过的延迟启动与一键优化,让用户的系统更轻更快。 注意:正常的文件应该在360安全卫士的目录中的 safemon文件夹里~~该进程应该是一个360安全卫士盾牌的样子~~在系统的任务栏里如果没有可能是伪装木马~~
360安全卫士有问题,卸载重新下载。
可以用360系统急救箱帮你修复一下,360系统急救箱适用于各类传统杀毒软件查杀无效的情形;电脑感染木马,导致360无法安装或启动的情形。 楼主说的情况适用于360系统急救箱的功能。修复好后应该就可以重新工作了。非法进程360Tray进程的描述得知该进程并不是系统进程,所有是可以关闭它的。但是为了安全起见,建议用户还是不要将360Tray进程给关闭掉。但是如果我们在360安全卫士的目录中的 safemon文件夹里没有发现360Tray程序的话,在别的文件上找到了360Tray程序而且该进程还在自动运行的话,可能是木马伪装的。这种情况就要对电脑查杀下木马病毒了。
用的控件是:trayicon
具体用法如下:
在
borland
c++
builder
50
中编写tray程序是件很简单的事。在安装
borland
c++
builder
50
时选择full(完全)安装,安装完成后,在samples组件页中有一个trayicon组件,它封装编写tary所需的window
api函数,使用该组件编写tary程序不用加一句程序代码,真是易如反掌。
首先,我们先看一下trayicon组件常用的属性:
属性说明
animate设为true时,顺序更改icons属性设置的图标
animateinterva设置更改图标的时间(单位:毫秒)
hide设为true时,最小化时隐藏在任务栏上的标题栏
hint设置鼠标移动到tary图标上出现的提示信息
iconindex设置图标索引值
icons设置图标源(通常设置一个imagelist组件)
popupmenu设置要d出的菜单(通常设置一个popupmenu组件)
popupmenuon设置触发d出菜单的鼠标 *** 作
restoreon设置恢复最小化到正常状态的鼠标 *** 作
visible设为true时,在任务栏最右边显示图标
鼠标 *** 作说明:
值说明
imclick鼠标单击
imdoubleclick鼠标双击
imleftclickup单击鼠标左键,放开
imleftdoubleclick双击鼠标左键
immousedown按下鼠标键
immouseup按下鼠标键,放开
imnone不设置鼠标 *** 作
imrightclickup单击鼠标右键,放开
imrightdoubleclick双击鼠标右键
下面让我们来编一个简单的tary程序:
1、新建工程,添加一个trayicon组件、一个popupmenu组件和一个imagelist组件。它们的name属性
都用默认的名字:trayicon1、popupmenu1、imagelist1。
2、设置trayicon1的属性,如下:
属性值
linux
animate
true
animateinterva
1000
hide
true
hint
tary演示程序
iconindex
0
icons
imagelist1
name
trayicon1
popupmenu
popupmenu1
popupmenuon
imrightclickup
restoreon
imdoubleclick
visible
true
3、双击popupmenu1,d出菜单设计器,随意地加入几个菜单项。
4、双击imagelist1,加入支持的(ico、bmp)。
到此,不用编写一句程序代码,一个简单的tary程序就做好了。按f9编译运行,将鼠标移动到tary上面就会出现“tary演示程序”的提示信息;在tary上单击鼠标右键d出菜单popmenu1;按下程序窗口的最小化按钮,程序最小化后隐藏任务栏上的标题栏;双击tary将会恢复程序最小化;而且,tary图标以1000毫秒(1秒)的速度变换。够简单了吧?!
taryicon组件的演示源程序在
borland
c++
builder
50
安装目录下的\cbuilder5\examples\apps\trayicon。若你不想使用taryicon组件编写tary,只想使用api函数,可以参考安装目录\cbuilder5\examples\controls\traydemo下的源程序
注意以下几点:
1、这个控件的托盘图标要使用到timagelist控件,请设置其icons属性和对应的timagelist关联就可以
了,如果图标要变化,timagelist中要有多个图标,用trayicon控件的iconindex的值的改变来改变托
盘图标。
2、最小化和隐窗体应该用:
trayiconme->minimize()来实现
还原窗体用:trayiconme->restore()。
3、至于菜单的d出就在窗体上加一个popupmenu控件就可以了,popupmenu的设定和一般的设定没有什
么不同。然后把trayicon控件的popupmenu属性和popupmenu控件关联起来就可以了。当然,别忘了
设定一个popupmenuon属性,决定这个菜单的鼠标触发方式。
4、当鼠标指向托盘时,显出的字是trayicon的hint属性来设定的
以上就是关于如何添加托盘,使程序运行窗口最小化全部的内容,包括:如何添加托盘,使程序运行窗口最小化、kxtray.exe应用程序错误是怎么回事每次开机都提示这个~怎么解决啊、为什么一开机都要提示 360tray.exe - 应用程序错误等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)