V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hzcxdgioa
V2EX  ›  Windows

win 中在右键可以直接设置 jpg 文件为桌面背景,有没有其命令行的方式直接调用它呢?

  •  
  •   hzcxdgioa · 2018-07-26 20:56:05 +08:00 via Android · 2289 次点击
    这是一个创建于 2305 天前的主题,其中的信息可能已经有所发展或是发生改变。
    win 自己可以直接设置 jpg 格式为背景,但是其他方式貌似只能 bmp 才行。

    win 自己的这个右键菜单能不能找到他的实现接口,然后从命令行调用。

    搜索了注册表中的键值,根本没看出什么端倪,
    3 条回复    2018-07-26 22:02:00 +08:00
    Osk
        2
    Osk  
       2018-07-26 22:01:00 +08:00
    Python 3.5+版本:

    保存成 python 脚本 调用函数即可,参数是图片文件的路径,可以传递相对路径。

    ```python
    def set_windows_desktop_wallpaper(fpath: str) -> bool:
    fpath = os.path.abspath(fpath)
    SPI = ctypes.windll.User32.SystemParametersInfoW
    SPI_SETDESKWALLPAPER = wintypes.UINT(0x0014)
    SPIF_UPDATEINIFILE = wintypes.UINT(0x0001)
    return SPI(SPI_SETDESKWALLPAPER, 0, fpath, SPIF_UPDATEINIFILE)
    ```



    C++版本,使用 vs 编译,使用方法: 命令行调用

    set_wp.exe C:\path\to\picture.jpg

    注意:似乎必须传递绝对路径哦。


    ```cpp
    /*
    VS 项目配置:
    不指定字符集, 默认使用 unicode 将导致程序异常
    建议:修改项目设置 VC++ 代码生成: /mt 静态链接

    */


    #include "stdafx.h"
    #include <Windows.h>
    #include<iostream>
    using namespace std;

    int main(int argc, char* argv[])
    {
    if (argc != 2)
    {
    return(1);
    }

    cout << argv[1];
    SystemParametersInfo(
    SPI_SETDESKWALLPAPER,
    0,
    argv[1],
    SPIF_UPDATEINIFILE
    );
    return 0;
    }

    ```
    Osk
        3
    Osk  
       2018-07-26 22:02:00 +08:00
    python 代码排版全部乱了,orz。反正就一个函数,代码缩进各位跟着感觉走吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2534 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.