برنامه نویسی

pc رایانه خود را با پایتون بیدار نگه دارید (مناسب برای کاربران RDP!)

تا به حال در یک جلسه از راه دور عمیق بوده اید یا وقتی ناگهان یک کار طولانی انجام داده اید … system سیستم شما تصمیم به چرت زدن می گیرد؟

اگر از RDP (پروتکل دسک تاپ از راه دور) استفاده می کنید-روش داخلی ویندوز برای اتصال به یک رایانه از راه دور-می دانید وقتی دستگاه از راه دور شما به دلیل عدم فعالیت از بین می رود ، چقدر ناامید کننده است. اگر ویندوز فکر کند شما بیکار هستید ، جلسات RDP می تواند کاهش یابد ، حتی اگر کار شما هنوز در حال اجرا است.

بیایید آن را برطرف کنیم. در اینجا یک اسکریپت پایتون وجود دارد که:
✅ از خوابیدن ویندوز جلوگیری می کند
نمایشگر را فعال نگه می دارد
ceypresss را به فعالیت کاربر جعلی شبیه سازی می کند
stession جلسه RDP خود را زنده نگه می دارد

ما این اسکریپت را به صورت خط می شکنم ، بنابراین شما دقیقاً می دانید چه کاری انجام می دهد.

📦 مرحله 1: واردات کتابخانه های مورد نیاز

import ctypes
import time
import pyautogui
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

CTYPES: توابع API ویندوز را برای کنترل حالت قدرت فراخوانی می کند.

زمان: مکث بین کلید را اضافه می کند.

Pyautogui: ورودی صفحه کلید/ماوس را شبیه سازی می کند (گویی هنوز در صفحه کلید هستید).

⚙ مرحله 2: پرچم های قدرت ویندوز را تعریف کنید

ES_CONTINUOUS = 0x80000000
ES_AWAYMODE_REQUIRED = 0x00000040
ES_SYSTEM_REQUIRED = 0x00000001
ES_DISPLAY_REQUIRED = 0x00000002

These constants are passed to the Windows API to tell it:

Constant    Meaning
ES_CONTINUOUS   Keep the settings active continuously
ES_AWAYMODE_REQUIRED    Prevent idle sleep (even if background)
ES_SYSTEM_REQUIRED  Don't let the system sleep
ES_DISPLAY_REQUIRED Keep the screen turned on
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🛑 مرحله 3: از عدم موفقیت برای اتوماسیون غیرفعال کنید

pyautogui.FAILSAFE = False
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر ماوس به گوشه بالا سمت چپ حرکت کند ، پیوتوگی اسکریپت ها را متوقف می کند.

این رفتار را غیرفعال می کند – هنگام اجرای اسکریپت ها در جلسات بدون سر یا از راه دور (مانند RDP) مفید است.

💻 مرحله 4: از عملکرد خواب جلوگیری کنید

def prevent_sleep():
    ctypes.windll.kernel32.SetThreadExecutionState(
        ES_CONTINUOUS | ES_AWAYMODE_REQUIRED | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED
    )
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این عملکرد به ویندوز می گوید:

“نخوابید. صفحه نمایش را ادامه دهید. سیستم را فعال نگه دارید – به طور نامحدود.”

💤 مرحله 5: دوباره به خواب اجازه دهید (در خروجی)

def allow_sleep():
    ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سیستم را به رفتار طبیعی خواب خود بازنشانی می کند.
وقتی کاربر اسکریپت را متوقف می کند ، این موضوع را فراخوانی می کنیم.

🧑‍💻 مرحله 6: جلسه RDP خود را فعال نگه دارید

def keep_rdp_alive():
    print("Keeping RDP session alive... Press Ctrl+C to stop.")
    prevent_sleep()
    while True:
        pyautogui.press('shift')  # Simulate a Shift keypress
        time.sleep(240)           # Wait 4 minutes before repeating
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این:

تماسهای PRESINAD_SLEEP () برای جلوگیری از خواب سیستم

سپس حلقه ها را برای همیشه ، فشار دهید ، هر 4 دقیقه یکبار تغییر دهید تا ویندوز را فریب دهد تا فکر کنید هنوز فعال هستید

به جلوگیری از زمان بندی جلسه RDP کمک می کند (ویندوز در صورت عدم وجود ورودی ، بیکار هستید)

▶ ️ مرحله 7: اسکریپت را اجرا کنید

try:
    print("Preventing system sleep. Press Ctrl+C to stop.")
    keep_rdp_alive()
    while True:
        time.sleep(60)  # Keep script running
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

جادو را شروع می کند و فیلمنامه را زنده نگه می دارد.
Ctrl+C آن را متوقف می کند.

🧹 مرحله 8: خروج تمیز

except KeyboardInterrupt:
    print("Restoring sleep settings...")
    allow_sleep()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

هنگامی که به Ctrl+C ضربه می زنید ، این بلوک وقفه را به خود جلب می کند و تنظیمات خواب را به درستی بازیابی می کند.

RDP چیست؟
RDP (پروتکل دسک تاپ از راه دور) یک پروتکل مایکروسافت است که به شما امکان می دهد به دستگاه ویندوز از راه دور وصل شوید و کنترل کنید – گویی که جلوی آن نشسته اید.

این توسط توسعه دهندگان ، Sysadmins و تیم های IT به این موارد استفاده می شود:

سرورهای از راه دور را مدیریت کنید

از هرجای دیگر به دسک تاپ دسترسی پیدا کنید

انجام کارهای طولانی مدت مانند ساخت ، بارگیری و غیره

مشکل این است که اگر ویندوز فکر کند شما غیرفعال هستید ، جلسات RDP وقت می گذارد. حتی اگر اسکریپت شما در حال اجرا باشد ، ممکن است سیستم به خواب برود یا جلسه را قفل کند. به همین دلیل شبیه سازی ورودی کاربر بسیار مفید است.

✅ tl ؛ dr: آنچه این اسکریپت انجام می دهد
از سیستم و نمایش خواب از طریق API ویندوز جلوگیری می کند

هر 4 دقیقه یک بار کلید تغییر را شبیه سازی می کند

جلسات RDP را زنده و پایدار نگه می دارد

پاک و تمیز رفتار خواب را بازیابی می کند

🔧 می خواهید آن را سفارشی کنید؟
اگر جلسه RDP شما سریعتر از زمان ، زمان را تنظیم کنید.

کلیدهای مختلف یا حرکات موش را شبیه سازی کنید.

در صورت اجرای طولانی مدت ، یک نماد سینی یا بسته بندی سرویس سیستم اضافه کنید.

script کامل را کپی کنید

import ctypes
import time
import pyautogui

# Prevent sleep (Keeps system & display active)
ES_CONTINUOUS = 0x80000000
ES_AWAYMODE_REQUIRED = 0x00000040
ES_SYSTEM_REQUIRED = 0x00000001
ES_DISPLAY_REQUIRED = 0x00000002
pyautogui.FAILSAFE = False

def prevent_sleep():
    ctypes.windll.kernel32.SetThreadExecutionState(
        ES_CONTINUOUS | ES_AWAYMODE_REQUIRED | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED
    )

def allow_sleep():
    ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS)

def keep_rdp_alive():
    print("Keeping RDP session alive... Press Ctrl+C to stop.")
    prevent_sleep()
    while True:
        pyautogui.press('shift')
        time.sleep(240)

try:
    print("Preventing system sleep. Press Ctrl+C to stop.")
    keep_rdp_alive()
    while True:
        time.sleep(60)
except KeyboardInterrupt:
    print("Restoring sleep settings...")
    allow_sleep()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

به من اطلاع دهید که آیا می خواهید نسخه ای برای MacOS/Linux یا نسخه ای که شامل یک GUI است!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا