草庐IT

java - 如何获取在 JVM 之外运行的任何 Linux/Windows 应用程序的屏幕截图

是否可以使用Java获取Java外部应用程序的屏幕截图,比如VLC/WindowsMediaPlayer,将其存储为Image对象,然后将其显示在JLabel或类似性质的东西中?有人知道这是否可行吗?如果可行,有人知道如何做吗?注意:我只需要了解如何获取屏幕截图并将其存储为某种形式的Image对象。之后我可以使用、操作它、显示它等等。 最佳答案 这是Windows的答案(不确定alt+printScr是否适用于linux:P)我想有一种方法可以实现这一点1。使用Robot类触发alt+printScreen命令(这会将Activit

java - 在 Groovy 中收集执行外部命令的输出的差异

以下代码多次卡住(我认为这是阻塞I/O)(有时可以工作)。defstaticexecuteCurlCommand(URL){defurl="curl"+URL;defproc=url.execute();defoutput=proc.in.text;returnoutput;}但是当我将代码更改为defstaticexecuteCurlCommand(URL){defurl="curl"+URL;defproc=url.execute();defoutputStream=newStringBuffer();proc.waitForProcessOutput(outputStream,S

java - 保留服务器 : how to terminate a blocking instance (eval taking forever)?

我需要以多线程方式执行Reval,这是Rserve提供的很好的方式。但是,如果一个实例的评估花费的时间太长,我需要能够关闭正在计算阻塞评估的实例。据我测试,给定的实例将拒绝关闭,直到eval完成(显然,它需要在再次监听之前获取结果)。所以这是我的问题:有没有办法在阻塞实例上获取java句柄(类似于Process对象),这样我就可以暴力终止/终止eval(类似于process.destroy())?换句话说,当我请求一个eval(创建一个连接,抛出一个命令)时,我如何通过java在正在处理的eval和与之相关的Rsere实例之间建立关系?或者我错过了Rserve的一些东西,它已经可以处理

java - 使用 Java 从 BAT 文件获取输出

我正在尝试运行.bat文件并获取输出。我可以运行它,但我无法在Java中获得结果:Stringcmd="cmd/cstartC:\\workspace\\temp.bat";Runtimer=Runtime.getRuntime();Processpr=r.exec(cmd);BufferedReaderstdInput=newBufferedReader(newInputStreamReader(pr.getInputStream()));Strings;while((s=stdInput.readLine())!=null){System.out.println(s);}结果为nu

java - 如何在 Java 中检索正在运行的进程的工作目录?

原始帖子大多数人都在回复的帖子HereisthecodeIhavealreadytrieddoingthiswithStringworkingDirectory="/home";Stringcommand="cd../";ProcessBuilderpb=newProcessBuilder(newString[]{"cmd","/c",command});pb.directory(newFile(workingDirectory));pb.redirectErrorStream(true);Processprocess=pb.start();//Sometimelateroncethe

java - 如何将 "enter key pressed"写入流?

抱歉,这个标题听起来很奇怪......我有以下情况:我希望我的Java程序与外部控制台交互。为了将各个命令“发送”到该控制台,我需要模拟普通控制台上的“按下回车键”。为了阐明我想要什么,假设mysql没有其他API,我需要通过控制台进行交互。虽然这不是我的实际问题,但已经足够接近了。我有以下代码:Stringcommand="/usr/local/mysql/bin/mysql";Processchild=Runtime.getRuntime().exec(command);StreamGobblergobbler=newStreamGobbler(child.getInputStre

Java,在前台运行另一个应用程序

我想从java代码运行另一个应用程序。Runtimert=Runtime.getRuntime();Processpr=rt.exec("cmd.exe");进程已启动,但在后台。如何让它在前台运行? 最佳答案 Process#waitFor()正是您要找的。 关于Java,在前台运行另一个应用程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11983803/

java - 为什么我的进程终止?

我有一个运行ping操作的Runnable对象-Runnabler1=newRunnable(){@Overridepublicvoidrun(){try{Listcommands=newArrayList();commands.add("ping");commands.add("-c");commands.add("10");commands.add("google.com");System.out.println("Beforeprocess");ProcessBuilderbuilder=newProcessBuilder(commands);Processprocess=bui

java Process.waitfor 是一个阻塞调用

我希望能够从JVM内部启动外部进程并完成它。我可以使用ProcessBuilder创建一个流程,然后执行Process.waitFor()以等待其完成。然而,这是一个阻塞调用,只会浪费线程资源。通过事件处理程序和响应式编程来完成此操作会更有意义。人们会认为JVM可以向操作系统注册某种监听器来监听进程完成事件,并将其转发回程序。是否存在这样的机制/API?有没有实现此目的的替代方案或库? 最佳答案 使用NuProcess如果您只需要支持Windows、MacOSX和Linux,请使用该库。它使用回调模型提供对外部进程的非阻塞访问——包

Java :Kill process runned by Runtime. getRuntime().exec()

我需要写一段代码,那使用Runtime.getRuntime().exec("java-jarMyServerRunner-portMYPORT");运行unix进程通过从java代码执行命令找到进程的PIDlsof-t-i:MYPORT并通过pidkill-9PID杀死他(也可以通过从java代码执行命令)然后执行其他命令但是如果我通过Runtime.getRuntime().exec()执行此命令,我的程序将以退出代码137退出-这意味着当我运行Runtime.getRuntime().exec("kill-9PID")我终止了我的java程序的进程,但不是我从代码运行的程序。我怎