如何强悍地实现“置顶窗口”,让窗口不被其他窗口覆盖

paschen 2018-06-02 03:43:16
加精
使用WS_EX_TOPMOST创建或SetWindowPos(hWnd, HWND_TOPMOST, ...)设置的置顶窗口,仍然可以被其他置顶窗口所覆盖

如何能够优雅地实现窗口置顶后不能被其他顶层窗口覆盖?

WIN10系统自带的任务管理器中,设置“置于顶层”后无法被其他置顶窗口覆盖(仅WIN10,WIN7会被覆盖),这和我期望的完美吻合,但不知如何实现

之前尝试过失去焦点时AttachThreadInput其他顶层窗口后,再SetForegroundWindow自己,具体代码如下:


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TOPWNDTEST));
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = L"TopWndTest";
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
RegisterClassExW(&wcex);

HWND hWnd = CreateWindowExW(WS_EX_TOPMOST, L"TopWndTest", L"这是一个置顶窗口", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 600, 400, nullptr, nullptr, hInstance, nullptr);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

MSG msg;
while (GetMessage(&msg, nullptr, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}


LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_KILLFOCUS:
{
HWND hForegdWnd = GetForegroundWindow();
DWORD dwForegdWndThreadID = GetWindowThreadProcessId(hForegdWnd, NULL);
DWORD dwThreadID = GetCurrentThreadId();
AttachThreadInput(dwThreadID, dwForegdWndThreadID, TRUE);
SetForegroundWindow(hWnd);
SetFocus(hWnd);
AttachThreadInput(dwThreadID, dwForegdWndThreadID, FALSE);
break;
}
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}


但上述方法有较多局限且不够优雅:1、影响其他窗口消息;2、效率低拖动时闪烁;3、仍然会被WIN10任务管理器覆盖

有没大牛对此有研究过,指点一二
...全文
36320 71 打赏 收藏 转发到动态 举报
写回复
用AI写文章
71 条回复
切换为时间正序
请发表友善的回复…
发表回复
watermelonCloud 2021-06-26
  • 打赏
  • 举报
回复

今天发现一个可以盖过锁屏界面和激活windows文字的 可以搜索一下:todesk隐私屏 很好奇是什么原理,据我所知是用的驱动

leonadaclaire 2021-03-10
  • 打赏
  • 举报
回复
你们都想多了,explorer就是瘟都死开发的, explorer就算被杀掉,任务管理器还是能起来 自己琢磨把。。。。。。 有个“超级祖宗窗口”挂在所有窗口之上, 是瘟都死显示的基石,悬于瘟都死屏幕上。 你们发的所有onpaint窗体消息,它都能给你们拦喽。 这就是~~~~~~~~~~~· ghost windows(幽灵窗口)
  • 打赏
  • 举报
回复
也就是说窗口还分阶级,透明天花板~
MIAIONE 2021-03-05
  • 打赏
  • 举报
回复
这篇已经说的很明白了,在win10中,根本就不是由同一函数创建的,72楼说对了:https://blog.csdn.net/weixin_43820461/article/details/107610331
sanhill 2021-02-04
  • 打赏
  • 举报
回复 1
今天发现,搜狗输入法的窗口可以在win10的任务管理器之上。这个输入法的小窗口是咋做的?
SlimeNull 2020-10-03
  • 打赏
  • 举报
回复 1
都2020年了, 还没有解决吗, 有点难搞噢 我是用计时器, 不断置顶的, 勉强满足需求, 如果能实现像任务管理器那样的硬性置顶, 那就更好了. 我的发现: 似乎窗口有两类, 1.普通窗口 2.置顶窗口, 这两个窗口的关系是: 普通窗口始终会被置顶窗口覆盖. 置顶窗口可以是多个, 并且置顶窗口之间, 一个可以覆盖另一个, 并不是之前某人所说的, 置顶窗口只有一个. 不过真正在最顶端的窗口也的确只有一个. 值得一提的是, 任务栏的次序介于普通窗口和置顶窗口之间, 普通窗口无法覆盖任务栏, 任务栏无法覆盖置顶窗口, 但是嘞, 在打开开始菜单时, 开始菜单和任务栏会进入介于置顶窗口和最顶级(任务管理器)的状态. 除了任务管理器和放大镜, 任何窗口都无法覆盖开始菜单与任务栏. 噢, 当然, 除了任务栏和放大镜, '通知'也是无法被覆盖的. 其他: Windows的放大镜始终位于任务管理器顶端. 而且任务管理器和放大镜可以覆盖任何东西, 包括系统的任何东西, 比如开始菜单. 通知, (就是不知道能否覆盖那个Windows未激活的标志)
luoyely 2019-10-28
  • 打赏
  • 举报
回复
引用 74 楼 LshSm_ 的回复:
我试过,放大镜可以遮住任务管理器

厉害,这都被你发现了,而且这个置顶感觉也没什么必要啊,任务管理器置顶后虽然显示是置顶了,但是当你打开其他新窗口后,焦点已经在新打开的窗口了。
zyrr159487 2019-10-28
  • 打赏
  • 举报
回复
onpaint的时候置顶,只要被遮盖就会引起重绘
schlafenhamster 2019-10-27
  • 打赏
  • 举报
回复
A ghost window replaces a window that hasn't called Get or PeekMessage for 5 seconds, in other words a hung window. It displays a bitmap of the hung window's client area
LshSm_ 2019-10-27
  • 打赏
  • 举报
回复
我试过,放大镜可以遮住任务管理器
零隐 2019-09-29
  • 打赏
  • 举报
回复
每个程序都想顶置。·~~都成流氓程序了。
其实我感觉 SetWindowPos 够用。至于被其它程序遮住,一般没什么办法。
data-v-165b75c4 2019-09-27
  • 打赏
  • 举报
回复
据说任务管理器用的是CreateWindowInBand
gongjiangang2012 2019-08-10
  • 打赏
  • 举报
回复
以前想要程序全屏就碰到这个问题,,任务管理器真是强悍。
bbjhn 2019-07-30
  • 打赏
  • 举报
回复
试一下这个bat文件:
文件名:dead.bat
while 1:
start
dead
pause
schlafenhamster 2019-04-02
  • 打赏
  • 举报
回复
是不是与进程 优先度有关 ,提高试试。
qq_42701547 2018-07-15
  • 打赏
  • 举报
回复 1
只想问问强悍的程序开2个,肯定有一个不强悍了吧。还是定时器大法好
qq_42701547 2018-07-15
  • 打赏
  • 举报
回复
会不会是系统对那一个窗体“特殊照顾”而实现的结果呢?

毕竟用真正“TOPMOST”的只能有一个,通过创建时标识或“后期”API置顶,
  那些窗口都是“平级”的,这时自然就是哪个窗体拥有焦点、哪个窗体就会到“最顶层”。
sololie 2018-07-13
  • 打赏
  • 举报
回复
引用 62楼sololie 的回复:
想到的是把欲置顶窗口区域的重绘消息处理掉
漏了个 非 字
sololie 2018-07-13
  • 打赏
  • 举报
回复
想到的是把欲置顶窗口区域的重绘消息处理掉
z-xiaoyao 2018-06-30
  • 打赏
  • 举报
回复
还没新发现,这问题不一定能完美解决,主要来听下大家意见
加载更多回复(51)
名称 大小 说明 【一卸到底】强悍卸载.exe 144 KB Autoruns.exe 116 KB 禁止U盘及硬盘的自动运行 cpuz.exe 2,190 KB 一款功能强劲的CPU,内存检测工具 CrackDown.exe 391 KB 硬盘信息检测工具 EVEREST+v5.5.exe 7,202 KB 强大的整机硬盘检测,测试,温度显示 Everything.zip 430 KB 极速的文件搜索工具(搜索0.01秒,只支持NTFS分区) FLVPlayer4Free.exe 4,769 KB FLV文件播放器(FLASH) FTPserver.exe 740 KB 精小的FTP服务软件-单功能 GIF动画录制工具.exe 1,417 KB 把屏幕内容录制成GIF文件 GPUZ.exe 429 KB 一款功能强劲的显卡测检工具 HDTune.exe 348 KB 最出名的硬盘检测,测试软件 hfs.exe 2,544 KB 一款功能强大的HTTP文件服务器软件。 ipmsg.exe 156 KB 飞鸽传书-局域网内聊天传送文件最好用的小软件 keycode-finder.exe 20 KB 查看键盘输入键的硬件码 MaxDOS_5.0E.exe 3,577 KB 一款提供DOS操作的软件-功能非常强劲 MiniCD.EXE 482 KB 迷你CD 一款拟光驱工具,把常用ISO化身为CD驱动器 mydisktest.exe 81 KB 强大的U盘测试工具 OEM 自定义工具.exe 222 KB 系统OEM信息定制工具 PrassiONES光碟刻录软件.exe 1,536 KB QQ拼音截图.exe 670 KB Ramdisk_cn.rar 139 KB 内存虚拟盘 UltraISO.exe 1,120 KB 光盘ISO制作工具 Usboot170.exe 453 KB U盘启动工具 U盘芯片检测.exe 234 KB VolumeEasy143b708.exe 77 KB 音量快捷键 暴力删除文件.exe 515 KB 超级巡警出品 窗口文字复制.exe 320 KB 不能复制窗口中的文本吗?试试这个 窗口置顶.exe 46 KB 存储器测速.exe 31 KB 单位换算小精灵.exe 244 KB 飞雪文件分割.rar 91 KB 支持生成合并文件和本软件合并 废客序列号输入助手.exe 129 KB 序列号还需要一段的输入吗?要CTRL+C 然后按F11自动完成。 福昕PDF阅读器.exe 8,124 KB 版本3.0 红叶自动校时v1.8.exe 888 KB 简体转繁体工具.exe 558 KB 截图工具(即时涂鸦).exe 152 KB 进程查看器.exe 2,929 KB 进程管理器.exe 1,589 KB 取色工具.exe 368 KB 输入法调整.exe 26 KB 鼠键回放.exe 956 KB 文件MD5效验工具.exe 881 KB 文件批量改名.exe 13 KB 文件误删恢复.exe 1,418 KB 系统超级工具.exe 1,008 KB 虚拟光驱.exe 124 KB 一触即刹.exe 203 KB
>>程序结构优化,占用系统资源较少,经测试其PHP数据库在动态模式可以支持日IP10万左右不卡! >>本程序一健安装PHP MYSQL完全免费开源! 扩展性获得多位技术人员的肯定! >>全面支持二级分类,设置灵活,支持自定义各分类名! >>开发出完美契合的新闻发布系统,为你的网站多增添一份人气以及收录几率! >>全面支持伪静态设置,使网站在不用生成静态的条件下对搜索引擎更友好! >>网站运行模式可以一键切换(PHP动态/HTML静态/PHP伪静态) ,支持设置伪静态,对首页、分类、内容三大页面的动静切换以及自由设置后缀! >>多种播放类型,全屏.窗口任意切换(后台可设置)! >>完美支持优酷,远古,酷6,土豆,56,新浪,六房间,QQ,播客,搜狐,宝丽通,YouTuBe,星播客,蚂蚁,BOBO,Q播,迅播gvod(迅雷旗下),本地FLV视频,Real Media等引用;播放器全部本地化,让你使用的放心! >>完美的二级分类,强悍逻辑标签,一级分类嵌套二级循环 >>支持对连载影片、推荐影片、热门影片、隐藏影片进行单独批量管理! >>全面支持本地影片批量添加,完美支持本地多服务器路径设置! >>支持影片推荐,影片标题颜色以及数据隐藏! >>智能化报错系统,后台直接管理所有报错影片并支持多种修复方式! >>官方资源库支持数据每天更新,省去每天辛苦寻找片源烦恼;提供片源商发布平台接口,支持更多片源加入,让资源更加丰富 >>强大的自定义采集增强功能,只要你会写采集,可以轻松拿下目标站全部资源! >>全面支持设置多级管理员,自由设置其权限,使网站拥有者不再担心后台安全问题! >>友情连接智能化,支持多种人性化链接调用方式! >>支持留言本后台管理,支持影片、留言本数据库在线压缩 >>支持评论后台关闭开关以及过滤设置,让AD者憋气! >>自适应大小的影片评论功能,无需经过再次CSS定位等让模板设计者头痛的工作! >>强悍的前台逻辑标签,让你以各种方式调用网站数据得心应手! >>支持单独调用连载数据、推荐数据,置顶数据! >>简单易懂的标签库,让你上手更加统容易! >>01.管理人员权限系统 >>02.新闻发布系统 >>03.网站地图系统 >>04.广告管理系统 >>05.AJAX留言本系统 >>06.智能影片报错系统 >>07.模板管理系统 >>08.友情链接人性化系统 >>09.网页静态生成系统 >>10.数据管理系统 >>11.官方数据采集系统 >>12.影片评论系统 注意:本地调试,请使用系统自带的IIS调试..使用IIS替代调试插件,可能会导致功能不能正常使用!!! 一:将程序上传至空间 二:运行http://你的域名/install/Install.php 进行首次配置安装 三:安装完毕,进入至后台管理 后台地址:http://你的域名/Admin/Index.php
搜一次CMS电影程序PHP版 v1.6 201301129 更新记录: 1、修复了后台的部分BUG,更换editor编辑为kindeditor编辑器 2、添加了视频、文章内容模板中上一篇、下一篇的两个标签 3、核心代码调用方式优化 4、修复了视频分页的BUG 5、修复了用户中心注册以及其它信息展示BUG 6、修复了上版本部分后台功能的BUG >>程序结构优化,占用系统资源较少,经测试其PHP MYSQL数据库在动态模式可以支持日IP2万左右不卡! >>本程序一健安装PHP MYSQL完全免费开源! 扩展性获得多位技术人员的肯定! >>全面支持二级分类,设置灵活,支持自定义各分类名! >>开发出完美契合的新闻发布系统,为你的网站多增添一份人气以及收录几率! >>全面支持伪静态设置,使网站在不用生成静态的条件下对搜索引擎更友好! >>网站运行模式可以一键切换(PHP动态/HTML静态/PHP伪静态) ,支持设置伪静态,对首页、分类、内容三大页面的动静切换以及自由设置后缀! >>多种播放类型,全屏.窗口任意切换(后台可设置)! >>完美支持皮皮影音,优酷,远古,酷6,土豆,56,新浪,六房间,QQ,播客,搜狐,宝丽通,YouTuBe,星播客,蚂蚁,BOBO,Q播,迅播gvod(迅雷旗下),本地FLV视频,Real Media等引用;播放器全部本地化,让你使用的放心! >>完美的二级分类,强悍逻辑标签,一级分类嵌套二级循环 >>支持对连载影片、推荐影片、热门影片、隐藏影片进行单独批量管理! >>全面支持本地影片批量添加,完美支持本地多服务器路径设置! >>支持影片推荐,影片标题颜色以及数据隐藏! >>智能化报错系统,后台直接管理所有报错影片并支持多种修复方式! >>官方资源库支持数据每天更新,省去每天辛苦寻找片源烦恼;提供片源商发布平台接口,支持更多片源加入,让资源更加丰富 >>强大的自定义采集增强功能,只要你会写采集,可以轻松拿下目标站全部资源! >>全面支持设置多级管理员,自由设置其权限,使网站拥有者不再担心后台安全问题! >>友情连接智能化,支持多种人性化链接调用方式! >>支持留言本后台管理,支持影片、留言本数据库在线压缩 >>支持评论后台关闭开关以及过滤设置,让AD者憋气! >>自适应大小的影片评论功能,无需经过再次CSS定位等让模板设计者头痛的工作! >>强悍的前台逻辑标签,让你以各种方式调用网站数据得心应手! >>支持单独调用连载数据、推荐数据,置顶数据! >>简单易懂的标签库,让你上手更加统容易! >>01.管理人员权限系统 >>02.新闻发布系统 >>03.网站地图系统 >>04.广告管理系统 >>05.AJAX留言本系统 >>06.智能影片报错系统 >>07.模板管理系统 >>08.友情链接人性化系统 >>09.网页静态生成系统 >>10.数据管理系统 >>11.官方数据采集系统 >>12.影片评论系统 >>13.自定义采集增强系统 >>14.数据库后台备份还原压缩功能 >>15.会员功能

16,465

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧