Windows更换壁纸脚本 获取必应壁纸 定时更换壁纸 c#调用.ps1脚本
想给电脑换上必应的每日壁纸,之前使用的是Bing Wallpaper软件,这个软件每日刷新只能更换为前一天的壁
纸,而且需要自启动更换壁纸,于是打算用定时计划powershell脚本完成这个工作。
1.解除PowerShell限制
.ps1文件类似.bat文件,是PowerShell写好的脚本文件。
在Windows系统中,默认情况下是不允许执行.ps1文件的。
PowerShell中执行如下命令
Set-ExecutionPolicy Unrestricted
执行完毕之后就能运行.ps1脚本了。
2.更换壁纸方法
function Set-Wallpaper($image) {$source = @"using System;using System.Runtime.InteropServices;public class Params{[DllImport("User32.dll",CharSet=CharSet.Unicode)]public static extern int SystemParametersInfo (Int32 uAction,Int32 uParam,String lpvParam,Int32 fuWinIni);}
"@Add-Type -TypeDefinition $source$SPI_SETDESKWALLPAPER = 0x0014$UpdateIniFile = 0x01$SendChangeEvent = 0x02$fWinIni = $UpdateIniFile -bor $SendChangeEvent$ret = [Params]::SystemParametersInfo($SPI_SETDESKWALLPAPER, 0, $Image, $fWinIni)
}
Set-WallPaper -image "壁纸路径"
将"壁纸路径"更换为要设置的壁纸路径,保存代码至.ps1文件执行即可更换壁纸
3.自动执行
使用计划任务可以自动执行脚本
打开 控制面板 - 系统和安全 - 管理工具 - 计划任务
打开后点击 创建基本任务
根据向导设置任务参数
其中启动程序中的程序或脚本设置为 powershell 添加参数(可选) 设置为刚刚保存好的.ps1文件
4.获取必应每日壁纸并设置
更改代码如下
function Save-BingTodayImage()
{#必应图片故事API$bingImageApi ='http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=zh-cn'$bingUri = 'http://www.bing.com/'# 获取图片链接[xml]$bingImageXml = (Invoke-WebRequest -Uri $bingImageApi).ContentWrite-Host " 今日图片故事: $( $bingImageXml.images.image.copyright ) "$imgLink = '{0}{1}' -f $bingUri , $bingImageXml.images.image.url# 下载和保存图片$imageDir = "$HOME\Pictures\Bing\"if( -not (Test-Path $imageDir) ){mkdir $imageDir | Out-Null}else{# 删除过期图片Remove-Item ${imageDir}*}$imageFile = Join-Path $imageDir ( '{0}.jpg' -f $bingImageXml.images.image.fullstartdate)Invoke-WebRequest -Uri $imgLink -OutFile $imageFilereturn $imageFile
}function Set-DesktopWallPaper($imagePath)
{Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value $imagePathRUNDLL32.EXE USER32.DLL UpdatePerUserSystemParameters ,1 ,True
}# 获取今日必应背景图片
$image=Save-BingTodayImage#设置为桌面墙纸
Set-DesktopWallPaper -imagePath $image
大功告成!
补充
按照以上方式执行定时计划时,每次都会弹出powershell窗口,查了很多方法也不能像类似pythonw.exe方式静默(不打开窗口)执行ps1脚本,于是想到之前写的c#调用Windows脚本的方法。
主要思路
使用c#中的process类调用powershell,将StartInfo.CreateNoWindow
设置为true
,即不打开窗口执行程序,亲测有效!
c#代码
新建c#控制台项目,为防止产生运行黑框,右键项目属性将输出类型设置为Windows应用程序
static void Main(string[] args)
{ExecutePowerShell();
}static void ExecutePowerShell()
{Process pro = new Process();pro.StartInfo.FileName = "powershell";pro.StartInfo.RedirectStandardInput = true;pro.StartInfo.UseShellExecute = false;pro.StartInfo.CreateNoWindow = true;string path = @""; //ps1脚本文件位置,自行修改pro.Start();pro.StandardInput.WriteLine(path);pro.StandardInput.WriteLine("exit"); //执行完退出powershellpro.StandardInput.AutoFlush = true;pro.WaitForExit();pro.Close();
}
代码写好后发布到文件夹。
修改任务计划参数
需管理员权限执行
修改运行程序,由于c#发布后是exe可执行文件,直接将要运行的程序改为发布的exe文件即可。
设置完成后每次执行任务时就不会弹出窗口了!
Windows更换壁纸脚本 获取必应壁纸 定时更换壁纸 c#调用.ps1脚本相关推荐
- Python桌面自定义---实现定时更换桌面壁纸
Python桌面自定义---实现定时更换桌面壁纸 1 效果 2 获取大量壁纸 3 Python代码实现定时更换壁纸 1 效果 大致效果如下,设置过定时更换壁纸的应该都知道是啥场景. 2 获取大量壁 ...
- bat脚本 获取copy命令结果
在Windows系统中,可以使用BAT脚本获取COPY命令的结果.可以在BAT脚本中使用以下语句来实现: for /f "tokens=*" %i in ('copy source ...
- linux脚本定时执行,Shell脚本实现每个工作日定时执行指定程序
我们可能会遇到这样的情景:必须在每个工作日定时执行 原理很简单,Shell脚本内部每隔1秒查询一次当前时间.日期以及星期数,当检测到当前星期数week非0或6(0代表星期天,6代表星期六)且时间cur ...
- Windows上PowerShell默认禁止运行 *.ps1 脚本原因与解决方法
一.问题描述 当调用express包中的".\build.ps1"脚本时,由于安全系统的设置,终端会阻止'.ps1'类型的脚本文件运行,导致指令无法执行 二.解决方法 1.以管理员 ...
- 在Java中动态传参调用Python脚本
最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...
- Java调用python脚本
Java调用python脚本 最近也是刚开始学python,所以这里写了一个简单的小方法用Java来调用python脚本.后期再进行更新. 1.Java启动程序的方法 在Java中提供了两种方法来启动 ...
- BIRT 调用 SPL 脚本
结构图如下: BIRT 中调用 SPL,首先需要将集算器 JDBC 集成到 BIRT 设计器中,简单来说就是,将加载集算器所需的 jar 包及配置文件放到 BRIT 对应目录中.需要注意的是,集算器 ...
- 【Groovy】闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )
文章目录 一.闭包中调用 Groovy 脚本中的方法 二.owner 与 delegate 区别 三.闭包中调用 Groovy 对象中的方法 一.闭包中调用 Groovy 脚本中的方法 在 Groov ...
- java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...
最新文章
- MySql5.7环境搭建
- 通过注册表修改VC6.0的字体【转】
- 销售自己使用过的小汽车纳多少增值税
- python -c带来的惊喜
- 整合axis2到web项目中
- 湖北省仙桃市2021年高考成绩查询,2021年4月湖北仙桃市自考成绩查询时间和有效期是多久?...
- c语言平面向量加法考点,平面向量的加减法怎么死活都不会?有没有什么口诀?例如:向量AB+BC=?向量OA-OB=?向量AB-CB=?有没有什么口诀!...
- 最长递增子序列LIS再谈
- C++ 抛出异常与传递参数的区别
- 【C++】对象作为函数参数【原创技术】
- 乌班图各版本镜像文件下载
- 视频教程-Xamarin技术讲座——初级篇-其他
- 【Python 3.7】熟食店:创建一个名为 sandwich_orders 的列表,在其中包含各种三明治的名 字;再创建一个名为 finished_sandwiches 的空列表……
- git 记住账号密码、忽略部分文件、合并分支、将远程分支拉取到本地
- 考研英语 - word-list-31
- Gram矩阵及其实际含义
- Unity安卓Android平台StreamingAssets下文件的读取
- 淘宝SEO定义、优化淘宝SEO的技巧,优化店铺,流量、排名不是问题
- adb无法连接上夜神模拟器夜神模拟器cannot connect to 127.0.0.1:62001: 由于目标计算机积极拒绝,无法连接。 (10061)
- python脚本一键抓考试资料网答案
热门文章
- Macbook matlab启动无响应问题解决方案
- c语言显示格式错误,C语言,输出里多空格,提交格式错误,怎么改下
- firefox 详细配置文件 及 密码解析
- Anaconda3最新版2022版网盘(云盘)免费,不限速
- ip地址转换数字函数 iton_c# – RabbitMQ CreateConneciton问题 – 在一个应用程序中运行,但在另一个应用程序中运行...
- 软件系统分析与设计指南--HOMEWORK1
- python:实现IIR 滤波器算法(附完整源码)
- Java精品项目源码第117期超市收银管理系统
- QThread、moveToThread用法详述
- 千月影视v21 2023年新版 前端+后端+h5 无授权运营级 仅供学习研究使用