用Java程序打开Visio

3

我已经通过以下代码从Java中打开了Visio..

Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("Visio Example");
        shell.setLayout(new FillLayout());
        try {
            OleFrame frame = new OleFrame(shell, SWT.NONE);
            new OleClientSite(frame, SWT.NONE, "Visio.drawing");
        } catch (SWTError e) {
            System.out.println("Unable to open activeX control");
            display.dispose();
            return;
        }
        shell.setSize(800, 600);
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();

现在的问题是,只有在手动点击“OK”后才会打开一个页面。

我想直接跳转到新页面进行绘制,需要对我的代码进行哪些改进?

这也可以在图片中看到。

谢谢。

enter image description here


我无法理解问题,能否详细解释一下? - Alanmars
@Bloodwolf 我需要通过Java程序打开我使用上述代码打开的Visio绘图页面,但问题在于它需要手动点击才能打开新的绘图页面,这是我想要解决的问题。我希望默认加载一个Visio空白页面,我希望这已经足够了解问题。 - user1210637
那个“确定”按钮是什么原因导致它出现的? - Oleg Mikheev
我已经编写了使用OleClinetSite打开Visio的代码,它成功地打开了Visio,但需要手动点击才能打开一个新页面。我认为我正在重复这个问题,这很简单,因为您已经有了上面的代码,可以让您看到它正在与Visio进行交互,但无法打开新的绘图页面,就是这样。 - user1210637
1个回答

0

一个解决方案可能是查看Java Robot类,我并不是说这是理想的解决方案,也许远非如此,但是Robot类允许您在屏幕上触发点击事件。如果现在无法解决这个特定问题,您以后可能会用到它。

http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Robot.html

//Something like this
Robot robot = new Robot();
//Where 100 is x and y being the onscreen co-ordinates
robot.mouseMove(100,100);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);

就像所说的那样,这可能不是理想的解决方案,但对于您的预期目的,您可能会发现它很有帮助。

编辑:您还可以使用此类来执行按键操作。例如,连续按几次Tab键,然后按Enter键。这个解决方案远非理想,但在我看来可以胜任工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接