Как на удаленном РС оставить курсор в отсутствии пользователя?

Всем привет. Столкнулся с проблемой, что в отсутствии пользователя на удаленном рабочем столе (вход через RDP, сессию не заканчиваю, машина виртуальная) курсор исчезает из-за чего не срабатывают скрипты на Python. Такое же происходит, если увезти курсор из окна удаленного РС в любое другое на физической машине. Для эмуляции движений курсора пробовал различные библиотеки типа mouse, pyautogui - не работают, так как курсор висит в позиции 0:0 и не планирует двигаться. Возможно, есть какая-то эмуляция подключения мыши, чтобы курсор всегда был видимой области окна удаленного РС? На подобные вопросы гугл не дает советов, все выдаваемые запросы об исчезновении курсора на удаленных РС. Надеюсь, понятно объяснил проблему.


Ответы (1 шт):

Автор решения: Matvj

Чтобы оставить курсор активным на удаленном компьютере при отсутствии пользователя с использованием Python, можно использовать несколько подходов. Однако следует учитывать, что управление курсором и взаимодействие с графическим интерфейсом отдаленного компьютера может быть не всегда тривиальной задачей и зависит от операционной системы и используемых библиотек.

Вот несколько подходов, которые могут помочь в решении данной задачи.

1. Использование библиотеки pyautogui

Библиотека pyautogui позволяет управлять курсором мыши и выполнять различные действия в графическом интерфейсе. Чтобы курсор оставался активным, вы можете периодически перемещать его на небольшие расстояния.

Установка библиотеки

Если у вас еще не установлена библиотека pyautogui, вы можете установить её с помощью pip:

pip install pyautogui

Пример кода

import pyautogui
import time

# Периодическое движение курсора
def keep_cursor_active():
    while True:
        # Получаем текущие координаты курсора
        x, y = pyautogui.position()
        # Перемещаем курсор на 1 пиксель вправо и обратно
        pyautogui.moveTo(x + 1, y)
        time.sleep(5)  # Ждем 5 секунд
        pyautogui.moveTo(x, y)  # Возвращаем курсор на место
        time.sleep(5)

if __name__ == "__main__":
    keep_cursor_active()

2. Использование библиотеки ctypes для Windows

Если вы работаете на Windows, можно использовать библиотеку ctypes для взаимодействия с API Windows и перемещения курсора.

Пример кода

import ctypes
import time

# Определяем структуру POINT
class POINT(ctypes.Structure):
    _fields_ = [("x", ctypes.c_int), ("y", ctypes.c_int)]

# Функция для получения текущей позиции курсора
def get_cursor_position():
    pt = POINT()
    ctypes.windll.user32.GetCursorPos(ctypes.byref(pt))
    return pt.x, pt.y

# Функция для перемещения курсора
def set_cursor_position(x, y):
    ctypes.windll.user32.SetCursorPos(x, y)

def keep_cursor_active():
    while True:
        x, y = get_cursor_position()
        # Перемещаем курсор на 1 пиксель вправо и обратно
        set_cursor_position(x + 1, y)
        time.sleep(5)  # Ждем 5 секунд
        set_cursor_position(x, y)  # Возвращаем курсор на место
        time.sleep(5)

if __name__ == "__main__":
    keep_cursor_active()

3. Использование pywinauto

Если вы работаете с приложениями Windows, библиотека pywinauto может помочь вам в управлении окнами и курсором.

Установка библиотеки

pip install pywinauto

Пример кода

from pywinauto import Application
import time

app = Application().connect(path='your_application.exe')  # Замените на путь к вашему приложению
window = app.window(title='your_window_title')  # Замените на заголовок окна приложения

def keep_cursor_active():
    while True:
        # Перемещаем курсор на 1 пиксель вправо и обратно
        window.set_focus()  # Сначала фокусируем окно
        window.move_mouse_input()
        time.sleep(5)  # Ждем 5 секунд
        window.move_mouse_input()
        time.sleep(5)

if __name__ == "__main__":
    keep_cursor_active()

Примечания

  • Безопасность: Убедитесь, что использование таких методов не нарушает политику безопасности вашей сети или компьютера. Некоторые антивирусные программы могут блокировать автоматические действия.
  • Зависимости: Убедитесь, что все необходимые библиотеки установлены на удаленном компьютере, если вы запускаете скрипт на нем.
  • Права администратора: В некоторых случаях для управления курсором могут потребоваться права администратора, особенно на Windows.

Заключение

Выбор метода зависит от ваших нужд и окружения (Windows, Linux и т.д.). Убедитесь, что используете подходящий метод для вашей операционной системы и соблюдаете все правила безопасности.

→ Ссылка