Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: nolo2 en 9 Diciembre 2012, 20:05 pm



Título: Detectar tecla shift en un batch JavaScrip
Publicado por: nolo2 en 9 Diciembre 2012, 20:05 pm
Buenas tardes....
Es mi primer post y ceo que lo primero debe ser presentarse. Un amigo me habló hace tiempo de la potencia del Javascrip para la automatización de tareas y me ayudó con los primeros pasos. Luego descubrí que existía el vbs pero ya me había aficionado al .js y tengo unas cuantas cosas que utilizo habitualmente.
El Javascrip da muy pocas facilidades a la hora de modificar el flujo de un programa y se me había ocurrido que una posibilidad de aumentarlas sería detectar que estubiera pulsada alguna de las teclas como <shift> <Ctrl> <Alt> etc

Podría alguien indicarme algún CreateObject que me diera acceso a esa informació. Suelo terminar traduciendo de vbs a js a si que me valdría cualquier solución en vbs. Veo que aqui hay poco sobre el uso de javascrip que no sea sobre web......

Agradecido por vuestra atención ... ;D



Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: 0x5d en 10 Diciembre 2012, 15:27 pm
Hola, buen día.

Primero que todo , Batch es una cosa y javascript otra. La única "similitud" (no aceptada por muchos) es que ambos son lenguajes Scripting. javascript trabaja a nivel web, mientras que Batch a nivel escritorio.

Saludos , 0x5d.


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Novlucker en 10 Diciembre 2012, 15:34 pm
javascript se puede utilizar a nivel de escritorio al igual que vbs :P

Saludos


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Segadorfelix en 10 Diciembre 2012, 16:40 pm
javascript se puede utilizar a nivel de escritorio al igual que vbs :P
:o como?


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Novlucker en 10 Diciembre 2012, 17:05 pm
Por ejemplo:
Código
  1. var fso = new ActiveXObject("Scripting.FileSystemObject");
  2. var folder = fso.GetFolder("C:\\Users\\");
  3. var f = new Enumerator(folder.subFolders)
  4. for (; !f.atEnd(); f.moveNext())
  5. {
  6. WScript.Echo(f.item().Path);
  7. }

Saludos


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Segadorfelix en 10 Diciembre 2012, 17:21 pm
En el foro hay algún tutorial de javascript?



Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: nolo2 en 10 Diciembre 2012, 22:17 pm
Perdonarme la tardanza pero solo me puedo conectar sobre estas horas.. :silbar:

No me esperaba eso. Los scrip de javascript .js son tan útilews como los .vbs.
PEjem..
Copiar esto en el notepad y luego de guardarlo renombralo como corrector.vbs
Código:
wscript.Echo (corrector())

Function Corrector()
set documento= Createobject ("Word.Application")
documento.Visible= False
set spellDoc =documento.Documents.Add
documento.Selection.Paste
spellDoc.CheckSpelling()
spellDoc.Close False
documento.Quit True
End Function

Este batch/script ( o como se deba llamar), lo saqué de una revista y lo que hace es llamar al correcctor de word a una ventana y comprobar el texto contenido en el portapapeles.
En javaescript sería como mas abajo renombrando el .txt como corrector.js
Código:
WScript.Echo (corrector());
function corrector (){
var documento = WScript.Createobject ("Word.Application");
documento.Visible= false;
var spellDoc = documento.Documents.Add();
documento.Selection.Paste();
spellDoc.CheckSpelling();
documento.ActiveDocument.Close(0);
documento.Quit(0);
return ("        Finalizado");
}

Este otro, si lo pasais a .js,  lo que haría si pulsais sobre él, es crear un acceso directo a la carpeta "Enviar a" en el sitio (carpeta donde este el js) para localizar facilmente donde poner accesos directos y mandar archivos señalados a programas no registrados
Código:
var WshShell = new ActiveXObject("WScript.Shell"); 

strSendto = WshShell.SpecialFolders("SendTo");

var WSHShell = WScript.CreateObject("WScript.Shell");
var MyShortcut = WSHShell.CreateShortcut("Enviar A"+".lnk");
MyShortcut.TargetPath = strSendto;
MyShortcut.Save();
El javascrip es utilísimo para los procesos por lotes y a mi me gusta mas que el vbs porque se parece mas al lisp.
En la documentación antigua de microsoft siempre figuraba una solución .js y otra .vbs lo que pasa es que van perdiendo la costumbre y solo le dan solución al vbs.....  :-(


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: nolo2 en 10 Diciembre 2012, 22:28 pm
Volviendo a mi tema  ;D

He encontrado todo esto
http://msdn.microsoft.com/es-es/library/system.windows.forms.keyeventargs.aspx (http://msdn.microsoft.com/es-es/library/system.windows.forms.keyeventargs.aspx)
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.processcmdkey(vs.71).aspx (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.processcmdkey(vs.71).aspx)
http://msdn.microsoft.com/es-es/library/system.windows.forms.keys.aspx (http://msdn.microsoft.com/es-es/library/system.windows.forms.keys.aspx)
Soy NOVATO, NOVATO, NOVATO :rolleyes: (aunque me maneje un poco en .js) y no se como se puede hacer una llamada para usarlo.

De verdad que agradecería mucho la ayuda del foro :huh:



Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Segadorfelix en 10 Diciembre 2012, 23:05 pm
Gracias por la respuesta, esta excelente el código del "corrector". :)
Saludos


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Novlucker en 11 Diciembre 2012, 01:33 am
Bueno, mi único comentario fue para decir que javascript si se podía usar para automatizar algunas tareas, pero de cualquier modo no creo que sea lo que necesitas para el tema de las teclas. ¿Has probado alguna vez Autoit (http://www.autoitscript.com/site/autoit/)? Es muy parecido a vbs, y lo consulto para no sugerirte directamente pasar a otro lenguaje :P

Saludos


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: nolo2 en 11 Diciembre 2012, 23:27 pm
Seguro que no me he explicado bien ......  :D
Segadorfelix-Novlucker gracias por responder, pero es que ya soy mayor para cambiar, ademas creo que no le estais viendo las grandes ventajas de javascrip.
Esta ya en windows, no hay que instalar nada que por otro lado no se puede en ordenadores de Empresa, se sirve de cualquier programa ya instalado para el proceso por lotes de archivos, se puede arrancar de manera gráfica utilizando drag&drop (o como si diga lo de arrastrar sobre el archivo para pasarle datos y que arranque), es interpretado y lo puedes cambiar sobre la marcha para la tarea que te toque ese día etc etc y lo mas importante, algo se de js y ya :-( paso de los 27 por lo que me cuesta bastante aprender cosas nuevas.....
Lo que falla estrepitosamente en el trabajo sobre la consola es en posibilidades propias para dirigir el flujo del programa sin el navegador.

PEjem.
Imaginemos que quiero hacer una operación repetitiva sobre arhivos de imágenes, dibujos, hojas de cálculo o lo que sea. Lo programo y creo un js. Arrastro la carpeta donde tengo los archivos sobre el js y se ejecuta en cada uno de ellos (pej cambiando fecha, título etc).
Hay subcarpetras y dependiendo de que tema sea me interesa o no que también se traten.
Solución habitual: Sie encuentras carpeta pregunta ¿Quiere continuar con las subcarpetas? <Si><No>
Solución que pretendo. Con el mismo js si arratro sobre él con la techa <shift> pulsada se ejecuta incluyendo subcarpetas, si no sólo en el directorio de la carpeta que se arrastra.

Es sólo un ejemplo y hay otras formas de hacerlo como crear pequeñas variantes, llamarlo con un bat etc pero estoy convencido que se puede hacer una llamada a alguna dll o similar y hacerlo como he descrito de forma mas elegante y simpática.

A ver, la pregunta de otra forma. Como puedo llamar y a que utilidad del sistema windows le puedo reclamar que me diga si alguna tecla especial del teclado esta pulsadas por ejemplo en una operación de arrastrar y soltar.

Si consigo aprender eso sería un buen regalo navideño  ;D
A ver si hay Suerte ¡¡¡¡



Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Segadorfelix en 11 Diciembre 2012, 23:55 pm
En JS de escritorio y vbs no conozco ninguna forma de captar teclas; una forma que se me ocurre es crear un acceso directo, que se active con SHIFT+Numero o letra, o Control+alt+numero o letra, este podría crear un archivo temporal, que lo captara el JS  que estuviera actuando en ese momento.
Ejemplo:
Se activa el JS para una carpeta y sus archivos, se presiona SHIFT+A, esto crea un archivo que capta el JS y le "dice" que también aplique la acción a las subcarpetas.

No dispongo de código, porque soy mas de batch(aunque estoy estudiando VBS, es bastante recursivo), y con batch+vbs se puede hacer lo anterior.

Suerte y saludos.


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: nolo2 en 13 Diciembre 2012, 00:03 am
Muchas gracias Segadorfelix

Es una buena idea pero sigo empeñado en buscar una llamada a un ocx/dll o lo que sea que me lo solucione desde dentro del scrip.
No hay que empeñarse en usar el shift, en el post anterior ya decía yo que hay multiples otras formas como tu muy bién me estas proponiendo, pero voy a seguir intentandolo.

Os lo postearé si lo consigo.

Gracias  :-* y Suerte ¡¡¡


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: 0x5d en 13 Diciembre 2012, 00:14 am
javascript se puede utilizar a nivel de escritorio al igual que vbs :P

Saludos
Jajaja nunca lo había visto :o . Lo que quise decir es que que tiene que ver Batch con Js ._.


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Segadorfelix en 13 Diciembre 2012, 00:20 am
Jajaja nunca lo había visto :o . Lo que quise decir es que que tiene que ver Batch con Js ._.
Lo unico es que ambos son de scripting(porque automatizan las cosas), pero de resto, la sintaxis es completamente diferente.
PD:A veces, hay personas que confunden script con batch; tal vez por eso es que nolo2, se referia a JS/script como JS/batch.
Saludos.


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: 0x5d en 13 Diciembre 2012, 08:53 am
Lo unico es que ambos son de scripting(porque automatizan las cosas), pero de resto, la sintaxis es completamente diferente.
PD:A veces, hay personas que confunden script con batch; tal vez por eso es que nolo2, se referia a JS/script como JS/batch.
Saludos.
Que sea scripting no quiere decir que sea para automatizar las tareas, es más... Se desarrollan softwares para automatizar todo lo que no queremos hacer a mano, por cuestión de complejidad o tiempo

Saludos, Javier.


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: nolo2 en 13 Diciembre 2012, 21:00 pm
¡Vale! Va...le ..... :silbar:
Perdonar mi ignorancia pero en ms2 yo utilizaba los .bat para hacer las tareas repetitivas del sistema y ahora lo hago en .js por lo que creía que Javaescrip VBscrip eran los actuales .bat.
No trato ni voy a convencer a nadie.
Ya he comentado antes las ventjas que yo le veo (sin desmerecer lo que se puede hacer en vbs) y ahora lo que comento es que no soy el único, incluso hay programas tan serios como Mephis que lo utilizan para programar salidas y otras cosas.
 :-X Salud y Suerte ¡¡¡



Lo planteo de otra forma ... ;D
¿Sabeis de alguna llamada mediante Windows Scripting Host para conocer si la tecla shift esta pulsada o cualquier otra tecla de las que no tienen eco en pantalla como ctrl o alt ?.

Gracias ..... :xD



[MOD] Uda el botón "Editar", Si veo otro doble comentario borraré el mensaje.


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Segadorfelix en 13 Diciembre 2012, 22:10 pm
mmn, no se puede. Se puede presionar teclas, pero no recibirlas


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: Eleкtro en 13 Diciembre 2012, 22:13 pm
JS a nivel de escritorio, ¿para que?, pudiendo usar VBS que está mucho más documentado en ese aspecto y hacen "lo mismo" xD

De todas formas si querías sacarle el mayor jugo a Windows deberías haber empezado por PowerShell, eso si que es oficiálmente "el nuevo Batch", y mejor que VBS, obviamente.
Y ya si quieres sacarle hasta la última gota de jugo, utiliza cualquier otro lenguaje de scripting que no venga interpretado de serie en Windows, como Python, Ruby, etc... sobretodo porque ahí es muy fácil hacer lo que necesitas en esta pregunta (Esperar un evento del keyboard).

Sobre lo de esperar un evento del teclado en JS/VBS, no se si será posible natívamente, en "WindowsScriptHost" no existe nada para esperar un evento del teclado, y toda la información que he encontrado es para IE (window.event.keyCode), es tán fácil como buscar en Google un keylogger creado en VBS o JS, no verás ninguno.

Saludos.


Título: Re: Detectar tecla shift en un batch JavaScrip
Publicado por: nolo2 en 13 Diciembre 2012, 23:56 pm
Bueno, probaré otra cosa pero me va a costar ......

Gracias....