看似简单,没人回答对的问题
要求象MSN那样1有托盘图标2把程序点击close或不是活动窗体后使程序隐藏,这两点已经做完。
问题:当程序隐藏只盛托盘图标后在点击应用程序(不是托盘图标)后把原先的应用程序激活。
FindWindow('TFormUser','FormUser');获得窗口句柄后用SHOWWINDOW的话会使程序不能最小话
了,这个问题没有自己试过不要随便讲教训人的话。谢谢。
问题点数:50、回复次数:13Top
1 楼kiboisme(蓝色光芒)(www.1284.net/)(软件开发机器人for delphi)回复于 2004-09-04 23:36:47 得分 0
自己定义一个消息,WM_user+123;
然后如果发现有这个FormUser,就发一条消息WM_user+123过去,
在程序中想怎么处理都行。Top
2 楼CareYouOnly(只在乎你)回复于 2004-09-04 23:48:12 得分 0
当程序隐藏只盛托盘图标后在点击应用程序(不是托盘图标)后把原先的应用程序激活。
请问“当程序隐藏只剩下托盘图标后”如何“点击应用程序(不是托盘图标)”呢?应用程序不是隐藏了,怎么还能点击呢?不明白楼主的意思。Top
3 楼DemonLoveLizzy(^_^)!!! 用户中文昵称 ? 是什么东东 ? :)回复于 2004-09-05 01:04:15 得分 0
你把窗体先最小化,再隐藏。再次运行的话应该可以能最小化的。我看电影,不试了。错了别说我。Top
4 楼Adayuer(饭碗饭碗饭碗你在哪里?)回复于 2004-09-05 02:17:01 得分 0
“当程序隐藏只盛托盘图标后在点击应用程序(不是托盘图标)后把原先的应用程序激活。”
你都把程序隐藏得只剩下托盘图标了,你还要通过点击(非托盘图标)来激活原来的程序,请问你击哪?Top
5 楼miky(miky)回复于 2004-09-05 15:41:49 得分 0
这个问题我也遇到过,我在VC和VB试了都没有类似的现象,估计是Delphi的BUG.
解决办法:截获最小化消息,用showWindow来最小化。Top
6 楼Anders_xue(小K)回复于 2004-09-08 10:47:40 得分 0
我说点击的应用程序是C:\test\test.exe,而不是程序运行的窗体。
其实就是和MSN的要求一样的,我的boss一定要这样的,没办法。
可能真的是Delphi的bug,我拿了本VC的书看,照着做就是不行。发送消息的程序我试过如果没有把窗体隐藏的话是可以的,但一隐藏它就没反应了。还有就是用的SHOWWindow(FindWindow('TFormUser','FormUser'),SW_SHOW)是可以的,就是出来后缩不小了,不知道是怎么回事。
Top
7 楼DemonLoveLizzy(^_^)!!! 用户中文昵称 ? 是什么东东 ? :)回复于 2004-09-08 20:52:05 得分 0
用VB写简单。VB行不行?起码不会出现不能最小化的问题。Top
8 楼DemonLoveLizzy(^_^)!!! 用户中文昵称 ? 是什么东东 ? :)回复于 2004-09-08 20:55:16 得分 0
我不知道你说的是不能最小化的问题。我把怎么找前一实例句柄的方法发给你了 :D
今晚有时间我用DELPHI给你写好了。Top
9 楼DemonLoveLizzy(^_^)!!! 用户中文昵称 ? 是什么东东 ? :)回复于 2004-09-08 20:57:08 得分 0
我觉得用SENDMESSAGE来恢复前个窗体,应该还可以最小化的。实在不行,就截取WM-SYSCOMMAND,自己最小化它好了。Top
10 楼capoatguitar(菠萝蜜汁红塔山)回复于 2004-09-08 21:01:37 得分 0
溜达溜达不说话Top
11 楼DemonLoveLizzy(^_^)!!! 用户中文昵称 ? 是什么东东 ? :)回复于 2004-09-08 22:32:49 得分 40
//获得窗口句柄后用SHOWWINDOW的话会使程序不能最小话了
我看了。DELPHI的程序在任务栏的右键菜单确实有问题。它把最大化也包括在“恢复”里了。也就是只记录原状态跟最小化状态,而且它并不记录WM-SYSCOMMAND消息。也就是说,当SENDMESSAGE或SHOWWINDOW让它恢复的时候,任务栏的菜单记录的仍是“最小化”的状态。因此,不再接收“最小化”消息,而只接收“恢复”消息。
解决的办法,隐藏的时候不要让它最小化。那么它显示后任务栏菜单记录的是“恢复”状态,“最小化”是可选的。
Top
12 楼wg007(迈克)回复于 2004-09-08 23:09:33 得分 10
我也知道这个问题。
一般不让程序最小化,直接隐藏。Top
13 楼iBear(大熊 不要怀疑我的温柔)回复于 2004-09-09 09:17:42 得分 0
也许你使用的窗口句饼有问题的
delphi中主窗体form,其实不是windows SDK中所说的主窗口,真正的主窗口是在TAppliction中创建的窗口,它的大小为0,句饼可以通过Application.Handle来获得
VC,VB中有效果,可能是它们是对主窗口处理的结果,而你在delphi中,是在对主窗口的子窗口处理,所以失败了?Top




