我需要將 ENTER 按鍵發(fā)送到沒有 GUI的后臺任務。聽起來有點奇怪,所以這里是解釋:可執(zhí)行文件正在處理醫(yī)療數據(MRI 和 CT DICOM 圖片)并創(chuàng)建自動化的“醫(yī)療前報告”。他們稱之為人工智能。此可執(zhí)行文件在數據中心的無頭專用 Windows 2019 服務器上運行(沒有可用的 Linux 二進制文件 - 我問過)。They Company who responsible for this clusterfu** 提供更新(許多更新)。他們?yōu)椤癆I”編寫了一個單獨的更新程序。當我啟動更新程序時,它提示“找到新版本...”和“按 Enter 鍵繼續(xù)”。我不想在每次他們提供更新時連接并登錄服務器(通過 OpenSSH 隧道和 RDP 登錄)。所以我寫了一個簡短的 Python 腳本來為我完成這項工作。我不告訴你細節(jié),因為實際上知道有一個新的更新可用涉及 HTML 解析器和其他殘酷的事情。該腳本工作正常,除了帶有 ENTER 鍵的部分。那是因為服務器是數據中心中的頭。所以我不能使用像 pywinauto 或一些 autoit 宏之類的東西將窗口放在前面并按 Enter,因為更新程序在自動登錄管理員帳戶中沒有窗口的情況下啟動(另一個故事)。我的想法是用 subprocess.popen 打開 Updater 并生成一個 Pipe 來發(fā)送回車鍵。但這沒有用。更新程序啟動,但沒有執(zhí)行任何任務。proc = subprocess.Popen([r"C:\Program Files\dicomai\ai.exe"], stdin=PIPE)time.sleep(5)proc.communicate(b"\n")我沒有想法和解決方法。
2 回答

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
我試過了,對我有用
import subprocess
from subprocess import PIPE
import time
def doit():
pr = subprocess.Popen([r"C:\Program Files\Mozilla Firefox\firefox.exe"], stdin=PIPE)
time.sleep(5)
import pyautogui
pyautogui.write("someurl.com\n")
doit()
嘗試使用此庫截取您的應用程序/桌面的屏幕截圖以進行調試 - 有關詳細信息,請參閱文檔https://pyautogui.readthedocs.io/en/latest/screenshot.html
我也在無頭服務器上運行它并且運行良好

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
我嘗試了兩個版本:
1) 來自 Ctznkane525 的 pypi.org/project/keyboard
2) 來自 jana 的 pyautogui.write("\n")
兩者都在測試環(huán)境中完成了工作!謝謝!
添加回答
舉報
0/150
提交
取消