Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: B@RTY en 5 Diciembre 2005, 10:35 am



Título: Ayuda con un programita un poco raro
Publicado por: B@RTY en 5 Diciembre 2005, 10:35 am
Hola me gustaria hacer un programa que a algunos les puede parecer muy raro pero a mi me seria muy util.
la descripcion del programa seria la siguiente:

El programa tiene que apretar ctrl+l quando el escritorio camvie me explico yo dejo el ordenador encendido sin tocar nada con un programa ejecutandose y si donde yo dejo el puntero del raton cambia (de color) automaticamente se pulse una comvinacion de teclas (crtl+l en este caso).
que instrucciones acen eso?
espero que me ayuden gracias por adelantado

salu2 ;)


Título: Re: Ayuda con un programita un poco raro
Publicado por: Feyrbrand en 5 Diciembre 2005, 12:52 pm
Mmmmm, un poco raro si que es. No me hagas mucho caso, pero has probado con "keyascii" :-\? Segun la tabla del codigo ascii el valor de "l" es 76 para minuscula y 108 para mayuscula, y el del control...bueno hay 4 controladores, mira tu mismo. Pero vamos, no te creas q soy un crack... A ver si te va bien. Saludos,


Título: Re: Ayuda con un programita un poco raro
Publicado por: germixxx en 5 Diciembre 2005, 17:19 pm
mmmm  sendkeys capaz pero no estoy seguro me parece q no sirve x creo le manda las teclas solo a la ventana activa y si no hay ventana activa no se. capaz q alguna api...proba con sendkeys y las ascii q dijo Feyrbrand


Título: Re: Ayuda con un programita un poco raro
Publicado por: Thaorius en 5 Diciembre 2005, 17:48 pm
Yo me imagino que el Control+i es para ejecutar un programa, previamente configurado el atajo de teclado de windows.

No seria mas facil que lo ejecutes directamente?

Saludos


Título: Re: Ayuda con un programita un poco raro
Publicado por: NYlOn en 5 Diciembre 2005, 22:00 pm
No entiendo q es lo q necesitas q haga el programa :S

Podrias explicarte mejor ??


Saludos.-


Título: Re: Ayuda con un programita un poco raro
Publicado por: B@RTY en 5 Diciembre 2005, 22:35 pm
veamos pondre un ejemplo:
yo ejecuto un programa(un juego) y lo dejo encendido con el puntero del raton puesto en un sitio de la pantalla y si en ese sitio (donde tenia puesto el puntero) pasa algo (canvia de color) quiero que automaticamente se presionen las teclas crtl+l

(esto es tipo las webcamp que si la imagen se mueve acen videos o fotos)


un ejemplo muy facil
ago unprograma en su interior un quadrado azul y yo pongo el puntero del raton encima de ese quadrado y si este quadrado camvia de color(por lo que sea eso da igual)
automaticamente se tiene que apretar ctrl+l
i ya esta
espero haberlo aclarado
salu2 ;)


Título: Re: Ayuda con un programita un poco raro
Publicado por: germixxx en 5 Diciembre 2005, 22:39 pm
aaaaaaaaahh ahora si
tenes poner un timer y utilizar la api getpixel


Título: Re: Ayuda con un programita un poco raro
Publicado por: B@RTY en 6 Diciembre 2005, 19:47 pm
germixxx no entiendo para que el timer :-[
podrias poner un ejemplo plx¿?


Título: Re: Ayuda con un programita un poco raro
Publicado por: NYlOn en 6 Diciembre 2005, 21:27 pm
Te recomiendo q te bajes el API-Guide o cualkier otro programa similar (no conozco otro xD)
Lo q hace es trare un ejemplo de todas las APIs de Windows.
De ahi podes sacar eso de GetPixel. Basicamente lo q hace es devolverte el color de un determinado pixel, que combinado con la opcion GetCursorPos (te devuelve la posicion del cursor) podes hacer lo q necesitas. El timer es para ver q color hay en ese pixel q vos keres xD.

Un saludo y suerte con tu proyecto.


Título: Re: Ayuda con un programita un poco raro
Publicado por: germixxx en 6 Diciembre 2005, 22:05 pm
El timer para q valla controlando, pones suponete el timer.interval = 300 y cada ese tiempo q se valla fijando si sigue el mismo color en en el pixel q hay debajo. Si el pixel q hay abajo del cursos cambio de color y el cursor sigue en la misma posicion q mande las teclas q queres


Título: Re: Ayuda con un programita un poco raro
Publicado por: B@RTY en 6 Diciembre 2005, 22:45 pm
ok pero eske es un pelin mas complicado que eso no es que camvie de color como per ejemplo de verde a amarillo
i asi siempre.....
el recuadro en el que trabajo es negro i aveces aparece un logo siempre de difernte forma i color ok?
entonces como quedaria el cadigo para hacer  que las teclas se activen siempre que el fondo no sea negro (osea que aya aparecido un logo) (me explico ^^")

salu2


Título: Re: Ayuda con un programita un poco raro
Publicado por: NYlOn en 7 Diciembre 2005, 01:13 am
1º Aca nadie te va a dar el codigo de tu programa, el foro es solo para ortientacion. Y segun veo ya tenes todo lo necesario para hacerlo.
2º No importa a k color cambie. Te tenes q fijar cuando cambia el color, cuando deja de ser el mismo, mandas las teclas.
3º Para mandar las teclas podes usar SendKeys

Saludos.


Título: Re: Ayuda con un programita un poco raro
Publicado por: B@RTY en 7 Diciembre 2005, 15:59 pm
ok gracias por la informacion
nylon no pretendo que nadie me haga el programa tan solo pedia un ejemplo basico de como utilizar la api getpixel pero creo que ya encontre alguno.....
lo siento si habeis entendeido que os pedia que me hicierais el programa  :-X

gracias por las respuestas

salu2 ;)


Título: Re: Ayuda con un programita un poco raro
Publicado por: B@RTY en 10 Diciembre 2005, 11:49 am
Vale creo que estoy apunto de conseguirlo pero se me presenta un ultimo problema
el codigo es muy simple i seria

Código:
If Getpixel <> &H404040 Then SendKeys "^(g)", True

(el ^ es control por si alguien lo quiere saber)

bueno el problema esque el color de fondo no es el "&H404040" el color de fondo sobre donde trabajo es esta textura

http://img232.imageshack.us/my.php?image=textura9pc.png

ahora como puedo saber el codigo de color o ai alguna manera de guardarla en el programa i que le sirva para comparar?? 
gracias por adelantado

salu2 ;)


Título: Re: Ayuda con un programita un poco raro
Publicado por: Feyrbrand en 10 Diciembre 2005, 17:10 pm
Nas de nuevo! Mira, puedes probar a guardar la imagen en la misma carpeta de la aplicacion y compararla. Te pongo un ejemplo: yo en un programa cargo imagenes (guardadas en la carpeta de la aplicacion) con esta funcion:

Image.Picture = LoadPicture(App.Path + "\imagen..JPG")

En este caso, la estoy cargando en la pantalla ppal del programa. En tu codigo, puedes probar a compararla sustituyendo &H404040 por la imagen:

If Getpixel <> (App.Path + "\imagen..JPG") Then SendKeys "^(g)", True

Suerte  ;),

P.D.: No se si tb tendras q poner LoadPicture :P


Título: Re: Ayuda con un programita un poco raro
Publicado por: B@RTY en 10 Diciembre 2005, 18:56 pm
gracias por la respuesta Feyrbrand
pero no me sale  :'(
supongo que con este sistema la imagen guardada  no es la misma que el fondo ya que al ser una  textura es un pokito diferente i eso activa las teclas sin que yo kiera....
ai alguna manera de decirle que se compare con los pixeles de la ventana actual¿? no se si me explico..

salu2 ;)


Título: Re: Ayuda con un programita un poco raro
Publicado por: B@RTY en 11 Diciembre 2005, 17:34 pm
veamose echo mas pruevas i tengo malas noticias
esto
Código:
If Getpixel <> &H808080 Then SendKeys "^(l)", True
no sirve ya que aunque el raton este encima de una zona de color &H808080 las teclas se siguen activando (no me habia dado cuenta porque la comvinacion crtl+l no afecta a mi aplicacion)
bueno resumiendo si con comparacion de colores no funciona ni con comparacion de pictures ni con lo que dijo Feyrbrand

como puedo hacer que el programa funcione?¿ me esoty empezando a desesperar un poko  :P

salu2


Título: Re: Ayuda con un programita un poco raro
Publicado por: Feyrbrand en 22 Diciembre 2005, 11:45 am
Aver, ya se que es un poco tarde :-[, pero queria intentarlo de nuevo. En los gráficos y tamaños de controles o formularios Visual Basic trabaja con twips mientras que las API lo hacen con pixels.

La cuestion es que para que haya compatibilidad tienes que modificar la propiedad “scalemode” del formulario en el que estes haciendo la aplicación. Esta propiedad nos permite definir la unidad de medida de un objeto. Obviamente, lo tenemos que poner a pixels.

O, si lo prefieres, puedes hacerlo directamente en el codigo:
Citar
Me.ScaleMode = vbPixels

Enga, a ver si te sirve de algo. Feliz Navidad  ;D