运行 Java 示例 Java 64 位 Java SDK 和 64 位 windows C# 无障碍应用 Java
Running sample Java app for JavaAccessability in C# with 64-bit Java SDK and 64-bit windows
我有一个示例 Java 应用程序,它是我在下载 javaaccessablity-2.0.2
时获得的,它利用了 Java 辅助功能(通过 Java 访问桥 WindowsAccessBridge-32.dll
).尽管它成功地调用了 getAccessibleContextFromHWND
它 returns 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 的项目时,它与选择正确的目标平台组合有关。我们必须尝试很多排列才能让它发挥作用。
下面的 link 有代码,但您仍然需要加载正确的 dll 才能使其正常工作。
我有一个示例 Java 应用程序,它是我在下载 javaaccessablity-2.0.2
时获得的,它利用了 Java 辅助功能(通过 Java 访问桥 WindowsAccessBridge-32.dll
).尽管它成功地调用了 getAccessibleContextFromHWND
它 returns 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 的项目时,它与选择正确的目标平台组合有关。我们必须尝试很多排列才能让它发挥作用。
下面的 link 有代码,但您仍然需要加载正确的 dll 才能使其正常工作。