找回密码
 立即注册
首页 业界区 业界 【原创工具】简单实现云控Win电脑锁屏

【原创工具】简单实现云控Win电脑锁屏

翱龟墓 2025-7-18 20:36:50
手机云控 Windows 电脑锁屏

背景

在工作时,常会遇到这么一个场景:坐在电脑前办公,突然被叫了出去,可能出去只有一两分钟或几分钟,因此我不会将电脑锁屏,同时由于常用电脑做一些前台任务,电脑也不设置自动锁屏,但中断事件的时间是无法确定的,如果几十分钟甚至一两个小时还不回来,不锁屏的电脑无异于一台任人抚摸的小猫——吸引人且无力防御。
设计思路

反复几次后,我就萌生了写一个能远程云控电脑锁屏的小工具的想法,那样我只要在手机上设置一下锁屏,办公室的电脑就能自动锁屏了。思路也很简单:
flowchart TD    A[用户操作] -->|云端控制台设置锁屏状态| B[发送锁屏状态至服务器]    B --> C{服务器}    C -->|存储状态| D[被控电脑]    D -->|定期查询服务器状态| E{状态判断}    E -->|“锁屏”| F[执行锁屏操作]    E -->|“未锁屏”| G[保持当前状态]    F --> D    G --> D实现方案

按照上述思路,实现起来就很简单了。可以拆分成以下几个小步骤:

  • 写一个云控控制台,能在手机上访问
  • 云端控制器能存储当前状态,并供受控端读取
  • 写一个锁屏器,在受控电脑上安装,自动获取云端当前状态,并实现锁屏操作
具体实现如下:

  • 云端控制台为了让通用性更强,且更简化、更快捷实现,选择了网页端来部署,没有选择用 APP,不然还要考虑 Android/IOS/Mac 等各大系统适配。
  • 状态存储器用 php 实现,原因:代码简单易写,服务器方便部署且通用性强。
  • 锁屏器用 golang 来写,最初考虑过 Python,但综合考量打包体积、跨设备兼容和交叉编译支持情况,还是选择了 golang。
实现代码

云端控制台,一个 html 静态小网页
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>远程锁屏控制面板 - 怜渠客</title>
  7.    
  8.     <link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
  9.    
  10.    
  11. </head>
  12. <body >
  13.    
  14.         <header >
  15.             <h1 >远程锁屏控制面板</h1>
  16.             <p >通过此面板管理和查看远程设备的锁屏状态</p>
  17.         </header>
  18.         
  19.             
  20.                
  21.                     当前状态: 未锁定
  22.                     
  23.                
  24.                 上次更新: 刚刚
  25.             
  26.             
  27.                 <button id="lock-btn" >
  28.                     <i ></i> 设置为锁屏状态
  29.                 </button>
  30.                 <button id="unlock-btn" >
  31.                     <i ></i> 设置为不锁屏状态
  32.                 </button>
  33.             
  34.             
  35.         
  36.         
  37.             <h2 >
  38.                 <i ></i> 使用说明
  39.             </h2>
  40.             <ul >
  41.                 <li>点击"设置为锁屏状态"按钮,远程设备将在下次检查时锁定屏幕</li>
  42.                 <li>点击"设置为不锁屏状态"按钮,远程设备将保持解锁状态</li>
  43.             </ul>
  44.         
  45.    
  46.     <footer >
  47.         <p>远程锁屏系统 © 2025  By 怜渠客</p>
  48.     </footer>
  49.    
  50. </body>
  51. </html>
复制代码
云端 php 代码

[code][/code]只是为了向同目录下的 state.txt 里写入或读取当前状态,0 或 1
golang 锁屏器

[code]package mainimport (        "fmt"        "github.com/getlantern/systray"        "github.com/lxn/win"        "io/ioutil"        "log"        "net/http"        "syscall"        "time")const (        checkInterval = 5 // 检查间隔(秒)        stateURL      = "###目标服务器地址###/state_query.php")func main() {        systray.Run(onReady, onExit)}func onReady() {        systray.SetTitle("状态监控")        systray.SetTooltip("系统状态监控程序")        // 创建菜单项        mOpen := systray.AddMenuItem("打开", "打开主窗口")        systray.AddSeparator()        mQuit := systray.AddMenuItem("退出", "退出程序")        // 初始隐藏控制台窗口        hideConsole()        // 启动状态检查协程        go func() {                log.Println("开始监控状态...")                ticker := time.NewTicker(time.Second * checkInterval)                defer ticker.Stop()                for {                        select {                        case
您需要登录后才可以回帖 登录 | 立即注册