TC官方合作论坛

 找回密码
 立即注册
查看: 1599|回复: 5

[源码分享] 从记事本入手-1)打开和关闭

[复制链接]
发表于 2012-2-20 13:30:49 | 显示全部楼层 |阅读模式

马上加入TC

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

x
//tc小白,新手练习
//整体目标:
//1.启动记事本(基础功能,实现自动登录会用到)
//2.找到记事本的窗口(基础功能)
//3.输入一些信息(基础功能)
//4.读出当前的信息
//5.关闭记事本

//本部分主要功能覆盖点
//1.使用全局变量保存窗口句柄
//2.中英文混合编程验证
//3.进程的打开和关闭(打开必须全路径,和启动不同)
//自定义函数和调用


  1. namespace notepad
  2. //定义默认空间

  3. //全局变量
  4. int globalpid
  5. //对比中文的功能
  6. 功能 逻辑型 任务方法() //定义一个任务方法函数,用于输出"这个是一个任务执行方法"
  7. 整型 进程句柄
  8.     进程句柄=进程.打开("C:\\WINDOWS\\notepad.exe")
  9.     辅助.消息框("进程开启成功!")
  10. 返回 真
  11. 功能结束

  12. //英文函数
  13. //执行外部进程
  14. //启动记事本
  15. function bool DoTask()
  16. int pid
  17.   //这里必须写全路径
  18.   pid=process.openprocess("C:\\WINDOWS\\notepad.exe")
  19.   globalpid=pid
  20.   //help.messagebox(convert.inttostr(globalpid))
  21. if(pid==0)
  22.    help.messagebox("进程打开失败")
  23. else
  24.    help.messagebox("进程打开成功")  
  25. endif
  26. return true
  27. endfunction

  28. //关闭记事本
  29. function bool CloseTask()
  30. //help.messagebox(convert.inttostr(globalpid))
  31. process.closeprocess(globalpid)
  32. return true
  33. endfunction


  34. function bool start_click()
  35. //这里添加你要执行的代码
  36. notepad.DoTask()
  37. //notepad.任务方法()
  38. return true
  39. //函数返回语句
  40. endfunction

  41. function bool exit_click()
  42. //这里添加你要执行的代码
  43. //help.messagebox(convert.inttostr(globalpid))
  44. //process.closeprocess(globalpid)
  45. notepad.CloseTask()
  46. help.exit()
  47. return true
  48. //函数返回语句
  49. endfunction


  50. endnamespace
  51. //空间结束语句
复制代码

回复

使用道具 举报

 楼主| 发表于 2012-2-20 13:33:49 | 显示全部楼层

2)-记事本的写入


//覆盖功能点
//1.找窗口句柄
//2.用键盘输入文字
//3.增加按钮和事件
//4.很遗憾,TC没有提供窗口的抓文字方法,难道需要用插件?



  1. //找到记事本窗口并输入一些信息
  2. function bool input()
  3. int winh = window.findwindow("无标题 - 记事本")

  4. if(winh==0)
  5.     辅助.消息框("没有找到test.txt - 记事本窗口")
  6. else
  7.     辅助.等待(1000)
  8.     window.setwindowtop(winh,true)  //将该窗口放在当前屏幕最前面,处于置顶状态
  9.     //窗口.最大化(窗口句柄)  //把该窗口最大化
  10.     键盘.发送字符串("hello world")  //向记事本发送"helloworld"字符串
  11.    
  12. endif

  13. return true
  14. endfunction


  15. function bool button0_click()
  16. //这里添加你要执行的代码
  17. notepad.input()
  18. return true
  19. endfunction

复制代码
回复 支持 反对

使用道具 举报

发表于 2012-2-20 22:13:58 | 显示全部楼层
这个代码要在什么环境下运行啊
回复 支持 反对

使用道具 举报

发表于 2012-2-21 02:18:54 | 显示全部楼层
先看看   虚心求教
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-21 09:21:22 | 显示全部楼层
这个代码要在什么环境下运行啊
jiabowen109 发表于 2012-2-20 22:13:58

这个是TC的源码,就是在TC 的编程环境下运行啊。
用来学习TC的窗口操作的

回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-21 09:59:22 | 显示全部楼层

3)窗体的操作-ab抓抓使用

ps.这个坑爹的验证码,害我白写了一大篇都丢了,
启动一个记事本。随便输入一些内容
用AB抓抓
选鼠标句柄,F9,点击记事本标题,F9
可以看到抓到了记事本的窗口句柄
记事本很简单,只有3个控件,所以一般开发工具都会那记事本入手。

问题来了,对于edit子窗体,ab抓抓显示的标题居然是空的
按键9的按键抓抓也是一样

可以vs2005自带的spy++,以及一些winspy工具都是可以抓到内容的
这样一来。tc就无法获得窗体的文字信息了。
期待tc改进吧。(tc也没有发消息的函数)
下面的代码,得到的实际是记事本窗口的标题,而非内容
  1. string wwname
  2.         wwname=window.getwindowcaption(winh)
  3.         help.messagebox(wwname)
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-5-21 10:43 , Processed in 0.036230 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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