TC官方合作论坛

 找回密码
 立即注册
查看: 9930|回复: 9
打印 上一主题 下一主题

[已解决] 必采纳!绑定窗口时发现无效的窗口句柄????

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-2 01:32:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
预先声明:1.为了代码简化避免分割字符串,只打开了一个记事本窗口,且正确的获取了记事本窗口的窗口句柄
                  2.经测试对“记事本程序”共有14中绑定模式可以选择,我选取的是 dx dx dx 0 组合
下面:
     上图,上源码,上脚本附件





namespace dm_findWord
//默认空间
var hWnd1=0,dm
//开始按钮_点击操作
function start_click()
    var ret
        dm=com("dm.dmsoft")
        ret=window.findwindow("","Notepad")
        help.messagebox("hWnd1=" & ret)       
        ret=dm.BindWindow(hWnd1,"dx","dx","dx",0)       
        help.sleep(20)       
    if(ret==true)
        help.messagebox("Bind success!")
    else
        help.messagebox("Bind failed!")
    endif   
    dm.MoveTo(100,5)
    help.sleep(20)
    dm.LeftDoubleClick()
endfunction

//退出按钮_点击操作
function exit_click()
        var ret=false       
    dm.UnBindWindow()
    ret=help.regdll("rc:dm.dll",false)
    if(ret==true)
        help.messagebox("Unregister success!")
    else
        help.messagebox("Unregister failed!")
    endif
    help.exit()
endfunction

function init()
//这里添加你要执行的代码
        var ret=help.regdll("rc:dm.dll",true)
    if(ret==true)
        help.messagebox("Register success!")
    else
        help.messagebox("Register failded!")
    endif   
endfunction

endnamespace
//空间结束






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

7#
发表于 2013-7-2 08:18:54 | 只看该作者
用ret=window.findwindow("","Notepad") 也没问题的 只要知道这个ret 就是你要的hWnd1的值就好了,直接可以用。
或者,你加一句 hWnd1=ret  就OK。

另外,
你说的问题,其实不算是问题, 每一个应用程序对插件的响应是有差别的,不同的操作系统可能也有不同的效果。
dx模式不行,就改用 gdi模式试试。在我的机器里 dx模式就根本不能绑定,但gdi模式 有多种可以绑定。所以要多试试。

在你这个例子里,
或许就是记事本的菜单区,不响应插件的鼠标消息也是可能的,
但不等于到别的游戏中不能用,
在这里,你想移动到100,5点击,大概是想打开菜单项吧,
既然鼠标无法实现,就改用组合键吧Alt+e,
在游戏里也是一样,要尝试多种方法去解决。
回复 支持 反对

使用道具 举报

沙发
 楼主| 发表于 2013-7-2 01:37:29 | 只看该作者
补充一下:资源文件已导入



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

板凳
发表于 2013-7-2 03:08:36 | 只看该作者
你用天使工具测试模式~~~用的是大漠插件!!!
虽然天使和大漠使用方式一样~~但各自支持模式不一样的~~~
免费版大漠后台支持模式不多~~~
可以换一下模式~~一般前台模式大漠都是能用的~~
要不就用天使试试~~
回复 支持 反对

使用道具 举报

地板
发表于 2013-7-2 03:49:16 | 只看该作者
问题肯定出在绑定窗口上,我每次用的TC命令绑定后台
    dm.SetPath(辅助.获取资源路径("rc:"))
    窗口句柄=窗口.鼠标所在窗口句柄()//前台
    窗口句柄=窗口.找到窗口("","Notepad")//后台
    dm.BindWindow(窗口句柄,"dx","dx","dx",0)另外这个天使测试工具可以测试大漠绑定,但有时候绑定模式不显示,比如dx2
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2013-7-2 06:48:19 | 只看该作者
嘿,是查找窗口那一句错了,该是这样 hWnd1=window.findwindow("","Notepad")
,不是赋值给ret

这次是能绑定了,可是鼠标并没有象预想中那样:移动到窗口(100,5)并双击啊
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2013-7-2 07:05:02 | 只看该作者
我把检测到的14种可绑定模式试遍了,无一例外,全是绑定失败!汗,大漠插件这玩意这么难用?
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2013-7-2 08:44:24 | 只看该作者
回7#lotus:

谢谢,现在前进了一小步

现在问题又来了:”绑定窗口时发现无效的窗口句柄“这句提示没了,绑定函数执行了,但返回的是false,显示绑定失败,这又是则么回事呢?(检测工具检测到的14种可用模式全都用过了,都不行)


1.我把用“天使插件测试工具”测试到的14中可绑定模式都全部试过了(其中包括gdi)模式,都不行
2.我将鼠标移至(100,5)然后双击,目的是想最大化记事本窗口(显然程序根本没执行到这里,因为绑定那一关就没通过)
回复 支持 反对

使用道具 举报

9#
发表于 2013-7-3 13:44:22 | 只看该作者
先不管你的第一个问题, 就说第2个,你的意思是要让“鼠标双击 窗口标题栏”? 这件事,在窗口绑定以后是做不了的,因为 窗口绑定以后 鼠标操作活动,限制在“客户区”之内,对这个记事本软件来说,基本上就是在文字编辑区,不包括记事本软件的标题栏和菜单栏的,也就是说鼠标根本到达不了,你又怎么能让它做这个动作?

你想要的这个动作,不能也不用绑定窗口,直接用TC的前台鼠标命令就可以了。


顺便说一下,你用AB抓抓 查看窗口句柄。   界面上 提示 窗口客户区大小, 左上角(坐标),这个坐标就是客户区在当前屏幕位置的起点坐标。窗口绑定以后,这个点的坐标就是 (0,0) 即坐标原点。
你看一下吧,看过就明白了。

回复 支持 反对

使用道具 举报

10#
发表于 2015-9-3 17:25:47 | 只看该作者
网络白痴表示根本看不懂,详细点,一步一步来啊啊啊啊
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-21 21:52 , Processed in 0.190066 second(s), 27 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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