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 است!