每日自动更新 bing 壁纸

本贴最后更新于 2221 天前,其中的信息可能已经时移世异

该脚本仅在 win10 下测试通过

<# .Synopsis 自动设置bing图片为桌面壁纸 .DESCRIPTION 添加计划任务,可每日自动更新并设置bing图片为壁纸,并且在图片下添加图片标题及版权文字 .EXAMPLE 必应每日壁纸.ps1 必应每日壁纸.ps1 [-Task] .INPUTS 到此 cmdlet 的输入(如果有) .OUTPUTS 来自此 cmdlet 的输出(如果有) .NOTES 一般注释 .COMPONENT 此 cmdlet 所属的组件 .ROLE 此 cmdlet 所属的角色 .FUNCTIONALITY 最准确描述此 cmdlet 的功能 #> [CmdletBinding(DefaultParameterSetName)] # 设置默认参数组为空 Param( [Parameter(ParameterSetName="Task")] [switch]$Task, [Parameter(DontShow,ParameterSetName="None")] [switch]$None ) if ($task) { $tem=Get-ScheduledTaskInfo -TaskName "每日自动更换bing壁纸" -ErrorAction SilentlyContinue -WarningAction SilentlyContinue if ($tem) { Write-Error -Message "该计划任务已经存在" } else { # 任务操作 程序 ,工作目录,参数 $A = New-ScheduledTaskAction -Execute "PowerShell" -WorkingDirectory "$($PSScriptRoot)" -Argument "$($Script:MyInvocation.InvocationName)" # 触发器 每天零点一秒 在六小时内随机 $T = New-ScheduledTaskTrigger -Daily -At 0:0:1 -RandomDelay 6:0:0 # 创建者 当前用户名 $P = New-ScheduledTaskPrincipal "$env:userdomain\$env:username" # 设置集 各种相关设置 $S = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -WakeToRun -Priority 4 -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -RunOnlyIfNetworkAvailable -MultipleInstances IgnoreNew -StartWhenAvailable -Compatibility win8 -ExecutionTimeLimit 0 -DisallowHardTerminate # 新任务 最后是任务描述 $D = New-ScheduledTask -Action $A -Principal $P -Trigger $T -Settings $S -Description "每日自动更新必应桌面壁纸" # 注册任务 Register-ScheduledTask -TaskName "每日自动更换bing壁纸" -InputObject $D } return } [uri]$binguri="https://cn.bing.com/HPImageArchive.aspx?format=js&n=1&pid=hp" $T="{0:yyyy.MM.dd`tHH:mm′ss″}" -f (Get-Date) function out ([string]$p) { Out-File -FilePath $PSScriptRoot\BingWallpaper.log -InputObject "$T`t$p" -Append } class bing:Hashtable{ [uri]$Uri hidden[uri]$DownUri [string]$Copyright hidden[string]$DownFile bing ([string]$uri){ [uri]$this.uri=$uri } bingImDo (){ $d=try{ Invoke-RestMethod @this }catch{ $_.Exception.Response } if ($d.images) { $this.DownUri="https://cn.bing.com"+$d.images.url $this.Copyright=$d.images.copyright.Replace(" (","`n(") $this.DownFile=$PSScriptRoot+"/"+$d.images.enddate+".jpg" $client = new-object System.Net.WebClient $client.DownloadFile( $this.DownUri ,$this.DownFile) }else{ out "错误码: $($d.StatusCode)($($d.StatusCode.value__))" } } } Add-Type -AssemblyName System.Drawing function Draw-WatemarkString() { param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [ValidatePattern("(.jpg)|(.png)|(.gif)$")] [io.fileinfo]$ImageFile, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$Text, [ValidateSet("NorthWest", "NorthEast", "SouthWest","SouthEast")] [string]$Location='SouthEast', [System.Drawing.Color]$Color= [System.Drawing.Color]::AntiqueWhite, [ValidateRange(1,[system.single]::MaxValue)] [float]$FontSize = 15, [string]$FontFamily='Microsoft YaHei', [ValidateRange(0,[system.single]::MaxValue)] [int]$margin = 45, [switch]$Bold, [Switch]$Italic, [switch]$Underline, [switch]$Strikeout ) # test image file exists if( -not (Test-Path $ImageFile) ) { throw "图片文件${ImageFile}不存在. " } # font style [drawing.fontstyle]$fontStyle= [drawing.fontstyle]::Regular ( ($Bold,[drawing.fontstyle]::Bold), ($Italic,[drawing.fontstyle]::Italic), ($Underline,[drawing.fontstyle]::Underline), ($Strikeout,[drawing.fontstyle]::Strikeout) ) | foreach { if($_[0]) { $fontStyle = $fontStyle -bxor $_[1] } } # graphics and brush $font = New-Object System.Drawing.Font($FontFamily, $FontSize,$fontStyle) $img = [drawing.image]::FromFile($ImageFile) $drawBrush = [drawing.solidbrush]$Color $g = [drawing.graphics]::FromImage($img) $textSize = $g.MeasureString($Text,$font).ToPointF() $pointF = New-Object System.Drawing.PointF <# # location switch ($Location) { 'NorthWest' { $pointF.X = $margin $pointF.Y = $margin } 'NorthEast' { $pointF.X = $img.Width - $margin - $textSize.X $pointF.Y = $margin } 'SouthWest' { $pointF.X = $margin $pointF.Y = $img.Height - $margin - $textSize.Y } 'SouthEast' {#> $pointF.X = $img.Width - $margin - $textSize.X $pointF.Y = $img.Height - $margin - $textSize.Y <# } }#> # draw string and save image to temporary file $g.DrawString($Text,$font,$drawBrush,$pointF) $tempImage = '{0}.jpg' -f $ImageFile $img.Save($tempImage) # dispose graphics, brush, image $g.Dispose() $drawBrush.Dispose() $img.Dispose() # copy temporary file to original source Copy-Item $tempImage $ImageFile -Force Remove-Item $tempImage } #完全看不懂,天书 # 注册定义的类 Add-Type @" using System; using System.Runtime.InteropServices; using Microsoft.Win32; namespace Wallpaper { public enum Style : int { Center, Stretch } public class Setter { public const int SetDesktopWallpaper = 20; public const int UpdateIniFile = 0x01; public const int SendWinIniChange = 0x02; [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni); public static void SetWallpaper ( string path) { SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange ); RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true); key.SetValue(@"WallpaperStyle", "10") ; key.SetValue(@"TileWallpaper", "0") ; key.Close(); } } } "@ $bin=[bing]::new($binguri) echo 获取图片 $bin.bingImDo() if ($bin.Count -lt 4) { Write-Warning "获取失败" return } $g=$T,$bin.Copyright -join "`n" Draw-WatemarkString -ImageFile $bin.DownFile -Text $g echo 应用新壁纸 [Wallpaper.Setter]::SetWallpaper( $bin.DownFile ) Remove-Item $bin.DownFile #删除壁纸文件 echo 完成! Start-Sleep -Seconds 3 #exit
  • 必应
    5 引用 • 19 回帖
  • 壁纸
    15 引用 • 79 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    299 引用 • 766 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 3 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 77 回帖
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 192 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 370 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 615 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 1 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 2 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 363 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 342 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    299 引用 • 766 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    268 引用 • 666 回帖 • 1 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 28 回帖 • 1 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    134 引用 • 1127 回帖 • 109 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1282 回帖 • 4 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 4 关注
  • gRpc
    11 引用 • 9 回帖 • 98 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 635 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 93 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    98 引用 • 903 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖 • 2 关注
  • RemNote
    2 引用 • 16 回帖 • 23 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 114 回帖 • 171 关注