Autor Tema: ¿como saber cuando un programa pierde foco en la barra de tareas)  (Leído 8890 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

sicario

  • Visitante
Señores... una vez mas.. jodiendo su tranquilidad... tengo ahorita la necesidad de hacer un programa que me devuelva (falso o verdadero) cuando un programa.. (mi aplicacion)... pierde foco en la barra de tareas.

vease la imagen aqui thunderbird tiene foco
 

vease la imagen aqui.. firefox tiene el foco


Entonces supongamos que uno de esas dos aplicaciones es la mia.. la que estoy programando.. entonces yo quiero saber cuando ya mi aplicacion no tiene el foco.  ¿me di a entender)

gracias por su valiosa ayuda
« Última Modificación: febrero 01, 2008, 03:55:00 pm por ¤.§íĈÅRïð.¤ »

Desconectado rcguillen

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 2320
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #1 : febrero 01, 2008, 06:45:00 pm »
Para mientras conseguimos algo asi mas acertado....

q te parece si creas una propiedad....digamos llestoyenfoco

entonces en el gotfocus del formulario coloca esa propiedad a verdadero
llestoyenfoco = .true.

y en el losfocus colocalo en falso.
llestoyenfoco = .false.

asi en cualquier momento puedes consultar dicha propiedad y saber si tu aplicacion tiene el enfoque..

En teoria se escucha bonito pero es de probar compadre, para ver como responde, se q abra algo mas sencillo pero por el momento....

Tambien lei por ahi q esta la propiedad Focused, pero no se si es solo para controles, o aplica para el formulario....ahorita no tengo .net para probar...asi q hay cuentas Sicario..

Saludos


« Última Modificación: febrero 01, 2008, 06:47:30 pm por rcguillen »
-:Rcguillen-NoMercy:-
-:Es inutil hacer cualquier cosa a prueba de tontos, porque los tontos son muy ingeniosos:-

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #2 : febrero 01, 2008, 09:31:32 pm »
una necesidad tan poco común..... me hace preguntar: ¿para que queres saber cuando sucede eso?
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

sicario

  • Visitante
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #3 : febrero 01, 2008, 09:46:28 pm »
una necesidad tan poco común..... me hace preguntar: ¿para que queres saber cuando sucede eso?

jejej voy y te explico... resulta que estoy inventandome LA ORILLA AZUL DE LA VACINICA... mi herramienta se llama dbQuery ... en version Pre-Alfa... entonces necesito que cuando se corra un script's y se va a tardar un poquitin... como diria Borth "un pelin" de tiempo.. entonces. cargar una pantallita que me diga...."sirvase en esperar que esta mier#$% esta alzando vuelo"... entonces.. cuando yo vaya a svcommunity... esa pantallita se active.. y siempre este visible... pero... pero... cuando este en dbQuery.. se valla para el centro de mi pantalla.... y cuando vaya a otras aplicaciones.. se aloje en una ubicacion menos incomoda... XD... si me explique?



PD. mi aplicacion pretende correr y hacer unas cuantas hierbas en ORACLE,POSTGRE,mySQL,SQL server y Firebird



Desconectado Tio B

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 10221
  • Vendo nanosuit barato, poco uso
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #4 : febrero 02, 2008, 08:57:42 am »
mira man, voya  meter mi cuchara, entiendo que finalmente lo que queres hacer es que cuando termine te traiga la ventana a primer lugar, entonces se me ocurre que busques mejor la manera de como traerla a foco cuando tu app haya terminado.

Solucion 1                                                                                                             
Cómo colocar una ventana de aplicación en primer lugar con foco:
Cómo utilizar las funciones BringToTop y API de FindWindow para traer otra ventana al primer plano con el foco.
http://support.microsoft.com/kb/186431/es

entonces te ocuparias mejor de mandarle la señal "YAESTUVO MANDAME AL FRENTE" al app para que este te trajera tu aplicacion sobre todas las ventanas



Solucion 2                                                                                                             
enla web del programador encontré esta entrada:
Pregunta:     DETERMINAR FORMULARIO ACTIVO
como saber cuando una ventana (form) esta activo o inactiva.

 
Respuesta:     OSCAR CABRERA oscacab@hotmail.com
HOLA ESPERO QUE TE SIRVA ESTE CODIGO, LO CONSEGUI EN LA PAGINA "members.tripod.com/VBEspaniol/".., manejando las api's de windows..

Declaración:
Declare Function FlashWindow Lib "user32" Alias "FlashWindow" (ByVal hwnd As Long, ByVal bInvert As Long) As Long

Descripción:
La función FlashWindow devuelve un valor si la ventana que indica si la ventana está activada o desactivada, también cambiando el parametro bInvert podemos invertir su estado como para llamar la atención del usuario.

Parámetros:
ByVal hwnd As Long
Aquí se indica la ventana.

ByVal bInvert As Long
Sirve para invertir el estado de la ventana, si colocamos 1 o True invierte el estado, 0 o False para dejarla como estaba.

Valor de retorno:
Si devuelve 0 está desactivada la ventana, 1 si está activada la ventana.

Uso:
Dim ValorRetorno As Long
ValorRetorno = FlashWindow(Form1.hwnd, 1) 'Invierte el estado del Form1
'Para llamar la atención del usuario coloque este codigo dentro de un Timer, y la ventana parpadeara.

OJALA QUE TE SIRVA...SUERTE...
« Última Modificación: febrero 02, 2008, 08:59:16 am por Borth »

sicario

  • Visitante
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #5 : febrero 02, 2008, 09:26:11 am »
gracias Both ... pero no... necesito que esa "pantallita"... se active en alguna esquina de mi pantalla siempre visible.. y siempre y cuando yo haya ido a otra aplicacion que no sea mi herramienta... ¿para que?.... para que en vez de estar esperando que se corra un script... yo puedo estar en google o en algotra parte.. y la pantallita me avise que ya se ejecuto la tarea

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #6 : febrero 02, 2008, 09:30:12 am »
y en q estas progrmanado xq si es vs2005 podes ocupar la propiedad topmost cuando termine de ejecutar lo q estes trabajando. Con la propiedad TOPMOST mandas la pantalla q queras al tope d todas las ventanas. Y si no estas con vs2005 tendrias q buscar la API q hace eso en inter. Antes la ocpue pero no m acuerdo bn el nombre d esa API!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #7 : febrero 02, 2008, 01:32:37 pm »
ahhhhh entonces rebuscate por eso....

pero yo te propongo otra idea... porque no haces ver que tu app esta ejecutando un query con un TrayIcon?.... que tenga una apariencia de reloj de arena siempre que ejecutes un script y que desaparezca cuando ya te el resultado......
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Ramses

  • Sv Member
  • ***
  • Mensajes: 492
  • # apt-get install debian
    • Mi Blog
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #8 : febrero 13, 2008, 03:44:52 pm »
Según lo que entendí ( si es que te entendí algo :) ), la respuesta ya te la dieron y es que debes controlar el evento LostFocus y GotFocus de tu formulario principal cuando pierda el enfoque de tu formulario principal deberás mostrar la "pantallita" con TopMost a True y de preferencia el ShowInTaskbar a False, al recibir el enfoque ocultas la "pantallita" y en teoría tu problema estaría solucionado
shutdown -h now
Mi Blog

sicario

  • Visitante
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #9 : febrero 14, 2008, 08:53:14 am »
todo eso lo necesito para .NET  :blackeye:  los codigos de borth estan para 6.0 y el otro problema es que no me quiero meter con la API de winbug  :sorry:

Tambien lamento que no me puedo dar a entender... y replanteo lo que necesito.
He creado una aplicacion para poder correr escript, empero como algunos escript tardan en terminar de ejecutarse... entonces inmediatamente despues de haber dado "F5" (para ejecutar mi script) necesito que se active esa pantallita que diga.."espere un momento, estoy echando rriata con su script empalomado" ... y que esa pantallita.. aun asi yo me cambie de aplicacion este siempre visible en la pantalla, hasta que mi script se haya corrido.

¿si me di a entender?


Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #10 : febrero 14, 2008, 09:43:08 am »
.Net solo te da lo que ya te dijeron, lostfocus y gotfocus.

Mejor hace que flashee la barra de tareas cuando termine, aqui te dejo unos tips

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2590504&SiteID=1

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #11 : febrero 14, 2008, 09:49:04 am »
todo eso lo necesito para .NET  :blackeye:  los codigos de borth estan para 6.0 y el otro problema es que no me quiero meter con la API de winbug  :sorry:

Tambien lamento que no me puedo dar a entender... y replanteo lo que necesito.
He creado una aplicacion para poder correr escript, empero como algunos escript tardan en terminar de ejecutarse... entonces inmediatamente despues de haber dado "F5" (para ejecutar mi script) necesito que se active esa pantallita que diga.."espere un momento, estoy echando rriata con su script empalomado" ... y que esa pantallita.. aun asi yo me cambie de aplicacion este siempre visible en la pantalla, hasta que mi script se haya corrido.

¿si me di a entender?



Vaia si ocupas .NET q version y en q lenguaje? Si d verdad queres ocupara eso mientras tu operacion realiza una labor de ese tipo entonces lo que mejor podes utilizar es el objeto BackgroundWorker unicamente! Ese control es para hacer operaciones en segundo plano y podes mantener alguna animacion en la aplicacion principal!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #12 : febrero 14, 2008, 04:18:41 pm »
segun el guille creo que no podras escapar de las API.....

Cita de: El Guille
Seguramente pensarás que no hace falta usar ninguna función del API ya que en .NET se puede conseguir "casi" lo mismo usando el método  BringToFront, pero debo decirte que ese método sirve para el resto de ventanas de la aplicación e incluso de Windows, pero en cuanto pulsas en otra venta, la nuestra se quedará por detrás, mientras que usando la función del API SetWindowPos, lograremos que siempre esté encima de las demás ventanas incluso si nuestra aplicación no es la que tiene el foco actualmente.

enlace:
http://www.elguille.info/NET/dotnet/siempre_encima_SetWindowPos.htm

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #13 : febrero 14, 2008, 04:28:45 pm »
segun el guille creo que no podras escapar de las API.....


Para eso esta la propiedad que mencione en todos los formularios TOPMOST y con eso lo logras... pero si lo que queire hacer es cuando termine lo mejor es hacerlo con el control BackgroundWorker
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

sicario

  • Visitante
Re: ¿como saber cuando un programa pierde foco en la barra de tareas)
« Respuesta #14 : febrero 18, 2008, 03:49:22 pm »
no me di a entender por lo que veo  :blackeye: