Office中国论坛/Access中国论坛
标题: [高2]系统托盘区功能. [打印本页]
作者: Roadbeg 时间: 2003-4-8 20:13
标题: [高2]系统托盘区功能.
关于 系统托盘区, 站长已经做了一个例子,但因为站长是为回答别人的问题而做的例子,所以还不够全面.
在此提出新的要求:
1.access 程序最小化后,不出现于任务栏.
2.在托盘区生成图标,且此图标会随程序运行状态不同而改变(比如,主程序最小化时与最大化时显示不同的图标)
3.右(左)键单击托盘区图标时,能弹出菜单,并执行相应的功能,比如,最大化,最小化,关闭,还原,显示关于对话框等等.
4.当鼠标悬停于托盘区图标上时,能显示浮动提示,以提示用户当前的程序状态.
5.使用纯 access 开发,不使用第三方控件.
此题难度可能不大(相信各位高手看了题目之后,心中都有个大概了).但应该不是用很短的程序就能做到的.并且,各位高手有这个想法的很多,但真正做过例子的很少吧(我没看到过现成的例子),就请各高手尽展所能!
作者: cg1 时间: 2003-4-8 20:51
右(左)键单击托盘区图标时,能弹出菜单,并执行相应的功能,比如,最大化,最小化,关闭,还原,显示关于对话框等等.
这点倒是没想过,vb可以用popmenu来做,access怎么搞定就不知道了
作者: cg1 时间: 2003-4-8 21:27
zhengjialon :地址能告诉我们么?我找了,没找到
作者: cg1 时间: 2003-4-8 21:28
对了,忘记提醒大家了,系统托盘等功能是老大给人家的奖品里面的,要是我们做掉了,老大拿啥给别人啊?!哈哈
作者: WTM1 时间: 2003-4-8 22:11
哈哈!用vb很容易做出来的!access的托盘,我曾经使用api做过,但不能够离开我的机器,这次我要学习学习!!!拭目以待!
最好,能够在系统托盘上可以点击右键!显示菜单!哈哈!!提高一点难度!
我们争取使access超过vb!!
作者: cg1 时间: 2003-4-8 23:04
标题: 可惜又是mde的,白搭
可惜又是mde的,白搭
作者: WTM1 时间: 2003-4-8 23:32
做的很漂亮!可惜!
作者: 李寻欢 时间: 2003-4-8 23:41
哇靠!
太漂亮了!
作者: Roadbeg 时间: 2003-4-9 00:32
我本想放一个上来,但......
看了 zhengjialon 的,
实在,实在,实在不敢出手了.......
作者: cg1 时间: 2003-4-9 00:51
问一下,如果没有那两个dll,可以做出这样的效果吗?特别是系统托盘的菜单
作者: Roadbeg 时间: 2003-4-9 01:27
以下是引用cg1在2003-4-8 16:50:59的发言:
问一下,如果没有那两个dll,可以做出这样的效果吗?特别是系统托盘的菜单
当然能,你没注意到吗,那两个 dll 文件一模一样大,创建日期也一致....
并且 dll 文件居然只有 900多字节.
我由此发现疑点,最后的结论是:
那是两个位图文件,不信你改扩展名为 bmp 试试.
作者: Roadbeg 时间: 2003-4-9 01:28
刚才网络有问题,过了好几分钟才发上来,没想到这条回复已成马后炮了 :-)
作者: cg1 时间: 2003-4-9 01:41
总体来说,那个菜单还是比较难做的,但是有了示例就方便了
大家可以直接查看一下mde的函数及对象,花点时间就可以仿造出来了
我想,这次就让 zhengjialon 来做裁判好了。顺便问一下 Roadbeg 你的做法和 zhengjialon 一样吗?
[此贴子已经被作者于2003-4-8 17:57:37编辑过]
作者: tmtony 时间: 2003-4-9 02:13
做得非常好,实属精品,不过,在未先菜单项目,而点其它,菜单好像不能消隐。
作者: cg1 时间: 2003-4-9 03:33
这是因为菜单本身是一个窗体,而且编程原理上只考虑了打开,没考虑关闭。
不过我又想起一件事情,qq好像也有这个问题哈?
[此贴子已经被作者于2003-4-8 19:46:35编辑过]
作者: Roadbeg 时间: 2003-4-9 04:13
以下是引用tmtony在2003-4-8 18:13:21的发言:
做得非常好,实属精品,不过,在未先菜单项目,而点其它,菜单好像不能消隐。
这个问题存在于许多软件中,
比如 qq,norton,foxmail
等等,这些软件的托盘菜单都有上述问题.
作者: WTM1 时间: 2003-4-9 16:24
发一个mdb的文件吧!!!看见mde就郁闷!!
作者: harsonliao 时间: 2003-4-9 17:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: cg1 时间: 2003-4-9 17:55
harsonliao 说的甚得我心
说白了很简单,只要得到 mouse在屏幕的 x,y点,然后再这个点附近打开一个窗体就可以了,非常简单,只是要做起来代码不少而且平时没什么用,我是不喜欢别人把图标放进我的托盘,因为这是非常不稳定的,我想大家也都遇到过相同的情况。
另外,我想代码也只是抄得早抄得晚的问题。
何必哪?说出来大家都明白怎么做,不过是要一个动力使大家把平时想得付诸于实施而已。也许大家还能对功能有所改进哪
我不知道大家怎样?我平时的习惯是:看到别人的代码,第一反映是我自己是否有思路,如果有思路我就不会去做了,毕竟要做的东西太多,没这么多时间一个一个做出来。
大家说是不是?
[此贴子已经被作者于2003-4-9 10:27:54编辑过]
作者: Y.J.Wang 时间: 2003-4-9 18:09
我说这人啊,真是很奇妙.
明明是要点子但是一旦出来了却......
这年代只许自己发财不许别人"致富"......
作者: zhengjialon 时间: 2003-4-9 21:13
给你目标你却不努力,儒子不可教也。
作者: harsonliao 时间: 2003-4-9 21:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: WTM1 时间: 2003-4-9 21:49
托盘只需要加入这个模块就可以了!
Option Compare Database
'************** Code Start *************
'
'------------------------------
' Do NOT try to step through
' this code. Entering debug mode
' will cause a GPF if the window
' is subclassed.
'------------------------------
'//LoadImage flags
Private Const WM_GETICON = &H7F 'message is sent to a window to retrieve a handle _
to the large or small icon associated with a window
Private Const WM_SETICON = &H80 'message to associate a new large or small icon with a window
Private Const IMAGE_BITMAP = 0 'Loads a bitmap.
Private Const IMAGE_ICON = 1 ' Loads an icon.
Private Const IMAGE_CURSOR = 2 'Loads a cursor.
Private Const LR_LOADFROMFILE = &H10 'Loads the image from the file specified by _
the lpszName parameter. If this flag is not _
specified, lpszName is the name of the resource.
Private Const ICON_SMALL = 0& 'Retrieve the small icon for the window.
Private Const ICON_BIG = 1& 'Retrieve the large icon for the window.
'loads an icon, cursor, or bitmap.
Private Declare Function apiLoadImage Lib "user32" _
Alias "LoadImageA" _
(ByVal hInst As Long, _
ByVal lpszName As String, _
ByVal uType As Long, _
ByVal cxDesired As Long, _
ByVal cyDesired As Long, _
ByVal fuLoad As Long) _
As Long
Private Declare Function apiSendMessageLong Lib "user32" _
Alias "SendMessageA" _
(ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) _
As Long
'//SHGetFileInfo flags
Private Const SHGFI_ICON = &H100 '// get icon
Private Const SHGFI_DISPLAYNAME = &H200 '// get display name
Private Const SHGFI_TYPENAME = &H400 '// get type name
Private Const SHGFI_ATTRIBUTES = &H800 '// get attributes
Private Const SHGFI_ICONLOCATION = &H1000 '// get icon location
Private Const SHGFI_EXETYPE = &H2000 '// return exe type
Private Const SHGFI_SYSICONINDEX = &H4000 '// get system icon index
Private Const SHGFI_LINKOVERLAY = &H8000 '// put a link overlay on icon
Private Const SHGFI_SELECTED = &H10000 '// show icon in selected state
Private Const SHGFI_ATTR_SPECIFIED = &H20000 '// get only specified attributes
Private Const SHGFI_LARGEICON = &H0 '// get large icon
Private Const SHGFI_SMALLICON = &H1 '// get small icon
Private Const SHGFI_OPENICON = &H2 '// get open icon
Private Const SHGFI_SHELLICONSIZE = &H4 '// get shell size icon
Private Const SHGFI_PIDL = &H8 '// pszPath is a pidl
Private Const SHGFI_USEFILEATTRIBUTES = &H10 '// use passed dwFileAttribute
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const MAX_PATH = 260
Private Type SHFILEINFO
hIcon As Long 'Handle to the icon that represents the file.
iIcon As Long 'Index of the icon image within the _
system image list.
dwAttributes As Long 'Array of values that indicates the _
attributes of the file object.
szDisplayName As String * MAX_PATH 'String that contains the name of the _
file as it appears in the Windows shell
szTypeName As String * 80 'String that describes the type of file.
End Type
'Retrieves information about an object in the file system,
'such as a file, a folder, a directory, or a drive root.
Private Declare Function apiSHGetFileInfo Lib "shell32.dll" _
Alias "SHGetFileInfo
作者: cg1 时间: 2003-4-9 22:58
to harsonliao : 我没做过,不过应该是用movesize了,movesize 完全能达到要求,而且简单
作者: cg1 时间: 2003-4-9 23:04
to 吴天明 ,菜单用一个非模式的弹出窗体代替,只要把窗体的边匡,放大缩小按钮,记录浏览等等全部去掉就 ok了,里面要好看就加点图片进去,要做换肤都可以,如果喜欢,加一个异型函数进取,做个异型菜单出来也不是难事。
我把思路全说了,代码,本站的旧贴中全部都有。
不过我这样说得容易,codeing却要挺长时间,就看谁有这个耐心了,我是已经没兴趣了。
另外,有兴趣的去 www.access-web.com 或者 www.access911.com 这两个外国网站去看看,里面大多效果都有了,就看你是否有那个耐心了
如果wtm1得代码看不懂,可以去天极网找一片中文的,里面有详细说明。
[此贴子已经被作者于2003-4-9 15:08:56编辑过]
作者: WTM1 时间: 2003-4-9 23:14
还是不明白!一塌糊涂!给个例子看看!当程序成为系统托盘后,在系统托盘点击右键出现菜单,靠!!!我越想越晕!!帮帮吗??
作者: Roadbeg 时间: 2003-4-10 00:00
需要这些 api,感兴趣的网友把这些 api 的说明看了,应该就明白了.
sendmessage
setwindowlong
shell_notifyicon
callwindowproc
[此贴子已经被作者于2003-4-9 16:00:40编辑过]
作者: WTM1 时间: 2003-4-10 00:33
奥!不明白!
作者: tmtony 时间: 2003-4-10 03:27
确认点击点可使用
Public Declare Function apiGetCursorPos Lib "user32" _
Alias "GetCursorPos" _
(lpPoint As POINTAPI) _
As Long
使用 CreatePopupMenu创建真正的菜单
作者: tmtony 时间: 2003-4-10 06:56
已经实现了真正的菜单功能,不过还需测试一下,只是不能参加比赛啦,没能有zhengjialon的好效果:)还是充作下一期胜出者奖品啦
作者: wnm 时间: 2003-4-10 17:30
请问,阿城测试设施
作者: harsonliao 时间: 2003-4-10 18:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: tmtony 时间: 2003-4-10 19:43
很不错,亏你想得出来:)
作者: harsonliao 时间: 2003-4-10 19:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: WTM1 时间: 2003-4-11 16:06
哈哈!合我想的一样,我昨天晚上才做出模型来,看来我需要重新学习了!
作者: WTM1 时间: 2003-4-11 17:09
标题: harsonliao 兄制作的很漂亮!
[attach]115[/attach]这是我做的!
不太好看!!!!!!!!
哈哈哈我明白了!说简单,可是昨天研究了一夜!疲劳!
很感谢所有朋友的帮助!我就不一一感谢了!因为帮助我的太多了!总之很感谢!
还有!!谁有办法在菜单上加入图标和二级菜单?????
就用 harsonliao 的例子!
作者: harsonliao 时间: 2003-4-11 19:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: cg1 时间: 2003-4-11 21:27
二级菜单直接用form的class就可以了,可以把一个模拟菜单的窗体打开n遍,菜单项反正可以用参数传递的。这样别说二级了,你要打开n级都没问题。
作者: WTM1 时间: 2003-4-11 22:37
哈哈!我用你说的方法!耗时74分钟,制作下拉菜单695个!为什么不可以,提示access
无法运行0000xec0980错误!!
怎么回事!???
作者: harsonliao 时间: 2003-4-12 00:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: Roadbeg 时间: 2003-4-12 00:28
上传一个例子
这是在 harsionliao 的基础上改的.此例子使用 createpopupmenu,insetmenu 生成菜单,
使用 trackpopupmenu 弹出菜单,使用 windows 消息循环响应菜单返回值.
[attach]117[/attach]
作者: WTM1 时间: 2003-4-12 00:45
cg1说可以做n级菜单的!可是只能运行600多个!!
作者: cg1 时间: 2003-4-12 01:52
奥,忘记说了
dim n as long
n=600
超过后果自负
哈哈
出现吴天明这种情况后,为了认真负责,我打电话到 ms 去报告情况,客服小姐一句话就把我打发了:“您的计算机不是我们ms硬件部的硬件吧?!”
[此贴子已经被作者于2003-4-11 17:55:13编辑过]
作者: tmtony 时间: 2003-4-12 08:08
以下是引用Roadbeg在2003-4-11 16:27:43的发言:
上传一个例子
这是在 harsionliao 的基础上改的.此例子使用 createpopupmenu,insetmenu 生成菜单,
使用 trackpopupmenu 弹出菜单,使用 windows 消息循环响应菜单返回值.
[attach]117[/attach]
不错,就是这个效果,看来我的就不发啦,差不多
作者: Trynew 时间: 2003-4-12 19:20
标题: 使用Access本身的弹出菜单
[attach]120[/attach]
天,网速14K,终于尝到重返侏罗纪的滋味!
作者: harsonliao 时间: 2003-4-12 19:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: Trynew 时间: 2003-4-12 19:59
知其然,不知其所以然!Try 出来的:)
作者: tmtony 时间: 2003-4-12 21:09
本身的菜單是必須在access主窗體區域內,我試了很久也未成功, trynew好點子
作者: WTM1 时间: 2003-4-14 16:29
好做的不错!哈哈哈,夸奖别人就是奖励自己!!!
作者: WTM1 时间: 2003-4-15 16:03
我看这个区的所有贴子都有cg1兄评判吧!!!
来看看这个问题中,谁会获奖!??
[此贴子已经被作者于2003-4-15 8:03:46编辑过]
作者: harsonliao 时间: 2003-4-15 16:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: Trynew 时间: 2003-4-19 06:24
[attach]187[/attach]
今天有空,又把改变图标和悬浮提示文本的功能加上了。[em11]
作者: hp750329 时间: 2003-5-7 01:02
标题: GOOD
GOOD
作者: cloudsky 时间: 2003-8-1 21:38
trynew 好牛啊
作者: wang1999 时间: 2003-11-3 18:47
这里的大佬真的好牛BI,看来我得好好练练,只有更加努力了。
非常谢谢以上大佬献上
作者: coco 时间: 2003-12-12 00:34
好像只可以给楼主鲜花啊,给错了 :(
不过还是要谢谢楼主的,如果不是楼主出题,我也看不到这么精彩的解决方式
真是太感谢各位了!!!
作者: jzwwpp 时间: 2004-2-23 17:34
标题: 有一点不完善的地方。[讨论]
这个程序只能把当前窗体缩到系统托盘,但是还保留access窗口,能不能把它也一起缩到系统托盘,这样屏幕会干净一些。
作者: zhengjialon 时间: 2004-9-2 00:09
以下是引用jzwwpp在2004-2-23 9:33:40的发言:
这个程序只能把当前窗体缩到系统托盘,但是还保留access窗口,能不能把它也一起缩到系统托盘,这样屏幕会干净一些。
可以的,可以看一下zhuyiwen的函数,但是这样不稳定的。不建议使用。
作者: greetland 时间: 2005-1-18 19:50
我是刚来的,我怎么找不到程序啊,到底在哪儿啊
作者: chief_first 时间: 2005-5-23 04:56
用ACCESS也能做的这么漂亮。
作者: vte1688 时间: 2005-11-17 16:37
看看先
作者: 120HYH 时间: 2005-12-1 02:34
好的
作者: oyljl 时间: 2006-3-11 06:30
[em02]
作者: oyljl 时间: 2006-3-11 06:30
[em01]
作者: betaii 时间: 2006-4-30 16:56
谢谢各位高手了
作者: liaug 时间: 2008-6-27 03:26
支持一下
作者: chenyingfengsx 时间: 2009-6-28 10:42
ddddddddd
作者: 石三少 时间: 2009-12-22 15:50
什么也看不到
作者: totodon 时间: 2010-3-25 14:55
好东西
作者: Y9X 时间: 2010-8-16 11:58
下载
作者: 片风 时间: 2012-2-4 19:36
都不简单啊
作者: LeeTien 时间: 2013-11-3 01:58
观赏下
作者: coolleaf 时间: 2013-12-5 11:22
你做出来了吗。
作者: xlb004 时间: 2014-9-7 16:55
11111111111111111
作者: xlb004 时间: 2014-9-7 16:55
1111111
作者: yangmao130 时间: 2016-12-11 16:28
www.office-cn.net
作者: ha0148 时间: 2017-4-9 16:42
来看看这个例子
作者: czzlj520 时间: 2017-5-14 10:51
zhengjialon :地址能告诉我们么?我找了,没找到
作者: 灰太郎 时间: 2024-2-13 21:11
113
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |