java - 使用 64 位 Java SDK 和 64 位 Windows 在 C# 中运行用于 JavaAccessability 的示例 Java 应用程序

标签 java c# winapi pinvoke java-access-bridge

我有一个示例 Java 应用程序,它是我在下载 javaaccessablity-2.0.2 时获得的,它使用了 Java 辅助功能(通过 Java Access Bridge WindowsAccessBridge-32.dll).尽管它成功调用了 getAccessibleContextFromHWND,但它返回了 false。 请注意,我通过 Inspect 工具验证了 hWnd 的正确值。

我的 windows 64 位系统中安装了 64 位 Java SDK。以下是我试过的代码。我也尝试过使用 WindowsAccessBridge-64.dll,但它给出了相同的行为,即 vmID 和 _acParent 返回为零值而不是非零值。

class Program
{

    [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("WindowsAccessBridge-32.dll", CallingConvention = CallingConvention.Cdecl)]
    public extern static bool getAccessibleContextFromHWND(IntPtr hwnd, out Int32 vmID, out Int64 acParent);


    [DllImport("WindowsAccessBridge-32.dll", CallingConvention = CallingConvention.Cdecl, ThrowOnUnmappableChar = true, CharSet = CharSet.Unicode)]
    private extern static void Windows_run();

    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

    static void Main(string[] args)
    {
        Int32 vmID = 0;
        Int64 _acParent =0;
        Windows_run();
        IntPtr hWnd = (IntPtr)FindWindow("SunAwtFrame","Standalone SwingApp");
        bool retVal = getAccessibleContextFromHWND(hWnd, out vmID, out _acParent);

    }
}

我已阅读 a similar post但这并没有解决我的问题。

最佳答案

我成功了。当我们构建涉及 WindowsAccessBridge dll 的项目时,它与选择正确的目标平台组合有关。我们必须尝试很多排列才能让它发挥作用。

下面的链接有代码,但您仍然需要加载正确的 dll 才能使其正常工作。

https://github.com/jdog3/JavaAccessBridge.Net-Sample

关于java - 使用 64 位 Java SDK 和 64 位 Windows 在 C# 中运行用于 JavaAccessability 的示例 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31186535/

相关文章:

c++ - 了解 Windows 中的 AlphaBlending

c++ - 远程进程的 WM_PAINT

java - 抢占正在执行同步方法的线程

java - 使用安卓 getIdentifier()

java - 是什么导致java以不同的方式对待ArrayList和Integers这两种对象类型?

c# - 在 asp.net 中验证表单数据后如何获取 javascript 确认框?

java - 如何正确阻塞线程直到超时开始?

c# - .NET 核心 : always showing validation errors

c# - 需要帮助将 C# 转换为 vb。 "array initializer is missing 1 elements"

windows - 窗口站和桌面