无需安装任何软件,让你的电脑强制你休息,打工人必备!


嘿,各位打工人、奋斗者们!

你是不是也和我一样,每天对着电脑超过8小时,一投入工作就忘记了时间?等到回过神来,才发现眼睛干涩、脖子僵硬、腰酸背痛。

市面上的提醒软件要么太温柔容易被忽略,要么太复杂懒得去装。

今天,我就教大家一个终极方法,无需下载任何软件,只用Windows自带的功能,就能为自己打造一个“霸道”的全屏休息提醒神器!

到了时间,它会强制全屏,温柔地提醒你:“嘿,该休息啦!” 想忽略都难!

这个方法好在哪?

  • 绝对纯净:无需安装任何第三方软件,不占系统资源。

  • 完全免费:你的Windows系统已经包含了所有需要的功能。

  • 高度定制:提醒文字、休息时长,一切由你决定!

  • 一劳永逸:设置一次,每次开机自动运行。

话不多说,让我们开始吧!整个过程不超过3分钟,手把手教,包会!


第一步:创建你的“魔法咒语”脚本

别被“脚本”两个字吓到,它其实就是一个简单的文本文档,里面写着给电脑下达的指令。

  1. 在你的电脑桌面空白处,单击鼠标右键,选择 “新建” -> “文本文档”

  2. 你会得到一个名为 新建文本文档.txt 的文件。请把它重命名为 FullScreenReminder.ps1

    ⚠️ 注意: 后缀名必须从 .txt 改为 .ps1。如果看不到后缀名,请在文件资源管理器的“查看”选项卡中,勾选“文件扩展名”。

  3. 右键点击这个 FullScreenReminder.ps1 文件,选择 “编辑” (或者用记事本打开)。

  4. 将下面这段代码 完整地 复制粘贴进去:

PowerShell

#      全屏强制休息提醒脚本 - 稳定版 V3.1
# ===================================================================
# --- ✨ 全新!超级个性化定制区 ✨ ---

# 1. 强制休息的总时长(秒)
$BreakDurationSeconds = 20

# 2. 背景设置 (三选一)
$UseDesktopWallpaper = $true
$BackgroundImagePath = ''
$SolidBackgroundColor = 'Black'

# 3. 文字内容设置
$Title = "🦉👀 强制休息时间!"
$MainMessage = "身体是革命的本钱,请好好放松一下"
$Suggestions = "深呼吸 · 远眺窗外 · 让眼睛放松一下"

# 4. 专业功能增强
$OverlayTransparency = 150

# --- 核心代码区 (下面这部分复制就行,无需改动) ---

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# 启用视觉样式
try {
    [System.Windows.Forms.Application]::EnableVisualStyles()
    [System.Windows.Forms.Application]::SetCompatibleTextRenderingDefault($false)
} catch {
    # 忽略视觉样式设置错误
}

# 创建主窗口
$form = New-Object System.Windows.Forms.Form
$form.Text = $Title
$form.FormBorderStyle = 'None'
$form.WindowState = 'Maximized'
$form.TopMost = $true
$form.ShowInTaskbar = $false

# 安全地启用双缓冲
try {
    $form.GetType().GetProperty('DoubleBuffered', [System.Reflection.BindingFlags]'NonPublic,Instance').SetValue($form, $true)
} catch {
    # 如果双缓冲设置失败,继续执行
}

# --- 智能背景处理 ---
try {
    if ($UseDesktopWallpaper) {
        $wallpaperPath = (Get-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name Wallpaper -ErrorAction SilentlyContinue).Wallpaper
        if ($wallpaperPath -and (Test-Path $wallpaperPath -ErrorAction SilentlyContinue)) {
            $form.BackgroundImage = [System.Drawing.Image]::FromFile($wallpaperPath)
            $form.BackgroundImageLayout = 'Stretch'
        } else { 
            $form.BackColor = [System.Drawing.Color]::Black
        }
    } elseif (-not [string]::IsNullOrEmpty($BackgroundImagePath) -and (Test-Path $BackgroundImagePath -ErrorAction SilentlyContinue)) {
        $form.BackgroundImage = [System.Drawing.Image]::FromFile($BackgroundImagePath)
        $form.BackgroundImageLayout = 'Stretch'
    } else { 
        $form.BackColor = [System.Drawing.Color]::Black
    }
} catch { 
    $form.BackColor = [System.Drawing.Color]::Black
}

# 创建半透明遮罩层
$overlayPanel = New-Object System.Windows.Forms.Panel
$overlayPanel.Dock = 'Fill'
$overlayPanel.BackColor = [System.Drawing.Color]::FromArgb($OverlayTransparency, 0, 0, 0)

# 安全地为遮罩层启用双缓冲
try {
    $overlayPanel.GetType().GetProperty('DoubleBuffered', [System.Reflection.BindingFlags]'NonPublic,Instance').SetValue($overlayPanel, $true)
} catch {
    # 如果双缓冲设置失败,继续执行
}

$form.Controls.Add($overlayPanel)

# 创建核心显示标签
$label = New-Object System.Windows.Forms.Label
$label.Font = New-Object System.Drawing.Font('Microsoft YaHei', 24, [System.Drawing.FontStyle]::Bold)
$label.ForeColor = [System.Drawing.Color]::White
$label.BackColor = [System.Drawing.Color]::Transparent
$label.AutoSize = $false
$label.Dock = 'Fill'
$label.TextAlign = 'MiddleCenter'

# 安全地为标签启用双缓冲
try {
    $label.GetType().GetProperty('DoubleBuffered', [System.Reflection.BindingFlags]'NonPublic,Instance').SetValue($label, $true)
} catch {
    # 如果双缓冲设置失败,继续执行
}

$overlayPanel.Controls.Add($label)

# 剩余时间变量
$Script:remainingSeconds = $BreakDurationSeconds

# 创建更新文字的函数
function Update-CountdownText {
    try {
        $newText = "$MainMessage`n`n$Suggestions`n`n将在 $Script:remainingSeconds 秒后自动关闭..."
        
        # 只有在文字真的改变时才更新
        if ($label.Text -ne $newText) {
            $label.Text = $newText
        }
    } catch {
        # 如果更新失败,尝试简单更新
        $label.Text = "休息时间:$Script:remainingSeconds 秒"
    }
}

# 首次设置提醒文字
Update-CountdownText

# 创建计时器
$timer = New-Object System.Windows.Forms.Timer
$timer.Interval = 1000

# 计时器事件处理
$timer.Add_Tick({
    try {
        $Script:remainingSeconds--
        Update-CountdownText
        
        if ($Script:remainingSeconds -le 0) {
            $timer.Stop()
            $form.Close()
        }
    } catch {
        # 如果计时器出错,强制关闭
        $timer.Stop()
        $form.Close()
    }
})

# 窗体显示事件
$form.Add_Shown({
    try {
        $timer.Start()
    } catch {
        # 如果计时器启动失败,设置备用关闭方式
        Start-Sleep -Seconds $BreakDurationSeconds
        $form.Close()
    }
})

# 窗体关闭事件,释放资源
$form.Add_FormClosed({
    try {
        if ($timer) {
            $timer.Stop()
            $timer.Dispose()
        }
        if ($form.BackgroundImage) {
            $form.BackgroundImage.Dispose()
        }
    } catch {
        # 忽略资源释放错误
    }
})

# 禁用快捷键关闭
$form.Add_KeyDown({
    if ($_.KeyCode -eq [System.Windows.Forms.Keys]::F4 -and $_.Alt) {
        $_.Handled = $true
    }
    if ($_.KeyCode -eq [System.Windows.Forms.Keys]::Escape) {
        $_.Handled = $true
    }
})

# 显示窗体
try {
    $result = $form.ShowDialog()
} catch {
    Write-Host "窗体显示时出现错误: $($_.Exception.Message)"
} finally {
    # 确保资源被释放
    try {
        if ($timer) { $timer.Dispose() }
        if ($form) { $form.Dispose() }
    } catch {
        # 忽略最终清理错误
    }
}

Write-Host "休息时间结束!"
  1. 自定义你的提醒! 在代码最上方的“个性化定制区”,你可以随意修改休息秒数、标题和提示文字,打造你的专属提醒。修改完毕后,保存并关闭文件。

至此,我们的“魔法咒语”就准备好了!


第二步:解除“封印”,让咒语生效

为了安全,Windows默认不允许直接运行这类脚本。我们需要进行一次性授权,解除“封印”。

  1. 点击左下角的“开始”按钮,直接输入 PowerShell

  2. 在搜索结果中,右键点击 “Windows PowerShell”,选择 “以管理员身份运行”

  3. 在弹出的蓝色窗口里,复制并粘贴以下命令,然后按回车:

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

  4. 如果系统询问你,就输入字母 Y,然后再次按回车确认。

搞定!这个操作只需进行一次,以后你的电脑就能运行自己写的脚本了。


第三步:召唤“时间精灵”,定时执行

最后一步,我们要告诉电脑,每隔多久就执行一次我们的“魔法咒语”。这需要用到Windows的“任务计划程序”。

  1. 按下键盘上的 Win + R 组合键,打开“运行”对话框。

  2. 输入 taskschd.msc 并按回车,打开“任务计划程序”。

  3. 在最右侧的“操作”栏中,点击 “创建基本任务...”

  4. 名称: 填写一个你好记的名字,比如 我的护眼提醒。然后点“下一步”。

  5. 触发器: 选择 “当登录时”。这样每次开机登录后它都会自动准备好。点“下一步”。

  6. 操作: 选择 “启动程序”。点“下一步”。

  7. 最关键的一步来了!

    • 在“程序或脚本”框中,输入:powershell.exe

    • 在“添加参数(可选)”框中,输入:-ExecutionPolicy Bypass -File "你的脚本路径\FullScreenReminder.ps1"

      ⚠️ 请务必将 你的脚本路径 替换成你刚才保存脚本的真实、完整路径!

      如何获取路径? 右键点击你的 FullScreenReminder.ps1 文件,选择“属性”,在“位置”一栏就能看到路径,复制过来再加上文件名即可。

      举例: 如果你放在桌面,路径可能就是 "C:\Users\你的用户名\Desktop\FullScreenReminder.ps1" (别忘了带英文双引号)。

  8. 点击“下一步”,然后“完成”。

还没完,我们还要设置重复!

  1. 回到任务计划程序主界面,点击左侧的“任务计划程序库”,在中间找到你刚创建的 我的护眼提醒 任务,双击它。

  2. 在弹出的属性窗口中,切换到 “触发器” 选项卡,然后双击列表里的“登录时”触发器。

  3. 在编辑窗口中,勾选 “重复任务间隔”,然后设置为你希望的频率,比如 “45分钟”“1小时”。持续时间选择 “无限期”

  4. 一路点击“确定”保存所有设置。


大功告成!🚀

从现在起,你的专属健康管家就已经正式上岗了。在你登录电脑后,它会默默为你计时。每当到达设定的时间,它就会“霸道”地占据你的整个屏幕,强制你停下手中的工作,眺望远方,活动身体。

这不仅是一个小工具,更是我们对健康的一份承诺。

快去试试吧!如果你觉得有用,别忘了分享给身边那个总在埋头苦干的朋友!github:https://github.com/laozhiy/FullScreen-Reminder