我创建了一个java进程,它在监视mac机器的后台运行无头。部分监控包括截取用户操作的屏幕截图,偶尔会显示聊天窗口。 我假设这些动作都不能从无头模式执行,如果我错了请纠正我。是否可以从我的无头模式进程启动另一个进程,该进程能够打开聊天窗口或截取屏幕截图?如何从无头过程开始这样的过程? 提前谢谢。
编辑:它在Mac上运行,所以肯定有显示器,鼠标和键盘,我们知道有人坐在上面并使用它。
编辑:它通过计算机上运行的守护程序启动。
答案 0 :(得分:0)
在此link中找到以下代码,尝试以登录到计算机的用户身份运行命令:
loggedInUser=`/bin/ls -l /dev/console | /usr/bin/awk '{ print $3 }'`
declare -x LoginWindowPID="$(/bin/ps -axww | /usr/bin/grep loginwindo[w] | /usr/bin/awk '/console/{print $1;exit}')"
/bin/launchctl bsexec "${LoginWindowPID:?}" /usr/bin/sudo -u "$loggedInUser" COMMAND GOES HERE
使用它我们可以使用以下命令启动java进程(或任何无头进程),以便它可以访问UI:
launchctl bsexec $(/bin/ps -axww | /usr/bin/grep loginwindo[w] | /usr/bin/awk '/console/{print $1;exit}') COMMAND GOES HERE