Login
首页 > 在线学习 > 易语言

易语言大漠插件后台高级绑定窗口BindWindowEx

视频课 集全 次学习
  • 免费
  • 有效期:永久有效课程自购买之日起永久有效,该课程后续更新内容将免费参加学习。
    • 课程目录
    • 课程详情

    .版本 2


    dm_ret = dm.BindWindowEx(hwnd,"normal","dx.mouse.position.lock.api|dx.mouse.position.lock.

    message","windows","dx.public.active.api",0)


    dm_ret = dm.BindWindowEx(hwnd,"dx2","windows","normal","dx.public.active.api",0)


    dm_ret = dm.BindWindowEx(hwnd,"dx.graphic.2d","dx.mouse.position.lock.api|dx.mouse.

    position.lock.message","dx.keypad.state.api|dx.keypad.api","",0)


    dm_ret = dm.BindWindowEx(hwnd,"dx2","windows","windows","",0)


    dm_ret = dm.BindWindowEx(hwnd,"dx2","windows","windows","dx.public.disable.

    window.size|dx.public.disable.window.minmax",0)


    dm_ret = dm.BindWindowEx(hwnd,"dx2","windows3","windows","dx.mouse.position.lock.api",0)



    注意:


    绑定之后,所有的坐标都相对于窗口的客户区坐标(不包含窗口边框)

    另外,绑定窗口后,必须加以下代码,以保证所有资源正常释放


    这个函数的意思是在脚本结束时,会调用这个函数。需要注意的是,目前的按键版本对于这个函数的执行不是线程级别的,也就是说,这个函数只会在主线程执行,子线程绑定的大漠对象,不保证完全释放。高级语言中则需要自己控制在适当的时候解除绑定.


    Sub OnScriptExit()

    dm_ret = dm.UnBindWindow() 

    End Sub

    另外 绑定dx会比较耗时间,请不要频繁调用此函数.


    另外如果绑定的是dx,要注意不可连续操作dx,中间至少加个10MS的延时,否则可能会导致操作失败.比如绑定图色DX,那么不要连续取色等,键鼠也是一样.


    注意,需要组合的模式,都需要管理员权限才能运行,所以对于WIN7 WIN8和VISTA用户,在启动窗口进程时,必须用管理员方式启动,否则无法绑定成功!


    还有一点特别要注意的是,有些窗口绑定之后必须加一定的延时,否则后台也无效.一般1秒到2秒的延时就足够.


    发现绑定失败的几种可能(一般是需要管理员权限的模式才有可能会失败)


    1. 系统登录的帐号必须有Administrators权限

     

    2. 如果是vista和win7 win8系统,启动窗口进程必须用管理员模式启动,脚本也必须用管理员模式启动.

     

    3. 一些防火墙会防止插件注入窗口所在进程,比如360防火墙等,必须把dm.dll设置为信任.

     

    4.还有一个比较弱智的可能性,那就是插件没有注册到系统中,这时CreateObject压根就是失败的. 检测对象是否创建成功很简单,如下代码

     

    set dm = createobject("dm.dmsoft")

    ver = dm.Ver()

    If len(ver) = 0 Then

        MessageBox "创建对象失败,检查系统是否禁用了vbs脚本权限"

        EndScript

    End If

    5.在沙盘中开的窗口,绑定一些需要管理员权限的模式,会失败。

    解决方法是要配置沙盘参数,参考如何配置沙盘参数.

     

    6. 窗口所在进程有保护,这个我也无能为力.