Private Sub Form_Load()
Form1.Visible = False
Dim returnvalue
 returnvalue = Shell("D:\Program Files\Tencent\QQ\Bin\QQ.exe", vbNormalFocus)
Dim a As Object
Set a = CreateObject("WScript.shell")AppActivate returnvalue“AppActivate returnvalue”语句,实时错误5,无效的过程或参数

解决方案 »

  1.   

    returnvalue = Shell("D:\Progra~1\Tencent\QQ\Bin\QQ.exe", vbNormalFocus)
      

  2.   

    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Sub Form_Load()
    Form1.Visible = False
    Dim returnvalue As Long
     returnvalue = Shell("D:\Program Files\Tencent\QQ\Bin\QQ.exe", vbNormalFocus)
    Dim a As Object
    Set a = CreateObject("WScript.shell")
    Sleep 1000
    AppActivate returnvalueEnd Sub
      

  3.   

    我测试好多次都没有问题.不然你将Sleep 1000改为Sleep 2000
      

  4.   

    我把完整的代码贴出来你,你试一下啊Option ExplicitPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Sub Form_Load()
    Form1.Visible = False
    Dim returnvalue
     returnvalue = Shell("D:\Program Files\Tencent\QQ\Bin\QQ.exe", vbNormalFocus)
    Dim a As Object
    Set a = CreateObject("WScript.shell")AppActivate returnvaluea.SendKeys "+{tab}"
    a.SendKeys "97023346"
    a.SendKeys "{tab}"
    a.SendKeys "asdf123456"
    a.SendKeys "{enter}"
      

  5.   

    Private Sub Form_Load()
    Form1.Visible = False
    Dim returnvalue
    returnvalue = Shell("C:\WINDOWS\system32\calc.exe", vbNormalFocus)
    Dim a As Object
    Set a = CreateObject("WScript.shell")Call AppActivate("计算器")End Sub
    AppActivate的参数是title,是应用程序标题
      

  6.   

    问题极有可能是由于Shell 函数是以异步方式来执行其它程序造成的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句.对于你的问题,可能是QQ还未启动,就执行AppActivate returnvalue,所以加了延时.我测试好多次都没有问题.
      

  7.   

    你把你顶楼的路径换成C:\WINDOWS\system32\calc.exe试试,是OK的,应该是QQ启动太慢的缘故顺便讨论一下,查了各种资料,都说AppActivate的第一个参数应该是string的,表示title,为什么
    Dim returnvalue As Long
    然后把returnvalue传进去也能行呢?暂时没搞明白
      

  8.   

    最关键的Sleep 2000 你没用