吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3064|回复: 22
收起左侧

[Windows] 开源计时软件PPTimer1.1beta版,可以随PPT放映时自动计时

  [复制链接]
liujunwei4321 发表于 2024-6-15 20:15
本帖最后由 liujunwei4321 于 2024-6-25 12:44 编辑

不是我自己原创,我只是加了很多功能。原创地址:https://github.com/old9/ppttimer

功能:
可独立当计时器或倒计时使用,和PPT本身没多大关系,计划用在会议场合投屏上。
支持正计时和倒计时,其中倒计时到0后,可设置继续计时,也可以设置只到0。
可以设置穿透窗口,此时鼠标无法选中计时窗口,计时窗口后的程序可正常操作。
所有设置均使用配置文件,无法用鼠标和键盘。
可以设置播放PPT或WPS时自动开始计时。
可以设置提醒时间,比如还有1分钟时提醒。
开源(autohotkey1.0版编写),免费。
可以设置字体类型大小颜色等等。
可以设置窗口大小和位置,透明度等。
可以分别设置提醒声音和计时结束声音。
可以设置全屏显示,适用在LED显示屏会议上使用。
可以自定义快捷键暂停、重新计时等。
无法用鼠标退出程序,默认使用Win+ESC退出程序。
默认使用空格键暂停和继续。此时空格键将被占用其它程序无法使用(包括打不了字),建议自己修改下。
绿色程序,不用安装。
结合自定义快捷键,可以使用激光翻页笔远程控制启停,这个在会议场所将会很实用。
到时可闪烁字体颜色提醒。
所有设置的选项都在ppttimer.ini中,没有配备图形设置界面,用记事本打开修改对应参数保存后重启程序即可。
截图:
image.png


https://pan.baidu.com/s/1H7hvYY8fQmGT-o4CssH5Hw?pwd=atwh 提取码: atwh

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
陌路未央 + 1 + 1 热心回复!
tq990602 + 1 + 1 谢谢@Thanks!
dogox + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| liujunwei4321 发表于 2024-6-16 22:08
本帖最后由 liujunwei4321 于 2024-6-17 01:04 编辑
xdc723 发表于 2024-6-16 21:57
不太科学,设置不方便,而且运行时打字不上屏。

这得看怎么理解了,本人确实才疏学浅,不会弄图形界面。linux几乎所有设置都是用配置文件,配置文件就是一劳永逸,特别是针对需求固定的人,懂的自然懂优势在哪里,当然这也是一个门坎。如果你只习惯用图形化的设置界面,这个小工具应该确实是不适合你,你可以使用flyclock,这个在播放PPT计时时更强大。
不上屏是因为程序运行后把空格键和回车键占用了,你可以设置程序控制快捷键为其它组合键。
followufo 发表于 2024-7-29 14:29
#SingleInstance force
#NoTrayIcon

pt_IniFile := A_ScriptDir "\ppttimer.ini"

iniread, startKey, %pt_IniFile%, shortcuts, startKey, F12
iniread, stopKey, %pt_IniFile%, shortcuts, stopKey, ^F12
iniread, quitKey, %pt_IniFile%, shortcuts, quitKey, F9

iniread, opacity, %pt_IniFile%, main, opacity, 180
iniread, fontface, %pt_IniFile%, main, fontface, 寰蒋闆呴粦
iniread, fontweight, %pt_IniFile%, main, fontweight, bold
iniread, fontsize, %pt_IniFile%, main, fontsize, 40

iniread, textColor, %pt_IniFile%, main, textcolor, 000000
iniread, AheadColor, %pt_IniFile%, main, aheadColor, 9D1000
iniread, timeoutColor, %pt_IniFile%, main, timeoutColor, FF0000
iniread, backgroundColor, %pt_IniFile%, main, backgroundColor, FFFFAA

iniread, bannerWidth, %pt_IniFile%, main, width, 300
iniread, bannerHeight, %pt_IniFile%, main, height, 70


hotkey, %startKey%, startIt
hotkey, %stopKey%, stopIt
hotkey, %quitKey%, quitIt

resetTimer()

Gui, Font, %fontweight% s%fontsize% c%textColor% textcenter, %fontface%
Gui, Font, c%textColor%
Gui, Color, %backgroundColor%
Gui Add, Text, x0 y0 h%bannerHeight% w%bannerWidth% vpt_DurationText
guicontrol, +0x200 +center, pt_DurationText
GuiControl,, pt_DurationText, % FormatSeconds(pt_Duration)
GuiControl, Font, pt_DurationText
xposition := A_ScreenWidth - bannerWidth
Gui +LastFound +ToolWindow +AlwaysOnTop -Caption
Gui Show, y0 h%bannerHeight% w%bannerWidth% x%xposition% , CountDown
winset,transparent, %opacity%, CountDown
Winset, ExStyle, +0x20, CountDown
pt_Gui := WinExist()  ; Remember Gui window ID
isPptTimerOn := false
;isTimerOn := false
SetTimer, checkPowerpoint, 250
Return



;;; if winexsist powerpoint presetation, auto start
startTimer(){
  global pt_Duration
  global pt_DurationText
  global CountDownTimer
  SetTimer CountDownTimer, Off
  GuiControl,, pt_DurationText, % FormatSeconds(pt_Duration)
  SetTimer CountDownTimer, 1000
  SetTimer CountDownTimer, on
}

resetTimer(){
  global pt_Duration
  global pt_PlayFinishSound
  global pt_FinishSoundFile
  global pt_PlayWarningSound
  global pt_WarningSoundFile
  global pt_Ahead
  global pt_IniFile
  global textColor
  global backgroundColor

  Gui, Font, c%textColor%
  gui, color, %backgroundColor%

  GuiControl, font, pt_DurationText
  IniRead, pt_Duration, %pt_IniFile%, Main, Duration, % 5*60
  IniRead, pt_PlayFinishSound, %pt_IniFile%, Main, PlayFinishSound, %True%
  IniRead, pt_FinishSoundFile, %pt_IniFile%, Main, FinishSoundFile, %A_ScriptDir%\
  IniRead, pt_PlayWarningSound, %pt_IniFile%, Main, PlayWarningSound, %True%
  IniRead, pt_WarningSoundFile, %pt_IniFile%, Main, WarningSoundFile, %A_ScriptDir%\
  IniRead, pt_Ahead, %pt_IniFile%, Main, Ahead, 120
  ;msgbox, % pt_Duration " " pt_Ahead
  GuiControl,, pt_DurationText, % FormatSeconds(pt_Duration)
}


;restart or start manually
startIt:
resetTimer()
startTimer()
return


stopIt:
resetTimer()
SetTimer CountDownTimer, off
return

quitIt:
ExitApp
return

checkPowerpoint:
IfWinExist, ahk_class screenClass
  {
    if !isPptTimerOn
    {
      isPptTimerOn := true
      resetTimer()
      startTimer()
    }
}
else
{
  if isPptTimerOn
  {
    isPptTimerOn := false
    resetTimer()
    SetTimer CountDownTimer, off
  }
}
return


/*
windIDd := WinExist("My Window")
isFullScreen := isWindowFullScreen(windIDd)
MsgBox %isFullScreen%
Return


isWindowFullScreen(WinID)
{
    ;checks if the specified window is full screen
    ;use WinExist of another means to get the Unique ID (HWND) of the desired window

    if ( !WinID )
        return

    WinGet, style, Style, ahk_id %WinID%
    ; 0x800000 is WS_BORDER.
    ; 0x20000000 is WS_MINIMIZE.
    ; no border and not minimized
    retVal := (style & 0x20800000) ? 0 : 1
    Return, retVal
}
*/
/*
checkPdf:
IfWinExist, ahk_class AcrobatSDIWindow
{

    WinGet, style, Style, A
    ; 0x800000 is WS_BORDER.
    ; 0x20000000 is WS_MINIMIZE.
    ; no border and not minimized
    retVal := (style & 0x20800000) ? 0 : 1
}
else
{
}
return

*/




CountDownTimer:
  Gui +AlwaysOnTop
  pt_Duration--
  if pt_Duration < 0
  {
    blink := !blink
    if blink
    {
      Gui, Font, c%timeoutColor%
      gui, color, %backgroundColor%
    }
    else
    {
      Gui, Font, c%backgroundColor%
      gui, color, %timeoutColor%
    }
    GuiControl,, pt_DurationText, % FormatSeconds(pt_Duration)
  }
  else if (pt_Duration <= pt_Ahead)
  {
    if (pt_Duration = pt_Ahead) && pt_PlayWarningSound
      Gosub PlayWarningSound
    Gui, Font, c%AheadColor%
    GuiControl,, pt_DurationText, % FormatSeconds(pt_Duration)
  }
  else
  {
    Gui, Font, c%textColor%
  GuiControl,, pt_DurationText, % FormatSeconds(pt_Duration)
  }
  GuiControl, font, pt_DurationText
  if pt_Duration = 0
  {
    if pt_PlayFinishSound
      Gosub PlayFinishSound
  }
  SetTimer CountDownTimer, 1000
Return

PlayFinishSound:
  IfExist %pt_FinishSoundFile%
    SoundPlay %pt_FinishSoundFile%
Return

PlayWarningSound:
  IfExist %pt_WarningSoundFile%
    SoundPlay %pt_WarningSoundFile%
Return

FormatSeconds(NumberOfSeconds)  ; Convert the specified number of seconds to hh:mm:ss format.
{
  time = 19990101  ; *Midnight* of an arbitrary date.
  if NumberOfSeconds < 0
    NumberOfSeconds := -NumberOfSeconds
  time += %NumberOfSeconds%, seconds
  FormatTime, mmss, %time%, mm:ss
  ;return NumberOfSeconds//3600 ":" mmss  ; This method is used to support more than 24 hours worth of sections.
  return mmss  ; This method is used to support more than 24 hours worth of sections.
}

GuiClose:
  ExitApp
Return
##########################以上是源代码#############
想问下,如何在开始的时候播放自定义提醒声音呢?
wkjxs2015 发表于 2024-6-16 18:12
 楼主| liujunwei4321 发表于 2024-6-16 20:28
wkjxs2015 发表于 2024-6-16 18:12
从哪里进入设置呢?

所有设置都在ppttimer.ini文件中
cutelee 发表于 2024-6-16 20:32
感谢分享
zhufuan 发表于 2024-6-16 20:50
老师,怎么退出程序



 楼主| liujunwei4321 发表于 2024-6-16 21:41
zhufuan 发表于 2024-6-16 20:50
老师,怎么退出程序

使用Win+ESC退出程序,也可自己在ppttimer.ini中修改退出程序的快捷键
xdc723 发表于 2024-6-16 21:57
不太科学,设置不方便,而且运行时打字不上屏。
xdc723 发表于 2024-6-17 19:57
liujunwei4321 发表于 2024-6-16 22:08
这得看怎么理解了,本人确实才疏学浅,不会弄图形界面。linux几乎所有设置都是用配置文件,配置文件就是 ...

对于我们小白来说,没有图形确实不太友好,感谢回复。
can91 发表于 2024-6-17 20:46
这个要求有点高了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-13 09:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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