软件介绍
1、随机打开,是一款AHK语言编写的软件,作用如软件名字一样,随机打开一个文件,这个文件可以是视频、图片、或者其它文件......软件免费且开源
2、编写这个软件的原因:某天,作者本人在学习时,面对文件夹上千个文件竟然犯了难,不知道该选哪个,忽发奇想,何不用软件随机打开一个呢?故动手写了一个软件......
3、更多功能还在开发中(学习中)
4、软件更新地址:https://www.cnblogs.com/chr2020/p/15171012.html
5、关于软件速度:有个朋友说使用随机打开每次都要十多秒,我自己实测机械硬盘目录中2.3万张图片,机械硬盘休眠状态的冷启动文件时间为4s左右,热启动每次为1.2s左右。
; By 有千山
#NoEnv ;不检查空变量是否为环境变量
#SingleInstance, Force ;新开程序替换旧实例
#Persistent ;让脚本持续运行(即直到用户关闭或遇到 ExitApp).
SetBatchLines, -1 ;让操作以最快速度进行
;强制设置工作路径为软件所在文件夹,否则使用快捷方式打开软件无法读取随同的配置文件
SetWorkingDir %A_ScriptDir%
if !FileExist(A_ScriptDir "\随机打开.ini") {
_=
(
[Section]
视频格式=mp4,avi,rmvb,flv,mpeg,wmv,mkv
图片格式=jpg,png,gif,webp
自定格式=
视频路径=
图片路径=
自定路径=
[Options]
关闭至托盘=1
打开文件无需确认=1
使用pic控件=1
PlayTime=2
MainX=254
MainY=347
FirstStartApp=0
)
FileAppend, %_%, %A_ScriptDir%\随机打开.ini
}
;变量
AppVersion := "随机打开V3.0"
Startuplnk := A_StartMenu . "\Programs\Startup\随机打开.lnk"
StartupTime := A_TickCount // 1000
LitePext := "jpg,png"
CutSize := 750
;声明全局变量,函数中使用
global box2, box3, box4, Play, file, maxfile, PlayTime
;启动执行段
if (StartupTime>60)
Gosub, 主界面
Gosub, 托盘菜单
gosub, Pic右键菜单
if FirstStartApp {
if(FileExist(Startuplnk))
FileCreateShortcut, % A_ScriptFullpath, % Startuplnk
IniWrite, 0, 随机打开.ini, Options, FirstStartApp
}
return
;GUi和Menu菜单部分
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
主界面:
MainView := 1
Gosub,读取配置
Gui, Main:Add, Button,x10 y10 w130 h40 g视频Button, 视频
Gui, Main:Add, Button,x10 y55 w130 h40 g图片Button v图片Button, 图片
Gui, Main:Add, Button,x10 y100 w130 h40 g自定格式Button, 自定格式
Gui, Main:Add, Button,x10 y145 w130 h40 g设置Button, 设置
;以下为设置View(默认隐藏)
Gui, Main:Add, GroupBox, x150 y10 w180 h140, 选项
;使用文件判断checkbox状态
if (FileExist(Startuplnk))
Gui, Main:Add, CheckBox, x165 y30 w130 h30 Checked1 gAutoStartBox1, 开机启动
else
Gui, Main:Add, CheckBox, x165 y30 w130 h30 Checked0 gAutoStartBox1, 开机启动
;使用配置文件和变量判断checkbox状态
Gui, Main:Add, CheckBox, x165 y55 w130 h30 Checked%box2% g关闭至托盘Box2, 关闭至托盘
Gui, Main:Add, CheckBox, x165 y80 w130 h30 Checked%box3% gAskOpenBox3, 打开文件无需确认
Gui, Main:Add, CheckBox, x165 y105 w130 h30 Checked%box4% g使用pic控件Box4, 使用pic控件看图
Gui, Main:Add, GroupBox, x10 y205 w600 h140, 默认路径
Gui, Main:Add, Text, x25 y230 w80 h30 +0x200, 视频路径:
Gui, Main:Add, Text, x25 y265 w80 h30 +0x200, 图片路径:
Gui, Main:Add, Text, x25 y300 w80 h30 +0x200, 自定路径:
Gui, Main:Add, Text, x90 y230 w380 h30 +0x200 vText1 ;视频路径显示
Gui, Main:Add, Text, x90 y265 w380 h30 +0x200 vText2 ;图片路径显示
Gui, Main:Add, Text, x90 y300 w380 h30 +0x200 vText3 ;自定路径显示
Gui, Main:Add, Button, x475 y230 w60 h30 g设置-视频路径选择, 选择
Gui, Main:Add, Button, x475 y265 w60 h30 g设置-图片路径选择, 选择
Gui, Main:Add, Button, x475 y300 w60 h30 g设置-自定路径选择, 选择
Gui, Main:Add, Button, x540 y230 w60 h30 g设置-视频路径清除, 清除
Gui, Main:Add, Button, x540 y265 w60 h30 g设置-图片路径清除, 清除
Gui, Main:Add, Button, x540 y300 w60 h30 g设置-自定路径清除, 清除
Gui, Main:Add, GroupBox, x10 y345 w600 h140, 格式
Gui, Main:Add, Text, x25 y370 w80 h30 +0x200, 视频格式:
Gui, Main:Add, Text, x25 y405 w80 h30 +0x200, 图片格式:
Gui, Main:Add, Text, x25 y440 w80 h30 +0x200, 自定格式:
Gui, Main:Add, Button, x540 y370 w60 h30 g设置-保存视频格式, 保存
Gui, Main:Add, Button, x540 y405 w60 h30 g设置-保存图片格式, 保存
Gui, Main:Add, Button, x540 y440 w60 h30 g设置-保存自定格式, 保存
Gui, Main:Add, Text, x15 y488 w400 h30 +0x200, 本软件免费且开源,如觉得好用欢迎分享,你的鼓励就是我的动力
Gui, Main:Font, s11, Segoe UI
Gui, Main:Add, Edit, x85 y371 w450 h50 r1 vEdit1
Gui, Main:Add, Edit, x85 y406 w450 h40 r1 vEdit2
Gui, Main:Add, Edit, x85 y441 w450 h40 r1 vEdit3
;加了WindowMove函数会导致Link无法点击跳转,故不启用
; Gui, Main:Add, Link, x520 y492 w80 h30 +0x200, <a href="https://www.cnblogs.com/chr2020/p/15171012.html">软件更新</a>
Gosub, 控件数据刷新
Gui, Main: -MaximizeBox -MinimizeBox +hWndhWnd
if FirstStartApp
Gui, Main:Show ,w150 h195, %AppVersion%
else
Gui, Main:Show ,x%MainX% y%MainY% w150 h195, %AppVersion%
OnMessage(0x201, "WindowMove")
return
托盘菜单:
Menu, Tray, NoStandard
Menu, Tray, Tip, %AppVersion%
Menu, tray, add, 打开主窗口, 托盘-打开主窗口
Menu, tray, add, 打开视频, 视频Button
Menu, tray, add, 打开图片, 图片Button
Menu, tray, add, 自定格式, 自定格式Button
Menu, tray, add
Menu, tray, add, 设置, 托盘-打开设置
Menu, tray, add, 关于, 托盘-About
Menu, tray, add, 退出, Exit
Menu, Tray, Click, 1
Menu, Tray, Default, 打开主窗口
return
pic控件:
Gui, PicView: New
; Gui, PicView: Color, F0F0F0
; Gui +LastFound
; WinSet, TransColor, F0F0F0
Gui, PicView: -Caption ; +hWndhWnd2
Gui, PicView: Add, Pic,x0 y0 vPicture
OnMessage(0x201, "WindowMove")
OnMessage(0x203, "SendPlay")
;OnMessage(0x20A, "SetShowSize")
return
Pic右键菜单:
Menu, RButtonMenu,add, 开始播放 , SendPlay , 1&
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 打开文件路径, 打开文件路径, 2&
Menu, RButtonMenu,add, 回到上一张, Pic_Prev, 3&
Menu, Submenu1, Add, 1, SetPlayTime
Menu, Submenu1, Add, 2, SetPlayTime
Menu, Submenu1, Add, 3, SetPlayTime
Menu, Submenu1, Add, 4, SetPlayTime
Menu, Submenu1, Add, 5, SetPlayTime
Menu, Submenu1, Add, 6, SetPlayTime
Menu, Submenu1, Add, 7, SetPlayTime
Menu, Submenu1, Add, 8, SetPlayTime
Menu, Submenu1, Add, 9, SetPlayTime
Menu, Submenu1, Add, 自定义, SetPlayTime
Menu, RButtonMenu, Add, 播放时间, :Submenu1
Menu, Submenu2, Add, 大, SetCutSize
Menu, Submenu2, Add, 中, SetCutSize
Menu, Submenu2, Add, 小, SetCutSize
Menu, Submenu2, Add
Menu, Submenu2, Add, 增大, SetCutSize
Menu, Submenu2, Add, 减小, SetCutSize
Menu, RButtonMenu, Add, 显示大小, :Submenu2
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 设置, 托盘-打开设置
Menu, RButtonMenu,add, 关于, 托盘-About
Menu, RButtonMenu,add, 关闭, PicViewGuiEscape
return
PicViewGuiContextMenu:
Menu, RButtonMenu, Show
return
;主界面Button控件部分
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
视频Button:
Gosub,读取配置
if Vpath
随机打开(Vext, Vpath)
else
路径选择(Vext, Vpath, "视频路径")
return
图片Button:
Gosub,读取配置
if !box4{
if Ppath
随机打开(Pext, Ppath)
else
路径选择(Pext, Ppath, "图片路径")
return
}
else {
PicView := !PicView
if PicView {
FileList := Clear
file := 0
Loop, parse, LitePext, `,
{
Loop Files, %Ppath%\*.%A_LoopField%, R
FileList .= A_LoopFilePath "`n"
}
Sort, FileList, Random
; MsgBox %FileList%
pic := StrSplit(FileList, "`n")
maxfile := pic.Length()-1
gosub, pic控件
SetTimer, ShowPic
GuiControl, Main:Text, 图片Button, 关闭Pic控件
}
else
gosub, PicViewGuiEscape
}
return
自定格式Button:
Gosub,读取配置
if !Uext
MsgBox 0, 提示, 未设置自定格式,请在设置中添加自定格式并保存
else
if Upath
随机打开(Uext, Upath)
else if !Upath
路径选择(Uext, Upath, "自定路径")
return
设置Button:
if (MainView == 1) {
Gui, Main: +MinimizeBox -MaximizeBox
Gui, Main: Show, w620 h520, %AppVersion%-设置
MainView := 2
WinGetPos, X, Y, W, H, A
if (X+W > A_ScreenWidth)
WinMove, (A_ScreenWidth-W)
if (Y+H > A_ScreenHeight)
WinMove, ,(A_ScreenHeight-H)
}
else {
Gui, Main: -MaximizeBox -MinimizeBox
Gui, Main: Show ,w150 h195, %AppVersion%
MainView := 1
}
return
设置-视频路径选择:
路径选择2( Vpath, "视频路径")
Gosub, 控件数据刷新
return
设置-图片路径选择:
路径选择2( Ppath, "图片路径")
Gosub, 控件数据刷新
return
设置-自定路径选择:
路径选择2( Upath, "自定路径")
Gosub, 控件数据刷新
return
设置-视频路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 视频路径
Gosub, 控件数据刷新
return
设置-图片路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 图片路径
Gosub, 控件数据刷新
return
设置-自定路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 自定路径
Gosub, 控件数据刷新
return
设置-保存视频格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit1%, 随机打开.ini, Section, 视频格式
TrayTip 提示, 格式已保存
return
设置-保存图片格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit2%, 随机打开.ini, Section, 图片格式
TrayTip 提示, 格式已保存
return
设置-保存自定格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit3%, 随机打开.ini, Section, 自定格式
TrayTip 提示, 格式已保存
return
;与PicView控件相关的动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
Pic适应屏幕:
strPic = % pic[file]
objImage := ComObjCreate("WIA.ImageFile")
objImage.LoadFile(strPic)
PicW := objImage.Width
PicH := objImage.Height
ShowWidth := A_ScreenWidth-CutSize
ShowHeight := A_ScreenHeight-CutSize
loop {
if (PicW>ShowWidth or PicH>ShowHeight) {
PicW *= 0.95
PicH *= 0.95
}
else
break
}
return
ShowPic:
if (PicView and !file) {
file := 1
gosub, Pic适应屏幕
Gui, PicView: Show, x0 y0 w%PicW% h%PicH%
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
if (PicView and Play and file<maxfile) {
Sleep PlayTime*1000
file ++
gosub, Pic适应屏幕
if Play {
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
}
if (file==maxfile) {
Play := 0
SetTimer, ShowPic, Off
TrayTip 提示, 全部图片都看完了, ,17
}
if (!PicView and !Play) {
SetTimer, ShowPic, Off
Gui, PicView: Destroy
}
return
SendPlay() {
if (file < maxfile) {
Play := !Play
if Play {
if (file==1)
TrayTip 提示, 开始以%PlayTime%秒的速度播放%maxfile%个文件, ,17
else if (file>1) {
Remain := maxfile-file
TrayTip 提示, 以%PlayTime%秒的速度继续播放,剩余%Remain%个文件, ,17
}
Menu, RButtonMenu, Rename, 1&, 暂停播放
}
else {
TrayTip 提示, 暂停播放, ,17
Menu, RButtonMenu, Rename, 1&, 继续播放
}
}
else
TrayTip 提示, 全部图片都看完了, ,17
}
Pic_Prev:
Play := 0
if (file>1) {
file --
gosub, Pic适应屏幕
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
else
TrayTip 提示, 当前为第一张哦, ,17
return
SetCutSize:
if (A_ThisMenuItem == "大")
CutSize := 750
else if (A_ThisMenuItem == "中")
CutSize := 1000
else if (A_ThisMenuItem == "小")
CutSize := 1250
else if (A_ThisMenuItem == "增大")
CutSize *= 0.9
else if (A_ThisMenuItem == "减小")
CutSize *= 1.1
if !Play {
gosub, Pic适应屏幕
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView:, Picture, % pic[file]
}
return
SetPlayTime:
if (A_ThisMenuItem == "自定义") {
if Play {
Play := 0
RePlay := 1
}
Gui, GetPlayTime: Destroy
MouseGetPos, GetX, GetY
Gui GetPlayTime:Add, Text, x8 y0 w136 h40 +0x200, 输入播放时间:(单位:秒)
Gui GetPlayTime:Font, s11, Segoe UI
Gui GetPlayTime:Add, Edit, x10 y35 w80 h30 center
Gui GetPlayTime:Add, UpDown, vPlayTime Range0-100
Gui GetPlayTime:Add, Button, x95 y35 w50 h30 g获取自定义时间, 确定
Gui GetPlayTime:-Caption AlwaysOnTop Border
Gui GetPlayTime:Show, x%GetX% y%GetY%
GuiControl, GetPlayTime:, PlayTime, %PlayTime%
}
else {
PlayTime := % A_ThisMenuItem
IniWrite, %PlayTime%, 随机打开.ini, Options, PlayTime
TrayTip 提示, 播放时间已调整为%PlayTime%秒, ,17
}
return
获取自定义时间:
Gui, GetPlayTime: Submit
Gui, GetPlayTime: Destroy
IniWrite, %PlayTime%, 随机打开.ini, Options, PlayTime
TrayTip 提示, 播放时间已调整为%PlayTime%秒, ,17
if RePlay
Play := 1
return
打开文件路径:
filepath := % pic[file]
RunWait, Explorer /select`, %filepath%
return
;Checkbox项目
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
AutoStartBox1:
if (FileExist(Startuplnk))
FileDelete, % Startuplnk
else
FileCreateShortcut, % A_ScriptFullpath, % Startuplnk
return
关闭至托盘Box2:
box2 := !box2
if box2
IniWrite, 1, 随机打开.ini, Options, 关闭至托盘
else
IniWrite, 0, 随机打开.ini, Options, 关闭至托盘
return
AskOpenBox3:
box3 := !box3
if box3
IniWrite, 1, 随机打开.ini, Options, 打开文件无需确认
else
IniWrite, 0, 随机打开.ini, Options, 打开文件无需确认
return
使用pic控件Box4:
box4 := !box4
if box4
IniWrite, 1, 随机打开.ini, Options, 使用pic控件
else {
IniWrite, 0, 随机打开.ini, Options, 使用pic控件
gosub, PicViewGuiEscape
}
return
;Gui关闭动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
MainGuiClose:
MainGuiEscape:
MainView := 0
WinGetPos, MainX, MainY, , , ahk_id %hWnd%
IniWrite, %MainX%, 随机打开.ini, Options, MainX
IniWrite, %MainY%, 随机打开.ini, Options, MainY
if box2
Gui, Main: Destroy
else
ExitApp
return
Exit:
ExitApp
return
PicViewGuiEscape:
Gui, GetPlayTime: Destroy
Play := 0
PicView := 0
SetTimer, ShowPic, Off
Gui, PicView: Destroy
TrayTip 提示, 退出Pic控件, ,17
GuiControl, Main:Text, 图片Button, 图片
return
;托盘相关动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
托盘-打开主窗口:
if (MainView < 1)
Gosub, 主界面
else
Gui, Main: Show
return
托盘-打开设置:
if (MainView < 1) {
Gosub, 主界面
Gui, Main: +MinimizeBox -MaximizeBox
Gui, Main: Show, w620 h520, %AppVersion%-设置
MainView := 2
}
else {
Gui, Main: Show, w620 h520, %AppVers1ion%-设置
MainView := 2
}
return
托盘-About:
Run https://www.cnblogs.com/chr2020/p/15171012.html
return
;读取ini配置文件和刷新控件
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
读取配置:
IniRead, FirstStartApp, 随机打开.ini, Options, FirstStartApp
IniRead, MainX, 随机打开.ini, Options, MainX
IniRead, MainY, 随机打开.ini, Options, MainY
IniRead, box2, 随机打开.ini, Options, 关闭至托盘
IniRead, box3, 随机打开.ini, Options, 打开文件无需确认
IniRead, box4, 随机打开.ini, Options, 使用pic控件
IniRead, PlayTime, 随机打开.ini, Options, PlayTime
IniRead, Vext, 随机打开.ini, Section, 视频格式
IniRead, Pext, 随机打开.ini, Section, 图片格式
IniRead, Uext, 随机打开.ini, Section, 自定格式
IniRead, Vpath, 随机打开.ini, Section, 视频路径
IniRead, Ppath, 随机打开.ini, Section, 图片路径
IniRead, Upath, 随机打开.ini, Section, 自定路径
return
控件数据刷新:
gosub, 读取配置
GuiControl, Main:, Text1, %Vpath%
GuiControl, Main:, Text2, %Ppath%
GuiControl, Main:, Text3, %Upath%
GuiControl, Main:, Edit1, %Vext%
GuiControl, Main:, Edit2, %Pext%
GuiControl, Main:, Edit3, %Uext%
return
;函数
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
路径选择(ext,path,vb){
FileSelectFolder, WhichFolder, ::{20d04fe0-3aea-1069-a2d8-08002b30309d},,选择路径
if ErrorLevel
return
else {
MsgBox 4, 提示, 是否保存为默认%vb%?
IfMsgBox Yes
IniWrite, %WhichFolder%, 随机打开.ini, Section, %vb%
Gosub, 控件数据刷新
随机打开(ext, WhichFolder)
}
}
路径选择2(path,vb){
FileSelectFolder, WhichFolder, ::{20d04fe0-3aea-1069-a2d8-08002b30309d},,选择路径
if ErrorLevel
return
else
IniWrite, %WhichFolder%, 随机打开.ini, Section, %vb%
}
随机打开(ext,path){
Loop, parse, ext, `,
{
Loop Files, %path%\*.%A_LoopField%, R
FileList .= A_LoopFilePath "`n"
}
Sort, FileList, Random
loop, Parse, FileList, `n
{
if !box3 {
MsgBox 4, 打开文件?,%A_LoopField%
IfMsgBox Yes
Run %A_LoopField%
}
else
Run %A_LoopField%
break
}
}
WindowMove(){
PostMessage, 0xA1, 2
}
; By 有千山
#NoEnv ;不检查空变量是否为环境变量
#SingleInstance, Force ;新开程序替换旧实例
#Persistent ;让脚本持续运行(即直到用户关闭或遇到 ExitApp).
SetBatchLines, -1 ;让操作以最快速度进行
;强制设置工作路径为软件所在文件夹,否则使用快捷方式打开软件无法读取随同的配置文件
SetWorkingDir %A_ScriptDir%
if !FileExist(A_ScriptDir "\随机打开.ini") {
_=
(
[Section]
视频格式=mp4,avi,rmvb,flv,mpeg,wmv,mkv
图片格式=jpg,png,gif,webp
自定格式=
视频路径=
图片路径=
自定路径=
[Options]
关闭至托盘=1
打开文件无需确认=1
使用pic控件=1
PlayTime=2
MainX=254
MainY=347
FirstStartApp=0
)
FileAppend, %_%, %A_ScriptDir%\随机打开.ini
}
;变量
AppVersion := "随机打开V3.0"
Startuplnk := A_StartMenu . "\Programs\Startup\随机打开.lnk"
StartupTime := A_TickCount // 1000
LitePext := "jpg,png"
CutSize := 750
;声明全局变量,函数中使用
global box2, box3, box4, Play, file, maxfile, PlayTime
;启动执行段
if (StartupTime>60)
Gosub, 主界面
Gosub, 托盘菜单
gosub, Pic右键菜单
if FirstStartApp {
if(FileExist(Startuplnk))
FileCreateShortcut, % A_ScriptFullpath, % Startuplnk
IniWrite, 0, 随机打开.ini, Options, FirstStartApp
}
return
;GUi和Menu菜单部分
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
主界面:
MainView := 1
Gosub,读取配置
Gui, Main:Add, Button,x10 y10 w130 h40 g视频Button, 视频
Gui, Main:Add, Button,x10 y55 w130 h40 g图片Button v图片Button, 图片
Gui, Main:Add, Button,x10 y100 w130 h40 g自定格式Button, 自定格式
Gui, Main:Add, Button,x10 y145 w130 h40 g设置Button, 设置
;以下为设置View(默认隐藏)
Gui, Main:Add, GroupBox, x150 y10 w180 h140, 选项
;使用文件判断checkbox状态
if (FileExist(Startuplnk))
Gui, Main:Add, CheckBox, x165 y30 w130 h30 Checked1 gAutoStartBox1, 开机启动
else
Gui, Main:Add, CheckBox, x165 y30 w130 h30 Checked0 gAutoStartBox1, 开机启动
;使用配置文件和变量判断checkbox状态
Gui, Main:Add, CheckBox, x165 y55 w130 h30 Checked%box2% g关闭至托盘Box2, 关闭至托盘
Gui, Main:Add, CheckBox, x165 y80 w130 h30 Checked%box3% gAskOpenBox3, 打开文件无需确认
Gui, Main:Add, CheckBox, x165 y105 w130 h30 Checked%box4% g使用pic控件Box4, 使用pic控件看图
Gui, Main:Add, GroupBox, x10 y205 w600 h140, 默认路径
Gui, Main:Add, Text, x25 y230 w80 h30 +0x200, 视频路径:
Gui, Main:Add, Text, x25 y265 w80 h30 +0x200, 图片路径:
Gui, Main:Add, Text, x25 y300 w80 h30 +0x200, 自定路径:
Gui, Main:Add, Text, x90 y230 w380 h30 +0x200 vText1 ;视频路径显示
Gui, Main:Add, Text, x90 y265 w380 h30 +0x200 vText2 ;图片路径显示
Gui, Main:Add, Text, x90 y300 w380 h30 +0x200 vText3 ;自定路径显示
Gui, Main:Add, Button, x475 y230 w60 h30 g设置-视频路径选择, 选择
Gui, Main:Add, Button, x475 y265 w60 h30 g设置-图片路径选择, 选择
Gui, Main:Add, Button, x475 y300 w60 h30 g设置-自定路径选择, 选择
Gui, Main:Add, Button, x540 y230 w60 h30 g设置-视频路径清除, 清除
Gui, Main:Add, Button, x540 y265 w60 h30 g设置-图片路径清除, 清除
Gui, Main:Add, Button, x540 y300 w60 h30 g设置-自定路径清除, 清除
Gui, Main:Add, GroupBox, x10 y345 w600 h140, 格式
Gui, Main:Add, Text, x25 y370 w80 h30 +0x200, 视频格式:
Gui, Main:Add, Text, x25 y405 w80 h30 +0x200, 图片格式:
Gui, Main:Add, Text, x25 y440 w80 h30 +0x200, 自定格式:
Gui, Main:Add, Button, x540 y370 w60 h30 g设置-保存视频格式, 保存
Gui, Main:Add, Button, x540 y405 w60 h30 g设置-保存图片格式, 保存
Gui, Main:Add, Button, x540 y440 w60 h30 g设置-保存自定格式, 保存
Gui, Main:Add, Text, x15 y488 w400 h30 +0x200, 本软件免费且开源,如觉得好用欢迎分享,你的鼓励就是我的动力
Gui, Main:Font, s11, Segoe UI
Gui, Main:Add, Edit, x85 y371 w450 h50 r1 vEdit1
Gui, Main:Add, Edit, x85 y406 w450 h40 r1 vEdit2
Gui, Main:Add, Edit, x85 y441 w450 h40 r1 vEdit3
;加了WindowMove函数会导致Link无法点击跳转,故不启用
; Gui, Main:Add, Link, x520 y492 w80 h30 +0x200, <a href="https://www.cnblogs.com/chr2020/p/15171012.html">软件更新</a>
Gosub, 控件数据刷新
Gui, Main: -MaximizeBox -MinimizeBox +hWndhWnd
if FirstStartApp
Gui, Main:Show ,w150 h195, %AppVersion%
else
Gui, Main:Show ,x%MainX% y%MainY% w150 h195, %AppVersion%
OnMessage(0x201, "WindowMove")
return
托盘菜单:
Menu, Tray, NoStandard
Menu, Tray, Tip, %AppVersion%
Menu, tray, add, 打开主窗口, 托盘-打开主窗口
Menu, tray, add, 打开视频, 视频Button
Menu, tray, add, 打开图片, 图片Button
Menu, tray, add, 自定格式, 自定格式Button
Menu, tray, add
Menu, tray, add, 设置, 托盘-打开设置
Menu, tray, add, 关于, 托盘-About
Menu, tray, add, 退出, Exit
Menu, Tray, Click, 1
Menu, Tray, Default, 打开主窗口
return
pic控件:
Gui, PicView: New
; Gui, PicView: Color, F0F0F0
; Gui +LastFound
; WinSet, TransColor, F0F0F0
Gui, PicView: -Caption ; +hWndhWnd2
Gui, PicView: Add, Pic,x0 y0 vPicture
OnMessage(0x201, "WindowMove")
OnMessage(0x203, "SendPlay")
;OnMessage(0x20A, "SetShowSize")
return
Pic右键菜单:
Menu, RButtonMenu,add, 开始播放 , SendPlay , 1&
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 打开文件路径, 打开文件路径, 2&
Menu, RButtonMenu,add, 回到上一张, Pic_Prev, 3&
Menu, Submenu1, Add, 1, SetPlayTime
Menu, Submenu1, Add, 2, SetPlayTime
Menu, Submenu1, Add, 3, SetPlayTime
Menu, Submenu1, Add, 4, SetPlayTime
Menu, Submenu1, Add, 5, SetPlayTime
Menu, Submenu1, Add, 6, SetPlayTime
Menu, Submenu1, Add, 7, SetPlayTime
Menu, Submenu1, Add, 8, SetPlayTime
Menu, Submenu1, Add, 9, SetPlayTime
Menu, Submenu1, Add, 自定义, SetPlayTime
Menu, RButtonMenu, Add, 播放时间, :Submenu1
Menu, Submenu2, Add, 大, SetCutSize
Menu, Submenu2, Add, 中, SetCutSize
Menu, Submenu2, Add, 小, SetCutSize
Menu, Submenu2, Add
Menu, Submenu2, Add, 增大, SetCutSize
Menu, Submenu2, Add, 减小, SetCutSize
Menu, RButtonMenu, Add, 显示大小, :Submenu2
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 设置, 托盘-打开设置
Menu, RButtonMenu,add, 关于, 托盘-About
Menu, RButtonMenu,add, 关闭, PicViewGuiEscape
return
PicViewGuiContextMenu:
Menu, RButtonMenu, Show
return
;主界面Button控件部分
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
视频Button:
Gosub,读取配置
if Vpath
随机打开(Vext, Vpath)
else
路径选择(Vext, Vpath, "视频路径")
return
图片Button:
Gosub,读取配置
if !box4{
if Ppath
随机打开(Pext, Ppath)
else
路径选择(Pext, Ppath, "图片路径")
return
}
else {
PicView := !PicView
if PicView {
FileList := Clear
file := 0
Loop, parse, LitePext, `,
{
Loop Files, %Ppath%\*.%A_LoopField%, R
FileList .= A_LoopFilePath "`n"
}
Sort, FileList, Random
; MsgBox %FileList%
pic := StrSplit(FileList, "`n")
maxfile := pic.Length()-1
gosub, pic控件
SetTimer, ShowPic
GuiControl, Main:Text, 图片Button, 关闭Pic控件
}
else
gosub, PicViewGuiEscape
}
return
自定格式Button:
Gosub,读取配置
if !Uext
MsgBox 0, 提示, 未设置自定格式,请在设置中添加自定格式并保存
else
if Upath
随机打开(Uext, Upath)
else if !Upath
路径选择(Uext, Upath, "自定路径")
return
设置Button:
if (MainView == 1) {
Gui, Main: +MinimizeBox -MaximizeBox
Gui, Main: Show, w620 h520, %AppVersion%-设置
MainView := 2
WinGetPos, X, Y, W, H, A
if (X+W > A_ScreenWidth)
WinMove, (A_ScreenWidth-W)
if (Y+H > A_ScreenHeight)
WinMove, ,(A_ScreenHeight-H)
}
else {
Gui, Main: -MaximizeBox -MinimizeBox
Gui, Main: Show ,w150 h195, %AppVersion%
MainView := 1
}
return
设置-视频路径选择:
路径选择2( Vpath, "视频路径")
Gosub, 控件数据刷新
return
设置-图片路径选择:
路径选择2( Ppath, "图片路径")
Gosub, 控件数据刷新
return
设置-自定路径选择:
路径选择2( Upath, "自定路径")
Gosub, 控件数据刷新
return
设置-视频路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 视频路径
Gosub, 控件数据刷新
return
设置-图片路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 图片路径
Gosub, 控件数据刷新
return
设置-自定路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 自定路径
Gosub, 控件数据刷新
return
设置-保存视频格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit1%, 随机打开.ini, Section, 视频格式
TrayTip 提示, 格式已保存
return
设置-保存图片格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit2%, 随机打开.ini, Section, 图片格式
TrayTip 提示, 格式已保存
return
设置-保存自定格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit3%, 随机打开.ini, Section, 自定格式
TrayTip 提示, 格式已保存
return
;与PicView控件相关的动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
Pic适应屏幕:
strPic = % pic[file]
objImage := ComObjCreate("WIA.ImageFile")
objImage.LoadFile(strPic)
PicW := objImage.Width
PicH := objImage.Height
ShowWidth := A_ScreenWidth-CutSize
ShowHeight := A_ScreenHeight-CutSize
loop {
if (PicW>ShowWidth or PicH>ShowHeight) {
PicW *= 0.95
PicH *= 0.95
}
else
break
}
return
ShowPic:
if (PicView and !file) {
file := 1
gosub, Pic适应屏幕
Gui, PicView: Show, x0 y0 w%PicW% h%PicH%
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
if (PicView and Play and file<maxfile) {
Sleep PlayTime*1000
file ++
gosub, Pic适应屏幕
if Play {
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
}
if (file==maxfile) {
Play := 0
SetTimer, ShowPic, Off
TrayTip 提示, 全部图片都看完了, ,17
}
if (!PicView and !Play) {
SetTimer, ShowPic, Off
Gui, PicView: Destroy
}
return
SendPlay() {
if (file < maxfile) {
Play := !Play
if Play {
if (file==1)
TrayTip 提示, 开始以%PlayTime%秒的速度播放%maxfile%个文件, ,17
else if (file>1) {
Remain := maxfile-file
TrayTip 提示, 以%PlayTime%秒的速度继续播放,剩余%Remain%个文件, ,17
}
Menu, RButtonMenu, Rename, 1&, 暂停播放
}
else {
TrayTip 提示, 暂停播放, ,17
Menu, RButtonMenu, Rename, 1&, 继续播放
}
}
else
TrayTip 提示, 全部图片都看完了, ,17
}
Pic_Prev:
Play := 0
if (file>1) {
file --
gosub, Pic适应屏幕
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
else
TrayTip 提示, 当前为第一张哦, ,17
return
SetCutSize:
if (A_ThisMenuItem == "大")
CutSize := 750
else if (A_ThisMenuItem == "中")
CutSize := 1000
else if (A_ThisMenuItem == "小")
CutSize := 1250
else if (A_ThisMenuItem == "增大")
CutSize *= 0.9
else if (A_ThisMenuItem == "减小")
CutSize *= 1.1
if !Play {
gosub, Pic适应屏幕
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView:, Picture, % pic[file]
}
return
SetPlayTime:
if (A_ThisMenuItem == "自定义") {
if Play {
Play := 0
RePlay := 1
}
Gui, GetPlayTime: Destroy
MouseGetPos, GetX, GetY
Gui GetPlayTime:Add, Text, x8 y0 w136 h40 +0x200, 输入播放时间:(单位:秒)
Gui GetPlayTime:Font, s11, Segoe UI
Gui GetPlayTime:Add, Edit, x10 y35 w80 h30 center
Gui GetPlayTime:Add, UpDown, vPlayTime Range0-100
Gui GetPlayTime:Add, Button, x95 y35 w50 h30 g获取自定义时间, 确定
Gui GetPlayTime:-Caption AlwaysOnTop Border
Gui GetPlayTime:Show, x%GetX% y%GetY%
GuiControl, GetPlayTime:, PlayTime, %PlayTime%
}
else {
PlayTime := % A_ThisMenuItem
IniWrite, %PlayTime%, 随机打开.ini, Options, PlayTime
TrayTip 提示, 播放时间已调整为%PlayTime%秒, ,17
}
return
获取自定义时间:
Gui, GetPlayTime: Submit
Gui, GetPlayTime: Destroy
IniWrite, %PlayTime%, 随机打开.ini, Options, PlayTime
TrayTip 提示, 播放时间已调整为%PlayTime%秒, ,17
if RePlay
Play := 1
return
打开文件路径:
filepath := % pic[file]
RunWait, Explorer /select`, %filepath%
return
;Checkbox项目
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
AutoStartBox1:
if (FileExist(Startuplnk))
FileDelete, % Startuplnk
else
FileCreateShortcut, % A_ScriptFullpath, % Startuplnk
return
关闭至托盘Box2:
box2 := !box2
if box2
IniWrite, 1, 随机打开.ini, Options, 关闭至托盘
else
IniWrite, 0, 随机打开.ini, Options, 关闭至托盘
return
AskOpenBox3:
box3 := !box3
if box3
IniWrite, 1, 随机打开.ini, Options, 打开文件无需确认
else
IniWrite, 0, 随机打开.ini, Options, 打开文件无需确认
return
使用pic控件Box4:
box4 := !box4
if box4
IniWrite, 1, 随机打开.ini, Options, 使用pic控件
else {
IniWrite, 0, 随机打开.ini, Options, 使用pic控件
gosub, PicViewGuiEscape
}
return
;Gui关闭动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
MainGuiClose:
MainGuiEscape:
MainView := 0
WinGetPos, MainX, MainY, , , ahk_id %hWnd%
IniWrite, %MainX%, 随机打开.ini, Options, MainX
IniWrite, %MainY%, 随机打开.ini, Options, MainY
if box2
Gui, Main: Destroy
else
ExitApp
return
Exit:
ExitApp
return
PicViewGuiEscape:
Gui, GetPlayTime: Destroy
Play := 0
PicView := 0
SetTimer, ShowPic, Off
Gui, PicView: Destroy
TrayTip 提示, 退出Pic控件, ,17
GuiControl, Main:Text, 图片Button, 图片
return
;托盘相关动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
托盘-打开主窗口:
if (MainView < 1)
Gosub, 主界面
else
Gui, Main: Show
return
托盘-打开设置:
if (MainView < 1) {
Gosub, 主界面
Gui, Main: +MinimizeBox -MaximizeBox
Gui, Main: Show, w620 h520, %AppVersion%-设置
MainView := 2
}
else {
Gui, Main: Show, w620 h520, %AppVers1ion%-设置
MainView := 2
}
return
托盘-About:
Run https://www.cnblogs.com/chr2020/p/15171012.html
return
;读取ini配置文件和刷新控件
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
读取配置:
IniRead, FirstStartApp, 随机打开.ini, Options, FirstStartApp
IniRead, MainX, 随机打开.ini, Options, MainX
IniRead, MainY, 随机打开.ini, Options, MainY
IniRead, box2, 随机打开.ini, Options, 关闭至托盘
IniRead, box3, 随机打开.ini, Options, 打开文件无需确认
IniRead, box4, 随机打开.ini, Options, 使用pic控件
IniRead, PlayTime, 随机打开.ini, Options, PlayTime
IniRead, Vext, 随机打开.ini, Section, 视频格式
IniRead, Pext, 随机打开.ini, Section, 图片格式
IniRead, Uext, 随机打开.ini, Section, 自定格式
IniRead, Vpath, 随机打开.ini, Section, 视频路径
IniRead, Ppath, 随机打开.ini, Section, 图片路径
IniRead, Upath, 随机打开.ini, Section, 自定路径
return
控件数据刷新:
gosub, 读取配置
GuiControl, Main:, Text1, %Vpath%
GuiControl, Main:, Text2, %Ppath%
GuiControl, Main:, Text3, %Upath%
GuiControl, Main:, Edit1, %Vext%
GuiControl, Main:, Edit2, %Pext%
GuiControl, Main:, Edit3, %Uext%
return
;函数
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
路径选择(ext,path,vb){
FileSelectFolder, WhichFolder, ::{20d04fe0-3aea-1069-a2d8-08002b30309d},,选择路径
if ErrorLevel
return
else {
MsgBox 4, 提示, 是否保存为默认%vb%?
IfMsgBox Yes
IniWrite, %WhichFolder%, 随机打开.ini, Section, %vb%
Gosub, 控件数据刷新
随机打开(ext, WhichFolder)
}
}
路径选择2(path,vb){
FileSelectFolder, WhichFolder, ::{20d04fe0-3aea-1069-a2d8-08002b30309d},,选择路径
if ErrorLevel
return
else
IniWrite, %WhichFolder%, 随机打开.ini, Section, %vb%
}
随机打开(ext,path){
Loop, parse, ext, `,
{
Loop Files, %path%\*.%A_LoopField%, R
FileList .= A_LoopFilePath "`n"
}
Sort, FileList, Random
loop, Parse, FileList, `n
{
if !box3 {
MsgBox 4, 打开文件?,%A_LoopField%
IfMsgBox Yes
Run %A_LoopField%
}
else
Run %A_LoopField%
break
}
}
WindowMove(){
PostMessage, 0xA1, 2
}
; By 有千山
#NoEnv ;不检查空变量是否为环境变量
#SingleInstance, Force ;新开程序替换旧实例
#Persistent ;让脚本持续运行(即直到用户关闭或遇到 ExitApp).
SetBatchLines, -1 ;让操作以最快速度进行
;强制设置工作路径为软件所在文件夹,否则使用快捷方式打开软件无法读取随同的配置文件
SetWorkingDir %A_ScriptDir%
if !FileExist(A_ScriptDir "\随机打开.ini") {
_=
(
[Section]
视频格式=mp4,avi,rmvb,flv,mpeg,wmv,mkv
图片格式=jpg,png,gif,webp
自定格式=
视频路径=
图片路径=
自定路径=
[Options]
关闭至托盘=1
打开文件无需确认=1
使用pic控件=1
PlayTime=2
MainX=254
MainY=347
FirstStartApp=0
)
FileAppend, %_%, %A_ScriptDir%\随机打开.ini
}
;变量
AppVersion := "随机打开V3.0"
Startuplnk := A_StartMenu . "\Programs\Startup\随机打开.lnk"
StartupTime := A_TickCount // 1000
LitePext := "jpg,png"
CutSize := 750
;声明全局变量,函数中使用
global box2, box3, box4, Play, file, maxfile, PlayTime
;启动执行段
if (StartupTime>60)
Gosub, 主界面
Gosub, 托盘菜单
gosub, Pic右键菜单
if FirstStartApp {
if(FileExist(Startuplnk))
FileCreateShortcut, % A_ScriptFullpath, % Startuplnk
IniWrite, 0, 随机打开.ini, Options, FirstStartApp
}
return
;GUi和Menu菜单部分
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
主界面:
MainView := 1
Gosub,读取配置
Gui, Main:Add, Button,x10 y10 w130 h40 g视频Button, 视频
Gui, Main:Add, Button,x10 y55 w130 h40 g图片Button v图片Button, 图片
Gui, Main:Add, Button,x10 y100 w130 h40 g自定格式Button, 自定格式
Gui, Main:Add, Button,x10 y145 w130 h40 g设置Button, 设置
;以下为设置View(默认隐藏)
Gui, Main:Add, GroupBox, x150 y10 w180 h140, 选项
;使用文件判断checkbox状态
if (FileExist(Startuplnk))
Gui, Main:Add, CheckBox, x165 y30 w130 h30 Checked1 gAutoStartBox1, 开机启动
else
Gui, Main:Add, CheckBox, x165 y30 w130 h30 Checked0 gAutoStartBox1, 开机启动
;使用配置文件和变量判断checkbox状态
Gui, Main:Add, CheckBox, x165 y55 w130 h30 Checked%box2% g关闭至托盘Box2, 关闭至托盘
Gui, Main:Add, CheckBox, x165 y80 w130 h30 Checked%box3% gAskOpenBox3, 打开文件无需确认
Gui, Main:Add, CheckBox, x165 y105 w130 h30 Checked%box4% g使用pic控件Box4, 使用pic控件看图
Gui, Main:Add, GroupBox, x10 y205 w600 h140, 默认路径
Gui, Main:Add, Text, x25 y230 w80 h30 +0x200, 视频路径:
Gui, Main:Add, Text, x25 y265 w80 h30 +0x200, 图片路径:
Gui, Main:Add, Text, x25 y300 w80 h30 +0x200, 自定路径:
Gui, Main:Add, Text, x90 y230 w380 h30 +0x200 vText1 ;视频路径显示
Gui, Main:Add, Text, x90 y265 w380 h30 +0x200 vText2 ;图片路径显示
Gui, Main:Add, Text, x90 y300 w380 h30 +0x200 vText3 ;自定路径显示
Gui, Main:Add, Button, x475 y230 w60 h30 g设置-视频路径选择, 选择
Gui, Main:Add, Button, x475 y265 w60 h30 g设置-图片路径选择, 选择
Gui, Main:Add, Button, x475 y300 w60 h30 g设置-自定路径选择, 选择
Gui, Main:Add, Button, x540 y230 w60 h30 g设置-视频路径清除, 清除
Gui, Main:Add, Button, x540 y265 w60 h30 g设置-图片路径清除, 清除
Gui, Main:Add, Button, x540 y300 w60 h30 g设置-自定路径清除, 清除
Gui, Main:Add, GroupBox, x10 y345 w600 h140, 格式
Gui, Main:Add, Text, x25 y370 w80 h30 +0x200, 视频格式:
Gui, Main:Add, Text, x25 y405 w80 h30 +0x200, 图片格式:
Gui, Main:Add, Text, x25 y440 w80 h30 +0x200, 自定格式:
Gui, Main:Add, Button, x540 y370 w60 h30 g设置-保存视频格式, 保存
Gui, Main:Add, Button, x540 y405 w60 h30 g设置-保存图片格式, 保存
Gui, Main:Add, Button, x540 y440 w60 h30 g设置-保存自定格式, 保存
Gui, Main:Add, Text, x15 y488 w400 h30 +0x200, 本软件免费且开源,如觉得好用欢迎分享,你的鼓励就是我的动力
Gui, Main:Font, s11, Segoe UI
Gui, Main:Add, Edit, x85 y371 w450 h50 r1 vEdit1
Gui, Main:Add, Edit, x85 y406 w450 h40 r1 vEdit2
Gui, Main:Add, Edit, x85 y441 w450 h40 r1 vEdit3
;加了WindowMove函数会导致Link无法点击跳转,故不启用
; Gui, Main:Add, Link, x520 y492 w80 h30 +0x200, <a href="https://www.cnblogs.com/chr2020/p/15171012.html">软件更新</a>
Gosub, 控件数据刷新
Gui, Main: -MaximizeBox -MinimizeBox +hWndhWnd
if FirstStartApp
Gui, Main:Show ,w150 h195, %AppVersion%
else
Gui, Main:Show ,x%MainX% y%MainY% w150 h195, %AppVersion%
OnMessage(0x201, "WindowMove")
return
托盘菜单:
Menu, Tray, NoStandard
Menu, Tray, Tip, %AppVersion%
Menu, tray, add, 打开主窗口, 托盘-打开主窗口
Menu, tray, add, 打开视频, 视频Button
Menu, tray, add, 打开图片, 图片Button
Menu, tray, add, 自定格式, 自定格式Button
Menu, tray, add
Menu, tray, add, 设置, 托盘-打开设置
Menu, tray, add, 关于, 托盘-About
Menu, tray, add, 退出, Exit
Menu, Tray, Click, 1
Menu, Tray, Default, 打开主窗口
return
pic控件:
Gui, PicView: New
; Gui, PicView: Color, F0F0F0
; Gui +LastFound
; WinSet, TransColor, F0F0F0
Gui, PicView: -Caption ; +hWndhWnd2
Gui, PicView: Add, Pic,x0 y0 vPicture
OnMessage(0x201, "WindowMove")
OnMessage(0x203, "SendPlay")
;OnMessage(0x20A, "SetShowSize")
return
Pic右键菜单:
Menu, RButtonMenu,add, 开始播放 , SendPlay , 1&
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 打开文件路径, 打开文件路径, 2&
Menu, RButtonMenu,add, 回到上一张, Pic_Prev, 3&
Menu, Submenu1, Add, 1, SetPlayTime
Menu, Submenu1, Add, 2, SetPlayTime
Menu, Submenu1, Add, 3, SetPlayTime
Menu, Submenu1, Add, 4, SetPlayTime
Menu, Submenu1, Add, 5, SetPlayTime
Menu, Submenu1, Add, 6, SetPlayTime
Menu, Submenu1, Add, 7, SetPlayTime
Menu, Submenu1, Add, 8, SetPlayTime
Menu, Submenu1, Add, 9, SetPlayTime
Menu, Submenu1, Add, 自定义, SetPlayTime
Menu, RButtonMenu, Add, 播放时间, :Submenu1
Menu, Submenu2, Add, 大, SetCutSize
Menu, Submenu2, Add, 中, SetCutSize
Menu, Submenu2, Add, 小, SetCutSize
Menu, Submenu2, Add
Menu, Submenu2, Add, 增大, SetCutSize
Menu, Submenu2, Add, 减小, SetCutSize
Menu, RButtonMenu, Add, 显示大小, :Submenu2
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 设置, 托盘-打开设置
Menu, RButtonMenu,add, 关于, 托盘-About
Menu, RButtonMenu,add, 关闭, PicViewGuiEscape
return
PicViewGuiContextMenu:
Menu, RButtonMenu, Show
return
;主界面Button控件部分
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
视频Button:
Gosub,读取配置
if Vpath
随机打开(Vext, Vpath)
else
路径选择(Vext, Vpath, "视频路径")
return
图片Button:
Gosub,读取配置
if !box4{
if Ppath
随机打开(Pext, Ppath)
else
路径选择(Pext, Ppath, "图片路径")
return
}
else {
PicView := !PicView
if PicView {
FileList := Clear
file := 0
Loop, parse, LitePext, `,
{
Loop Files, %Ppath%\*.%A_LoopField%, R
FileList .= A_LoopFilePath "`n"
}
Sort, FileList, Random
; MsgBox %FileList%
pic := StrSplit(FileList, "`n")
maxfile := pic.Length()-1
gosub, pic控件
SetTimer, ShowPic
GuiControl, Main:Text, 图片Button, 关闭Pic控件
}
else
gosub, PicViewGuiEscape
}
return
自定格式Button:
Gosub,读取配置
if !Uext
MsgBox 0, 提示, 未设置自定格式,请在设置中添加自定格式并保存
else
if Upath
随机打开(Uext, Upath)
else if !Upath
路径选择(Uext, Upath, "自定路径")
return
设置Button:
if (MainView == 1) {
Gui, Main: +MinimizeBox -MaximizeBox
Gui, Main: Show, w620 h520, %AppVersion%-设置
MainView := 2
WinGetPos, X, Y, W, H, A
if (X+W > A_ScreenWidth)
WinMove, (A_ScreenWidth-W)
if (Y+H > A_ScreenHeight)
WinMove, ,(A_ScreenHeight-H)
}
else {
Gui, Main: -MaximizeBox -MinimizeBox
Gui, Main: Show ,w150 h195, %AppVersion%
MainView := 1
}
return
设置-视频路径选择:
路径选择2( Vpath, "视频路径")
Gosub, 控件数据刷新
return
设置-图片路径选择:
路径选择2( Ppath, "图片路径")
Gosub, 控件数据刷新
return
设置-自定路径选择:
路径选择2( Upath, "自定路径")
Gosub, 控件数据刷新
return
设置-视频路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 视频路径
Gosub, 控件数据刷新
return
设置-图片路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 图片路径
Gosub, 控件数据刷新
return
设置-自定路径清除:
IniWrite, %clear% , 随机打开.ini, Section, 自定路径
Gosub, 控件数据刷新
return
设置-保存视频格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit1%, 随机打开.ini, Section, 视频格式
TrayTip 提示, 格式已保存
return
设置-保存图片格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit2%, 随机打开.ini, Section, 图片格式
TrayTip 提示, 格式已保存
return
设置-保存自定格式:
Gui, Main:Submit, NoHide
IniWrite, %Edit3%, 随机打开.ini, Section, 自定格式
TrayTip 提示, 格式已保存
return
;与PicView控件相关的动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
Pic适应屏幕:
strPic = % pic[file]
objImage := ComObjCreate("WIA.ImageFile")
objImage.LoadFile(strPic)
PicW := objImage.Width
PicH := objImage.Height
ShowWidth := A_ScreenWidth-CutSize
ShowHeight := A_ScreenHeight-CutSize
loop {
if (PicW>ShowWidth or PicH>ShowHeight) {
PicW *= 0.95
PicH *= 0.95
}
else
break
}
return
ShowPic:
if (PicView and !file) {
file := 1
gosub, Pic适应屏幕
Gui, PicView: Show, x0 y0 w%PicW% h%PicH%
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
if (PicView and Play and file<maxfile) {
Sleep PlayTime*1000
file ++
gosub, Pic适应屏幕
if Play {
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
}
if (file==maxfile) {
Play := 0
SetTimer, ShowPic, Off
TrayTip 提示, 全部图片都看完了, ,17
}
if (!PicView and !Play) {
SetTimer, ShowPic, Off
Gui, PicView: Destroy
}
return
SendPlay() {
if (file < maxfile) {
Play := !Play
if Play {
if (file==1)
TrayTip 提示, 开始以%PlayTime%秒的速度播放%maxfile%个文件, ,17
else if (file>1) {
Remain := maxfile-file
TrayTip 提示, 以%PlayTime%秒的速度继续播放,剩余%Remain%个文件, ,17
}
Menu, RButtonMenu, Rename, 1&, 暂停播放
}
else {
TrayTip 提示, 暂停播放, ,17
Menu, RButtonMenu, Rename, 1&, 继续播放
}
}
else
TrayTip 提示, 全部图片都看完了, ,17
}
Pic_Prev:
Play := 0
if (file>1) {
file --
gosub, Pic适应屏幕
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
GuiControl, PicView:, Picture, % pic[file]
}
else
TrayTip 提示, 当前为第一张哦, ,17
return
SetCutSize:
if (A_ThisMenuItem == "大")
CutSize := 750
else if (A_ThisMenuItem == "中")
CutSize := 1000
else if (A_ThisMenuItem == "小")
CutSize := 1250
else if (A_ThisMenuItem == "增大")
CutSize *= 0.9
else if (A_ThisMenuItem == "减小")
CutSize *= 1.1
if !Play {
gosub, Pic适应屏幕
GuiControl, PicView: Move, Picture, w%PicW% h%PicH%
Gui, PicView: Show, w%PicW% h%PicH% NA
GuiControl, PicView:, Picture, % pic[file]
}
return
SetPlayTime:
if (A_ThisMenuItem == "自定义") {
if Play {
Play := 0
RePlay := 1
}
Gui, GetPlayTime: Destroy
MouseGetPos, GetX, GetY
Gui GetPlayTime:Add, Text, x8 y0 w136 h40 +0x200, 输入播放时间:(单位:秒)
Gui GetPlayTime:Font, s11, Segoe UI
Gui GetPlayTime:Add, Edit, x10 y35 w80 h30 center
Gui GetPlayTime:Add, UpDown, vPlayTime Range0-100
Gui GetPlayTime:Add, Button, x95 y35 w50 h30 g获取自定义时间, 确定
Gui GetPlayTime:-Caption AlwaysOnTop Border
Gui GetPlayTime:Show, x%GetX% y%GetY%
GuiControl, GetPlayTime:, PlayTime, %PlayTime%
}
else {
PlayTime := % A_ThisMenuItem
IniWrite, %PlayTime%, 随机打开.ini, Options, PlayTime
TrayTip 提示, 播放时间已调整为%PlayTime%秒, ,17
}
return
获取自定义时间:
Gui, GetPlayTime: Submit
Gui, GetPlayTime: Destroy
IniWrite, %PlayTime%, 随机打开.ini, Options, PlayTime
TrayTip 提示, 播放时间已调整为%PlayTime%秒, ,17
if RePlay
Play := 1
return
打开文件路径:
filepath := % pic[file]
RunWait, Explorer /select`, %filepath%
return
;Checkbox项目
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
AutoStartBox1:
if (FileExist(Startuplnk))
FileDelete, % Startuplnk
else
FileCreateShortcut, % A_ScriptFullpath, % Startuplnk
return
关闭至托盘Box2:
box2 := !box2
if box2
IniWrite, 1, 随机打开.ini, Options, 关闭至托盘
else
IniWrite, 0, 随机打开.ini, Options, 关闭至托盘
return
AskOpenBox3:
box3 := !box3
if box3
IniWrite, 1, 随机打开.ini, Options, 打开文件无需确认
else
IniWrite, 0, 随机打开.ini, Options, 打开文件无需确认
return
使用pic控件Box4:
box4 := !box4
if box4
IniWrite, 1, 随机打开.ini, Options, 使用pic控件
else {
IniWrite, 0, 随机打开.ini, Options, 使用pic控件
gosub, PicViewGuiEscape
}
return
;Gui关闭动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
MainGuiClose:
MainGuiEscape:
MainView := 0
WinGetPos, MainX, MainY, , , ahk_id %hWnd%
IniWrite, %MainX%, 随机打开.ini, Options, MainX
IniWrite, %MainY%, 随机打开.ini, Options, MainY
if box2
Gui, Main: Destroy
else
ExitApp
return
Exit:
ExitApp
return
PicViewGuiEscape:
Gui, GetPlayTime: Destroy
Play := 0
PicView := 0
SetTimer, ShowPic, Off
Gui, PicView: Destroy
TrayTip 提示, 退出Pic控件, ,17
GuiControl, Main:Text, 图片Button, 图片
return
;托盘相关动作
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
托盘-打开主窗口:
if (MainView < 1)
Gosub, 主界面
else
Gui, Main: Show
return
托盘-打开设置:
if (MainView < 1) {
Gosub, 主界面
Gui, Main: +MinimizeBox -MaximizeBox
Gui, Main: Show, w620 h520, %AppVersion%-设置
MainView := 2
}
else {
Gui, Main: Show, w620 h520, %AppVers1ion%-设置
MainView := 2
}
return
托盘-About:
Run https://www.cnblogs.com/chr2020/p/15171012.html
return
;读取ini配置文件和刷新控件
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
读取配置:
IniRead, FirstStartApp, 随机打开.ini, Options, FirstStartApp
IniRead, MainX, 随机打开.ini, Options, MainX
IniRead, MainY, 随机打开.ini, Options, MainY
IniRead, box2, 随机打开.ini, Options, 关闭至托盘
IniRead, box3, 随机打开.ini, Options, 打开文件无需确认
IniRead, box4, 随机打开.ini, Options, 使用pic控件
IniRead, PlayTime, 随机打开.ini, Options, PlayTime
IniRead, Vext, 随机打开.ini, Section, 视频格式
IniRead, Pext, 随机打开.ini, Section, 图片格式
IniRead, Uext, 随机打开.ini, Section, 自定格式
IniRead, Vpath, 随机打开.ini, Section, 视频路径
IniRead, Ppath, 随机打开.ini, Section, 图片路径
IniRead, Upath, 随机打开.ini, Section, 自定路径
return
控件数据刷新:
gosub, 读取配置
GuiControl, Main:, Text1, %Vpath%
GuiControl, Main:, Text2, %Ppath%
GuiControl, Main:, Text3, %Upath%
GuiControl, Main:, Edit1, %Vext%
GuiControl, Main:, Edit2, %Pext%
GuiControl, Main:, Edit3, %Uext%
return
;函数
;*****************************************************************************
;*****************************************************************************
;*****************************************************************************
路径选择(ext,path,vb){
FileSelectFolder, WhichFolder, ::{20d04fe0-3aea-1069-a2d8-08002b30309d},,选择路径
if ErrorLevel
return
else {
MsgBox 4, 提示, 是否保存为默认%vb%?
IfMsgBox Yes
IniWrite, %WhichFolder%, 随机打开.ini, Section, %vb%
Gosub, 控件数据刷新
随机打开(ext, WhichFolder)
}
}
路径选择2(path,vb){
FileSelectFolder, WhichFolder, ::{20d04fe0-3aea-1069-a2d8-08002b30309d},,选择路径
if ErrorLevel
return
else
IniWrite, %WhichFolder%, 随机打开.ini, Section, %vb%
}
随机打开(ext,path){
Loop, parse, ext, `,
{
Loop Files, %path%\*.%A_LoopField%, R
FileList .= A_LoopFilePath "`n"
}
Sort, FileList, Random
loop, Parse, FileList, `n
{
if !box3 {
MsgBox 4, 打开文件?,%A_LoopField%
IfMsgBox Yes
Run %A_LoopField%
}
else
Run %A_LoopField%
break
}
}
WindowMove(){
PostMessage, 0xA1, 2
}
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)