Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Timer para abrir una aplicacion

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Timer para abrir una aplicacion Responder citando

Otra vez yo.... Embarassed

Mi pregunta es sobre los timer, como podria hacer una funcion que cada x tiempo que configure el usuario me habrà una aplicacion y que despues de x tiempo la cierre?...


Gracias...

Encontrè algo parecido aqui, pero solo funciona con la fecha y la hora de una variable constante...
_________________
No temas a las computadoras... teme a la falta de ellas...

Isaac Asimov
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Pues yo soy noob, pero yo lo haría haciendo que el usuario introduzca un valor, hacer un Sleep de ese valor y después un WinExec para ejecutar la aplicación.
Después, para cerrarla ya no sé Sad
_________________
Saludos, Alpha.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Necesitas dos Timer. En ambos, en el evento OnTimer:
- En el primero lanzas la aplicación con WinExec, paras el Timer1 y arrancas el Timer2.
- En el segundo matas el proceso (busca por el foro Kill Process), paras el Timer2 y arrancas Timer1.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Gracias, voy a buscar eso que dices, la verdad ni idea de como funcione el timer... pero verè como se hace....
_________________
No temas a las computadoras... teme a la falta de ellas...

Isaac Asimov
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Solamente tiene un evento, OnTimer.
Y ajustas el intervalo al nº de milisegundos que quieras.
Cada X milisegundos (el intervalo) se ejecuta el código que hayas puesto en la función OnTimer
_________________
Saludos, Alpha.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Timer para abrir una aplicacion Responder citando

Hola,

Una solución, que ocupe para un problema similar fue, agregar un Timer con un tiempo definido, pero ademas asigne un valor a a:

Timer->Tag = 1 y 0;

Pensando en terminos de 1= On y 0=Off

Y al comienzo del evento OnTimer consulto si este es On o bien Off, y según su valor ejecuto un comando o bien otro, la gracia es que altermino de estos "comando" termino tambiendo el valor de Timer->Tag, es decir... Si esta ON..... termino las sentencias con un OFF... y si esta OFF...termino la sentencia con un ON....

De esta forma activo o no.... o bien ejecuto dos o mas grupos de sentencia según sea el valor del Tag.


Este mismo truco lo ocupo para cambiar la acción que realiza un Button.... en el que ademas de cambiar su ejecucion, le cambio su caption y Figura... pensando en que es otro boton.

Estero te ayude este truco.

Att
vrodriguez


y en el evento OnTimer, lo primero que realizo es ver que valor tiene Timer->Tag, si es
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Timer para abrir una aplicacion Responder citando

Hola,

Una solución, que ocupe para un problema similar fue, agregar un Timer con un tiempo definido, pero ademas asigne un valor a a:

Timer->Tag = 1 y 0;

Pensando en terminos de 1= On y 0=Off

Y al comienzo del evento OnTimer consulto si este es On o bien Off, y según su valor ejecuto un comando o bien otro, la gracia es que altermino de estos "comando" termino tambiendo el valor de Timer->Tag, es decir... Si esta ON..... termino las sentencias con un OFF... y si esta OFF...termino la sentencia con un ON....

De esta forma activo o no.... o bien ejecuto dos o mas grupos de sentencia según sea el valor del Tag.


Este mismo truco lo ocupo para cambiar la acción que realiza un Button.... en el que ademas de cambiar su ejecucion, le cambio su caption y Figura... pensando en que es otro boton.

Estero te ayude este truco.

Att
vrodriguez


y en el evento OnTimer, lo primero que realizo es ver que valor tiene Timer->Tag, si es
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

El sistema que comentas del Tag no es malo, pero tiene un inconveniente: Imagina que pones un intervalo de 100 segundos (Timer1->Interval = 100000) y en el evento OnTimer pides que se ejecute el word WinExec("winword.exe", SW_NORMAL), pero no paras el reloj; si mientar estás trabajando con el word se cumple otra vez el evento, volverá a lanzarse. Por eso lo de parar el Timer:
Código:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
     Timer1->Enabled = false;
     Timer2->Enabled = true;
     ShowMessage("Ha pasado el tiempo para TIMER 1");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
     Timer2->Enabled = false;
     Timer1->Enabled = true;
     ShowMessage("Ha pasado el tiempo para TIMER 2");
}
//---------------------------------------------------------------------------

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Por mas que hago pruebas con sus ideas no puedo darle al clavo, si alguien es tan amable de darme un ejemplo de lo que necesito se lo agradecerè infinitamente...
_________________
No temas a las computadoras... teme a la falta de ellas...

Isaac Asimov
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Yoshi: Pon el código que estás usando para que podas ver si es que has puesto algo mal.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola que tal aqui te dejo un un codigo el cual uso para apagar la maquina cuando la hora es >= que la hora que la asigno, en la cual utilizo 2 timer para verificar la hora cada 10 minutos

Código:
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
       
        Timer2->Enabled = false;
        Timer1->Enabled = true;       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        Word Whora, Wminu, Wsegu, Wmili;
        DecodeTime(Time(), Whora, Wminu, Wsegu, Wmili);
                if (100 * Whora + Wminu >= 1530)
                        {
                                ApagarWindows();
                        }
                else
                        {
                               
                                Timer1->Enabled = false;
                                Timer2->Enabled = true;
                        }
}



Espero haberte ayudado.. Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Gracias por ese codigo, la verdad esta parte no la entiendo...

Código:
Word Whora, Wminu, Wsegu, Wmili;
        DecodeTime(Time(), Whora, Wminu, Wsegu, Wmili);
                if (100 * Whora + Wminu >= 1530)



Haber supongamos (sè que me leo muy abuzòn,perdon por eso) supongamos que tengo un objeto asi:




y que el usuario selecciona el tiempo que desee, este valor lo guardo en un *.ini, y que segun el tiempo que el usuario introduce se active un mensaje, sè que me han dado las ideas, pero mi problema es como resolverlo... me dan las piezas pero no sè donde y como van.... Crying or Very sad
_________________
No temas a las computadoras... teme a la falta de ellas...

Isaac Asimov
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

WaKo13 escribió:
Código:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        Word Whora, Wminu, Wsegu, Wmili;
        DecodeTime(Time(), Whora, Wminu, Wsegu, Wmili);
                if (100 * Whora + Wminu >= 1530)
                        {
                                ApagarWindows();
                        }
                else
                        {
                               
                                Timer1->Enabled = false;
                                Timer2->Enabled = true;
                        }
}

Ese trozo de código lo que hace es ejecutar la función ApagarWindows a las 15:30 o la primera vez que se ejecute el código tras esa hora.

Vamos con tu caso. El usuario selecciona un tiempo (supongamos que en minutos en ese formulario; imaginemos que san 10 minutos. Entonces, además de guardarlo en el ini, cuando se inicie el programa y/o se modifique el valor. Por ejemplo:
Código:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
     char cValor[10];

     memset(cValor, '\0', sizeof(cValor));
     GetPrivateProfileString("TIEMPO", "Valor", "", cValor, sizeof(cValor), "Condigura.ini");
     Timer1->Interval = 60000 * StrToInt(AnsiString(cValor));
}
//---------------------------------------------------------------------------

Con esto ya está cargado el intervalo del Timer1. Si al cumplirse hay que sacar un mensaje en pantalla, sería así:
Código:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
     Timer1->Enabled = false;
     if (Application->MessageBox("¡¡¡ERROR!!!\r\nSuperado el tiempo de espera.\r\n¿Reintentar?", Application->Title.c_str(), MB_YESNO|MB_ICONWARNING) == ID YES)
          Timer1->Enabled = true;
     else
          Application->Terminate();

     return;
}
//---------------------------------------------------------------------------

Cuando se cumle el intervalo se ejecuta el evento, se para el timer PARA QUE NO SIGA COMPROBANDO, se saca el mensaje y, según la respuesta, se vuelva a lanzar el timer (si se responde afirmativamente) o se termina la aplicación en otro caso. Espero que se me entienda.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.