【问题标题】:Running sample Java app for JavaAccessability in C# with 64-bit Java SDK and 64-bit windows使用 64 位 Java SDK 和 64 位 Windows 在 C# 中运行 JavaAccessability 的示例 Java 应用程序
【发布时间】:2015-09-20 02:22:16
【问题描述】:

我有一个示例 Java 应用程序,我在下载 javaaccessablity-2.0.2 时得到了它,它使用了 Java Accessibility(通过 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,但它并没有解决我的问题。

【问题讨论】:

  • FindWindow 返回的值是什么?你意识到 FindWindow 的返回值是一个窗口 handle (HWND),而不是一个指针 (IntPtr)?如果您错误地传递了 HWND,它将解释为什么 getAccessibleContextFromHWND 会返回 FALSE..
  • IntPtr 是用于指针大小的 HWND 的正确类型
  • 感谢@DavidHeffernan 的澄清
  • @krrishna 我猜你没有答案,因为我们真的不知道你想做什么。如果您制作了 MCVE 并为我们提供了重现问题的明确步骤,那么这个问题可能更有吸引力。就目前而言,我认为我们必须猜测您的实际问题场景是什么。

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


【解决方案1】:

我成功了。当我们构建涉及 WindowsAccessBridge dll 的项目时,这与选择正确的目标平台组合有关。我们必须尝试大量的排列来完成这项工作。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2016-03-12
    相关资源
    最近更新 更多