📜  如何使用Python从任何地方控制 PC?(1)

📅  最后修改于: 2023-12-03 15:24:00.474000             🧑  作者: Mango

如何使用Python从任何地方控制PC?

想象一下,你可以轻松地控制任何电脑,从手机、平板或者笔记本电脑,无论你身处何地。这听起来有些不真实,但是借助Python和相应的库,这是完全可行的。

目录
原理介绍

首先,我们需要了解一个概念:远程桌面协议(Remote Desktop Protocol)。这是一种系统,允许你在远程计算机上运行应用程序,并且通过本地计算机进行输入和输出。

在Windows系统中,远程桌面协议已经默认安装了。所以,我们只需要利用Python来模拟一下控制计算机的过程,就可以使用这个协议了。

必备条件
  1. 电脑上需要开启远程桌面功能。在Windows上,可以使用“控制面板”->“系统和安全”->“系统”->“远程设置”里的选项进行设置。
  2. 安装Python,并安装pyautogui和win10toast库。可以使用以下命令安装:
 pip install pyautogui
 pip install win10toast
  1. 手机或者平板电脑,确保可以进行WiFi连接。
步骤
  1. 打开Python编译器,新建一个文件:
import pyautogui
import time

def goto(start_pos, end_pos):
    pyautogui.moveTo(start_pos[0], start_pos[1])
    time.sleep(2)
    pyautogui.click()
    pyautogui.moveTo(end_pos[0], end_pos[1])
    pyautogui.click()

goto((1915, 1055), (1965, 891))

这段代码主要是用于模拟点击鼠标的操作。可以修改goto()函数里的参数,来控制鼠标的移动和点击。

  1. 新建一个文件,将以下代码写入:
from win10toast import ToastNotifier

def show_notification(title, msg):
    toaster = ToastNotifier()
    toaster.show_toast(title, msg)

show_notification('Hello World', 'You can now control your computer using your phone!')

这段代码主要是用于在Windows系统中显示通知,说明Python已经成功地连接了电脑。

  1. 现在我们需要编写一个服务器,让电脑可以监听来自移动设备的连接请求,并且执行相应的操作。新建一个文件,将以下代码写入:
import socket

def start_server():
    # 在本地主机上监听任何未使用的TCP端口
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = ('localhost', 10000)
    sock.bind(server_address)
    sock.listen(1)

    while True:
        # 等待连接
        print('waiting for a connection...')
        connection, client_address = sock.accept()

        try:
            print('connection from', client_address)
            # 接收数据
            while True:
                data = connection.recv(64)
                if data:
                    print('received "%s"' % data)
                    # 解析数据并执行相应的操作
                    if data == b'left_click':
                        pyautogui.click()
                    elif data == b'right_click':
                        pyautogui.rightClick()
                    elif data == b'scroll_up':
                        pyautogui.scroll(10)
                    elif data == b'scroll_down':
                        pyautogui.scroll(-10)
                    elif data == b'key_ctrl':
                        pyautogui.press('ctrl')
                    elif data == b'key_shift':
                        pyautogui.press('shift')
                    elif data == b'key_win':
                        pyautogui.press('win')
                    else:
                        pass
                else:
                    print('no more data from', client_address)
                    break
        finally:
            # 清理连接
            connection.close()

start_server()

这段代码主要是用于开启一个TCP服务器,监听来自移动设备的连接请求,并且执行相应的操作。在手机或者平板电脑上,你需要使用任何一个支持发送TCP数据包的应用程序,将以下数据包发往本地主机的IP地址和TCP端口10000:

  • left_click: 模拟鼠标左键单击
  • right_click: 模拟鼠标右键单击
  • scroll_up: 模拟鼠标滑轮向上滚动
  • scroll_down: 模拟鼠标滑轮向下滚动
  • key_ctrl: 模拟键盘按下Ctrl
  • key_shift: 模拟键盘按下Shift
  • key_win: 模拟键盘按下Windows键
  1. 手机或者平板电脑上,下载任何一个TCP客户端应用程序。根据上述信息,建立一个连接,并且根据需要发送数据包。
限制与安全问题
  1. 这个方法可以让你在任何地方控制你的电脑,因此请确保你在使用时有足够的安全措施。比如,使用密码保护你的Windows系统账户,以及只允许在可信任的网络上进行连接。
  2. 远程桌面协议的效果可能会受到网络和设备性能的影响。
  3. 这个方法不是完美的。容易出现在未经授权的情况下被黑客控制的风险。
结论

我们可以使用Python和相关库来控制电脑,只需满足相应的必要条件。这种方法可能存在一定的危险性,请务必确保在安全的环境下使用。