【问题标题】:Open visio by java program用java程序打开visio
【发布时间】:2012-03-06 19:21:47
【问题描述】:

我已经通过以下代码从 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();

现在的问题是它在手动点击后打开一个页面,即确定

我想直接跳转到新页面进行绘制,我的代码需要什么增强?

这也可以在图片中看到。

谢谢。

【问题讨论】:

  • 看不懂问题,详细解释一下吧。
  • @Bloodwolf 我需要通过上面代码打开的 java 程序打开 Visio 绘图页,现在问题是它需要手动单击才能打开我想要删除的新绘图页。我想默认加载一个visio balnk页面我希望它足以理解问题。
  • 确定按钮出现的原因是什么?
  • 我已经编写了通过 OleClinetSite 打开 visio 的代码,它打开了 visio,但需要手动单击才能打开一个新页面让你看到它正在与 visio 交互,但不要打开一个新的绘图页。

标签: java eclipse swt ole visio


【解决方案1】:

一种解决方案可能是检查 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然后输入key。这种解决方案远非理想。但会做海事组织的工作

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多