问答 未连接虚拟机,激活 window 窗口和截屏无效,请问该如何解决

ChienHsueh · August 02, 2021 · Last by ChienHsueh replied at August 06, 2021 · 1688 hits

本人做了个小工具,对数据库数据进行处理,然后生成一系列数据文件,然后这些文件要传到一个 java 写的校验工具校验数据是否有问题。

目前我使用 win32 掉起窗口,然后用 win32api 调起上传,并用 oci 识别失败和成功,然后返回结果到前端。

但是,当远程机器断开时,调起窗口的函数 win32gui.setForegroundwindow() 以及截屏所用的 saveBitMap.CreatecompatibleBitMap() 均无法使用,请问有没有其他支持当远程虚拟机没有连接时能把窗口前置调起以及截屏的函数?

共收到 6 条回复 时间 点赞

远程机器连接时,一切程序都可以正常运行。Orz

将 setForegroundwindow 改为 setwindowPos 方法可以解决未连接虚拟机无法前置窗口的问题

截图从原先用 winapi,改用了 PIL 都无法在没有连接虚拟机的情况下截图😑

import win32api
import time
import win32con
from PIL import ImageGrab
win32api.keybd_event(0x2C, 0, 0, 0)
win32api.keybd_event(0x2C, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(0.1)
im = ImageGrab.grabclipboard()
im.save("testtmp.png")
#im.show()

尝试了通过截图按钮,然后获取剪切板,远程断开时,获取到的也是空😑

Author only

现在增加了命令 @%windir%\System32\tscon.exe 2 /dest:console 来使窗口在无连接时也有界面
然后加了个定时任务,每 10 分钟激活一下窗口,保持远程窗口不会被断开,问题算是勉强解决了。😅 😅 😅

ChienHsueh 关闭了讨论 06 Aug 15:47
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up