【问题标题】:How do I access Windows GUI File Menus via a separate Java process?如何通过单独的 Java 进程访问 Windows GUI 文件菜单?
【发布时间】:2011-11-17 01:47:01
【问题描述】:

我目前有一个使用Win32 GuiTest 的 Perl 进程,它访问单独的 Windows GUI 进程的文件菜单。两个进程都在同一个 Windows (2K3x64) 服务器上运行。我想将它移植到 Java,并让 Java 进程操作 Windows GUI。

我研究过 Abbot、JaWin 和 JAB,但它们似乎都面向 Swing、AWT、Java-manipulating-Java-Windows 等。

Perl 进程使用的 Win32 GuiTest 方法有:

FindWindowLike()
GetWindowText()
SetForeGroundWindow()
SendKeys()
GetFocus()
GetActiveWindow()

虽然 Java 代码示例或链接示例是理想的答案,但任何与 MFC 相关的建议都将不胜感激。谢谢!

【问题讨论】:

    标签: java windows perl user-interface


    【解决方案1】:

    IMO,您最好的选择是使用JNI (Java Native Interface)。查看一些与 Win32 UI 相关的samples here.。还有Sun JNI TOC here

    您列出的 GUI 测试方法听起来几乎是一对一地映射到 Win32 API。例如GetWindowText是User32.dll中定义的函数...

    您还应该查看 JNA:https://github.com/twall/jna 或 J/Direct:http://www.codeguru.com/java/tij/tij0193.shtml

    【讨论】:

    • 谢谢!但是,我将继续寻找一种不需要我学习 C 并与自编译 DLL 绑定的解决方案。不过,我会尝试链接的示例。
    • JNI 不需要 C 或自编译 DLL。很抱歉用那个例子误导了你。您可以轻松导入和使用 Win32 DLL。
    • 在进一步的研究中,我明白为什么有这么多对 User32 的包装器......您还应该查看 JNA:github.com/twall/jna 或 J/Direct:codeguru.com/java/tij/tij0193.shtml
    • 更新:不幸的是,我能够在 Windows 2008 R2 服务器上获得带有 Win32::GuiTest 的 Perl 5.8.8,因此业务案例的合理性消失了。不过,感谢(未来的)参考,保罗!
    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2019-05-30
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    相关资源
    最近更新 更多