请教一个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)
查了很久,好像和Windows的消息机制有点关系
有人说用ChangeWindowMessageFilter函数可以解决一些win10x64的问题,等测试后发结果 如果权限问题,你可以试试把WindowsAccessBridge-64.dll文件放到其它盘来测试一下啊。 志艺风云 发表于 2018-7-31 18:55
如果权限问题,你可以试试把WindowsAccessBridge-64.dll文件放到其它盘来测试一下啊。
谢谢回复
这个好像不是权限问题 测试完后放结果 本帖最后由 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]