怎样让窗口停在桌面上,在所有窗口之下 ( 积分: 50 )

  • 主题发起人 主题发起人 我爱PASCAL
  • 开始时间 开始时间

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
点显示桌面也不能让窗口最小化,就像我们把窗口属性设为TOPMOST,一样,只是是bottommost
 
把窗体的parent设置成桌面<br>金山影霸就可以
 
谢谢,我去试一下
 
拦截消息,设置窗体,用API很容易做到
 
拦什么api,能否再详细一点
 
刚好前几天写的程序中有<br>Var<br>&nbsp;&nbsp;Wnd:&nbsp;HWND;<br>begin<br>//不在任务栏显示<br>&nbsp;&nbsp;ShowWindow(application.Handle,&nbsp;SW_HIDE);<br>&nbsp;&nbsp;SetWindowLong(application.Handle,&nbsp;GWL_EXSTYLE,&nbsp;GetWindowLong(application.Handle,&nbsp;GWL_EXSTYLE)&nbsp;Or&nbsp;WS_EX_TOOLWINDOW&nbsp;And&nbsp;Not&nbsp;WS_EX_APPWINDOW);<br><br>//透明窗体<br>&nbsp;&nbsp;SetWindowLong(Handle,&nbsp;GWL_EXSTYLE,&nbsp;GetWindowLong(Handle,&nbsp;GWL_EXSTYLE)&nbsp;Or&nbsp;WS_EX_TRANSPARENT&nbsp;Or&nbsp;WS_EX_LAYERED);<br>&nbsp;&nbsp;SetLayeredWindowAttributes(Handle,&nbsp;Color,&nbsp;80,&nbsp;LWA_ALPHA&nbsp;Or&nbsp;LWA_COLORKEY);<br><br>//将窗体放到桌面上<br>&nbsp;&nbsp;Wnd&nbsp;:=&nbsp;GetWindow(GetWindow(FindWindow(PChar('Progman'),&nbsp;Nil),&nbsp;GW_CHILD),&nbsp;GW_CHILD);<br>&nbsp;&nbsp;Windows.SetParent(self.Handle,&nbsp;Wnd);<br>end;
 
學習學習。。。。
 
學習了。收藏
 
试过<br>Wnd&nbsp;:=&nbsp;GetWindow(GetWindow(FindWindow(PChar('Progman'),&nbsp;Nil),&nbsp;GW_CHILD),&nbsp;GW_CHILD);<br>&nbsp;&nbsp;Windows.SetParent(self.Handle,&nbsp;Wnd);<br>不行。<br>不过我用工具取到当前桌面窗口句柄为655788,<br>然后用Windows.SetParent(self.Handle,&nbsp;655788);就成功了,不过每次启动和explorer重启都会变,所以要取到桌面句柄是关键,用getdesktopwindow取到的是0
 
我使用正常啊,不知你怎的,我的是XP&nbsp;SP2
 
GetWindow(GetWindow(FindWindow(PChar('Progman'),&nbsp;Nil),&nbsp;GW_CHILD),&nbsp;GW_CHILD);<br>我的反回是零,xp-sp2
 
记得在那个程序里看过,直接指定句柄0就是桌面,都不用找
 
试过零不行
 
inherited;<br>&nbsp;&nbsp;inherited&nbsp;CreateParams(Params);<br>&nbsp;&nbsp;Params.ExStyle&nbsp;:=&nbsp;Params.ExStyle&nbsp;or&nbsp;WS_EX_TOOLWINDOW;<br>&nbsp;&nbsp;Params.WndParent&nbsp;:=&nbsp;FindWindow('Progman',&nbsp;nil);
 
CreateParams(var&nbsp;Params:&nbsp;TCreateParams);
 
楼上朋友写的什么,没看懂
 
多人接受答案了。
 
后退
顶部