我想做一个程序向其它的某个应用程序SendkeysPrivate Sub Command3_Click() Dim ReturnValue, I
ReturnValue = Shell("C:\Program Files\Internet explorer\IEXPLORE.EXE", 1) AppActivate ReturnValue SendKeys "{F6}", TrueEnd Sub请问AppActivate ReturnValue这句为什么老是出错——“无效的过程或参数”报错后,如果我选择调试,然后继续按F5执行,程序也可以执行。否则非要我On Error Resume Next不可。而且只有shell IE的时候会出错,shell QQ啊,计算器啊之类的程序都不会出现错误。另外AppActivate有一个wait参数,ture,false我都用过了,MSDN上关于wait参数的解释非常拗口——
“wait 可选的。Boolean 值,说明在激活另一个应用程序之前调用的应用程序是否有焦点。如果为 False(缺省),那么,即使调用的应用程序没有焦点,也直接激活指定的应用程序。如果为 True,则调用的应用程序会等到有焦点后,才激活指定的应用程序。 ”哪位达人能给我解释一下上面这段话的意思。此外,Sendkeys也有个wait参数——
“Wait 可选的。指定等待方式的 [email protected] 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。 ”同样让人摸不着头脑。希望高人指点。嫌分少可以另外加。
Dim ReturnValue, I
ReturnValue = Shell("C:\Program Files\Internet explorer\IEXPLORE.EXE", vbNormalFocus)
Sleep 2000 '延时两秒钟
AppActivate ReturnValue SendKeys "{F6}", True
End Subshell函数是异步执行的,也就是调用的程序没有启动完成,就会继续执行SHELL函数之后的语句,当程序没有启动完的时候,你用 AppActivate ReturnValue 激活,肯定会出错的.而你再按F5执行的时候,IE已经启动完成,当然可以继续执行了~~
我也用过sleep的,但是我只延时了1秒,还是不行。现在按你讲的延时3秒以上就可以了。看来是我的机器太屎了。呵呵。另外QQ启动也很慢,不知为何不会出现这种情况。看来IE是够烂的
“Wait 可选的。指定等待方式的 [email protected] 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。 ”另外,请您帮我后面的这个问题也解决一下得了,分数全给你了