启动Chrome并等待它关闭

题 我想启动Chrome网络浏览器作为访问特定网站的过程,然后等到它关闭。 一种特殊情况是浏览器可能已经打开并运行,因为用户可能已经访问过某个网站。 在这种情况下,浏览器可能会在现有窗口中打开一个新选项卡,新启动的进程将立即终止。 这不应该混淆我的等待过程:要么,我想要一个新的浏览器窗口(如果可以某种方式强制执行,可能通过命令行参数)并等待它关闭,或保持现有的浏览器窗口并等待所有选项卡结果从我的过程关闭。 环境 我认为没关系,但我的编程环境是Java ,你可以假设我知道浏览器的路径。 例 我可以获得预期行为的唯一浏览器是Internet Explorer (叹息)。 在这里,我需要基本上在一个临时文件夹中创建一个新的批处理脚本 start /WAIT “” “C:\Program Files\Internet Explorer\iexplore.exe” -noframemerging http://www.test.com/ 然后我运行批处理脚本而不是直接浏览器,并在等待完成后删除它。 预期的过程 使目标过程更清晰: 我的程序开始了。 我的程序将Chrome浏览器作为单独的进程启动,并提供一个URL作为该进程的参数进行访问。 Chrome浏览器作为新进程异步运行,并访问提供的URL。 到目前为止,这很容易。 启动新进程(Chrome浏览器)后,我自己的程序应该等待所述进程终止。 这是困难的部分,因为 许多现代浏览器启动多个进程。 我需要等待所有这些。 许多现代浏览器可能以某种方式“脱离”我自己启动的进程。 对不起,我不知道一个更好的词,我的意思是:我启动一个进程然后启动另一个进程并立即终止,而另一个进程继续运行。 如果我等待我的程序最初启动的浏览器进程,则在浏览器仍处于打开状态时等待将完成。 上面的一个特例是在许多浏览器中实现的选项卡式浏览:如果浏览器在我启动时已经打开(在用户启动的单独进程中),我新启动的浏览器进程可能会简单地传达URL以访问现有流程并终止。 当我的程序认为她已关闭浏览器时,用户仍在我提供的URL上。 通过指定特殊的命令行参数(例如IE的noframemerging可能会禁止此问题。 一旦浏览器终止或者与我提供的URL相关的所有标签都已关闭,我的程序将停止等待,而是继续开展业务。 用例是我有一个可以在本地运行或在服务器上运行的Web应用程序。 如果它在本地运行,它将启动Web服务器,然后打开浏览器以访问条目页面。 关闭浏览器后,该Web应用程序也应该关闭。 这对于Internet Explorer来说是可靠的,对于所有其他情况,用户必须关闭浏览器,然后明确地关闭Web应用程序。 因此,如果我能够可靠地等待Chrome完成,这将使用户体验更好。 方案偏好: 解决方案按以下顺序排列 任何与纯Java JRE一起提供的东西。 这包括浏览器的特殊命令行参数。 需要我做的事情,例如,创建批处理脚本(例如在IE的情况下)。 任何需要第三方开源库的东西。 任何需要3rth党闭源图书馆的东西。 任何独立于平台的答案(同时适用于Windows和Linux)都优先于平台相关的答案。 理由:在理想情况下,我想知道究竟是做了什么,并将其包含在我自己的代码中。 […]

如何选择一条线

所以我试图找出如何实现在绘图区域中选择线条或边缘的方法,但我的数学有点缺乏。 这是我到目前为止所得到的: 一组线,每一行有两个端点(一个开始,一个开始结束) 在canvas上正确绘制线条 单击canvas时会收到鼠标单击事件,因此我可以获取鼠标指针的x和y坐标 我知道我可以遍历行列表,但我不知道如何构造算法来通过给定坐标(即鼠标单击)选择行。 有人有任何想法或指出我正确的方向? // import java.awt.Point public Line selectLine(Point mousePoint) { for (Line l : getLines()) { Point start = l.getStart(); Point end = l.getEnd(); if (canSelect(start, end, mousePoint)) { return l; // found line! } } return null; // could not find line at mousePoint } public boolean canSelect(Point start, […]

自定义注释作为方法记录的拦截器

Java大师, 我是一个很新的annotations ,并没有搜索过这么多,所以请忍受我… 我想实现一个Custom Annotation ,它将intercept一个方法调用; 从非常基本的东西开始,它可以只打印方法名称和参数,以便我可以避免使用logger语句。 像这样的示例调用: public MyAppObject findMyAppObjectById(Long id) throws MyCustomException { log.debug(“in findMyAppObjectById(” + id + “)”); //…. } 可以转换成: @LogMethodCall(Logger.DEBUG) public MyAppObject findMyAppObjectById(Long id) throws MyCustomException { //…. } 我可以得到一些关于此的提示吗?

如何向JTable的行添加工具提示

如何将工具提示添加到JTable的行(Java Swing)? 这些工具提示应包含相对行的相同值。 这是我在我的类中使用的扩展JTable的代码。 它覆盖了方法“prepareRenderer”,但是我得到了空单元格,它为行内的每个单元格添加了一个工具提示,而不是整行的一个工具提示(这就是我正在寻找的): public Component prepareRenderer(TableCellRenderer renderer,int row, int col) { Component comp = super.prepareRenderer(renderer, row, col); JComponent jcomp = (JComponent)comp; if (comp == jcomp) { jcomp.setToolTipText((String)getValueAt(row, col)); } return comp; }

exception:NumberFormatException:对于JSP列表页面中的输入字符串

我正在尝试在jsp页面中打印一个列表,但我收到错误java.lang.NumberFormatException.forInputString 但是,我没有使用任何数字或改变任何数字,我真的不知道我做错了什么,请帮助我。 我看到了一个类似于我的问题( 编号exception )并且他/她接受的答案是用’foreach’迭代列表,但是我做了它并且它仍然给我错误。 有人能帮助我吗? 这是jsp # Process Time Schedule Next time running Server On || Off Emails Description ${index.count} ${job.process} ${job.schedTime} ${job.nextTimeRun} ${job.server} ${job.isActive} ${job.email} ${job.description}   这是数据库 private String process; private String schedTime; private String nextTimeRun; private String runServer; private String mailOrder; private String lookCode; private String lookName; private String description; private […]

如何找到String变量中两个数字的总和?

在这段代码中,我不能总结a和b : String a = “10”; String b = “20”; JOptionPane.showMessageDialog(null,a+b); 由于a和b被定义为String ,因此该代码将连接字符串并输出10+20=1020 。 如何得到它而不是总和a和b并输出10+20=30 ?

如何用土耳其语字符号读取java中的UTF 8编码文件

我试图读取一个UTF-8编码的txt文件,它有一些土耳其字符。 基本上我已经编写了一个基于轴的Web服务,它读取此文件并将输出作为字符串发回。 不知怎的,我无法正确阅读这些角色。 代码非常简单,如下所述: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CodingErrorAction; public class TurkishWebService { public String generateTurkishString() throws IOException { InputStream isr = this.getClass().getResourceAsStream( “/” + “turkish.txt”); BufferedReader in = new BufferedReader(new InputStreamReader(isr, “UTF8”)); String str; while ((str = in.readLine()) != null) { System.out.println(str); } in.close(); return […]

从Java查询Windows搜索

我想直接(或间接)从Java查询Windows Vista Search服务。 我知道可以使用search-ms:protocol进行查询,但我想在应用程序中使用结果。 我在Windows Search API中找到了很好的信息,但没有一个与Java相关。 我认为接受的答案是提供有关如何实现这一目标的有用和明确的信息。 提前致谢。 编辑 在我将此标记为已接受之前,是否有人拥有JACOB样本? 🙂

如何修改位图的rgb像素看起来不同

我试图将位图图像转换为在热或夜间捕获的图像。 但我不知道是什么/如何修改像素看起来像那样。 我只知道 public static Bitmap newBitmapwithNightOrThermalEffect(Bitmap bmp) { long start = System.currentTimeMillis(); int width = bmp.getWidth(); int height = bmp.getHeight(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); int pixColor = 0; int pixR = 0; int pixG = 0; int pixB = 0; int newR = 0; int newG = 0; int newB = 0; […]

从另一个类处理JFrame

如何从另一个类中处理JFrame? 我的代码如下所示。 我使用Netbeans生成窗体生成窗口。 我想使用另一个类(name is needDispose)进行处理。 public class needDispose { /** *Call for dispose frame */ public static void disposeMyFrame(){ myEasyFrame.getMainFrame.dispose(); // DOESNT WORK } } NETBEANS GENERATE (重要的方法是getMainFrame()) import javax.swing.JFrame; public class myEasyFrame extends javax.swing.JFrame { /* * Get frame */ public final JFrame getMainFrame() { return this; } /** * Creates new form […]