2 lzw8114 lzw8114 于 2015.07.12 15:50 提问

win7下置顶窗口,为什么经常失效?如何解决 ? 1C

win7下使用SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE)置顶窗口,为什么经常失效?如何解决 ?xp下没这个问题。

3个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.12 16:21

失效,是不是窗口置顶被其它程序抢占了改了。还有可以用桌面窗口做父窗口,设置悬浮窗类似方式。

lzw8114
lzw8114 我也怀疑是这样,就是不知道xp为什么不会被抢,win7就会,是不是win7有什么特定的设置
2 年多之前 回复
lzw8114
lzw8114   2015.07.12 16:32

我也怀疑是这样,就是不知道xp为什么不会被抢,win7就会,是不是win7有什么特定的设置

zuishikonghuan
zuishikonghuan   2015.07.12 19:55

这是uiAccess搞的鬼,w7还是不 错的,w8更惨,Metro界面根本就不行。微软把这个美其名曰“受保护的UI”(Metro就是典型),只有应用程序拥有uiAccess权限才可以访问他们并在他们之上,VS工程属性里有一个“UAC绕过UI保护”,把那个换成true,然后找微软买一张证书,签上名,把程序放到program文件夹下面,才可以获取uiAccess权限,xx微软, ,,,

zuishikonghuan
zuishikonghuan 回复lzw8114: 测试证书不一定管用,我也试过,程序还是放不到Metro上面,但网上大神有说可以的,还有一些系统程序天生就有uiAccess权限,比如放大镜,屏幕键盘,任务管理器等,他们可以访问任何ui,甚至在Metro上面
2 年多之前 回复
zuishikonghuan
zuishikonghuan 回复lzw8114: 或者你可以自己颁发一张测试数字证书,自己测试可以,到用户电脑上就不行了,必须用权威CA的证书
2 年多之前 回复
zuishikonghuan
zuishikonghuan 回复lzw8114: 绕过也不容易,用w8的话,如果设置为开机自动Metro,那么360的开机助手窗口就没有了,取而代之的是360调用了w8的toast通知,才可以在Metro上面显示开机时间。。。也就是说360都没有办法突破uiAccess。。。
2 年多之前 回复
zuishikonghuan
zuishikonghuan 回复lzw8114: 关闭uac,反正w8无效,w7不知
2 年多之前 回复
lzw8114
lzw8114 关闭UAC怎么样
2 年多之前 回复
lzw8114
lzw8114 回复zuishikonghuan: 居然是这个原因?那微软太坑人了,有没有不买证书绕过的方法?
2 年多之前 回复
zuishikonghuan
zuishikonghuan 另外说一下这个uiAccess从Vista就有了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片