PDA

Ver la Versión Completa : [Sintaxis] Ralentizar el evento


Breew
4 de diciembre de 2018, 07:59
Hola.
Intento enviar dos mail consecutivos mediante el dde-word
Hago una llamada al sistema y utilizo el programa Blat para enviar el correo.
A continuacion lo vuelvo a enviar a una segunda direccion de correo.

El problema que tengo es que lo hace tan rapidamente que solo sale uno de ellos, omitiendo el otro.
Quisiera que enviara el primero y pasen unos segundos para enviar el segundo .



Mediante el comando

MOVE PARAMETROS-EMAIL TO DDE-WORD.

INVOKE CmDDE2 "Execute" USING DDE-WORD POW-SWSHOWMAXIMIZED RETURNING ReturnValue.
* Start timer
COMPUTE SW-TIMER = 1.

MOVE POW-TRUE TO "Active" OF CmTimer1.
PERFORM UNTIL SW-TIMER = 0 END-PERFORM. *>RETRASO LA ACCION
*>PERO SE QUEDA EN BUCLE
MOVE POW-FALSE TO "Active" OF CmTimer1.

*cambio PARAMETROS-EMAIL
MOVE PARAMETROS-EMAIL TO DDE-WORD.

INVOKE CmDDE2 "Execute" USING DDE-WORD POW-SWSHOWMAXIMIZED RETURNING ReturnValue.

*
**************timer
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SW-TIMER PIC 99 GLOBAL EXTERNAL.

PROCEDURE DIVISION.
DISPLAY SW-TIMER .
COMPUTE SW-TIMER = 0.

Lo intento ralentizar con el timer, pero el evento se queda en bucle .

Como podria darle tiempo a que salieran los dos correos?

Gracias.

Fito
4 de diciembre de 2018, 13:43
Hola:

Por qué en vez de usar un control DDE, no usas el método "ExecuteSync" del formulario?

INVOKE pow-self "ExecuteSync" USING CommandLine [Show] RETURNING ReturnValue

Saludos.

Fito...

Kuk
4 de diciembre de 2018, 21:49
Breew, también puedes usar la API sleep: Sleep function | Microsoft Docs (https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-sleep)


CALL "Sleep" WITH STDCALL USING BY VALUE 1000 *> en milisegundos, 1000 = 1 segundo

Breew
4 de diciembre de 2018, 22:41
Hola Fito.

Ahora funciona correctamente.
¿ Que diferencia hay entre usar una y otra ?

Gracias

---------- Post added at 22:41 ---------- Previous post was at 22:30 ----------

Hola Kuk.

Me lo voy a mirar con cariño, ya que creo que es muy interesante para enviar/ocultar mensajes al usuario.

Con el timer, no me acabo de aclarar muy bien ;-)

Gracias

Fito
5 de diciembre de 2018, 12:53
Hola:

En el Formulario tenemos dos métodos para llamar procesos externos, el "Execute" y el "ExecuteSync". El primero funciona igua que el del control DDE, llama y sigue el flujo de tu programa. En cambio el segundo llama y espera que termine el proceso llamado para seguir.

Saludos.

Fito...