找回密码
 加入
搜索
查看: 1484|回复: 4

[系统综合] 请教一个Win10系统下调用Jab的问题

  [复制链接]
发表于 2018-7-31 17:39:01 | 显示全部楼层 |阅读模式
  最近需要调用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)


 楼主| 发表于 2018-7-31 18:25:50 | 显示全部楼层
查了很久,好像和Windows的消息机制有点关系
有人说用ChangeWindowMessageFilter函数可以解决一些win10x64的问题,等测试后发结果
发表于 2018-7-31 18:55:49 | 显示全部楼层
如果权限问题,你可以试试把WindowsAccessBridge-64.dll文件放到其它盘来测试一下啊。
 楼主| 发表于 2018-7-31 19:01:14 | 显示全部楼层
志艺风云 发表于 2018-7-31 18:55
如果权限问题,你可以试试把WindowsAccessBridge-64.dll文件放到其它盘来测试一下啊。

谢谢回复
这个好像不是权限问题   测试完后放结果
 楼主| 发表于 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


您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 01:30 , Processed in 0.072876 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表