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 ;)
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,
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
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
No entiendo q es lo q necesitas q haga el programa :S
Podrias explicarte mejor ??
Saludos.-
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 ;)
aaaaaaaaahh ahora si
tenes poner un timer y utilizar la api getpixel
germixxx no entiendo para que el timer :-[
podrias poner un ejemplo plx¿?
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.
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
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
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.
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 ;)
Vale creo que estoy apunto de conseguirlo pero se me presenta un ultimo problema
el codigo es muy simple i seria
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 ;)
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
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 ;)
veamose echo mas pruevas i tengo malas noticias
esto
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
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:
CitarMe.ScaleMode = vbPixels
Enga, a ver si te sirve de algo. Feliz Navidad ;D