无忧启动论坛

标题: 电脑挂机锁 [打印本页]

作者: freesoft00    时间: 19 小时前
标题: 电脑挂机锁
本帖最后由 freesoft00 于 2025-12-24 19:34 编辑

ai+autohotkey编写,压缩包内有源代码。不太完美,选择背景图的时候是保存,点击图片会提示替换,实际是选择的图片,这个不影响使用但是界面上不完美。解锁按钮在密码输入框内,不知道怎么把它移动到输入框右侧。功能就是第一次运行输入一个解锁密码保存,有了ini配置文件后,再双击直接锁屏。解锁就是输入密码,或者在屏幕右下角部分连续点击8下就可以了。(针对没有键盘无法输入密码的触屏电脑)密码明文存储,我这个简单应用就不整那么复杂了。装机时在pe中或者正确启动系统中防止有人动电脑。
测试是在虚拟机下测试的,输入密码可以解锁,但是实体机测试输入密码好像不行,比如设置的111,回车后并没有解锁,此时可以点击屏幕右下角8下就可以解锁了,后续看再怎么修复一下图示修复后的运行效果,只是修复了一下输入框和按钮位置,输入密码无法解锁的问题还是没有好,在我这台实体电脑



挂机锁.zip (962.66 KB, 下载次数: 37)
下面是v2版本,修复了输入密码无法解锁的问题。现在打开没有主界面了,直接是锁屏界面,锁屏ini配置文件默认密码123456,屏幕右侧点击6次解锁,背景图是最后一个参数,自己写入jpg图的绝对路径就可以,但是因为锁屏界面在软件中写的“不要乱动”的文字,也会显示到背景图上
挂机锁.zip (963.59 KB, 下载次数: 13)
这个代码密码输入框是星号如图不显示的。v2版是显示密码输入字符的。谁可以整合一下就修复修复。ai修复的老是会出现输入密码无法解锁的情况。v2版本正常就先不动了,反正功能基本上满足要求了
锁屏.txt (6.37 KB, 下载次数: 5)
下面是v3最终版,密码框改为了星号显示
ScreenLock.zip (963.87 KB, 下载次数: 18)
v4版,默认背景改为灰色,自定义背景图不再遮挡,如果没有自定义背景图要求的,v3和v4版没有什么区别
ScreenLock_v4.zip (963.73 KB, 下载次数: 7)




作者: freesoft00    时间: 19 小时前
谁比较在行的可以修整修整反正里面有源码
作者: jinghuanqd    时间: 18 小时前
感谢分享
作者: wn168cn@163.com    时间: 14 小时前
感谢分享
作者: yyz2191958    时间: 14 小时前
有一些时候需要,谢谢
作者: smile_z    时间: 13 小时前
感谢分享
作者: askgrass    时间: 13 小时前
感谢分享,感恩更新!
作者: anyscai    时间: 13 小时前
感谢提供,希望好用
作者: 燕飞龙    时间: 13 小时前
感谢分享
作者: lnlangzi    时间: 12 小时前
谁用了 好用不
作者: a66    时间: 12 小时前
纯支持~
作者: hhcha    时间: 12 小时前
感谢分享!
作者: cncecpcy    时间: 12 小时前
好。。。。。。。。。。。。
作者: bert1182    时间: 12 小时前
有个预览图就好了
作者: xuxiaojie120    时间: 12 小时前
谢谢分享!!!
作者: ntcjq999    时间: 11 小时前
感谢分享
作者: sulong    时间: 11 小时前
试一下看看,先谢谢分享
作者: yhage    时间: 11 小时前
具体应用场景。
作者: liuyang2025    时间: 11 小时前
挂个图嘛
作者: 路路路过    时间: 11 小时前
感谢大佬分享
作者: win82    时间: 11 小时前
感谢分享
作者: qinkeer529    时间: 11 小时前
感谢分享!
作者: eve0079    时间: 11 小时前
感谢楼主分享
作者: yzszh64    时间: 10 小时前
谢谢分享。
作者: guihuaju    时间: 10 小时前

感谢分享
作者: it323    时间: 10 小时前
感谢分享!
作者: qingse1976    时间: 10 小时前
有点积累哦
作者: plezhong    时间: 10 小时前
感谢分享,这下看谁还能动我电脑!
作者: wjkw    时间: 10 小时前

感谢分享!
作者: wwoldok    时间: 10 小时前
感谢分享

作者: 好好学些    时间: 10 小时前
谢谢分享
作者: 好好学些    时间: 10 小时前
谢谢分享
作者: zggxggs    时间: 10 小时前
楼主年底了得空更新一下你的系统作品,一直在用你的WIN10,谢谢!
作者: 左岸麦田    时间: 9 小时前
感谢分享,一般直接自带的了,主要是方便
作者: tutucherry    时间: 9 小时前
谢谢分享

作者: cncecpcy    时间: 9 小时前
好。。。。。。
作者: nie956    时间: 9 小时前
感谢楼主分享
作者: fh123456    时间: 8 小时前

感谢分享
作者: yaz20    时间: 8 小时前
s谢谢分享
作者: xxz520    时间: 8 小时前
界面很不错,防止别人乱动电脑。
作者: zx6769    时间: 7 小时前
谢分享!!
作者: cpanel    时间: 7 小时前
转的python版本,为防止ctrl+alt+del,必须用管理员权限运行,win7下测试通过
  1. # -*- coding: utf-8 -*-
  2. import tkinter as tk
  3. from tkinter import filedialog, messagebox
  4. import os
  5. import sys
  6. import winreg
  7. import ctypes

  8. # ==================== 1. 系统安全加固 (封锁任务管理器) ====================
  9. def is_admin():
  10.     try: return ctypes.windll.shell32.IsUserAnAdmin()
  11.     except: return False

  12. def set_lock_registry(disable=True):
  13.     # 封锁路径:同时封锁用户和默认策略
  14.     reg_paths = [
  15.         r"Software\Microsoft\Windows\CurrentVersion\Policies\System",
  16.         r"Software\Policies\Microsoft\Windows\System"
  17.     ]
  18.     value = 1 if disable else 0
  19.     for path in reg_paths:
  20.         try:
  21.             key = winreg.CreateKeyEx(winreg.HKEY_CURRENT_USER, path, 0, winreg.KEY_SET_VALUE)
  22.             winreg.SetValueEx(key, "DisableTaskMgr", 0, winreg.REG_DWORD, value)
  23.             winreg.CloseKey(key)
  24.         except: pass

  25. # 自动提升管理员权限
  26. if not is_admin():
  27.     ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
  28.     sys.exit()

  29. # ==================== 2. 配置管理 ====================
  30. INI_FILE = "LockConfig.ini"

  31. def read_config():
  32.     p, c, b = "", 8, ""
  33.     if os.path.exists(INI_FILE):
  34.         with open(INI_FILE, "r", encoding="utf-8") as f:
  35.             for line in f:
  36.                 if "Password=" in line: p = line.split("=")[1].strip()
  37.                 elif "ClickUnlockCount=" in line: c = int(line.split("=")[1].strip())
  38.                 elif "BackgroundImage=" in line: b = line.split("=")[1].strip()
  39.     return p, c, b if (b and b.lower() != "none" and os.path.exists(b)) else None

  40. def save_config(p, c, b):
  41.     with open(INI_FILE, "w", encoding="utf-8") as f:
  42.         f.write(f"Password={p}\nClickUnlockCount={c}\nBackgroundImage={b or 'none'}\n")

  43. PASSWORD, CLICK_COUNT, BG_PATH = read_config()
  44. is_locked = False

  45. # ==================== 3. 锁屏核心 (含图片轮播) ====================
  46. def start_lock_screen():
  47.     global is_locked
  48.     set_lock_registry(True) # 锁定任务管理器
  49.     is_locked = True
  50.    
  51.     root = tk.Tk()
  52.     root.overrideredirect(True)
  53.     w, h = root.winfo_screenwidth(), root.winfo_screenheight()
  54.     root.geometry(f"{w}x{h}+0+0")
  55.     root.configure(bg="#000000")
  56.     root.attributes("-topmost", True)
  57.    
  58.     # --- A. 背景层 (轮播标签) ---
  59.     bg_label = tk.Label(root, bg="#000000")
  60.     bg_label.place(x=0, y=0, relwidth=1, relheight=1)

  61.     # --- B. UI 交互层 (始终在最顶层) ---
  62.     ui_frame = tk.Frame(root, bg="#1c1c1c", highlightthickness=2, highlightbackground="#00FF00")
  63.     ui_frame.place(relx=0.5, rely=0.5, anchor="center")

  64.     tk.Label(ui_frame, text="🔒 系统锁定中", font=("微软雅黑", 22, "bold"), fg="#00FF00", bg="#1c1c1c").pack(pady=20, padx=50)

  65.     pass_var = tk.StringVar()
  66.     entry = tk.Entry(ui_frame, textvariable=pass_var, font=("Consolas", 20), show="*", width=15, justify='center', bg="#333", fg="white", insertbackground="white")
  67.     entry.pack(pady=10)

  68.     def do_unlock():
  69.         if pass_var.get() == PASSWORD:
  70.             global is_locked
  71.             is_locked = False
  72.             set_lock_registry(False) # 解除任务管理器封锁
  73.             root.destroy()
  74.             sys.exit(0)
  75.         else:
  76.             entry.config(bg="#721c24")
  77.             root.after(300, lambda: entry.config(bg="#333"))
  78.             pass_var.set("")
  79.             entry.focus_set()

  80.     tk.Button(ui_frame, text="解除锁定", font=("微软雅黑", 14, "bold"), bg="#28a745", fg="white",
  81.               width=15, command=do_unlock, activebackground="#218838", bd=0).pack(pady=20)

  82.     # --- C. 图片轮播逻辑模块 ---
  83.     img_files = []
  84.     if BG_PATH:
  85.         if os.path.isdir(BG_PATH):
  86.             # 扫描文件夹
  87.             exts = ('.png', '.jpg', '.jpeg', '.gif', '.bmp')
  88.             img_files = [os.path.join(BG_PATH, f) for f in os.listdir(BG_PATH) if f.lower().endswith(exts)]
  89.         elif os.path.isfile(BG_PATH):
  90.             img_files = [BG_PATH]

  91.     def play_gallery(index=0):
  92.         if not is_locked or not img_files: return
  93.         try:
  94.             # 使用标准的 PhotoImage
  95.             # 注意:tkinter默认PhotoImage不支持所有JPG,如果报错请确保安装了 Pillow 库并修改此处
  96.             new_img = tk.PhotoImage(file=img_files[index % len(img_files)])
  97.             bg_label.config(image=new_img)
  98.             bg_label.image = new_img
  99.             if len(img_files) > 1:
  100.                 root.after(5000, lambda: play_gallery(index + 1)) # 5秒切一张
  101.         except Exception as e:
  102.             # 遇到格式不支持的文件跳过
  103.             root.after(100, lambda: play_gallery(index + 1))

  104.     if img_files:
  105.         play_gallery(0)

  106.     # --- D. 事件保护 ---
  107.     def keep_focus(e=None):
  108.         if is_locked:
  109.             entry.focus_set()
  110.             root.lift()

  111.     root.bind("<Return>", lambda e: do_unlock())
  112.     root.bind("<FocusOut>", lambda e: root.after(10, keep_focus))
  113.     root.bind("<Alt_L>", lambda e: "break")
  114.     root.bind("<Alt_R>", lambda e: "break")
  115.     root.protocol("WM_DELETE_WINDOW", lambda: None)
  116.    
  117.     entry.focus_set()
  118.     root.grab_set()
  119.     root.mainloop()

  120. # ==================== 4. 设置界面 ====================
  121. def create_main_gui():
  122.     global BG_PATH
  123.     m_root = tk.Tk()
  124.     m_root.title("挂机锁设置")
  125.     m_root.geometry("400x300")

  126.     tk.Label(m_root, text="设置解锁密码:").pack(pady=10)
  127.     p_var = tk.StringVar(value=PASSWORD)
  128.     tk.Entry(m_root, textvariable=p_var, width=30).pack()

  129.     cur_path = tk.StringVar(value=f"当前路径: {os.path.basename(BG_PATH) if BG_PATH else '未选择'}")
  130.     tk.Label(m_root, textvariable=cur_path, wraplength=350).pack(pady=10)

  131.     def select_dir():
  132.         global BG_PATH
  133.         path = filedialog.askdirectory() # 明确选择文件夹
  134.         if path:
  135.             BG_PATH = path
  136.             cur_path.set(f"当前路径: {path}")

  137.     tk.Button(m_root, text="选择图片文件夹", command=select_dir).pack()
  138.    
  139.     def launch():
  140.         if not p_var.get().strip():
  141.             messagebox.showwarning("提示", "密码不能为空")
  142.             return
  143.         save_config(p_var.get().strip(), 8, BG_PATH)
  144.         m_root.destroy()
  145.         start_lock_screen()

  146.     tk.Button(m_root, text=" 开启锁定 ", bg="#d9534f", fg="white", font=("bold", 12), command=launch, width=20).pack(pady=25)
  147.     m_root.mainloop()

  148. if __name__ == "__main__":
  149.     if PASSWORD:
  150.         start_lock_screen()
  151.     else:
  152.         create_main_gui()
复制代码




作者: freesoft00    时间: 7 小时前
左岸麦田 发表于 2025-12-24 11:13
感谢分享,一般直接自带的了,主要是方便

我是pe下用的,pe不知道win+l是否管用,而且pe也没有设置用户密码所以win+l也不行。
教室中大屏电脑装机转软件,网络克隆,防止学生去乱点击。
启动到pe后他们看着新奇,你说了不要动,转头就有人去哪里随便点击打开软件,或者把你要克隆用的软件关闭了,或者直接点击开始菜单关机了当然正常电脑也能用,安全性谈不上,致使多一个选择,一般win+L就可以了

作者: hmaaaa    时间: 7 小时前
感謝大大辛苦分享!感恩!^^
作者: raalyf    时间: 7 小时前
感谢分享
作者: tmlu110    时间: 7 小时前
上面有一黑横

45.jpg (245.13 KB, 下载次数: 1)

45.jpg

作者: cncecpcy    时间: 7 小时前
好。。。。。。。。。。
作者: guong    时间: 7 小时前
谢谢分享!
作者: tutucherry    时间: 7 小时前
谢谢分享!

作者: 轻轻撒旦    时间: 7 小时前
66
作者: ebaqiang    时间: 6 小时前
感谢热心分享
作者: 左岸麦田    时间: 6 小时前
freesoft00 发表于 2025-12-24 13:22
我是pe下用的,pe不知道win+l是否管用,而且pe也没有设置用户密码所以win+l也不行。
教室中大屏电脑装机 ...

PE使用的不是很多,主要是维护的时候使用,根据个人的需求来操作就行了。
作者: qihua    时间: 6 小时前
AI真不错,交出代码
作者: dawensger    时间: 6 小时前
不明觉厉
作者: 12qaz    时间: 5 小时前
感谢分享
作者: eone1984    时间: 5 小时前
桂机锁和屏保有什么不同。
作者: wyp858    时间: 5 小时前
感谢楼主分享
作者: c13869082812    时间: 5 小时前
好多年没看到挂机锁这几个字了,多年前上网吧经常用到,现在还有场景需要吗?都有锁屏密码
作者: askgrass    时间: 4 小时前
感谢楼主分享
作者: qq623505057    时间: 4 小时前
直接安装个 万象网管,也能锁屏嘿嘿
作者: wwoldok    时间: 3 小时前
下来研究一下
作者: ewq11111    时间: 2 小时前
感谢分享
作者: tcl123    时间: 2 小时前
这种情况下,远程还能用吗
作者: 随缘5138    时间: 2 小时前
谢谢分享 辛苦了
作者: wang1126    时间: 2 小时前
谢谢楼主分享
作者: handsome_xiang    时间: 2 小时前
感谢分享!
作者: freesoft00    时间: 1 小时前
tmlu110 发表于 2025-12-24 13:46
上面有一黑横

改了,测试一下
作者: zyeaglezy    时间: 1 小时前
感谢分享
作者: Flame1363    时间: 1 小时前
感谢分享
作者: wyqdabcd    时间: 1 小时前
感谢分享
作者: tmlu110    时间: 半小时前
freesoft00 发表于 2025-12-24 19:35
改了,测试一下

解锁框固定在图片上不很好,建议设置唤醒才出来,可参考下玩酷之家
作者: freesoft00    时间: 半小时前
本帖最后由 freesoft00 于 2025-12-24 20:28 编辑
tmlu110 发表于 2025-12-24 20:22
解锁框固定在图片上不很好,建议设置唤醒才出来,可参考下玩酷之家

兄弟有兴趣可以自己整整了,反正源代码在压缩包中。我整这个纯属按场景简单满足需求。没有太多的功能和安全性包括美观度。能用即可。

我修改了一版本,检测进程,如果进程退出自动解锁屏幕,比如配置文件中写上进程名ghost.exe,pe启动后网络克隆ghost克隆完成退出后,进程没有了锁屏就自动解锁。还有就是定时解锁,比如10分钟自动解锁。
但是ai修改的这2个功能老是没有起作用。也就放弃了。现在的虽然不太专业也算比较满意可以满足我的个人场景需求了
另外这个加入到pe启动项目中,也可以作为pe登录界面,输入密码后登录,虽然不是真实的但是作为pe也是可以这样用的

作者: zainijia    时间: 8 分钟前

感谢分享




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3