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>
AppActiva las búsquedas utilizando el texto en la barra de título de la ventana. ¿Qué código estabas usando para IE? – Tmdean
@Tmdean Lo que quiero decir es que el código está en una etiqueta '
miré por horas acouple en la red hoy y logró reunir este código. En realidad funciona: D.
Fuente
2015-03-05 23:01:26 Tom
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ó. –
Hubiera aceptado esta respuesta, personalmente. Es la respuesta más confiable que pude encontrar. +1 :) –
El truco es usar
WScript.CreateObject()
en lugar de simpleCreateObject()
para crear el objeto IE.P.S. Obtuve la solución de Dan Bernhardt en https://groups.google.com/forum/#!msg/microsoft.public.scripting.vbscript/SKWhisXB4wY/U8cwS3lflXAJ
Fuente
2015-04-01 22:33:43 Tony