Board logo

标题: [原创] VBS针对MSGBOX的动态修改 [打印本页]

作者: Nsqs    时间: 2016-5-16 17:08     标题: VBS针对MSGBOX的动态修改

仅仅只是针对MSGBOX的动态修改演示效果。非技术和实用性讨论
  1. option explicit
  2. Dim Msg,t
  3. set Msg=new Message
  4. Msg string(13,chr(8)),64,"test" '设定窗口定长字串
  5. t=10
  6. do
  7. msg.Change t & "秒后自动退出..." '动态修改窗口
  8. wsh.Sleep 1000
  9. t=t-1
  10. loop until t=0 or not Msg.Exist '计时器结束或窗口不存在
  11. Msg.Enter '按下确定
  12. class Message
  13. dim api,m(1),h
  14. dim WM_SETTEXT,BM_CLICK,WM_GETTEXT
  15. Public Default sub Show(byval var,byval dflags,byval title)
  16. dim wsc,p,i
  17. set api=CreateObject("VBScript.API")
  18. set wsc=CreateObject("wscript.shell")
  19. WM_SETTEXT = &HC:BM_CLICK = &HF5
  20. WM_GETTEXT = &HD
  21. if title=empty then title=wsh.scriptfullname
  22. if instr(title,"\") then _
  23. title=mid(title,instrrev(title,"\")+1)
  24. wsc.run "mshta vbscript:""<script language=vbs>msgbox "_
  25. &string(2,chr(34))&var&string(2,chr(34))&",64,"_
  26. &string(2,chr(34))&title&string(2,chr(34))_
  27. &":self.close</script>""",0
  28. set wsc=nothing
  29. do
  30. h=api.findwindow(vbnullstring,title)
  31. loop until api.iswindow(h)>0
  32. p=api.enumsubhwnd(h,"","*")
  33. for each i in p
  34. select case ucase(api.getclassname(i))
  35. case "BUTTON"
  36. m(1)=i
  37. case "STATIC"
  38. m(0)=i
  39. end select
  40. next
  41. End Sub
  42. public Sub Change(byval var)
  43. dim result
  44. api.sendmessagestring m(0),WM_SETTEXT,0,var
  45. end sub
  46. public sub Enter
  47. api.SetForegroundWindow m(1)
  48. api.sendmessagelong m(1),BM_CLICK,0,0
  49. end sub
  50. public Function Exist
  51. exist=api.iswindow(h)
  52. end Function
  53. Private Sub Class_Terminate
  54.         set api=nothing
  55.     End Sub
  56. end class
复制代码

作者: 9zhmke    时间: 2016-5-31 10:06

在WIN10中测试未通过,17行不能创建对象。 不使用外置程序应该也能实现吧?直接另外生成个VBS并运行显示内容,每秒杀掉并重新显示。
作者: Nsqs    时间: 2016-12-11 10:20

回复 2# 9zhmke


    我测试win 7 8 10都可以,说明不是我的问题是你自己不会弄
作者: czjt1234    时间: 2017-5-25 18:13

同2楼

没有这个对象CreateObject("VBScript.API")

win7x64
看了注册表,没有这个对象
哦,有附件,看下
作者: 老刘1号    时间: 2017-6-30 10:59

类库很丰富啊
常用的API都封装起来了
好评好评
作者: Nsqs    时间: 2017-6-30 13:35

vbsedit可以查看方法,至于说明如何使用,这个要百度。使用方法就不举例了,千万行都写不完!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2