在桌面上创建一个按钮

create an button on desktop

本文关键字:一个 按钮 桌面 创建      更新时间:2023-10-16

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

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

我在google上找到了很多用程序换墙纸的信息。但是找不到win7的API来在桌面上添加一个按钮。

谁能告诉我怎么在桌面上设置图标按钮,还是没有这样的API?

编辑:我只是发现有一些方法可以让窗户不动。所以,我想现在我需要想办法用图标来制作窗口。然后它看起来就像桌面上的一个按钮。有一些方法可以让窗口在点击一次后得到响应?

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

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

可能有帮助的代码片段是;

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

这会将你的桌面BG更改为任意文件名,但是在pathToBmp

我相信你可以很容易地把剩下的算出来。

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

我不知道这是否是你想要的,但只是一些建议和想法:)

编辑:也许这会对你有帮助。

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

毫无疑问,要想在桌面上添加一个按钮,没有一种直接的方法可以省去很多麻烦。您可以创建子控件并将父窗口设置为桌面,但您不会收到按钮单击通知。这是因为它们只被发送到控件的父窗口。使控件出现在桌面上的最接近和最简单的解决方案是创建它并通过调用SetWindowPos()将其z轴顺序设置为最底部。您的应用程序仍然能够接收按钮通知消息,但控件总是出现在所有其他窗口的后面。你可能需要重写最小化和最大化消息的行为,因为桌面可以最小化所有窗口。

你也可以选择添加一个图标在系统托盘与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的值和其他信息也作为参数传递给窗口,允许您识别单击了哪个图标(在添加多个图标的情况下)。

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