c# 设置桌面壁纸: 只在win10 上测试了,不知道其它系统如何
c# 设置桌面壁纸:
只在win10 上测试了,不知道其它系统如何。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.IO;
using Microsoft.Win32; namespace Wallpaper
{
static class Window
{
[DllImport("user32.dll", EntryPoint = "SetParent")]
private static extern int SetParent(int hWndChild,int hWndNewParent);
[DllImport("user32.dll", EntryPoint = "FindWindowA")]
private static extern IntPtr FindWindowA(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "FindWindowExA")]
private static extern IntPtr FindWindowExA(IntPtr hWndParent, IntPtr hWndChildAfter, string lpszClass, string lpszWindow);
[DllImport("user32.dll", EntryPoint = "GetClassNameA")]
private static extern IntPtr GetClassNameA(IntPtr hWnd, IntPtr lpClassName, int nMaxCount);
[DllImport("user32.dll", EntryPoint = "GetParent")]
private static extern IntPtr GetParent(IntPtr hWnd); public static void SetFather(Form form)
{
SetParent((int)form.Handle, GetBackground());
} private static int GetBackground()
{
unsafe
{
IntPtr background = IntPtr.Zero;
IntPtr father = FindWindowA("progman", "Program Manager");
IntPtr workerW = IntPtr.Zero;
do
{
workerW = FindWindowExA(IntPtr.Zero, workerW, "workerW", null);
if (workerW != IntPtr.Zero)
{
char[] buff = new char[200];
IntPtr b = Marshal.UnsafeAddrOfPinnedArrayElement(buff, 0);
int ret = (int)GetClassNameA(workerW, b, 400);
if (ret == 0) throw new Exception("出错");
}
if (GetParent(workerW) == father)
{
background = workerW;
}
} while (workerW != IntPtr.Zero);
return (int)background;
}
} [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
public static extern int SystemParametersInfo(int uAction, int uParam, StringBuilder lpvParam, int fuWinIni); public static bool Refresh()
{
StringBuilder wallpaper = new StringBuilder(200);
SystemParametersInfo(0x73, 200, wallpaper, 0);
int ret = SystemParametersInfo(20, 1, wallpaper, 3);
if(ret != 0)
{
RegistryKey hk = Registry.CurrentUser;
RegistryKey run = hk.CreateSubKey(@"Control Panel\Desktop\");
run.SetValue("Wallpaper", wallpaper.ToString());
return true;
}
return false;
} }
}
c# 设置桌面壁纸: 只在win10 上测试了,不知道其它系统如何的更多相关文章
- UWP 设置桌面壁纸、锁屏图片
private static Uri imgUri = new Uri("ms-appx:///pic1.jpg"); private async void btnSetWallp ...
- VC++ 设置桌面壁纸
Windows Shell API提供了接口IActiveDesktop来完成墙纸的设置. //IActiveDesktop 接口方法表 (详情参见MSDN) AddDesktopItem AddDe ...
- sakura设置桌面壁纸
下下载steam上的Wallpaper Engine 先将sakura.html下载为html文件. 再从文件打开 就保存了 再加载保存,就一直是了
- c++ 设置桌面壁纸(win)
#include <iostream> #include <Windows.h> int main() { const char* path = "C:\\Users ...
- 【Win10应用开发】自定义桌面壁纸
调用通用的API来设置桌面壁纸,是一件既简单又有趣的事情,结合XAML可以生成图像的特性,你甚至可以做一个应用,让用户用他所拍的照片做成一张自定义壁纸,然后作为桌面壁纸. 这个API是通用的,应用运行 ...
- python爬虫-抓取acg12动漫壁纸排行设置为桌面壁纸
ACG-wallpaper 初学python,之前想抓取P站的一些图片来着,然后发现acg12这里有专门的壁纸榜单,就写了个抓取壁纸作为mac桌面壁纸玩玩. 功能:抓取acg12壁纸榜单的动漫壁纸,并 ...
- Windows 聚焦的锁屏壁纸设置为桌面壁纸
需求: Windows的锁屏壁纸偶尔遇到非常喜欢的壁纸,想设置为桌面壁纸. 步骤如下: 1. “Windows 聚焦”的锁屏壁纸都保存在隐藏文件夹 --- Assets里. a. 打开“资源管理器 b ...
- Delphi通过调用COM对象实现更改桌面壁纸
从前我也是用SystemParametersInfo这API来改桌面壁纸的,问题多多,也不知道哪错了,就没深究下去.看了CSDN的帖子后,大彻大悟~~ 在XP下,SystemParam ...
- Win10家庭版设置桌面右键更换桌面壁纸
Win10家庭版设置桌面右键更换桌面壁纸.. ------------------------- 这是设置之前的右键快捷菜单.. ------------------------- 开始设置:右键桌面 ...
- 【win10】win10下两个显示器不同桌面壁纸
win10系统下,双屏显示为不同的桌面壁纸 操作: 1.鼠标右键点击个性化 2.点击背景选项 3.在图片上右键选择要添加为背景的图片 同理,将另一个屏幕壁纸设为监视器1 最后效果为两个分屏为不同桌面壁 ...
随机推荐
- Power BI DAX 公式使用
一.日期类 1.计算两个日期之间的差值 使用函数:DateDiff(< start_date >,< end_date >.<间隔>) 例:合同终止天数 = DAT ...
- MySQL查询BLOB类型的字段
1.MySQL有四种BLOB类型: 1.TinyBlob 最大能容纳255B的数据 2.Blob 最大能容纳65KB的 3.MediumBlob 最大能容纳16MB的数据 4.LongBlob 最大能 ...
- 2.7 使用LiveCD从光盘直接运行Linux,无需安装
Linux 世界中一个相对较新的现象是可引导的 Linux CD 发行版的出现.它无需安装就可以看到 Linux 系统是什么样的. 多数现代 PC 都能从 CD 启动,而不是必须从标准硬盘启动.基于这 ...
- sprintboot-aop切面编程demo
AOP(面向切面编程)的核心概念是"切面". 切面是一个跨越多个对象的类,它封装了横切关注点的具体实现.通过定义切面,开发人员可以将通用功能从业务逻辑中分离出来,形成独立的模块.在 ...
- 嵌入式Linux系统构建
参考资料 本篇内容主要参考 韦东山的<嵌入式Linux应用开发完全手册V5.2_IMX6ULL_Pro开发板.pdf> 具体课程见 百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发 ...
- JS之Date时间处理
初始化当前时间: // 1. 使用构造函数方式 var newDate = new Date() // 2. 使用函数方式 var date = Date() // 返回的是一个Date对象 cons ...
- 在vue中使用XLSX导出表格
安装依赖 npm install file-saver xlsx -S 然后在需要的页面中引入依赖包 import FileSaver from 'file-saver'; import XLSX f ...
- Ubuntu默认启动到字符界面
修改/etc/default/grub sudo cp /etc/default/grub /etc/default/grub.bak sudo chmod 0777 /etc/default/gru ...
- ELSTICSEARCH 将数据从热节点转到冷节点
在ES查询时,有些数据是热点数据,这些数据是需要需要更好的机器配置的节点,当数据变得不是那么重要的时候,我们需要转到配置相对低的节点上. 比如热点新闻专题,我们需要更好的机器,热点过后,这些数据不再需 ...
- MySQL底层概述—10.InnoDB锁机制
大纲 1.锁概述 2.锁分类 3.锁实战之全局锁 4.锁实战之表级锁(偏读) 5.锁实战之行级锁(偏写)-行级锁升级表级锁 6.锁实战之行级锁(偏写)-间隙锁 7.锁实战之行级锁(偏写)-临键锁 8. ...