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

2023-04-26 21:51:40 +08:00
 lqzhgood

先说说需求~

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

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

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

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

做过的一些尝试

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

3946 次点击
所在节点    Windows
32 条回复
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
2023-04-26 22:27:57 +08:00
抱歉,我好像突然明白,你问的是第三方解决方案,我以为是问的代码。。。
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
2023-04-26 22:52:29 +08:00
把 ChatGPT 和笔记放到另外一个虚拟桌面上,需要的时候用 ctrl + win + ← / → 切换桌面即可。
ysc3839
2023-04-26 23:10:30 +08:00
以前弄过中考、高考倒计时的程序,实现过这个功能,但代码可能找不到了,印象中 XP 和 Win7 的方法不太一样。
至于现成的软件,我估计是没有。
documentzhangx66
2023-04-26 23:33:54 +08:00
换个思路,试试多屏。

比如我现在 10 个屏幕,你这 2 个功能,可以单独放在一个屏幕里。
guoshim
2023-04-26 23:36:17 +08:00
PowerToys 有个 always on top 的功能 https://github.com/microsoft/PowerToys 也许能满足部分需求。
codehz
2023-04-27 01:10:57 +08:00
只是网页的话可以用这个 https://github.com/ivant04/Custom-Widget-App (有问题别问我,我不是作者)
ns09005264
2023-04-27 02:59:58 +08:00
我有个简单的思路,就是用 AHK 之类的脚本来实现,按下 Ctrl+D 后,把你要显示的应用显示出来。
Sisyphe42
2023-04-27 03:10:51 +08:00
YY202266
2023-04-27 04:59:57 +08:00
不知道这个行不行,鼠标滑过显示,是置顶的,不是置底。
https://www.v2ex.com/t/933040
最近又更新了记录打开文件夹路径的功能,我去打个包传上去。
forgottencoast
2023-04-27 09:28:19 +08:00
另外一个思路就是设置一个快捷键,把他们俩弄出来啊。
反正你都要按 Win+D 的,换成另外一个也不费事。
minami
2023-04-27 09:59:26 +08:00
Deskpins
manasheep
2023-04-27 10:05:01 +08:00
win11 ,新建一个虚拟桌面,专门放这俩就行了。
当然,单独扩展个显示器也不错。
assiadamo
2023-04-27 10:11:45 +08:00
DeskPins 400k 小软件的事情
lqzhgood
2023-04-27 10:19:36 +08:00
@minami @assiadamo
底层 不是 顶层~
lqzhgood
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
2023-04-27 10:30:03 +08:00
@Sisyphe42 就是这个效果~ 但是 Win11 好像有 BUG ,运行后窗口不见了……
我去原帖问问作者。
感谢大佬~
manasheep
2023-04-27 10:32:20 +08:00
@lqzhgood 多屏就不要按 Win+D 了,给它个屏幕专用就行,我常年扩展屏,极少用到 Win+D
lqzhgood
2023-04-27 11:04:14 +08:00
@manasheep 那你不用显示桌面么?
一个 App 一个屏 ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/935748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX