我尝试这个代码,但不起作用

时间:2014-02-19 06:32:01

标签: vbscript

msgbox("{welcome to in IRCTC}")

On Error Resume Next

Const PAGE_LOADED = 4

objShell = CreateObject("Shell.Application")
objShell.Execute"C:\Users\ASFRAF\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Google Chrome.exe"

Call objShell.Navigate("https://www.irctc.co.in/cgi-bin/bv60.dll/irctc/services/login.do?userName=namanja&password=vishal123&submit=Login")

msgbox("go to login in irctc")

objShell.Visible = True

Do Until objIE.ReadyState = PAGE_LOADED : Call WScript.Sleep(100) : Loop

msgbox("success login in irctc")

1 个答案:

答案 0 :(得分:0)

首先,全局On Error Resume Next正在屏蔽您获得的任何错误。 从不使用On Error Resume Next,除非您知道完全您正在做什么并且有合理的错误处理代码。

话虽如此,从objIE循环中的Do变量判断,您似乎尝试修改Internet Explorer自动化的脚本,因此它使用Chrome而不是IE。这不起作用,因为Chrome不会公开可以通过VBScript控制的COM对象。

代码中的其他错误,这些错误被全局On Error Resume Next隐藏:

  1. 您尝试在不使用Set关键字(objShell = CreateObject("Shell.Application"))的情况下将对象实例分配给变量。

  2. Shell个对象没有Execute方法。如果要通过Shell对象运行外部程序,则需要使用ShellExecute方法。但是,该方法在后台异步启动进程,并且不返回句柄。

  3. Shell个对象也没有Navigate方法。该方法由InternetExplorer COM对象提供。

  4. 这样的事情应该有效:

    MsgBox "{welcome to in IRCTC}"
    
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Navigate "https://www.irctc.co.in/cgi-bin/..."
    
    MsgBox "go to login in irctc"
    
    ie.Visible = True
    Do Until ie.ReadyState = 4 : WScript.Sleep 100 : Loop
    
    MsgBox "success login in irctc"
    

    但我想这就是你已经拥有的东西。