|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2014/8/22 17:56:13 |
标题: |
win7下如何把alpha透明窗口嵌入桌面? |
浏览:3527 |
|
加入我的收藏 |
楼主: |
RT,以下代码去掉透明后是正常的:
procedure TForm1.FormCreate(Sender: TObject); var ProgmanH:HWND; begin Self.AlphaBlendValue:=128; Self.AlphaBlend:=True; //去掉这句就正常了
ProgmanH:=FindWindow('Progman', 'Program Manager'); ProgmanH:=GetWindow(ProgmanH,GW_CHILD); ProgmanH:=GetWindow(ProgmanH,GW_CHILD); Windows.SetParent(Self.handle,ProgmanH); end;
嵌入桌面是指点击显示桌面或按Win+D后,窗口也不会隐藏。
----------------------------------------------
http://mcool.appinn.me/ |
作者: |
|
2014/8/22 19:01:43 |
1楼: |
XP和win7不开启aero都是正常的
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/8/22 19:32:46 |
2楼: |
var FMHWnd: HWND; TmpHandle:THandle; ========== FMHWnd := FmxHandleToHWND(self.Handle); TmpHandle := Winapi.Windows.FindWindow('Progman',Nil); if TmpHandle <> 0 Then Begin TmpHandle := GetWindow(TmpHandle, GW_CHILD); Winapi.Windows.SetParent(FMHWnd, TmpHandle); end;
此代码用在FMX工程中,同样,Aero下无效了。。。。
----------------------------------------------
你我,都可以是个造梦者!欢迎加入脚本引擎PaxCompiler交流群303904495http://www.cnblogs.com/fireboxsoft有需要错别字检测软件的朋友可以在我博客上的地址下载使用,备注“2ccc”的朋友可以免费获取超级黄金VVVVVVVVVVIP授权
|
作者: |
|
2014/8/22 21:07:35 |
3楼: |
解决了,呵呵 var DesktopHandle: HWnd; begin FMHWnd := FmxHandleToHWND(self.Handle); //下面这么多步,可完美让程序兼容于WIN7的AERO主题 DesktopHandle := Winapi.Windows.FindWindow('Progman', 'Program Manager'); DesktopHandle := FindWindowEx(desktopHandle, 0, 'SHELLDLL_DefView', nil); DesktopHandle := FindWindowEx(desktopHandle, 0, 'SysListView32', 'FolderView'); if (DesktopHandle= 0) then begin DesktopHandle := Winapi.Windows.FindWindow('Progman', 'Program Manager'); DesktopHandle := DesktopHandle+ 2; DesktopHandle := FindWindowEx(DesktopHandle, 0, 'SysListView32', 'FolderView'); end; Winapi.Windows.SetParent(FMHWnd, DesktopHandle);
----------------------------------------------
你我,都可以是个造梦者!欢迎加入脚本引擎PaxCompiler交流群303904495http://www.cnblogs.com/fireboxsoft有需要错别字检测软件的朋友可以在我博客上的地址下载使用,备注“2ccc”的朋友可以免费获取超级黄金VVVVVVVVVVIP授权
|
作者: |
|
2014/8/23 0:48:11 |
4楼: |
收了,呵呵,感谢
----------------------------------------------
还可以更好
|
作者: |
|
2014/8/23 9:53:42 |
5楼: |
@isxuzhu: DesktopHandle+2是什么意思?
----------------------------------------------
-
|
作者: |
|
2014/8/23 11:57:21 |
6楼: |
@isxuzhu 非FMX窗口实测无效哦(FMX窗口没试)
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/8/23 15:48:47 |
7楼: |
嵌入桌面是怎么样的效果? 楼主截张图看看呀.
----------------------------------------------
-
|
作者: |
|
2014/8/23 18:20:20 |
8楼: |
@随风 类似win7桌面小工具,在所有窗口之下,在桌面之上,点击显示桌面后窗口不会最小化。一楼的代码去掉透明后你可以试下..
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/8/23 19:13:53 |
9楼: |
窗口最小化时是最小化到桌面,不是最小化到任务栏
----------------------------------------------
还可以更好
|
作者: |
|
2014/8/24 14:27:55 |
10楼: |
或者可以换个角度问:怎样用Delphi制作win7桌面小工具? 另外,win7桌面小工具是LAYERED分层窗口么?
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/8/24 14:29:26 |
11楼: |
http://my.oschina.net/ypimgt/blog/63348
http://www.xp85.com/html/article-95-357.html
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2014/8/24 14:46:21 |
12楼: |
@Flying Wang 用delphi怎样制作一个高仿的呢? 另外,桌面小工具貌似附着在一个透明的窗口上,能找到这个窗口的句柄么?把delphi程序嵌入这个窗口不知道行不行..
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/8/24 19:11:00 |
13楼: |
试用N个桌面日历或天气秀,没有一个实现了在Aero下嵌入桌面,看来是个不可能完成的任务..
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/10/13 17:56:05 |
14楼: |
哦也,找到一个可以完美嵌入Aero桌面的软件:飞雪桌面日历 http://www.xt263.com/
Delphi大侠们还需努力哦 @isxuzhu @武稀松 @Flying Wang
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/10/13 18:26:23 |
15楼: |
又找到一个:创易桌面提醒 http://blog.sina.com.cn/s/blog_cd67d4660101jfv8.html
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/10/17 19:04:58 |
16楼: |
已解决:不要用Windows.SetParent(Self.handle,ProgmanH); 而是用SetWindowLong(Self.handle,GWL_HWNDPARENT,ProgmanH); 如此而已
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/10/17 20:15:22 |
17楼: |
顶英雄无敌3的爱好者。有空我把我收集的各种几十个G的英雄无敌3都上传。
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
|
2014/10/18 10:18:42 |
18楼: |
@孤独骑士 谢谢
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2014/11/9 18:38:53 |
19楼: |
@diystar
procedure TForm1.FormCreate(Sender: TObject); var ProgmanH:HWND; begin Self.AlphaBlendValue:=128; Self.AlphaBlend:=True; //去掉这句就正常了
ProgmanH:=FindWindow('Progman', 'Program Manager'); ProgmanH:=GetWindow(ProgmanH,GW_CHILD); ProgmanH:=GetWindow(ProgmanH,GW_CHILD); SetWindowLong(Self.handle,GWL_HWNDPARENT,ProgmanH); end;
这样吗?WIN7,64位,不论是否AERO桌面都无效。
----------------------------------------------
你我,都可以是个造梦者!欢迎加入脚本引擎PaxCompiler交流群303904495http://www.cnblogs.com/fireboxsoft有需要错别字检测软件的朋友可以在我博客上的地址下载使用,备注“2ccc”的朋友可以免费获取超级黄金VVVVVVVVVVIP授权
|
作者: |
xjia (xjia) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2014/11/9 18:48:09 |
20楼: |
19 楼,你的程序是64位的吗?不是肯定不行~
----------------------------------------------
-
|
作者: |
|
2014/11/9 22:39:31 |
21楼: |
以上效果!! setwindowpos(FormHandle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE);
这句代码可以等同吗?
----------------------------------------------
http://www.ressss.com
|
|