用ARM实现音乐电子相册,使用代码修改Windows系统壁纸的方法

总得是力所能致修改和及时刷新,看见效果的方法。所以不选择修改注册表的法子,而是直接调用系统dll方法。关键办法为user32.dll的SystemParametersInfo。(在Windows7下测量试验通过)

除此以外,所有办法均须要图片为bmp格式。不然要求先转移获得bmp格式的图片。

(近年来在做嵌入式的课程设计,特将学习心得整理如下)

import win32guidef setWallpaper: win32gui.SystemParametersInfo(20, imgPath, 3)

一、开采工具及条件介绍

* 推荐应用pillow库实行图像格式调换。

1、ARM处理器

ARM管理器是贰个叁十五个人元精简指令集(中华VISC)处理器架构,其大面积地利用在重重嵌入式系统规划。

ARM管理器特点:

  1. 体积小、低功耗、低成本、高性能;
  2. 支撑Thumb(十五个人)/ARM(叁拾玖个人)双指令集,能很好的卓绝8位/拾伍位器件;
  3. 恢宏施用贮存器,指令实行进程更加快;
  4. 超越四分之二多少操作都在寄放器中做到;
  5. 寻址方式灵活轻松,试行成效高;
  6. 命令长度固定。
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), 0x1 | 0x2) fmt.Print}

2、交叉编写翻译情形

* 原生image库扶助图像格式调换。帮衬bmp要求golang.org/x/image/bmp

2.1、交叉编写翻译

交叉编写翻译(cross-compilation)是指在有个别主机平台上(比方PC上)用交叉编写翻译器编写翻译出可在其余平台上(比方ARM上)运转的代码的经过。嵌入式软件开垦须要交叉开垦条件,那是其开荒的一鲜明特点,交叉编写翻译器只是交叉开拓条件的一片段,我们说的穿插开辟情状是指编写翻译、链接和调解嵌入式应用程式的条件,它与运作嵌入式应用程式的条件有所分裂,常选拔宿主机—-指标机情势。

推介调用其余语言编译结果。或写编写C++ addon。*
node的库node-ffi能够调用dll;库sharp能够管理图片,但不支持bmp。

2.2、关于交叉工具链:

它是穿插编译遭遇所需工具的集结体,是所需软件(binuntials、gcc与glibc等)的安装载体,重要总结:交叉编写翻译器(arm-linux-gcc)、交叉汇编器(arm-linux-as)、交叉链接器(arm-linux-ld)、各个操作所依赖的库及用于拍卖可实行程序和库的一部分中央工具(如arm-linux-strip)。

在微软官网给出的代码基础上更改:

2.3硬件开垦条件

支出条件:显卡:英特尔(Sportage) 82865G Graphics Controller(必需扶助svga) 

荧屏分辨率:1024*768像素。

颜色品质:最高(叁十六位)。

DPI设置:正常尺寸(96 DPI)。

显卡形式:1024*768,真彩色(32位),85赫兹。

嵌入式,三十四人计算机,256m内存,320*240的荧屏分辨率。

 

#include <windows.h>#include <iostream>#pragma comment(lib, "user32.lib") int main() { BOOL fResult; UINT* bmpPath = "D:\Pictures\wp.bmp"; fResult = SystemParametersInfo(SPI_SETDESKWALLPAPER, 1, bmpPath, SPIF_UPDATEINIFILE); std::cout << fResult; return 0;}

// 部分[DllImport("user32.dll", EntryPoint = "SystemParametersInfoA")]static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, string lpvparam, Int32 fuwinIni);void fucntion SetWallpaper { int nResult; nResult = SystemParametersInfo(20, 1, bmpPath, 0x1 | 0x2);}

二、设计流程

发表评论

电子邮件地址不会被公开。 必填项已用*标注