java - 从 headless (headless)模式启动 Java 桌面应用程序

标签 java process awt headless

我创建了一个在后台 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/

相关文章:

bash - Cygwin:如何获取由 CygStart 启动的程序的 PID?

c - 如何原子地执行一小段 C 代码

java - 如何将 mouseListener 添加到匿名 JLabel 对象?

Java在组件和框架之间添加空间

java - 如何使用记事本而不是使用 Eclipse 或任何 IDE 托管在 Red Hat 5 中开发的 Java 网站

java - 运行 javafx 应用程序、Netbeans 11、java 12、javafx 13 的问题

java - Stream 从一个对象创建两个对象并进一步处理

c# - 运行太多进程时 Mono 崩溃

java - 在未加权图中找到从源到目的地的所有最短路径

Java 可以使用 GridBagLayout 来组织 CardLayout 中使用的 JPanel