Board logo

标题: [问题求助] 请教VBS不能创建对像 [打印本页]

作者: lover5U    时间: 2015-7-6 20:59     标题: 请教VBS不能创建对像

  1. set oDOM = WScript.GetObject("http://city.ip138.com/ip2city.asp")
  2. flag=0
  3. for i=1 to 10
  4.    if oDOM.readyState = "complete" then
  5.       flag=1
  6.       exit for
  7.    end if
  8.    WScript.sleep 500
  9. next
  10. if flag=0 then
  11.     WScript.Echo "timeout ..."
  12.     wscript.quit
  13. end if
  14. s=oDOM.documentElement.innerText
  15. Set Re = New RegExp
  16. Re.Pattern="(\d+)\.(\d+)\.(\d+)\.(\d+)"
  17. for each r in Re.Execute(s)
  18.      res=r
  19.      exit for
  20. Next
  21. WScript.Echo "IPAddress: " & res
  22. '设置剪切板的内容
  23. Dim Form, TextBox
  24. Set Form = CreateObject("Forms.Form.1")
  25. Set TextBox = Form.Controls.Add("Forms.TextBox.1").Object
  26. TextBox.MultiLine = True
  27. TextBox.Text = res
  28. TextBox.SelStart = 0
  29. TextBox.SelLength = TextBox.TextLength
  30. TextBox.Copy
  31. MyVar = MsgBox (res,64,"请Ctrl+V粘贴IP地址")
复制代码
以上代码我用VBSEDIT编译出来可以运行并且正常! 但是用脚本运行要报错. 请教大神怎么处理啊?
作者: CrLf    时间: 2015-7-6 21:10

没装 office,确切说是没装 vba
作者: CrLf    时间: 2015-7-6 21:12

既然都调用 ie 了,就用 clipboardData.setData 好了——假如楼主不在意可能弹出的提示的话
作者: lover5U    时间: 2015-7-6 21:12

如何破解! 有没有更好的代码呀  后就是后面复制的部分!
作者: lover5U    时间: 2015-7-6 21:13

没装 office,确切说是没装 vba



如何破解! 有没有更好的代码呀  后就是后面复制的部分!
作者: lover5U    时间: 2015-7-6 21:15

弹出提示不好!~  我想应该有解决办法吧  ~?是吧?版主!
作者: pcl_test    时间: 2015-7-6 21:45

本帖最后由 pcl_test 于 2015-7-6 21:47 编辑

批处理
  1. @set @n=0; /* & echo off&cscript -nologo -e:jscript "%~f0"|clip&echo;外网IP已写入剪贴板&ping -n 2 0 >nul&exit /b& rem */
  2. var url = "http://city.ip138.com/ip2city.asp";
  3. http = new ActiveXObject("Msxml2.XMLHTTP");
  4. stream = new ActiveXObject("ADODB.Stream");
  5. http.open("GET", url, false);
  6. http.send(null);
  7. stream.Type=1;
  8. stream.Mode=3;
  9. stream.Open();
  10. stream.Write(http.responseBody);
  11. stream.Position=0;
  12. stream.Type=2;
  13. stream.Charset="gb2312";
  14. var m = stream.ReadText.match(/\[(\d+\.\d+\.\d+\.\d+)\]/);
  15. stream.Close();
  16. WSH.Echo(m[1]);
复制代码

作者: lover5U    时间: 2015-7-6 21:54

回复 7# pcl_test

谢谢!!

对于VBS脚本我疑惑的是编译成EXE可以运行得到IP地址到剪切板.为什么脚本运行不对
作者: pcl_test    时间: 2015-7-6 22:09

回复 8# lover5U
  1. set oDOM = WScript.GetObject("http://city.ip138.com/ip2city.asp")
  2. flag=0
  3. for i=1 to 10
  4.    if oDOM.readyState = "complete" then
  5.       flag=1
  6.       exit for
  7.    end if
  8.    WScript.sleep 500
  9. next
  10. if flag=0 then
  11.     WScript.Echo "timeout ..."
  12.     wscript.quit
  13. end if
  14. s=oDOM.documentElement.innerText
  15. Set Re = New RegExp
  16. Re.Pattern="(\d+)\.(\d+)\.(\d+)\.(\d+)"
  17. for each r in Re.Execute(s)
  18.      res=r
  19.      exit for
  20. Next
  21. CreateObject("wscript.Shell").Run "cmd.exe /c echo " & res& " | clip",0,False
  22. MsgBox "外网IP为"&res&vbCrLf&"请Ctrl+V粘贴IP地址"
复制代码

作者: lover5U    时间: 2015-7-6 22:25

回复 9# pcl_test

谢谢.正在学习代码中......
作者: CrLf    时间: 2015-7-6 23:23

回复 8# lover5U


    所噶,目测你的 office 是 32 位的,64 位进程不能调用 32 位控件,解决方法是用 32 位宿主执行脚本




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