gaoan000 发表于 2018-7-31 17:39:01

请教一个Win10系统下调用Jab的问题

最近需要调用Java的Jab库封装一个自用的UDF,不是一帆风顺,今天又遇到一个难题,很是不解
这一段测试代码在win7X64上是可以跑的,但是换到win10X64上面死活调用不成功,动态库的我试过用绝对路径也是不行
(我用Dependancy Walker用查找目录的方式在system32里找不到这个动态库,不知道是不是权限不够,希望可以解答一下)

Global $PathDll ="c:'\Windows\System32\WindowsAccessBridge-64.dll"
;初始化
Global $oDll = DllOpen($PathDll)

$_i1 = DllCall($oDll, "none", "Windows_run") ;Jab初始化
;_ArrayDisplay($_i1)

//Bool isJavaWindow(Hwnd);
$_i2 = DllCall($oDll, "BOOLEAN", "isJavaWindow", "HWND", $hJavawin) ;是否为java类型窗口      ps:;动态库和窗口句柄都没问题,但是返回0 正常应该返回1

_ArrayDisplay($_i2)


gaoan000 发表于 2018-7-31 18:25:50

查了很久,好像和Windows的消息机制有点关系
有人说用ChangeWindowMessageFilter函数可以解决一些win10x64的问题,等测试后发结果

志艺风云 发表于 2018-7-31 18:55:49

如果权限问题,你可以试试把WindowsAccessBridge-64.dll文件放到其它盘来测试一下啊。

gaoan000 发表于 2018-7-31 19:01:14

志艺风云 发表于 2018-7-31 18:55
如果权限问题,你可以试试把WindowsAccessBridge-64.dll文件放到其它盘来测试一下啊。

谢谢回复
这个好像不是权限问题   测试完后放结果

gaoan000 发表于 2018-7-31 19:04:58

本帖最后由 gaoan000 于 2018-7-31 19:07 编辑

问题解决了
加了个循环
For $i = 1024 To 66560
      DllCall("user32.dll", "bool", "ChangeWindowMessageFilter", "dword", $i, "dword", 1)
Next
老实说没怎么搞明白原理
抄自别人博客一句话:
低权限进程向高权限进程发送消息时会返回拒绝访问, windows为我们提供了ChangeWindowMessageFilter
https://blog.csdn.net/w280683395/article/details/45166863


页: [1]
查看完整版本: 请教一个Win10系统下调用Jab的问题