找回密码
 立即注册
搜索
查看: 6967|回复: 30

[软件] windows自动化很难啊

[复制链接]
     
发表于 2023-1-29 16:58 | 显示全部楼层 |阅读模式
想要做一个每天自动定时睡眠,早上唤醒,然后播放电脑里的有声小说的功能

查了AHK,单单唤醒功能就要那么长的代码,劝退

然后又看了win自带的任务计划程序,也难用的要死,win真是功能好弱


  1. ; AHK wake-up-timer
  2. ; scheduler provides some of the functions of Window's Task Scheduler or the command line tool "schtasks" as an AHK-script.
  3. ; Unlike Windows' Scheduled Tasks this function works with accounts without passwords
  4. ;
  5. ; Author: boskoop (http://http://www.autohotkey.com/board/topic/10587-wake-up-timer-scheduler-function)

  6. ; CONFIGURATION
  7. Year=2006
  8. Month=8   ;1-12
  9. Day=30      ;1-31
  10. Hour=21   ;0-23
  11. Minute=16 ;1-59
  12. Hibernate=0 ;0, 1, 2
  13. Resume=1 ;0,1
  14. Name=%A_Now%

  15. ; AUTOEXECUTE
  16. WakeUp(Year, Month, Day, Hour, Minute, Hibernate, Resume, Name)

  17. msgbox, I'm awake and working!


  18. ; FUNCTIONS
  19. WakeUp(Year, Month, Day, Hour, Minute, Hibernate, Resume, Name)
  20. ;Awaits duetime, then returns to the caller (like some sort of "sleep until duetime").
  21. ;If the computer is in hibernate or suspend mode
  22. ;at duetime, it will be reactivated (hardware support provided)
  23. ;Parameters: Year, Month, Day, Hour, Minute together produce duetime
  24. ;Hibernate: If Hibernate=1, the function hibernates the computer. If Hibernate=2 the computer is set to
  25. ;                        suspend-mode
  26. ;Resume: If Resume=1, the system is restored from power save mode at due time
  27. ;Name: Arbitrary name for the timer
  28. {
  29.     duetime:=GetUTCFileTime(Year, Month, Day, Hour, Minute)

  30.     Handle:=DLLCall("CreateWaitableTimer"
  31.             ,"char *", 0
  32.             ,"Int",0
  33.             ,"Str",name, "UInt")

  34.     DLLCall("CancelWaitableTimer","UInt",handle)

  35.     DLLCall("SetWaitableTimer"
  36.           ,"Uint", handle
  37.           ,"Int64*", duetime        ;duetime must be in UTC-file-time format!
  38.           ,"Int", 1000
  39.           ,"uint",0
  40.           ,"uint",0
  41.           ,"int",resume)
  42.    

  43.     ;Hibernates the computer, depending on variable "Hibernate":
  44.     If Hibernate=1                 ;Hibernate
  45.         {
  46.         DllCall("PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0)
  47.         }
  48.         
  49.     If Hibernate=2                ;Suspend
  50.             {
  51.             DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
  52.             }
  53.     Signal:=DLLCall("WaitForSingleObject"
  54.             ,"Uint", handle
  55.             ,"Uint",-1)
  56.             
  57.     DllCall("CloseHandle", uint, Handle)   ;Closes the handle
  58.    
  59. }   


  60. GetUTCFiletime(Year, Month, Day, Hour, Min)
  61. ;Converts "System Time" (readable time format) to "UTC File Time" (number of 100-nanosecond intervals since January 1, 1601 in  Coordinated Universal Time UTC)
  62. {
  63.     DayOfWeek=0

  64.     Second=00
  65.     Millisecond=00
  66.    

  67.     ;Converts System Time to Local File Time:
  68.     VarSetCapacity(MyFiletime  , 64, 0)
  69.     VarSetCapacity(MySystemtime, 32, 0)
  70.    
  71.     InsertInteger(Year,       MySystemtime,0)
  72.     InsertInteger(Month,      MySystemtime,2)
  73.     InsertInteger(DayOfWeek,  MySystemtime,4)
  74.     InsertInteger(Day,        MySystemtime,6)
  75.     InsertInteger(Hour,       MySystemtime,8)
  76.     InsertInteger(Min,        MySystemtime,10)
  77.     InsertInteger(Second,     MySystemtime,12)
  78.     InsertInteger(Millisecond,MySystemtime,14)

  79.     DllCall("SystemTimeToFileTime", Str, MySystemtime, UInt, &MyFiletime)
  80.     LocalFiletime := ExtractInteger(MyFiletime, 0, false, 8)

  81.     ;Converts local file time to a file time based on the Coordinated Universal Time (UTC):
  82.     VarSetCapacity(MyUTCFiletime  , 64, 0)
  83.     DllCall("LocalFileTimeToFileTime", Str, MyFiletime, UInt, &MyUTCFiletime)
  84.     UTCFiletime := ExtractInteger(MyUTCFiletime, 0, false, 8)
  85.    
  86.     Return UTCFileTime
  87. }


  88. ExtractInteger(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 32)
  89. ; Documented in Autohotkey Help
  90. {
  91.     Loop %pSize%  
  92.         result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
  93.     if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
  94.         return result  
  95.     return -(0xFFFFFFFF - result + 1)
  96. }



  97. InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
  98. ; Documentated in Autohotkey Help
  99. {
  100.   Loop %pSize%
  101.           DllCall("RtlFillMemory", UInt, &pDest + pOffset + A_Index-1
  102.                   , UInt, 1, UChar, pInteger >> 8*(A_Index-1) & 0xFF)
  103. }
复制代码


回复

使用道具 举报

头像被屏蔽
     
发表于 2023-1-29 17:04 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2023-1-29 17:10 | 显示全部楼层
再买自检星剁手 发表于 2023-1-29 17:04
由于gui一坨,Linux的优势就是通过脚本和命令规模化自动化很方便

linux也有方便使用的各种gui版啊,没什么关系吧
回复

使用道具 举报

     
发表于 2023-1-29 17:12 | 显示全部楼层
试试Jenkins?
回复

使用道具 举报

     
发表于 2023-1-29 17:20 | 显示全部楼层
用微软的Power Automate啊,低代码傻瓜式操作

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2023-1-29 17:27 | 显示全部楼层
noahhhh 发表于 2023-1-29 17:20
用微软的Power Automate啊,低代码傻瓜式操作

—— 来自 S1Fun

这个有没有被砍掉的风险,对微软的产品总是保持怀疑
回复

使用道具 举报

     
发表于 2023-1-29 17:29 | 显示全部楼层
本帖最后由 Midnight.Coup 于 2023-1-29 18:51 编辑
roamer 发表于 2023-1-29 17:27
这个有没有被砍掉的风险,对微软的产品总是保持怀疑

PowerShell 想必是不会被砍的,Power Automate 应该是和 Office 超级全家桶(包括 PowerBI 那些)配合用的
回复

使用道具 举报

     
发表于 2023-1-29 17:36 | 显示全部楼层
其实在XP时代中期以前,是可以通过VBS来实现很多自动化操作的,这也是一种比较易学易用的脚本语言。
但是后来随着几次大的病毒流行事件,VBS这块因为安全性差成为首当其冲的罪魁祸首被限用了,再后来随着账单大门的离开,对BASIC语言有情怀的人已经不复存在,任何跟BASIC语言有关的功能都已经被边缘化而且基本不再有更新和改进了。其实现在电脑版的Windows仍然保留这些功能但用起来都比较麻烦了,想起来以前杂志上有过很多对这些应用的介绍,现在基本全部作废了。
回复

使用道具 举报

     
发表于 2023-1-29 17:44 | 显示全部楼层
roamer 发表于 2023-1-29 17:27
这个有没有被砍掉的风险,对微软的产品总是保持怀疑

低代码还在风头上,又是赚钱的东西怎会砍

—— 来自 S1Fun
回复

使用道具 举报

     
发表于 2023-1-29 17:46 | 显示全部楼层
唤醒能不能交给其他设备来做,比如路由器每天定时发个魔术包给电脑唤醒,唤醒以后用任务计划放音频和睡眠
回复

使用道具 举报

     
发表于 2023-1-30 01:32 来自手机 | 显示全部楼层
电脑主板BIOS 设置自动开机。。。ahk写好播放功能建一个快捷方式放开始菜单 启动 文件夹。。。
回复

使用道具 举报

     
发表于 2023-1-30 01:44 来自手机 | 显示全部楼层
外部设备定时wol唤醒电脑,电脑时间匹配触发完成任务
回复

使用道具 举报

     
发表于 2023-1-30 07:10 | 显示全部楼层
理论上可以 WoL+SSH+PowerShell 全部通过网络控制
https://devblogs.microsoft.com/s ... -to-play-wav-files/
回复

使用道具 举报

     
发表于 2023-1-30 07:15 来自手机 | 显示全部楼层
这个需求换iOS的快捷指令闹钟唤醒+Bookplayer就能做吧
回复

使用道具 举报

     
发表于 2023-1-30 07:20 来自手机 | 显示全部楼层
电脑设置通电启动 接一个定时插座(智能也行)  开机后总会了吧
回复

使用道具 举报

头像被屏蔽
     
发表于 2023-1-30 12:06 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2023-1-30 16:53 | 显示全部楼层
这代码看着长,其实就是设个日期,调几个api
回复

使用道具 举报

     
发表于 2023-1-30 18:31 来自手机 | 显示全部楼层
用批处理启动应用程序怎么样
回复

使用道具 举报

     
发表于 2023-1-31 08:15 来自手机 | 显示全部楼层
计划任务能有什么难用的,迷惑
回复

使用道具 举报

头像被屏蔽
     
发表于 2023-1-31 08:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2023-1-31 09:27 来自手机 | 显示全部楼层
不会用的人来说计划任务比crontab舒服多了手指头点点就行
回复

使用道具 举报

     
发表于 2023-2-1 21:43 | 显示全部楼层
bIOS设置定时自动开机或上电自动开机比折腾睡眠启动强多了。 至于自动关机软件办法太多了随便选。

—— 来自 S1Fun
回复

使用道具 举报

发表于 2023-2-2 10:04 | 显示全部楼层
计划任务很好用啊 功能也很强大
回复

使用道具 举报

发表于 2023-2-2 10:29 | 显示全部楼层
干啥活用啥工具,用c++去写网页一样蛋疼
回复

使用道具 举报

     
发表于 2023-2-2 10:55 来自手机 | 显示全部楼层
如果是电脑里面的有声小说,不应该直接计划任务启动一个本地播放器,然后在播放器里面设置“自动播放”、“接上次播放”就好了吗?

—— 来自 HUAWEI EVR-AL00, Android 10上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
 楼主| 发表于 2023-2-2 11:10 来自手机 | 显示全部楼层
佳丽三千到 发表于 2023-2-2 10:55
如果是电脑里面的有声小说,不应该直接计划任务启动一个本地播放器,然后在播放器里面设置“自动播放”、“ ...

难点是自动开机并输入密码进入系统

—— 来自 Hisense HNR320T, Android 10上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
发表于 2023-2-2 12:31 来自手机 | 显示全部楼层
拜拜 发表于 2023-2-2 11:10
难点是自动开机并输入密码进入系统

—— 来自 Hisense HNR320T, Android 10上的 S1Next-鹅版 v2.5.4 ...

不能改原有账户设置的话,只能想办法另搞一个无密码账户了。


—— 来自 HUAWEI EVR-AL00, Android 10上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
发表于 2023-2-2 13:37 | 显示全部楼层
代码那么长其实就相当于
Sleep(duetime - now);
不过我不了解各种唤醒模式之类的东西,毕竟各种硬件不同,没了解过。waitable timer和SetSuspendState不是很懂。
回复

使用道具 举报

     
发表于 2023-2-2 16:15 来自手机 | 显示全部楼层
拜拜 发表于 2023-2-2 11:10
难点是自动开机并输入密码进入系统

—— 来自 Hisense HNR320T, Android 10上的 S1Next-鹅版 v2.5.4 ...

哥 计划任务可以输入账号和密码让他登录后执行的
回复

使用道具 举报

发表于 2023-2-2 16:19 | 显示全部楼层
你把开机输密码这个环节去掉不就好了.......
然后再搞个1分钟自动锁屏
回复

使用道具 举报

     
发表于 2023-2-2 16:24 | 显示全部楼层
&#x697C;&#x4E3B;&#x8FD9;&#x6807;&#x9898;&#x7B97;&#x662F;&#x4EB2;&#x8EAB;&#x5B9E;&#x8DF5;&#x4E92;&#x8054;&#x7F51;&#x63D0;&#x95EE;&#x6280;&#x5DE7;&#x4E86;
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-21 20:43 , Processed in 0.089876 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表