V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
JJaicmkmy
V2EX  ›  问与答

Windows 系统如何将窗口固定在桌面?

  •  
  •   JJaicmkmy · 2017-03-15 01:43:42 +08:00 · 4158 次点击
    这是一个创建于 2811 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正在用 Electron 写 YouTube Subs Counter ,在桌面上查看实时频道订阅数的小工具。

    在 macOS 下可以直接使用 Electron 自带的 type: 'desktop' 来将窗口固定在桌面,永远置于最底层。但是这个选项并不支持 Windows ,所以想问一下, Windows 下有能够实现这个功能的软件吗?

    我有 Google 到 这个 软件完美符合我的需求,但是为了这个功能花50刀感觉不值。

    14 条回复    2017-06-03 21:51:25 +08:00
    deepjia
        1
    deepjia  
       2017-03-15 02:43:35 +08:00 via iPhone
    DeskPins
    deepjia
        2
    deepjia  
       2017-03-15 02:44:06 +08:00 via iPhone
    我错了 这是顶层……
    loading
        3
    loading  
       2017-03-15 07:00:35 +08:00 via Android
    http://gadgetsrevived.com/download-sidebar/

    如果是自己写的软件,让他工作在小工具模式。
    ob
        4
    ob  
       2017-03-15 07:41:09 +08:00 via Android
    用 ahk 可以做到。就是窗口置顶。
    kokutou
        5
    kokutou  
       2017-03-15 07:43:32 +08:00 via Android
    ahk 可以控制窗口属性,很方便。
    ckzx
        6
    ckzx  
       2017-03-15 07:59:51 +08:00
    最近也有一个这样的需求,我也在想考虑直接锁定。
    jasontse
        7
    jasontse  
       2017-03-15 08:45:47 +08:00 via iPad
    记得用 SetParent 把 Parent 设成桌面就可以了
    johnny23
        8
    johnny23  
       2017-03-15 08:55:43 +08:00 via iPhone
    一些播放器永远置顶功能 可以参考一下
    johnny23
        9
    johnny23  
       2017-03-15 08:56:17 +08:00 via iPhone
    不好意思 回复错了
    loudis
        10
    loudis  
       2017-03-15 08:59:45 +08:00
    最底层固定? 自己固定位置,然后不自动获得 focus 的 window 不就是了吗?
    vopsoft
        11
    vopsoft  
       2017-03-15 09:51:03 +08:00
    redtears
        12
    redtears  
       2017-03-15 11:08:38 +08:00
    JJaicmkmy
        13
    JJaicmkmy  
    OP
       2017-03-15 11:22:08 +08:00 via iPhone
    @vopsoft 我要的是置于底层,不是置于顶层。
    geelaw
        14
    geelaw  
       2017-06-03 21:51:25 +08:00
    实际上你想达成的是 Windows Desktop Gadget 的样式。它的特点:

    1. 置底
    2. 对最小化所有窗口以及其他排列窗口功能免疫
    3. 对“显示桌面”免疫
    4. 对 Aero Peek 预览桌面免疫

    第一步:参考第三步。

    第二步:可以对改变大小免疫,但是不能对改变位置免疫(除非你阶段 WINDOWPOSCHANGING,但是这样会让你的用户无法移动窗口),方法是设置窗口的边框类型为 FixedSingle,然后禁用最小化按钮。

    第三步:在用户显示桌面的时候,桌面成为置顶窗口,除非你的窗口也进入置顶状态否则无法显示。因此你可以在系统中安装一个 hook 并观察:如果桌面成为了置顶窗口,你就把自己置顶,否则你就把自己置底。

    第四步是可以的:用 DWMWA_EXCLUDED_FROM_PEEK,这样当用户用 Windows + , 或者鼠标移动到右下角的时候,你的窗口仍然会显示。

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa969524(v=vs.85).aspx
    https://msdn.microsoft.com/en-us/library/windows/desktop/aa969530(v=vs.85).aspx
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1091 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:48 · PVG 02:48 · LAX 10:48 · JFK 13:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.