krr*_*hna 8 c# java pinvoke winapi java-access-bridge
我有一个示例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);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了类似的帖子,但它没有解决我的问题.
我成功了。当我们构建涉及 WindowsAccessBridge dll 的项目时,它与选择正确的目标平台组合有关。我们必须尝试很多排列才能使其发挥作用。
下面的链接包含代码,但您仍然需要加载正确的 dll 才能使其正常工作。
https://github.com/jdog3/JavaAccessBridge.Net-Sample
| 归档时间: |
|
| 查看次数: |
942 次 |
| 最近记录: |