TC官方合作论坛

标题: 怎么通过进程名找到窗口名 [打印本页]

作者: xiyangah    时间: 2013-5-3 22:51
标题: 怎么通过进程名找到窗口名
        返回串 = array[8]
        返回值=系统.枚举("Client.exe",2)
        字符串.分割(返回值,"|",返回串)   //用来分割
        整型 i
        i=0
        循环(i<8)
                标题=窗口.得到标题(进程.获取窗口句柄(返回串))
                辅助.消息框(标题)
                i = i + 1
        循环结束


为什么我这个不行
作者: 陌上青衣。    时间: 2013-5-4 00:01
  1. 中文命名空间: 系统

  2. 英文命名空间: system
  3. 函数功能: 根据类型枚举需要的类型,并返回枚举到的结果



  4. 中文函数原型: 枚举(name,type)

  5. 英文函数原型: enum(name,type)



  6. 参数:

  7. name: 名称(根据类型来提供,比如模式0:需要的就是窗口标题(如:计算器,注意有些窗口没有窗口名) 1:类名(通过AB抓抓或者窗口返回类名等函数获取,注意有些窗口没有类名) 2:进程名(通过任务管理器中查看得到,如"QQ.exe","YY.exe")
  8. type:
  9. 0: 窗口名枚举窗口句柄
  10. 1: 类名枚举窗口句柄
  11. 2: 进程名枚举进程句柄
  12. 3: 父窗口句柄枚举子窗口句柄 (参数1为空串,如系统.枚举("",3)将以桌面句柄为父窗口句柄)
  13. 返回值: 根据类型枚举需要的类型,返回枚举后的结果,未找到返回空字符

复制代码


看看第二个参数为2的时候返回的是什么
作者: jrflsh    时间: 2013-5-4 02:53
  1. 进程.获取窗口句柄(返回串[i]
复制代码

i循环n次之后已经不是0了
你枚举到的窗口可能如果只有一个
就是返回串[0]
用返回串肯定找不行了
作者: 九先生    时间: 2013-5-4 08:08
TC本身自带的那个枚举进程名字获取进程句柄有问题 每次获取的进程句柄都不一样,不建议你用那个,用天使插件的枚举进程PID比较靠谱!多开单开都可以准确窗获取口句柄 ,代码如下
  
pids=ts.EnumProcess("Client.exe",)
    bb=字符串.查找字符串(pids,",")
    如果(bb>0)                      //多开的时候获取窗口句柄
        str=array[]
        字符串.分割(pids,",",str)
        数组空间.大小(str,ii)
        遍历(i=0;i<ii;i++)
        hwnd1=类型.转字符型(进程.获取窗口句柄(类型.转整型(str),1))     
            如果(i==0)
                hwnd=hwnd1
            否则
            hwnd=字符串.连接(hwnd,字符串.连接(",",hwnd1))   
//多开返回窗口句柄串自己分割转换成标题
            如果结束
        遍历结束   
    否则
        hwnd=类型.转字符型(进程.获取窗口句柄(类型.转整型(pids),1))
//单开的时候返回唯一的窗口句柄   
    如果结束
    返回 hwnd           //自己封装成TLL,调用很方便传入进程名字就OK,获取失败返回0
功能结束



希望采纳,这个进程名字枚举窗口句柄个人感觉很方便  现在游戏很多都是采用随机窗口标题和类名 造成枚举窗口句柄很麻烦,进程名字他是没法随机的 所以我现在都是通过这个方法获取窗口句柄  多开单开都方便  上传我自己用的一个TLL [attach]8949[/attach] [attach]8949[/attach]   调用方法     窗口句柄=我的命令库.枚举句柄("进程名字")     前提你自己脚本里要注册最新4.008版本天使插件   以前老版本天使插件枚举进程PID有BUG




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1