使用代码修改Windows系统壁纸的方法

必须是能够修改和立刻刷新,看到效果的方法。所以不使用修改注册表的方式,而是直接调用系统dll方法。关键方法为user32.dll的SystemParametersInfo
(在Windows7下测试通过)

另外,所有方法均需要图片为bmp格式。否则需要先转换得到bmp格式的图片。

Python

import win32gui

def setWallpaper(imgPath):
    win32gui.SystemParametersInfo(20, imgPath, 3)

* 推荐使用pillow库进行图像格式转换。

Go

import (
  "syscall"
  "unsafe"
  "fmt"
)

func setWallPaper(imgPath string) {
    dll := syscall.NewLazyDLL("user32.dll")
    proc := dll.NewProc("SystemParametersInfoW")
    ret, _, _ := proc.Call(20, 1,
        uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(imgPath))),
            0x1 | 0x2)
    fmt.Print(ret)
}

* 原生image库支持图像格式转换。支持bmp需要golang.org/x/image/bmp

Node

推荐调用其他语言编译结果。或写编写C++ addon。
* node的库node-ffi可以调用dll;库sharp可以处理图片,但不支持bmp。

C++

在微软官方网站给出的代码基础上修改:

#include <windows.h>
#include <iostream>
#pragma comment(lib, "user32.lib")    

int main()  
{     
    BOOL fResult;
    UINT* bmpPath = (UINT*)"D:\\Pictures\\wp.bmp"; 
    
    fResult = SystemParametersInfo(SPI_SETDESKWALLPAPER,
                                   1,
                                   bmpPath,
                                   SPIF_UPDATEINIFILE);
    std::cout << fResult;
    return 0;
}

C#

// 部分
[DllImport("user32.dll", EntryPoint = "SystemParametersInfoA")]
static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, string lpvparam, Int32 fuwinIni);

void fucntion SetWallpaper(imgPath) {
  int nResult;
  nResult = SystemParametersInfo(20, 1, bmpPath, 0x1 | 0x2);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,060评论 25 709
  • 遗留代码 其他人那儿得来的代码; 错综复杂,难以理清的结构,需要改变然而实际上又根本不能理解的代码; 没有编写相应...
    贾尼阅读 8,789评论 1 6
  • 朋友前几日给我介绍了一个她亲戚的亲戚家的孩子。 我们断断续续聊了几天,男生性格偏内向,不很健谈,中间有那么两天断了...
    范不烦阅读 4,140评论 0 0
  • 对于许多考生而言,“高考后如何填报志愿”是一个十分重要的问题,甚至可以说,这不仅仅是考生个人的事情,更是一个家庭的...
    夕阳西下牧人归阅读 3,652评论 0 0
  • 昨天写了两个小总结,攒了力气今天要写一个大总结,全年总结。不管愿不愿意,2016还是过去了,这一年,不容易!这一年...
    柳二白阅读 2,629评论 0 2

友情链接更多精彩内容