我有一个Windows应用程序,它有一个复杂的GUI,我想隐藏用户。为了做到这一点,我想创建一个包含极其简单的界面的包装器,它覆盖了这个应用程序,并在用户单击包装器上的单个按钮时自动执行许多操作。 (我希望“包装器”是正确的术语。)是否可以使用Java来阻止对底层应用程序的输入,以便用户不会无意中搞乱自动化?我该怎么做?另外,如何在不劫持鼠标的情况下自动按键和点击应用程序?这在Java中是否可行?
我看过java.awt.Robot,但它似乎劫持了鼠标。 我也查看了AutoIT,但它也劫持了鼠标并且没有与Java集成。
这些选项似乎都不足以满足我的需求,但我不知道还有什么可以继续。
答案 0 :(得分:3)
如果您真的没有其他选择,我建议仅通过GUI进行自动化作为最后的手段。
如果您的应用程序公开了API,我会尝试使用它。例如,如果GUI在一个DLL中实现,而逻辑在另一个DLL中实现,那么您可以使用JNA加载应用程序逻辑DLL并直接从java调用应用程序函数。更好的是,如果你的应用程序暴露了一个COM / OLE接口 - 有大量的Java<> COM briges,这将使你直接调用这个接口,例如Jacob
如果你真的别无选择,只能通过GUI进行自动化,那么下面是如何做到这一点:
因为包装的应用程序窗口不可见,所以您不需要“阻止”该应用程序,用户根本无法访问它的GUI。但您仍然可以通过编程方式向其发送输入。