我创建了一个在后台 headless (headless)运行的 java 进程,用于监视 mac 机器。监控的一部分包括截取用户操作的屏幕截图以及偶尔打开聊天窗口。 我假设这些操作都不能在 headless (headless)模式下执行,如果我错了,请纠正我。是否可以从我的 headless (headless)模式进程启动另一个能够打开聊天窗口或截取屏幕截图的进程?如何从 headless (headless)进程开始这样的进程? 提前致谢。
编辑:它在 Mac 上运行,因此肯定有显示器、鼠标和键盘,而且我们知道有人坐在上面并使用它。
编辑:它通过机器上运行的守护进程启动。
最佳答案
在这个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 进程(或任何 headless (headless)进程),以便它能够访问 UI:
launchctl bsexec $(/bin/ps -axww | /usr/bin/grep loginwindo[w] | /usr/bin/awk '/console/{print $1;exit}') COMMAND GOES HERE
关于java - 从 headless (headless)模式启动 Java 桌面应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30316342/