关于windows显示桌面的问题,一定要把这100分送出去!(100分)

  • 主题发起人 主题发起人 trancechow
  • 开始时间 开始时间
T

trancechow

Unregistered / Unconfirmed
GUEST, unregistred user!
当用户按下windows的显示桌面按钮后,程序处于一种什么状态,好像不是最小化状态,如果要在用户按下显示桌面按钮后程序做出反应,比如像flashget那样从任务栏上消失,改怎么实现
 
好像是做外挂的那种吧,不是很懂
 
有个api函数可以实现,就是让程序最小化到托盘区,而不是任务栏,你查一下吧,我记不得了,很简单的
 
不要错解了楼主的意思,他是想知道,在用户按下显示桌面按钮后程序会得到什么消息,不是不知道怎样最小化到托盘区。
 
用windowsAPI函数的shell_nofityicon,系统托盘函数.[8D]
 
uses shellapi;<br>shell_notifyicon;对任务栏的图表进行操作;<br>要不改变窗口样式应该也行;<br>setwindowlong(handle,gwl_style,getwindowlong(handle,gwl_style) or ws_ex_toolwindow);
 
不是最小化就是隐藏,当然这是指的Application.Handle.至于比如主窗体,我不太清楚。<br>你可以通过ApplicationEvent截获状态变化(最小化/最大化/显示/隐藏),然后添加到MEMO里边,检查一下,,我想应该有结果。
 
我现在怎么表达能力这么差啊,还有这么多人回答我怎么做系统托盘,拜托了,我不是问这个问题。<br>zjan521,我试了一下,程序会收到失去焦点这样一个消息,窗体还是处于normal状态,到底我改怎么做呢
 
trancechow,<br>你好 我想你是想问 当按下'显示桌面'时<br>,系统向当前桌面上的程序发送了什么消息是吗?<br>
 
明天0,是的,但好像程序只收到了失去焦点的消息
 
或许你可以这样: 改写“失去焦点”事件的事件处理过程,在里面加入实现“从任务栏上消失”的代码
 
按上按钮是将‘桌面’放到最前面。
 
那怎么判断呢,桌面在最上层
 
我看了一下,好象程序没有收到什么有价值的消息,到是桌面的工作区收到了四个消息:<br>WM_WINDOWPOSCHANGING 00000000 00EAFEA0 1<br>WM_WINDOWPOSCHANGED 00000000 00EAFEA0 2<br>WM_ACTIVATEAPP 00000001 00000000 3<br>WM_ACTIVATEAPP 00000000 00000370 4<br>其中最后两个比较有价值,你可以从这里着手。
 
桌面工作区的消息怎么拦截啊
 

Similar threads

D
回复
0
查看
762
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
736
DelphiTeacher的专栏
D
后退
顶部