在桌面上创建一个按钮

时间:2013-05-20 06:45:20

标签: c++ python windows api

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

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

我发现很多由谷歌程序改变壁纸的信息。 但是找不到用于在桌面上添加按钮的win7 API。

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

编辑:     我发现有办法让窗户无法移动。所以,我认为现在我需要找到一种方法来制作一个图标窗口。然后它看起来像桌面上的按钮。并且,有一些方法可以让Windows在点击(一次)时做出一些响应,对吧?

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

3 个答案:

答案 0 :(得分:1)

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

可能有用的代码段是

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

这会将您的桌面BG更改为您pathToBmp

中的任何文件名

我相信你可以很容易地找出其余部分

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

我不知道这是你在寻找什么,只是一些指示和想法:)

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

Windows 7 Gadget Tutorial
Windows Sidebar Object Reference

答案 1 :(得分:1)

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

您还可以选择使用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和其他信息的值也作为参数传递给窗口,允许您识别单击的图标(如果添加了多个图标)。

答案 2 :(得分:-1)

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