2011-05-13 53 views
5

Estoy actualizando un viejo fragmento de código que usa VBScript para abrir una ventana en IE. Por alguna razón, le gusta abrirse detrás de IE. Google me dio las siguientes líneas de par para ajustar el enfoque de ventana en VBScript:VBScript establecer el foco en una ventana en IE

set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.AppActivate("calculator") 

Sin embargo, cuando ejecuto esto en IE, me sale el error "objeto requerido: 'WScriptl'."

¿Hay alguna forma de evitar esto en IE, u otra forma de hacerlo? Ya estoy abriendo y manipulando un documento de Word sin ningún problema.

Editar: Para aclarar, estoy funcionando esto en un tipo < script = "text/VBScript" > etiqueta en el navegador (IE), y el código se bloquea en la primera línea, antes de que yo llamo AppActivate.

Actualización: Mi configuración de seguridad es bastante baja; todas las configuraciones de ActiveX están habilitadas (esto es un servicio de intranet). Probé el código de la pregunta this, y la calculadora se abrió sin problemas. De hecho, tengo AppActivate para trabajar con JavaScript, pero no funciona con VBScript.

JavaScript trabajo:

<script type="text/javascript"> 
    function calcToFrontJ(){ 
     wshShell = new ActiveXObject("WScript.Shell"); 
     wshShell.AppActivate("Calculator"); 
    } 
</script> 

que no trabaja VBScript:

<script type="text/vbscript"> 
    Public Function calcToFrontV() 
     'Set WScript = CreateObject("WScript.Shell") 'breaks with or without this line 
     Set WshShell = WScript.CreateObject("WScript.Shell") 
     WshShell.AppActivate("Calculator") 
    End Function 
</script> 

supongo que siempre se puede refactorizar a JavaScript, pero realmente me gustaría saber lo que está pasando con este VBScript.

respuesta final:

<script type="text/vbscript"> 
    Public Function calcToFrontV() 
     'must not use WScript when running within IE 
     Set WshShell = CreateObject("WScript.Shell") 
     WshShell.AppActivate("Calculator") 
    End Function 
</script> 
+0

AppActiva las búsquedas utilizando el texto en la barra de título de la ventana. ¿Qué código estabas usando para IE? – Tmdean

+0

@Tmdean Lo que quiero decir es que el código está en una etiqueta '

1
Set objShell = WScript.CreateObject("WScript.Shell") 
Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") 
objie.navigate "url" 
objIE.Visible = 1 
objShell.AppActivate objIE 

'Above opens an ie object and navigates 
'below runs through your proccesses and brings Internet Explorer to the top. 

Set Processes = GetObject("winmgmts:").InstancesOf("Win32_Process") 

intProcessId = "" 
For Each Process In Processes 
    If StrComp(Process.Name, "iexplore.exe", vbTextCompare) = 0 Then 
     intProcessId = Process.ProcessId 
     Exit For 
    End If 
Next 

If Len(intProcessId) > 0 Then 
    With CreateObject("WScript.Shell") 
     .AppActivate intProcessId 

    End With 
End If 

miré por horas acouple en la red hoy y logró reunir este código. En realidad funciona: D.

+0

Si bien esta respuesta es probablemente correcta y útil, se recomienda incluir alguna explicación junto con ella para explicar cómo ayuda a resolver el problema. Esto se vuelve especialmente útil en el futuro, si hay un cambio (posiblemente no relacionado) que hace que deje de funcionar y los usuarios deben comprender cómo funcionó. –

+0

Hubiera aceptado esta respuesta, personalmente. Es la respuesta más confiable que pude encontrar. +1 :) –

Cuestiones relacionadas