有办法把软件窗口挂在桌面吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lqzhgood
V2EX    Windows

有办法把软件窗口挂在桌面吗?

  •  
  •   lqzhgood 2023-04-26 21:51:40 +08:00 4491 次点击
    这是一个创建于 897 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说说需求~

    想把一个可交互的网站像 Win7 小组件一样挂在桌面

    • 任意窗口都在他的上层
    • Win+D 也不会被最小化
    • (可有可无)平时透明,鼠标滑过显示

    主要是想把 ChatGPT 和 笔记( https://notepad.1976f.com/ )挂桌面,这样 Win+D 就可以直接写和看了~ 没有再打开一个软件再读写的步骤 而且随时能看到

    笔记因为不需要权限,随手写点东西和别人共享起来也方便,这边写,那边桌面就有直接能看,不用再打开某软件回复 特别轻量级

    有很多可以顶置的软件,但是就是找不到可以底置的软件…… 求教~

    做过的一些尝试

    • Rainmeter 桌面美化小挂件软件,但并没有浏览器挂件
    • WallpaperEngine / LivelyWallpaper 把网页作为背景并不能交互

    大哥大姐有知道的么?求教~

    第 1 条附言    2023-04-27 10:17:38 +08:00

    很多朋友提出可以设置一个快捷键呼出,或者放在其他地方然后用快捷键显示等~ 我详细说说这里用户体验的想法

    这里的巧思在于桌面是一个你时不时就能看到的地方。

    我想的场景是,可以自己写笔记备忘,也可以多人随手写写画画,比较轻松吧~

    书写上确实和使用快捷键呼出没有区别,反正都是要按快捷键的嘛,区别只是非 Win+D。

    但阅读上的体验差很多,一个是随手看到,另一个是还需要主动去呼出查看

    我把 笔记 换成 留言板 的说法应该更加贴切吧

    ############### 展开说说

    现实生活中把常用东西放桌面是个比较自然的做法吧

    • 软件上只能把书本 合上 放桌面,还需要手动打开书本翻到常用的那一页(快捷方式启动软件)
    • 我想有没有可能直接把书本最常用的那一页 打开 放桌面(桌面挂应用)
    32 条回复    2023-04-28 16:53:10 +08:00
    WeaPoon
        1
    WeaPoon  
       2023-04-26 22:24:04 +08:00
    为什么不问 ChatGPT 了?我问的是 C#的,也不知道你用的啥,所以代码就不贴了。就贴一下它回答的原理部分。

    问 ChatGPT 问题一:请使用 C#编写,把窗口钉在桌面上。
    我们在 MainForm 类中使用 WinApi.SetParent 函数将窗口变为桌面的子窗口。我们还使用 WinApi.SetWindowLong 函数将 WS_EX_LAYERED 和 WS_EX_TRANSPARENT 扩展样式添加到窗口的扩展风格中,使窗口在不阻塞鼠标事件的情况下变为透明。

    问 ChatGPT 问题二:C#编写无边框窗口,可以使用鼠标移动窗口
    我们创建了一个 MainForm 类型的窗口,并在构造函数中设置窗口的标题、大小和边框样式。然后,我们在窗口上注册了鼠标事件,使窗口可以响应用户拖动窗口的动作。

    具体来说,当用户按下鼠标左键时,我们将当前鼠标坐标保存到 lastMousePosition 变量中。然后,在用户移动鼠标时,我们检查是否按下了鼠标左键,并根据鼠标位置的变化计算窗口新的位置,并将其设置为窗口的新位置。最后,当用户释放鼠标左键时,我们将 lastMousePosition 变量重置为 Point.Empty ,以便下一次拖动时重新开始计算位置变化。

    我们使用 MouseDown 、MouseMove 和 MouseUp 事件来处理鼠标动作,它们在用户按下、移动和释放鼠标时触发,并传递 MouseEventArgs 对象,其中包含了有关鼠标事件的信息,如鼠标的按键、位置等。我们需要根据鼠标事件的信息,判断用户是否执行了拖动行为,然后计算和更新窗口位置信息。
    WeaPoon
        2
    WeaPoon  
       2023-04-26 22:27:57 +08:00
    抱歉,我好像突然明白,你问的是第三方解决方案,我以为是问的代码。。。
    zhzy
        3
    zhzy  
       2023-04-26 22:32:09 +08:00
    也许这里的信息对你有帮助: [c#中如何使程序嵌入到桌面,成为桌面背景,和一些日历程序类似?]( https://social.msdn.microsoft.com/Forums/zh-CN/0c3d1671-1a2a-4e97-b81d-5f38957de51c/c?forum=visualcshartzhchs)
    大概率是要用到 Windows API 的, 因为我记忆里的类似软件几乎都是 WinForm 做的.

    其实也许可以用另一个思路: 绑定个快捷键, 不在任务栏显示应用图标, 这基本上就已经无感了, 只是 Win+D 换成别的而已. 很多翻译软件也是这样做的
    Inf1nity
        4
    Inf1nity  
       2023-04-26 22:52:29 +08:00   1
    把 ChatGPT 和笔记放到另外一个虚拟桌面上,需要的时候用 ctrl + win + ← / → 切换桌面即可。
    ysc3839
        5
    ysc3839  
       2023-04-26 23:10:30+08:00 via Android
    以前弄过中考、高考倒计时的程序,实现过这个功能,但代码可能找不到了,印象中 XP 和 Win7 的方法不太一样。
    至于现成的软件,我估计是没有。
    documentzhangx66
        6
    documentzhangx66  
       2023-04-26 23:33:54 +08:00
    换个思路,试试多屏。

    比如我现在 10 个屏幕,你这 2 个功能,可以单独放在一个屏幕里。
    guoshim
        7
    guoshim  
       2023-04-26 23:36:17 +08:00   1
    PowerToys 有个 always on top 的功能 https://github.com/microsoft/PowerToys 也许能满足部分需求。
    codehz
        8
    codehz  
       2023-04-27 01:10:57 +08:00   1
    只是网页的话可以用这个 https://github.com/ivant04/Custom-Widget-App (有问题别问我,我不是作者)
    ns09005264
        9
    ns09005264  
       2023-04-27 02:59:58 +08:00
    我有个简单的思路,就是用 AHK 之类的脚本来实现,按下 Ctrl+D 后,把你要显示的应用显示出来。
    Sisyphe42
        10
    Sisyphe42  
       2023-04-27 03:10:51 +08:00
    YY202266
        11
    YY202266  
       2023-04-27 04:59:57 +08:00
    不知道这个行不行,鼠标滑过显示,是置顶的,不是置底。
    t/933040
    最近又更新了记录打开文件夹路径的功能,我去打个包传上去。
    forgottencoast
        12
    forgottencoast  
       2023-04-27 09:28:19 +08:00
    另外一个思路就是设置一个快捷键,把他们俩弄出来啊。
    反正你都要按 Win+D 的,换成另外一个也不费事。
    minami
        13
    minami  
       2023-04-27 09:59:26 +08:00
    Deskpins
    manasheep
        14
    manasheep  
       2023-04-27 10:05:01 +08:00
    win11 ,新建一个虚拟桌面,专门放这俩就行了。
    当然,单独扩展个显示器也不错。
    assiadamo
        15
    assiadamo  
       2023-04-27 10:11:45 +08:00
    DeskPins 400k 小软件的事情
    lqzhgood
        16
    lqzhgood  
    OP
       2023-04-27 10:19:36 +08:00
    @minami @assiadamo
    底层 不是 顶层~
    lqzhgood
        17
    lqzhgood  
    OP
       2023-04-27 10:22:26 +08:00
    @documentzhangx66 @manasheep
    多屏确实好,但是又有另一个 windows 老大难的问题~
    怎么解决,Win+D 仅显示当前桌面,不然放到其他桌面也一样被最小化了。

    我知道有个软件 https://github.com/CryptKat/ShowDesktopPerMonitor ,但是不好用,很多 BUG
    PowerToys 也有 issues 提到这个问题 https://github.com/microsoft/PowerToys/issues/24011
    lqzhgood
        18
    lqzhgood  
    OP
       2023-04-27 10:30:03 +08:00
    @Sisyphe42 就是这个效果~ 但是 Win11 好像有 BUG ,运行后窗口不见了……
    我去原帖问问作者。
    感谢大佬~
    manasheep
        19
    manasheep  
       2023-04-27 10:32:20 +08:00
    @lqzhgood 多屏就不要按 Win+D 了,给它个屏幕专用就行,我常年扩展屏,极少用到 Win+D
    lqzhgood
        20
    lqzhgood  
    OP
       2023-04-27 11:04:14 +08:00
    @manasheep 那你不用显示桌面么?
    一个 App 一个屏 ?
    celeron533
        21
    celeron533  
       2023-04-27 11:13:43 +08:00
    documentzhangx66
        22
    documentzhangx66  
       2023-04-27 11:16:25 +08:00
    @lqzhgood 你都多屏了,干嘛还 Win + D 。
    freeoptions
        23
    freeoptions  
       2023-04-27 15:44:57 +08:00
    @assiadamo 下载试了下,没什么用,按下 win+d ,软件窗口照样全部最小化
    freeoptions
        24
    freeoptions  
       2023-04-27 15:47:33 +08:00
    @celeron533 win11 系统,下载试用了下,没什么用,按下 win+d 软件窗口照样会被最小化
    mainjzb
        25
    mainjzb  
       2023-04-27 17:07:59 +08:00
    final h = FindWindow(nullptr, TEXT('ChatGPT'));
    final desktop = FindWindow(nullptr, TEXT('Program Manager'));
    final result = SetParent(h, desktop);

    客户端用的这个, 我自己 win11 试了试可行。 边框确实会变成 win7 模式。问题不大。
    https://github.com/lencx/ChatGPT
    mainjzb
        26
    mainjzb  
       2023-04-27 17:15:06 +08:00
    https://wwxx.lanzoue.com/it80H0u2yqpi
    我用 dart 写的,调了 win32 库,编译了一个 demo 你可以试试。 好像得正常运行 2 次才能其作用。 成功返回非 0 值
    opengps
        27
    opengps  
       2023-04-27 17:23:45 +08:00
    windows 的便签 似乎就是你需要的工具,建议体验下看看差异的部分能否接受
    balancircle
        28
    balancircle  
       2023-04-27 20:34:09 +08:00   1
    sordum 的 Window TopMost Control
    https://www.sordum.org/9182/window-topmost-control-v1-3/
    他家的小工具都挺好用的,值得一试
    ossphil
        29
    ossphil  
       2023-04-28 07:48:34 +08:00
    我也想过这个功能,想把 obsidian 笔记钉在桌面
    lqzhgood
        30
    lqzhgood  
    OP
       2023-04-28 15:01:34 +08:00
    @balancircle 是 底层 不是 顶层 哦~
    lqzhgood
        31
    lqzhgood  
    OP
       2023-04-28 15:06:56 +08:00
    @mainjzb 我执行后 GPT 窗口就消失了~~~
    我的系统是 Win11 Build 22621 ( lastest )
    mainjzb
        32
    mainjzb  
       2023-04-28 16:53:10 +08:00
    @lqzhgood 我也是 Win11 Build 22621 感觉你系统有问题 一般 win10 升级上来的都有奇奇怪怪的问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5695 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 06:23 PVG 14:23 LAX 23:23 JFK 02:23
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86