找回密码
 立即注册
首页 业界区 业界 使用Windows任务计划程序实现每天更换一张Processing创 ...

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

梁丘艷蕙 2025-6-4 22:25:03
Windows任务计划程序(Windows Task Scheduler)是Windows操作系统中的一项系统工具,它允许用户安排自动执行的任务。通过任务计划程序,用户可以设定特定的时间或条件来运行各种脚本、程序或任务,例如系统维护、数据备份、软件更新等。要实现每天能更换桌面壁纸,使用它是一个很好的选择。
具体想法:每次登陆Windows,可以被任务计划程序触发任务,自动执行更换桌面壁纸的批处理脚本,而该脚本获得指定目录下的由Processing设计并绘制的桌面壁纸,通过修改注册表信息,实现更换桌面壁纸。
首先

编写Processing程序。Processing 是一种灵活的语言,专为电子艺术、新媒体艺术和交互式媒体设计而设计的Java衍生语言。它由Casey Reas和Ben Fry在2001年创建,旨在简化代码编写,以及加快数字媒体艺术创作。Processing基于Java语言开发而来,但提供了更为简洁和直观的语法,使得艺术家、设计师和爱好者能够更容易地学习和使用。它有很多活跃的社团和论坛,大量的源码可供学习参考。我们使用它做一个简单例子------在画布上绘制渐变色,然后在画布中央写上当天的年月日。【作为示例,不必过多设计,此博文核心在于工具间的联合使用】
代码如下:
  1. public void settings() {
  2.   size(3200, 2000);  // 设置画布大小,参考桌面设置
  3.   //fullScreen();
  4.   println(width, height); // 方便调试,将画布大小打印出来
  5. }
  6. public void setup() {
  7.   // 如果想要替换系统默认字体,设置指定字体和文字大小
  8.   //textFont(createFont("Arial", 30));
  9.   
  10.   //文本居中
  11.   textAlign(CENTER, CENTER);
  12.   // 绘制内容
  13.   renderContent();
  14.   // 定义参数   保存的图片文件名,包含日期信息
  15.   String filename = "daily_art_" + year() + "_" + nf(month(), 2) + "_" + nf(day(), 2) + ".png";
  16.   // 保存当前帧
  17.   save(filename);
  18.   
  19.   // 自动退出程序
  20.   exit();
  21.   
  22. }
  23. // 可以不写draw循环函数
  24. public void draw() {
  25.   // 禁用循环
  26.   //noLoop();
  27.   // renderContent();
  28. }
  29. private void renderContent() {
  30.   background(255); // 设置初始背景颜色为白色
  31.   // 获取当前日期
  32.   int day = day();
  33.   int month = month();
  34.   int year = year();
  35.   String dateText = "Today is " + month + "/" + day + "/" + year;
  36.   // 根据日期调整渐变颜色
  37.   for (int i = 0; i < height; i++) {
  38.     // 计算颜色值
  39.     float r = map(i, 0, height, day * 1.5f, (day + month) * 2.5f);
  40.     float g = map(i, 0, height, month * 3.0f, (month + year) / 20.0f);
  41.     float b = map(i, 0, height, year % 100, (year * month) / 100.0f);
  42.     // 确保颜色值在 0 到 255 范围内
  43.     r = constrain(r, 0, 255);
  44.     g = constrain(g, 0, 255);
  45.     b = constrain(b, 0, 255);
  46.     // 绘制彩线 试图构成渐变
  47.     stroke(r, g, b);
  48.     line(0, i, width, i);
  49.   }
  50.   // 绘制动态文字
  51.   fill(255, 255, 255);
  52.   noStroke();
  53.   textSize(displayHeight / 30);
  54.   text(dateText, width / 2, height / 2);
  55. }
复制代码
执行程序,可得如下壁纸:
1.png

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

准备好批处理程序。在windows下脚本执行实现更换桌面壁纸,Dos、VBs、PowerShell都可以,这里使用Dos。
  1. @echo off                  REM 关闭回显,不显示后续命令
  2. setlocal                   REM 开始定义局部变量
  3. REM 获取系统当前日期和时间
  4. for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value ^| find "="') do (
  5.   set datetime=%%a         REM 将获取的日期时间值存储在变量datetime中
  6. )
  7. REM 提取日期时间的年、月、日部分
  8. set year=%datetime:~0,4%   REM 年份,取datetime的前4位
  9. set month=%datetime:~4,2%  REM 月份,取datetime的第5和第6位
  10. set day=%datetime:~6,2%    REM 日期,取datetime的第7和第8位
  11. REM 定义日期格式
  12. set mydate=%year%_%month%_%day%
  13. REM 定义图片路径
  14. set "image_path=D:\projects\processing\fxfromdate\daily_art_%mydate%.png"
  15. echo "%image_path%"         REM 打印图片路径
  16. REM 检查图片文件是否存在
  17. if not exist "%image_path%" (
  18.   echo 文件 "%image_path%" 不存在!
  19.   pause                    REM 暂停,等待用户响应
  20.   exit /b 1                REM 非零退出代码表示错误,退出脚本
  21. )
  22. REM 设置壁纸
  23. echo 设置壁纸...
  24. reg add "HKCU\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "%image_path%" /f
  25. if errorlevel 1 (
  26.   echo 注册表修改失败!
  27.   pause                    REM 暂停,等待用户响应
  28.   exit /b 1                REM 非零退出代码表示错误,退出脚本
  29. )
  30. REM 刷新桌面以应用壁纸更改
  31. echo 刷新桌面...
  32. RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
  33. echo 壁纸已设置为: "%image_path%" REM 打印已设置的壁纸路径
  34. endlocal                   REM 结束局部变量定义
  35. 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
      • 添加参数:  无


如下图:
2.png

这样的话一切准备完毕。
结尾

经过测试,可以顺利实现功能。这次实现,只是做个示例,至于创意壁纸如何“创意法”,就看个人的创造力和Processing功力了。
其实,好好利用Windows自带的任务计划程序,可以做好多有意思的事情。再接再厉吧~
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册