Windows任务计划程序(Windows Task Scheduler)是Windows操作系统中的一项系统工具,它允许用户安排自动执行的任务。通过任务计划程序,用户可以设定特定的时间或条件来运行各种脚本、程序或任务,例如系统维护、数据备份、软件更新等。要实现每天能更换桌面壁纸,使用它是一个很好的选择。

具体想法:每次登陆Windows,可以被任务计划程序触发任务,自动执行更换桌面壁纸的批处理脚本,而该脚本获得指定目录下的由Processing设计并绘制的桌面壁纸,通过修改注册表信息,实现更换桌面壁纸。


首先

编写Processing程序。Processing 是一种灵活的语言,专为电子艺术、新媒体艺术和交互式媒体设计而设计的Java衍生语言。它由Casey Reas和Ben Fry在2001年创建,旨在简化代码编写,以及加快数字媒体艺术创作。Processing基于Java语言开发而来,但提供了更为简洁和直观的语法,使得艺术家、设计师和爱好者能够更容易地学习和使用。它有很多活跃的社团和论坛,大量的源码可供学习参考。我们使用它做一个简单例子------在画布上绘制渐变色,然后在画布中央写上当天的年月日。【作为示例,不必过多设计,此博文核心在于工具间的联合使用】

代码如下:

public void settings() {
size(3200, 2000); // 设置画布大小,参考桌面设置
//fullScreen();
println(width, height); // 方便调试,将画布大小打印出来
} public void setup() {
// 如果想要替换系统默认字体,设置指定字体和文字大小
//textFont(createFont("Arial", 30)); //文本居中
textAlign(CENTER, CENTER); // 绘制内容
renderContent(); // 定义参数 保存的图片文件名,包含日期信息
String filename = "daily_art_" + year() + "_" + nf(month(), 2) + "_" + nf(day(), 2) + ".png"; // 保存当前帧
save(filename); // 自动退出程序
exit(); } // 可以不写draw循环函数 public void draw() {
// 禁用循环
//noLoop();
// renderContent();
} private void renderContent() {
background(255); // 设置初始背景颜色为白色 // 获取当前日期
int day = day();
int month = month();
int year = year();
String dateText = "Today is " + month + "/" + day + "/" + year; // 根据日期调整渐变颜色
for (int i = 0; i < height; i++) {
// 计算颜色值
float r = map(i, 0, height, day * 1.5f, (day + month) * 2.5f);
float g = map(i, 0, height, month * 3.0f, (month + year) / 20.0f);
float b = map(i, 0, height, year % 100, (year * month) / 100.0f); // 确保颜色值在 0 到 255 范围内
r = constrain(r, 0, 255);
g = constrain(g, 0, 255);
b = constrain(b, 0, 255); // 绘制彩线 试图构成渐变
stroke(r, g, b);
line(0, i, width, i);
} // 绘制动态文字
fill(255, 255, 255);
noStroke();
textSize(displayHeight / 30);
text(dateText, width / 2, height / 2);
}

执行程序,可得如下壁纸:

注意,代码中的 save(filename);。保存的图片会放置在该代码所在文件夹下。还有,因为不需要交互动画,所以,不用编写draw()循环函数,执行完steup()函数后,即可exit()退出。


其次

准备好批处理程序。在windows下脚本执行实现更换桌面壁纸,Dos、VBs、PowerShell都可以,这里使用Dos。

@echo off                  REM 关闭回显,不显示后续命令
setlocal REM 开始定义局部变量 REM 获取系统当前日期和时间
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value ^| find "="') do (
set datetime=%%a REM 将获取的日期时间值存储在变量datetime中
) REM 提取日期时间的年、月、日部分
set year=%datetime:~0,4% REM 年份,取datetime的前4位
set month=%datetime:~4,2% REM 月份,取datetime的第5和第6位
set day=%datetime:~6,2% REM 日期,取datetime的第7和第8位 REM 定义日期格式
set mydate=%year%_%month%_%day% REM 定义图片路径
set "image_path=D:\projects\processing\fxfromdate\daily_art_%mydate%.png"
echo "%image_path%" REM 打印图片路径 REM 检查图片文件是否存在
if not exist "%image_path%" (
echo 文件 "%image_path%" 不存在!
pause REM 暂停,等待用户响应
exit /b 1 REM 非零退出代码表示错误,退出脚本
) REM 设置壁纸
echo 设置壁纸...
reg add "HKCU\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "%image_path%" /f
if errorlevel 1 (
echo 注册表修改失败!
pause REM 暂停,等待用户响应
exit /b 1 REM 非零退出代码表示错误,退出脚本
) REM 刷新桌面以应用壁纸更改
echo 刷新桌面...
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters echo 壁纸已设置为: "%image_path%" REM 打印已设置的壁纸路径 endlocal REM 结束局部变量定义
timeout /t 1 /nobreak > nul REM 等待1秒,防止命令窗口立即关闭

脚本执行,自动读取图片,然后修改注册表配置,更换壁纸。


最后

打开【任务计划程序】,进行配置。

  • 打开任务计划程序,创建新任务。
  • 常规: 设置任务名称,例如 "每天修改壁纸"。 勾选 "使用最高权限运行"。
  • 触发器: 设置触发器为每天凌晨,例如凌晨 1 点。
  • 操作:
    • 操作 1:

      • 程序/脚本: D:\processing-4.3.2\processing-java.exe
      • 添加参数 (可选): --sketch=D:\projects\processing\fxfromdate --run
    • 操作 2:
      • 程序/脚本: D:\projects\processing\fxfromdate\changebg.bat
      • 添加参数:  无

如下图:

这样的话一切准备完毕。


结尾

经过测试,可以顺利实现功能。这次实现,只是做个示例,至于创意壁纸如何“创意法”,就看个人的创造力和Processing功力了。

其实,好好利用Windows自带的任务计划程序,可以做好多有意思的事情。再接再厉吧~

使用Windows任务计划程序实现每天更换一张Processing创意桌面壁纸的更多相关文章

  1. Windows任务计划程序起始于参数自动修改

    Windows任务计划程序建立后,手工运行可以成功,但计划任务自动运行却不能成功,搜索网络,原来是起始于参数没有配置,这个参数的英文名字是start-in.它保证任务计划程序的WorkingDirec ...

  2. 在WINDOWS任务计划程序下执行PHP文件 PHP定时功能的实现

    最近需要做一个定时任务功能,从网站找了很多相关的代码,windows实现方法综合起来大概就两种, 一.使用PHP ignore_user_abort 函数 即使关掉浏览器也能正常运行:(个人感觉PHP ...

  3. 使用Windows任务计划程序运行Windows PowerShell脚本

    创建计划任务以运行PowerShell脚本 我需要创建一个计划任务来运行Windows PowerShell脚本的第一件事是我将执行的命令行.找到这个的简单方法是使用Run 命令.有时,我需要知道什么 ...

  4. 使用Windows任务计划程序和Python备份Mysql数据库

    目标:每日定时自动备份Mysql数据库 方案: 1.安装Python: 使用的Python版本是Python3.7.1,下载地址:https://www.python.org/downloads/re ...

  5. 使用windows任务计划程序自动清除C盘缓存文件

    背景 由于应用程序会不断的产生各种临时文件和缓存文件,我们的C盘有时候不知不觉就被填满了,因此,配置一个自动清除缓存文件的脚本势在必行了. 功能 自动删除C盘的缓存和临时文件 隐藏执行时的CMD窗口 ...

  6. 用c#每日更换“必应背景图片”为“桌面壁纸”

    必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片. 下面用c#抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换 实现思路 1.通过获取&quo ...

  7. windows任务计划程序路径设置

    用任务计划启动程序,特别是脚本,比如我要启动python脚本,其中有一句是这么写的 BasePath = removeLastSlash(os.path.abspath("..\\..\\& ...

  8. 利用windows服务+timer或者windows任务计划程序+控制台进行进行每日邮件推送

    1.邮件发送代码 using System.Text; using System.Net; using System.Net.Mail; using System.Reflection; using ...

  9. windows任务计划程序 坑

  10. Windows任务计划创建计划,定时执行PowerShell命令

    [环境介绍] 操作系统:Windows Server 2012 R2,64位操作系统 PowerShell版本:PowerShell 1.0 脚本位置:C:\BackUp.ps1 启动目录:C:\Wi ...

随机推荐

  1. iOS录制屏幕

    iOS 录制屏幕 RPScreenRecorder 通过 RPScreenRecorder来录制屏幕 定义一个 RPScreenRecorder private var recorder: RPScr ...

  2. 两个 F# 的 MVVM

    fsprojects/Avalonia.FuncUI: Develop cross-plattform GUI Applications using F# and Avalonia! fabulous ...

  3. 强化学习:使用自动控制方法PID来解决强化学习问题中的cartpole问题(小车平衡杆问题)

    网上找到的一个实现: 地址: https://gist.github.com/HenryJia/23db12d61546054aa43f8dc587d9dc2c 稍微修改后的代码: import nu ...

  4. Linux安装JDK,解压报错:gzip: stdin: not in gzip format

    问题描述 在Linux安装JDK tar -zxvf 命令解压时,报错,无法解压 报错内容: gzip: stdin: not in gzip format tar: Child returned s ...

  5. 永久告别mac屏幕涂层脱落

    转载:https://www.feng.com/post/11380203 我从2011年开始使用Mac book pro电脑,到现在的2016款已经是第三台了,我从来都不会被涂层脱落这个问题困扰,我 ...

  6. Qt开发经验小技巧271-275

    编程的过程中经常遇到需要将QString转成char *或者const char *的情况,在转换成QByteArray后调用.data()或者.constData()函数进行转换,这里需要注意的是, ...

  7. Qt编写可视化大屏电子看板系统32-模块10大屏地图

    一.前言 大屏地图模块采用浏览器模块+echart组件,Qt自带了webkit或者webengine模块,其中在win上mingw编译器的Qt5.6以后的版本,没有了浏览器模块,这个就需要用第三方的浏 ...

  8. 即时通讯技术文集(第32期):IM开发综合技术合集(Part5) [共12篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第32 期. [- 1 -] IM开发干货分享:如何优雅的实现大量离线消息的可靠投递 [链接]  ...

  9. 昔日移动端IM明星 “米聊” 即将停止服务

    2021年1月19日,小米旗下米聊宣布,将于2021年2月19日12点停止米聊的服务. 1.以下消息来自米聊官网   2.关于米聊 米聊是小米科技出品的一款免费即时通讯工具,推出时间为:2010年12 ...

  10. session实现登录以及session与Cookie的关系

    基于session实现登录 发送短信验证码: public Result sendCode(String phone, HttpSession session) { // 1.校验手机号 if (Re ...