Salam. Python kodumda pyautogui var ve problemsiz işləyir windows 10 serverdə. Amma proqram rdpden çixsam belə işləməsi üçün oturumu konsola keçirib disconnect edirem. Proqram xəta verib bağlanir.
Xəta belədi:
Program terminated: screen grab failed
Traceback (most recent call last):
File “C:\Python311\Lib\site-packages\pyautogui\__init__.py”, line 213, in locateOnScreen
File “C:\Python311\Lib\site-packages\pyscreeze\__init__.py”, line 144, in wrapper
rdp-den çıxıb oturumu konsola daşımaq uçun istifade etdiyim bat
@ %windir%\System32\tscon.exe 2 /dest:console
@ %windir%\System32\tscon.exe 3 /dest:console
1 yoxdu, 0-da da sistem faylları işleyir, pyautogui yoxdu orda
5 gün evvel bu kod işleyirdi disconnectdən sonra, amma onda da proqramin sonunda pyautogui.press(‘f5’) istifade olunurdu her 10 deqiqede bir. Onda xeta verib bağlanirdi python proqram. Problem nə ilə bağlı ola bilər? Necə həll edə bilərəm?






Verilmiş cavablar və yazılan şərhlər (3 cavab var)
0
Salam. Pyautogui və pyscreeze kitabxanaları ekran görüntüsünü almaq üçün istifadə edilir, lakin bu kitabxanalar Remote Desktop Protocol (RDP) ilə əlaqəli problemlərlə üzləşə bilər. Bu problemi həll etmək üçün bir neçə yanaşma təklif edə bilərəm:
0
Hem python hem de pyautogui və pyscreeze son versiya yükleyende hemkomputerimde, hem de serverde xeta verir. Python 3.11.6 ile pip install keyboard==0.13.5 kiwisolver==1.4.8 lazy_loader==0.4 matplotlib==3.10.3 MouseInfo==0.1.3 mtm==1.0.0 networkx==3.5 numpy==1.24.3 opencv-python==4.7.0.72 packaging==25.0 pillow==11.2.1 pip==25.1.1 PyAutoGUI==0.9.53 PyGetWindow==0.0.9 PyMsgBox==1.0.9 pyparsing==3.2.3 pyperclip==1.9.0 PyRect==0.2.0 PyScreeze==0.1.27 pytesseract==0.3.9 python-dateutil==2.9.0 pytweening==1.2.0 scikit-image==0.25.2 scipy==1.15.3 setuptools==65.5.0 shapely==2.1.1 six==1.17.0 tifffile==2025.5.26 istifade edende xetasız işleyir, ancaq konsola atanda xeta verib dayanır.
“Başqa bir ekran sessiyası yaradın: RDP-dən ayrılmadan əvvəl yeni bir ekran sessiyası yaradaraq problemi həll edə bilərsiniz. Bu, ekranın aktiv qalmasını təmin edə bilər.” Bunu daha aydın izah edə biərsiz zəhmət olmasa. Necə edim?
0
Problem RDP sessiyasından ayrıldıqda Windows-un GUI sessiyasını deaktiv etməsidir — bu zaman pyautogui.screenshot() və ya locateOnScreen() kimi funksiyalar ekran görüntüsünü ala bilmir və xəta verir. tscon ilə konsola keçmək də GUI aktiv saxlanılmadığı üçün problemi həll etmir.
Çözüm:
Yeni bir ekran sessiyası yaratmaq dedikdə məqsəd: Windows-da “fiziki olaraq oturmuş istifadəçi” sessiyasını aktiv saxlamaq və pyautogui ilə işləyə bilən görünən bir masaüstü mühiti yaratmaqdır.
Bunun üçün aşağıdakılar mümkündür:
1. VNC Server istifadə edin (məs: TightVNC, UltraVNC):
VNC sessiyası RDP-dən fərqli olaraq disconnect olanda GUI aktiv qalır.
pyautogui VNC içindəki ekranı görə bilir və problemi yaşamır.
2. Windows Task Scheduler ilə “Run only when user is logged on” seçimi:
Proqramınızı Task Scheduler ilə başladın.
Aşağıdakı parametrlərlə:
“Run only when user is logged on” seçin.
“Run with highest privileges” aktiv edin.
RDP ilə daxil olun → proqramı işə salın → sessiyanı bağlamadan sadəcə RDP pəncərəsini örtün (disconnect etməyin).
3. Dummy HDMI plug istifadə edin (hardware həll):
Server kompüterinə fiziki monitor bağlı deyilsə, HDMI dummy plug taxın.
Windows GUI sessiyasını aktiv saxlayır.
Proqram disconnect olsa belə işləyir.
Niyə tscon bəzən işləmir?
tscon ilə GUI konsola köçürülür, amma əgər fiziki monitor bağlı deyilsə və ya sistem GUI sessiyasını deaktiv edibsə, yenə pyautogui işləmir.
Ən stabil həll: VNC istifadə edin və ya dummy HDMI plug taxın.
Sual verin
Cavab verin