【脚本】ahk更换壁纸

;~ 简介==========================
;~ 修改:醉里挑灯看剑
;~ 感谢:_悠然生活_自由
;~ 时间:2017年4月30日21:48:05
;~ [Wallpaper Changer]
; 初始化参数

#SingleInstance Force
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%


;~ ;以管理员身份运行(直接用就行了)
Loop, %0%
{
	param := %A_Index%
	params .= A_Space . param
}
ShellExecute := A_IsUnicode ? "shell32\ShellExecute":"shell32\ShellExecuteA"
if not A_IsAdmin
{
	if A_IsCompiled
		DllCall(ShellExecute, uint, 0, str, "RunAs", str, A_ScriptFullPath, str, params , str, A_WorkingDir, int, 1)
	else
		DllCall(ShellExecute, uint, 0, str, "RunAs", str, A_AhkPath, str, """" . A_ScriptFullPath . """" . A_Space . params, str, A_WorkingDir, int, 1)
	ExitApp
}

; 一些全局变量


IfNotExist,%A_ScriptDir%\wpchange.ini
{
	FileAppend,########作者:醉里挑灯看剑########`n########QQ:1432820184########,%A_ScriptDir%\wpchange.ini
}
IniFile = %A_ScriptDir%\wpchange.ini

TempWallpaper = %A_ScriptDir%\Wallpapers\currentwallpaper.jpg

IniRead, WallPaperFolder, %IniFile%, Settings, WPFolder, NOT_SET ;  从IniFile文件中读取设置
IfNotExist, %A_ScriptDir%\Wallpapers\
	FileCreateDir, %A_ScriptDir%\Wallpapers\
if WallPaperFolder = NOT_SET ; 如果不存在IniFile文件, 或者已经设置重置了
{
	FileSelectFolder, SetFolder, , 3 ; 显示壁纸的文件夹
	if SetFolder =
	{
		MsgBox, 你尚未选择壁纸文件夹,程序将退出.
		; 如果没有选择文件夹将无法执行相应的功能,如果用户没有选择文件夹,程序将退出。
		ExitApp
	}
	else
	{
		SetFolder := RegExReplace(SetFolder, "\\$")  ; 如果存在反斜线,则删除
		WallPaperFolder = %SetFolder%\ ; 为了实现我们的功能需要反斜线,但首先删除它消除了双反斜线的可能性
		IniWrite, %WallPaperFolder%, %IniFile%, Settings, WPFolder ; 将信息写入IniFile中,重启时就不需要再配置
		MsgBox 设置已经保存,如需重置,请在托盘处选择  "[重置文件夹]" 项或者直接删除[ %IniFile% ] 文件。`n`n您现在可以通过按“[Win+鼠标中键]”来切换壁纸,该程序将从您提供的文件夹中选择一个随机图像,并将其设置为墙纸。
	}
}

RefreshWPs()
{
	Global
	ArrayCount=0
	Loop, %WallPaperFolder%*.jpg ; 在壁纸文件夹下检查所有的jpg文件
	{
		ArrayCount+=1
		Array%ArrayCount% := A_LoopFileName ; 为这些文件创建一个数据
	}
}

ChangeWP()
{
	global
	Random, filenum, 1, %ArrayCount% ;这里设定了随机数,如果从这里入手,应该是可以改成顺序显示的。TrayTip的语句全部被我禁用了。之后再改。
	filecalled := Array%filenum% ;  任意选择一张图片作为新的壁纸
	TrayTip, 修改壁纸, 将"%WallPaperFolder%%filecalled%" 设置为壁纸,,1
	FileCopy, %WallPaperFolder%%filecalled%, %TempWallpaper%, 1 ; 复制文件到临时文件夹下
	if ErrorLevel = 1
	{
		MsgBox 当复制 %WallPaperFolder%%filecalled% 到临时文件夹 %TempWallpaper%  时,文件复制出错,请联系开发者!%FileCopyError%
	}

	RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, WallPaper, %WallPaperFolder%%filecalled%
	DllCall("SystemParametersInfo", UInt, 0x14, UInt, 0, Str, TempWallpaper, UInt, 2)
	Sleep, 500 ; 不能连续的更换壁纸太快.

	return
}

Menu,Tray,NoStandard ;取消自带的托盘
TrayTip, Wallpaper Changer,壁纸刷新中...,,1 ;TrayTip [, Title, Text, Seconds, Options]最后1表示“1: 信息图标”
RefreshWPs()
TrayTip, Wallpaper Changer,壁纸列表已经刷新! (发现 %ArrayCount% 张壁纸 ),1,1
Menu, TRAY, Add
Menu, TRAY, Add, 刷新壁纸, RefreshWallpapers
Menu, TRAY, Add, 改变壁纸, ChangeWallpaper
Menu, TRAY, Add
Menu, TRAY, Add, 重置文件夹, RstFolder
Menu,Tray,Add,退出脚本,do_Exit
return ; 结束自动编译会话

do_Exit:  ;执行退出脚本命令
ExitApp	;退出脚本

RefreshWallpapers:
	TrayTip, Wallpaper Changer,壁纸刷新中...,1,1 
RefreshWPs()
TrayTip, Wallpaper Changer,壁纸列表已经刷新! (发现 %ArrayCount% 张壁纸 ),1,1
	;~ MsgBox, 262208, 壁纸刷新中..., 壁纸列表已经刷新! (发现 %ArrayCount% 张壁纸 )
return

ChangeWallpaper:
	ChangeWP()
return

RstFolder:

	MsgBox, 64, 重置文件夹, 壁纸更换,重置文件夹设置需要程序重新启动。下次启动时您可以选择新文件夹。是否要重置设置并关闭应用程序?
	IfMsgBox Ok
	{
		IniWrite, NOT_SET, %IniFile%, Settings, WPFolder ; 设置WPFolder为"NOT_SET",下次启动时重新选择文件夹
		ExitApp
	}
	else
	{
		TrayTip, 设置取消,没有做任何更改!,,1
	}
return

!w::ChangeWP()

	; 调试的快捷键

^!Numpad0::MsgBox IsAdmin: %A_IsAdmin% - My Documents: %A_ScriptDir%\Wallpapers
^!Numpad1::ListVars
^!Numpad2::MsgBox Last Copy: "%WallPaperFolder%%filecalled%" to "%A_ScriptDir%\Wallpapers\currentwallpaper.jpg"
	f5::Reload

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他

影子系统电脑重新启动瞬间还原工具软件清单2019年11月7日 (草稿版)

2019-11-7 16:21:54

其他

【脚本】autohotkey抓抓工具

2019-11-9 9:24:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索