0

多年来,我收集了许多漂亮的墙纸。我知道 python 和 c++(一点 MFC 经验)。我想制作一个可以改变我的壁纸的程序。

我想这样操作:有一个小图标(半透明),如果我点击它,它会将我的壁纸更改为我的壁纸收藏文件夹中的下一张图片。

我发现了很多通过谷歌程序更改壁纸的信息。但是找不到在桌面上添加按钮的win7 API。

请有人告诉我如何在桌面上设置图标按钮,或者只是没有这样的API?

编辑:我只是发现有一些方法可以使窗口无法移动。所以,我想现在我需要找到用图标制作窗口的方法。然后它看起来像桌面上的一个按钮。而且,有一些方法可以让窗口在单击(一次)时做出一些响应,对吧?

关闭:对于对窗户有很好理解的人来说,船长的方法可能是一种更好的方法。我知道python,但对MFC或与操作系统本身有很深关系的类似框架知之甚少。这个桌面按钮的创建对我来说很难实现。修改 christian 的脚本和 windows 快捷方式将是一个不好看的折衷方案。我会这样做。

4

3 回答 3

1

我最近写了一个python程序,把我的学校成绩保存为我的背景

一个可能有用的片段是;

pathToBmp = "imagename or image directory"
SPI_SETDESKWALLPAPER = 20  
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, pathToBmp ,
                                      0)

这会将您的桌面 BG 更改为您的任何文件名,但在pathToBmp

我相信你可以很容易地弄清楚其余的

而不是一个按钮,可能会创建一个快捷方式来运行将 BG 切换到下一张图片的 python 程序

我不知道这是否是您要寻找的东西,但只是一些指示和想法:)

编辑:也许这对你有帮助

Windows 7 小工具教程
Windows 边栏对象参考

于 2013-05-20T06:53:02.650 回答
1

AFAIK 没有直接的方法可以在不跳过很多圈的情况下向桌面添加按钮。您可以创建子控件并将父窗口设置为桌面,但您不会收到按钮单击通知。这是因为它们只发送到控件的父窗口。使控件出现在桌面上的最接近和最简单的解决方案是创建它并通过调用将其 z 顺序设置为最底部SetWindowPos()。您的应用程序仍将能够接收按钮通知消息,但该控件始终显示在所有其他窗口的后面。您可能需要覆盖最小化和最大化消息的行为,因为桌面可以最小化所有窗口。

您还可以选择在系统托盘上添加一个带有Shell_NotifyIcon. 系统托盘将在您单击图标时将消息发送到您指定的窗口。下面的小示例显示了如何将图标添加到系统托盘。

static const UINT WM_TRAYMESSAGE = WM_USER + 1000;
static const UINT IDC_TRAYICON = 100l;

NOTIFYICONDATA nid;

//Tray Class Stuff
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hwnd; // Window to receive notifications
nid.uID = 100; // Id sent to window on button clicks
nid.uFlags = NIF_ICON|NIF_MESSAGE;
nid.hIcon = LoadIcon(hInstance, IDC_TRAYICON);
nid.uCallbackMessage = WM_TRAYMESSAGE; // notification to send to window

// Add the tray icon
Shell_NotifyIcon(NIM_ADD, &nid);

任何时候用户点击图标,您指定的窗口都会收到WM_TRAYMESSAGE消息。的值uID和其他信息也作为参数传递给窗口,允许您识别单击了哪个图标(如果添加了多个图标)。

于 2013-05-20T07:07:04.517 回答
-1

有一个最简单的方法。安装 VBest Icon 组。(它是一个桌面图标堆栈)然后选择任何堆栈并添加一个按钮。(拖放任何应用程序都会在堆栈中获得其链接和图标)选择堆栈并在其设置中,将透明度设置为 0(向左滑动)就是这样。现在你有一个带有链接的按钮。

于 2021-02-16T23:25:09.857 回答