如何使用Java关闭一个在运行时弹出的对话框?

时间:2017-04-11 08:02:37

标签: java eclipse key

我正在尝试制作一个执行OCR(图像到文本转换)的项目。 我正在使用AspriseOCR jar文件,我相应地设置了我的项目。 它工作正常。

每当我运行项目时,当调用aspriseOCR API时,会在窗口中弹出一个对话框,询问我是否要访问他们的网站。我需要自动化整个过程。所以我不希望出现这个对话框。

有什么方法可以在我的代码中关闭此对话框,以防它出现?有没有办法可以按Enter键(它会相应关闭)。我正在使用Java,Eclipse。

注意:这不适用于网络浏览器。所以我不能使用Selenium相关的命令。

编辑: - 我试着用这个: -

Robot r = new Robot(); r.keyPress(KeyEvent.VK_ENTER); r.keyRelease(KeyEvent.VK_ENTER);

但它无法解决我的问题,因为我需要在我无法访问的API源代码中添加它。是否有其他方法或方法可以关闭对话框?

所以代码的一部分是: -

`{
String s = ocr.recognize( new File[] {new File("C:\\work\\"+file)}, 
Ocr.RECOGNIZE_TYPE_ALL, Ocr.OUTPUT_FORMAT_PLAINTEXT); 
Robot robot; 
robot = new Robot(); 
robot.keyPress(KeyEvent.VK_ENTER); 
robot.keyRelease(KeyEvent.VK_ENTER); 
System.out.println("\n\n pressed enter\n\n"); 
System.out.println("Result:\n\n"+s); 
ocr.stopEngine();
}`

因此,当控件进入函数ocr.recognize(...)时,会出现对话框,我无法访问该jar文件中的源代码。

有没有什么方法可以并行运行另一个等待打开这个对话框并关闭它的线程(这个线程与ocr.recognize并行运行)。请告诉我如何使用java代码识别是否已打开Windows对话框。

1 个答案:

答案 0 :(得分:1)

您可以将Robot类用于此目的,如下所示:

    //if you want to press alt+f4; to close window or
    Robot robot = new Robot();

    robot.keyPress(KeyEvent.VK_ALT);
    robot.keyPress(KeyEvent.VK_F4);
    robot.keyRelease(KeyEvent.VK_ALT);
    robot.keyRelease(KeyEvent.VK_F4);


    // to press enter

    Robot robot = new Robot();

    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);