elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Utilizar APIs de Windows en VBScript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Utilizar APIs de Windows en VBScript  (Leído 7,896 veces)
CrowDat

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Utilizar APIs de Windows en VBScript
« en: 25 Abril 2007, 00:23 am »

Buenas, no se si aqui es el lugar adecuado para postear esto, pero creo que le puede ir bien a muchos admins que utilizen vbs en el trabajo, o simplemente para scripts para uso personal.

Hice un script .hta (vbs+html) que mostraba info de la caducidad del password, para que una vez quedaran solo un par de dias de vigencia al pwd estuviera siempre visible un aviso, es decir, un aviso que estuviera "always on top", el caso es que ni el motor que procesa los vbs (wscript/cscript) ni el de los hta (mshta.exe) tenian esta opcion de ningún modo.

Para poner una aplicación always on top hay que invocar las APIs de Windows y mediante vbs parece ser que tampoco se puede.. o eso creia..

Buscando en cientos de foros, veo que todos afirman que solo es posible con terceros programas (powermenu, autoit, etc) donde hay que instalar el programa, o crear un activex e instalarlo, o tener un exe hecho en VB aparte del script donde se declara la funcion de la API para que haga la función deseada y luego invocarlo..

En definitiva es bastante engorroso y pierde en parte su utilidad el script si depende de otro programa.

Pues segun parece hay una manera mucho más simple y que se puede hacer desde el propio script, sin tener que instalar ningún programa ni depender de un .exe por ahi suelto (bueno en cierto modo si..) pudiendo asi usar todas las APIs y darle mucha mas potencia a nuestros scripts.

El truco es tan simple como invocar al Excel (es decir, dependemos de tener el Office instalado) y pasarle una macro desde el script que invocará la API que queramos.

Para mi, en una plataforma típica de PCs Windows XP + Office 2003 el script me va perfecto sin tener que depender de ningun programa (salvo el excel) ni instalar nada adicional de lo que ya había.

Ejemplo:

Código:
Set Application=CreateObject("Excel.Application")
hwnd=Application.ExecuteExcel4Macro("CALL(""user32"",""FindWindowA"",""JJC"",0,""Calculadora"")")
RC=Application.ExecuteExcel4Macro("CALL(""user32"",""SetWindowPos"",""JJJJJJJJ""," & hwnd & ",-1,0,0,0,0,3)")

Ejecutar calc.exe y luego ejecutar el script.
Una vez ejecutado quedará "always on top" la calculadora hasta que se cierre.

Este truquito lo he encontrado en un blog japonés sobre scripting.

http://scripting.cocolog-nifty.com/blog/2007/02/win32apicall_b558.html

Saludos


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Utilizar APIs de Windows en VBScript
« Respuesta #1 en: 25 Abril 2007, 03:16 am »

Esta bien, va aqui.... Ahora , me deja una duda... que pasa si tienes dos calculadoras corriendo?? cual que da "Always On Top"?  :huh:

Porque si no se puede dejar una en particular, entonces conozco otra manera en al que se puede hacer esto.....  ;)

Salu2

Modifico:Igual imagino que lo que querias dar a entender es que se puede acceder a las API's de win con vbs


« Última modificación: 25 Abril 2007, 03:18 am por novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
sirdarckcat
Aspirante a supervillano
Colaborador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: Utilizar APIs de Windows en VBScript
« Respuesta #2 en: 25 Abril 2007, 14:46 pm »

Hola
pues de hecho si se puede con javascript (y tambien con vbscript) pero seria muy molesto para el usuario xD
seria simplemente un evento
onblur="focus()"

En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Utilizar APIs de Windows en VBScript
« Respuesta #3 en: 25 Abril 2007, 14:57 pm »

Claro, sin lugar a dudas el metodo de CrowDat es el mejor si se quiere hacer esto.. el unico problema es depender de excel.... muchas personas usan openoffice por ej... pero igual esta interesante la manera de acceder a las API's de win


salu2
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
CrowDat

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Utilizar APIs de Windows en VBScript
« Respuesta #4 en: 26 Abril 2007, 00:31 am »

Hola
pues de hecho si se puede con javascript (y tambien con vbscript) pero seria muy molesto para el usuario xD
seria simplemente un evento
onblur="focus()"

Yo estuve buscando y habia conseguido muchas maneras de hacer que una ventana se quede por encima de otras, pero dentro de la misma aplicacion (por ejemplo cualquier navegador), pero solo con pulsar sobre otro programa, la aplicación pierde el foco o como mucho parpadea en la barra de tareas, pero no es tal cual "always on top" por encima de cualquier programa.

He probado con el codigo que citas y con varias variantes más y no me da el efecto deseado.

Por otra parte, tal como decia, para mi el logro no es solo poder ponerlo on top,sino el poder llamar apis de windows desde vbs sin instalar programas ni nada externo salvo el office.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como utilizar windows con un mac air
Mac OS X
rosfua 0 2,240 Último mensaje 10 Julio 2012, 15:30 pm
por rosfua
UTILIZAR ARRAYS CON VBSCRIPT
Scripting
rochro 2 3,029 Último mensaje 25 Marzo 2014, 17:10 pm
por rochro
Ayuda con las APIS de windows, soy principiante
Ingeniería Inversa
papelito 4 3,277 Último mensaje 12 Enero 2020, 12:13 pm
por xor.pt
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines