[Vbscript] ¿Se puede enviar mensajes a una ventana?

Iniciado por 0x0309, 17 Agosto 2009, 08:37 AM

0 Miembros y 1 Visitante están viendo este tema.

0x0309

Hola quiero saber si se puede, y si así es: cómo.
¿Se puede enviar mensajes a una ventana?

Sucede que tengo un código hecho en batch, usando nircmdc.exe envío mensajes directamente a una ventana, para resolver puzzles, pero quiero hacerlo con vbscript.

En este caso envío las notificaciones: WM_KEYDOWN y WM_KEYUP
Quiero convertir este código de batch + nircmdc a vbscript:


@echo off
setlocal enabledelayedexpansion enableextensions

:in
cls
(set lurd=)
set /p lurd=Lurd:
if not defined lurd (goto :in)

:loop_in
set mov=!lurd:~0,1!
set lurd=!lurd:~1!
cls
echo.!mov!
(set kc=0x0)
if /i "!mov!"=="L" (set kc=0x25)
if /i "!mov!"=="U" (set kc=0x26)
if /i "!mov!"=="R" (set kc=0x27)
if /i "!mov!"=="D" (set kc=0x28)
nircmdc win sendmsg ititle " for WINDOWS" 0x100 !kc! 0
nircmdc wait 360
nircmdc win sendmsg ititle " for WINDOWS" 0x101 !kc! 0

if defined lurd (goto :loop_in)
goto :in


Novlucker

#1
Podrías hacer algo así ...

Código (vb) [Seleccionar]
Set objshell = Createobject("wscript.shell")

do until objshell.appactivate("C:\WINDOWS\system32\cmd.exe")
wscript.sleep 200
Loop


Esta parte del code para asegurarnos de poner el foco en tu ventana (esa ruta es justamente porque veo que la ventana se "llama" así), ya que hacemos un sleep hasta bien no tenga el foco.

Luego es cuestión de trabajar con el mismo objecto (wscript.shell) y las teclas correspondientes

KeyArgument
BACKSPACE{BACKSPACE}, {BS}, or {BKSP}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
DEL or DELETE{DELETE} or {DEL}
DOWN ARROW{DOWN}
END{END}
ENTER{ENTER} or ~
ESC{ESC}
HELP{HELP}
HOME{HOME}
INS or INSERT{INSERT} or {INS}
LEFT ARROW{LEFT}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC}
RIGHT ARROW{RIGHT}
SCROLL LOCK{SCROLLLOCK}
TAB{TAB}
UP ARROW{UP}
F1{F1}
Fx{Fx}


Código (vb) [Seleccionar]
'siguiendo con el code anterior
objshell.sendkeys "{DOWN}"
objshell.sendkeys "{UP}"


Saludos
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