windows自动化很难啊
想要做一个每天自动定时睡眠,早上唤醒,然后播放电脑里的有声小说的功能查了AHK,单单唤醒功能就要那么长的代码,劝退
然后又看了win自带的任务计划程序,也难用的要死,win真是功能好弱
; AHK wake-up-timer
; scheduler provides some of the functions of Window's Task Scheduler or the command line tool "schtasks" as an AHK-script.
; Unlike Windows' Scheduled Tasks this function works with accounts without passwords
;
; Author: boskoop (http://http://www.autohotkey.com/board/topic/10587-wake-up-timer-scheduler-function)
; CONFIGURATION
Year=2006
Month=8 ;1-12
Day=30 ;1-31
Hour=21 ;0-23
Minute=16 ;1-59
Hibernate=0 ;0, 1, 2
Resume=1 ;0,1
Name=%A_Now%
; AUTOEXECUTE
WakeUp(Year, Month, Day, Hour, Minute, Hibernate, Resume, Name)
msgbox, I'm awake and working!
; FUNCTIONS
WakeUp(Year, Month, Day, Hour, Minute, Hibernate, Resume, Name)
;Awaits duetime, then returns to the caller (like some sort of "sleep until duetime").
;If the computer is in hibernate or suspend mode
;at duetime, it will be reactivated (hardware support provided)
;Parameters: Year, Month, Day, Hour, Minute together produce duetime
;Hibernate: If Hibernate=1, the function hibernates the computer. If Hibernate=2 the computer is set to
; suspend-mode
;Resume: If Resume=1, the system is restored from power save mode at due time
;Name: Arbitrary name for the timer
{
duetime:=GetUTCFileTime(Year, Month, Day, Hour, Minute)
Handle:=DLLCall("CreateWaitableTimer"
,"char *", 0
,"Int",0
,"Str",name, "UInt")
DLLCall("CancelWaitableTimer","UInt",handle)
DLLCall("SetWaitableTimer"
,"Uint", handle
,"Int64*", duetime ;duetime must be in UTC-file-time format!
,"Int", 1000
,"uint",0
,"uint",0
,"int",resume)
;Hibernates the computer, depending on variable "Hibernate":
If Hibernate=1 ;Hibernate
{
DllCall("PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0)
}
If Hibernate=2 ;Suspend
{
DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
}
Signal:=DLLCall("WaitForSingleObject"
,"Uint", handle
,"Uint",-1)
DllCall("CloseHandle", uint, Handle) ;Closes the handle
}
GetUTCFiletime(Year, Month, Day, Hour, Min)
;Converts "System Time" (readable time format) to "UTC File Time" (number of 100-nanosecond intervals since January 1, 1601 inCoordinated Universal Time UTC)
{
DayOfWeek=0
Second=00
Millisecond=00
;Converts System Time to Local File Time:
VarSetCapacity(MyFiletime, 64, 0)
VarSetCapacity(MySystemtime, 32, 0)
InsertInteger(Year, MySystemtime,0)
InsertInteger(Month, MySystemtime,2)
InsertInteger(DayOfWeek,MySystemtime,4)
InsertInteger(Day, MySystemtime,6)
InsertInteger(Hour, MySystemtime,8)
InsertInteger(Min, MySystemtime,10)
InsertInteger(Second, MySystemtime,12)
InsertInteger(Millisecond,MySystemtime,14)
DllCall("SystemTimeToFileTime", Str, MySystemtime, UInt, &MyFiletime)
LocalFiletime := ExtractInteger(MyFiletime, 0, false, 8)
;Converts local file time to a file time based on the Coordinated Universal Time (UTC):
VarSetCapacity(MyUTCFiletime, 64, 0)
DllCall("LocalFileTimeToFileTime", Str, MyFiletime, UInt, &MyUTCFiletime)
UTCFiletime := ExtractInteger(MyUTCFiletime, 0, false, 8)
Return UTCFileTime
}
ExtractInteger(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 32)
; Documented in Autohotkey Help
{
Loop %pSize%
result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
return result
return -(0xFFFFFFFF - result + 1)
}
InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
; Documentated in Autohotkey Help
{
Loop %pSize%
DllCall("RtlFillMemory", UInt, &pDest + pOffset + A_Index-1
, UInt, 1, UChar, pInteger >> 8*(A_Index-1) & 0xFF)
}
再买自检星剁手 发表于 2023-1-29 17:04
由于gui一坨,Linux的优势就是通过脚本和命令规模化自动化很方便
linux也有方便使用的各种gui版啊,没什么关系吧 试试Jenkins? 用微软的Power Automate啊,低代码傻瓜式操作
—— 来自 S1Fun noahhhh 发表于 2023-1-29 17:20
用微软的Power Automate啊,低代码傻瓜式操作
—— 来自 S1Fun
这个有没有被砍掉的风险,对微软的产品总是保持怀疑 本帖最后由 Midnight.Coup 于 2023-1-29 18:51 编辑
roamer 发表于 2023-1-29 17:27
这个有没有被砍掉的风险,对微软的产品总是保持怀疑
PowerShell 想必是不会被砍的,Power Automate 应该是和 Office 超级全家桶(包括 PowerBI 那些)配合用的 其实在XP时代中期以前,是可以通过VBS来实现很多自动化操作的,这也是一种比较易学易用的脚本语言。
但是后来随着几次大的病毒流行事件,VBS这块因为安全性差成为首当其冲的罪魁祸首被限用了,再后来随着账单大门的离开,对BASIC语言有情怀的人已经不复存在,任何跟BASIC语言有关的功能都已经被边缘化而且基本不再有更新和改进了。其实现在电脑版的Windows仍然保留这些功能但用起来都比较麻烦了,想起来以前杂志上有过很多对这些应用的介绍,现在基本全部作废了。 roamer 发表于 2023-1-29 17:27
这个有没有被砍掉的风险,对微软的产品总是保持怀疑
低代码还在风头上,又是赚钱的东西怎会砍
—— 来自 S1Fun 唤醒能不能交给其他设备来做,比如路由器每天定时发个魔术包给电脑唤醒,唤醒以后用任务计划放音频和睡眠 电脑主板BIOS 设置自动开机。。。ahk写好播放功能建一个快捷方式放开始菜单 启动 文件夹。。。 外部设备定时wol唤醒电脑,电脑时间匹配触发完成任务 理论上可以 WoL+SSH+PowerShell 全部通过网络控制
https://devblogs.microsoft.com/scripting/powertip-use-powershell-to-play-wav-files/ 这个需求换iOS的快捷指令闹钟唤醒+Bookplayer就能做吧 电脑设置通电启动 接一个定时插座(智能也行)开机后总会了吧 这代码看着长,其实就是设个日期,调几个api 用批处理启动应用程序怎么样 计划任务能有什么难用的,迷惑 不会用的人来说计划任务比crontab舒服多了手指头点点就行 bIOS设置定时自动开机或上电自动开机比折腾睡眠启动强多了。 至于自动关机软件办法太多了随便选。
—— 来自 S1Fun 计划任务很好用啊 功能也很强大 干啥活用啥工具,用c++去写网页一样蛋疼 如果是电脑里面的有声小说,不应该直接计划任务启动一个本地播放器,然后在播放器里面设置“自动播放”、“接上次播放”就好了吗?
—— 来自 HUAWEI EVR-AL00, Android 10上的 S1Next-鹅版 v2.5.4 佳丽三千到 发表于 2023-2-2 10:55
如果是电脑里面的有声小说,不应该直接计划任务启动一个本地播放器,然后在播放器里面设置“自动播放”、“ ...
难点是自动开机并输入密码进入系统
—— 来自 Hisense HNR320T, Android 10上的 S1Next-鹅版 v2.5.4 拜拜 发表于 2023-2-2 11:10
难点是自动开机并输入密码进入系统
—— 来自 Hisense HNR320T, Android 10上的 S1Next-鹅版 v2.5.4 ...
不能改原有账户设置的话,只能想办法另搞一个无密码账户了。
—— 来自 HUAWEI EVR-AL00, Android 10上的 S1Next-鹅版 v2.5.4 代码那么长其实就相当于
Sleep(duetime - now);
不过我不了解各种唤醒模式之类的东西,毕竟各种硬件不同,没了解过。waitable timer和SetSuspendState不是很懂。 拜拜 发表于 2023-2-2 11:10
难点是自动开机并输入密码进入系统
—— 来自 Hisense HNR320T, Android 10上的 S1Next-鹅版 v2.5.4 ...
哥 计划任务可以输入账号和密码让他登录后执行的 你把开机输密码这个环节去掉不就好了.......
然后再搞个1分钟自动锁屏 楼主这标题算是亲身实践互联网提问技巧了
页:
[1]