服务器关闭远程桌面连接后,鼠标、键盘、剪切板等失效解决方法

目录

根本原因

解决方法

退出远程桌面程序

exe文件下载


根本原因

关闭远程桌面会让系统切换到登录Desktop的界面,而在登录Desktop的界面上没有我们打开的其他窗口,因此会导致鼠标、键盘、剪切板等失效,相当于被锁屏了,像pyautogui等图像匹配相关功能此时都会失效。

解决方法

在cmd运行代码:@%windir%\System32\tscon.exe 0 /dest:console,该命令会关闭远程桌面的连接,然后把连接返回给远程的那台电脑(绕开登录过程),其中0为远程连接时被分配的Session ID,一般Session ID不会大于10,除非有很多账户在你这台服务器上。cmd运行这段代码后就会出现如图:

关闭或确定即可,之后服务器的鼠标、键盘、剪切板等会正常工作。

但是每次执行cmd都很麻烦,不如让python来执行这段cmd命令,之后打包成exe,一键运行即可,这样就方便了许多。

退出远程桌面程序

python核心代码如下(我这里设置的是关闭0到9的Session ID):

然后再扩展一下:

import subprocess
import threading
import time
from tkinter import Tk, StringVar, Entry, Label, Button, DISABLED


class CloseRDP:
    def __init__(self):
        """初始化一个界面"""
        self.window = Tk()
        self.window.title('退出远程桌面')
        self.window.geometry('300x150')
        self.window.resizable(False, False)  # 规定窗口不可缩放
        self.second = 0
        self.text = StringVar()
        self.text.set('2')
        label1 = Label(self.window, text="定时:", font=('宋体', 25))
        self.entry = Entry(self.window, width=10, textvariable=self.text, font=('宋体', 20), fg='blue', justify='center')
        label2 = Label(self.window, text="秒", font=('宋体', 25))
        self.button = Button(self.window, width=13, height=3, text='开始', font=('黑体', 15), command=self.run)
        label1.grid(row=0, column=0)
        self.entry.grid(row=0, column=1)
        label2.grid(row=0, column=2)
        self.button.grid(row=1, column=1)
        self.window.mainloop()

    def run(self):
        get_input = self.entry.get()
        if get_input and get_input.isdigit():  # 数据检测
            self.button["text"] = "关闭软件取消"
            self.button['state'] = DISABLED
            self.entry.configure(state="readonly")
            t = threading.Thread(target=self.count_down, args=(get_input,))
            t.setDaemon(True)  # 守护线程,退出界面后回收线程
            t.start()

    def count_down(self, get_input):  # 定时函数
        self.second = int(get_input)
        while self.second:
            time.sleep(1)
            self.second -= 1
            self.window.after(0, self.update)
        self.main()

    def main(self):  # 退出远程桌面
        for i in range(10):
            cmd = r'@%windir%\System32\tscon.exe {} /dest:console'.format(str(i))
            subprocess.Popen(cmd, shell=True)
        self.window.destroy()  # 退出界面

    def update(self):
        self.text.set(str(self.second))  # 更新倒计时


if __name__ == '__main__':
    CloseRDP()

 附带了自定义定时退出功能,退出远程桌面后它也会自动关闭,效果图:

exe文件下载

 最后打包成exe,大功告成!注意windows可能会禁止它下载或运行,点击信任即可!

退出远程桌面exe下载

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钢铁の洪流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值