 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Yoshi Lt JG

Registrado: 07 Feb 2007Mensajes: 63Ubicación: Torreòn Coahuila Mèxico
|
Publicado: Lun 09 Abr, 2007 12:34 pm Asunto: Timer para abrir una aplicacion |
|
|
Otra vez yo....
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 |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Lun 09 Abr, 2007 5:09 pm Asunto: |
|
|
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é  _________________ Saludos, Alpha. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 10 Abr, 2007 8:15 am Asunto: |
|
|
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 |
|
 |
Yoshi Lt JG

Registrado: 07 Feb 2007Mensajes: 63Ubicación: Torreòn Coahuila Mèxico
|
Publicado: Mar 10 Abr, 2007 12:33 pm Asunto: |
|
|
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 |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Mar 10 Abr, 2007 10:21 pm Asunto: |
|
|
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 |
|
 |
vrodriguez Lt

Registrado: 01 Abr 2005Mensajes: 77
|
Publicado: Mie 11 Abr, 2007 2:50 am Asunto: Timer para abrir una aplicacion |
|
|
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 |
|
 |
vrodriguez Lt

Registrado: 01 Abr 2005Mensajes: 77
|
Publicado: Mie 11 Abr, 2007 2:53 am Asunto: Timer para abrir una aplicacion |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 11 Abr, 2007 7:41 am Asunto: |
|
|
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 |
|
 |
Yoshi Lt JG

Registrado: 07 Feb 2007Mensajes: 63Ubicación: Torreòn Coahuila Mèxico
|
Publicado: Vie 13 Abr, 2007 2:48 am Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
WaKo13 Ens

Registrado: 12 Mar 2004Mensajes: 34Ubicación: Campeche, Campeche, México
|
Publicado: Vie 13 Abr, 2007 4:24 pm Asunto: |
|
|
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 |
|
 |
Yoshi Lt JG

Registrado: 07 Feb 2007Mensajes: 63Ubicación: Torreòn Coahuila Mèxico
|
Publicado: Sab 14 Abr, 2007 12:26 am Asunto: |
|
|
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....  _________________ No temas a las computadoras... teme a la falta de ellas...
Isaac Asimov |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 16 Abr, 2007 7:53 am Asunto: |
|
|
| 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|