Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Respuesta

  #1
Antiguo 27 de febrero de 2021, 18:13
Nitzer
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: Por Videoconferencia-Webinar Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por aportar conocimientos excepcionales 
Última Actividad 05.08.2026 17:33
Posts Posts: 200
Likes enviados Enviados: 70
Likes recibidos Recibidos: 157

Hola, a ver si alguien es capaz de realizar algo así, os cuento.

Se trata de FileSystemWatcher.

https://www.levelextreme.com/Home/Sh...or=23&ID=38881

Se trata de averiguar cuando algo en la carpeta seleccionada cambia.
Lo quiero implementar para poder detectar en tiempo real si hay un cambio en alguna DLL y que avise al usuario de que tiene que actualizar.

Espero haberme explicado bien

Hay bastante información en Internet, pero no se como implementarlo, igual lo mejor es hacer un ocx. A ver si se os ocurre algo

Gracias.
Nitzer is offline   Responder Con Cita
  #2
Antiguo 28 de febrero de 2021, 11:09
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Nitzer, mi proposición:
  1. Ejecutar "cmd /c dir >%directorio\del\fichero%" mediante Execute
  2. Leer el fichero y guardar en Working
  3. Las lecturas siguientes, comparar con lo que hay en working

Hacerlo en un Timer, cada minuto o algo así, para no hacer demasiadas I/O



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 28 de febrero de 2021, 15:39
Nitzer
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: Por Videoconferencia-Webinar Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por aportar conocimientos excepcionales 
Última Actividad 05.08.2026 17:33
Posts Posts: 200
Likes enviados Enviados: 70
Likes recibidos Recibidos: 157

@kuk, esa solución siempre está presente, pero la idea es hacer algo que en otros lenguajes es relativamente sencillo .
Lo he probado en Visual Basic y funciona perfectamente, hay varios ejemplos en internet.
Pero no se como implementarlo en Cobol.
Nitzer is offline   Responder Con Cita
  #4
Antiguo 28 de febrero de 2021, 16:04
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Buenas @Nitzer, estuve leyendo un poco del tema de monitoreo de carpetas es mas facil en otros lenguajes como vb como comentas, pero podrias probar hacer llamadas cada cierto tiempo a la función FindFirstChangeNotificationA de libreria kernel32 que se puede llamar desde pwc ....

https://docs.microsoft.com/en-us/win...enotificationa
Saludos
fastpho is offline   Responder Con Cita
  #5
Antiguo 28 de febrero de 2021, 17:50
Nitzer
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: Por Videoconferencia-Webinar Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por aportar conocimientos excepcionales 
Última Actividad 05.08.2026 17:33
Posts Posts: 200
Likes enviados Enviados: 70
Likes recibidos Recibidos: 157

Pues Fastpho he estado probando, pero no consigo el resultado

he incluido este código, según he visto por Internet como usar la Api.
Código COBOL:
  1.      MOVE SPACES TO RUTA
  2.      STRING 'U:\UNICA' X'00' DELIMITED BY SIZE INTO RUTA
  3.     CALL "FindFirstChangeNotificationA" WITH STDCALL USING BY CONTENT RUTA
  4.                                                        BY VALUE POW-FALSE
  5.                                                        BY VALUE 0
  6.                                                        RETURNING RETORNO
Nitzer is offline   Responder Con Cita
  #6
Antiguo 28 de febrero de 2021, 18:35
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Nitzer estoy mirando desde el celular ,me parece q el flag 0 esta mal y empezaria por leer una carpeta del disco local para saber si funciona,no se funcionara con disco de red, que valor tes esta retornando ?
fastpho is offline   Responder Con Cita
  #7
Antiguo 28 de febrero de 2021, 22:32
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Nitzer, el BY VALUE 0 no lo puede ser, como dice @fastpho.

Tienes que elegir uno de los siguientes valores:

Citación del post de Microsoft

FILE_NOTIFY_CHANGE_FILE_NAME
0x00000001

Any file name change in the watched directory or subtree causes a change notification wait operation to return. Changes include renaming, creating, or deleting a file name.

FILE_NOTIFY_CHANGE_DIR_NAME
0x00000002

Any directory-name change in the watched directory or subtree causes a change notification wait operation to return. Changes include creating or deleting a directory.

FILE_NOTIFY_CHANGE_ATTRIBUTES
0x00000004

Any attribute change in the watched directory or subtree causes a change notification wait operation to return.

FILE_NOTIFY_CHANGE_SIZE
0x00000008

Any file-size change in the watched directory or subtree causes a change notification wait operation to return. The operating system detects a change in file size only when the file is written to the disk. For operating systems that use extensive caching, detection occurs only when the cache is sufficiently flushed.

FILE_NOTIFY_CHANGE_LAST_WRITE
0x00000010

Any change to the last write-time of files in the watched directory or subtree causes a change notification wait operation to return. The operating system detects a change to the last write-time only when the file is written to the disk. For operating systems that use extensive caching, detection occurs only when the cache is sufficiently flushed.

FILE_NOTIFY_CHANGE_SECURITY
0x00000100

Any security-descriptor change in the watched directory or subtree causes a change notification wait operation to return.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #8
Antiguo 28 de febrero de 2021, 23:13
Nitzer
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: Por Videoconferencia-Webinar Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por aportar conocimientos excepcionales 
Última Actividad 05.08.2026 17:33
Posts Posts: 200
Likes enviados Enviados: 70
Likes recibidos Recibidos: 157

@Kuk, U: es una carpeta local, le llamo U de Unica

Ya vi los valores, pero como le paso el primero por ejemplo 0X0000001 , no tengo ni idea.
Nitzer is offline   Responder Con Cita
  #9
Antiguo 1 de marzo de 2021, 13:44
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

@Nitzer, los flags son los filtros o eventos que queres monitorear , los valores serian
Código:
 FILE_NOTIFY_CHANGE_FILE_NAME = H1 'decimal 1
 FILE_NOTIFY_CHANGE_DIR_NAME = H2 'decimal 2
 FILE_NOTIFY_CHANGE_ATTRIBUTES = H4 'decimal 4
 FILE_NOTIFY_CHANGE_SIZE = H8 'decimal 8
 FILE_NOTIFY_CHANGE_LAST_WRITE = H10 'decimal 16
 FILE_NOTIFY_CHANGE_LAST_ACCESS = H20 ' decimal 32
 FILE_NOTIFY_CHANGE_CREATION = H40  'decimal 64
fastpho is offline   Responder Con Cita
  #10
Antiguo 1 de marzo de 2021, 14:41
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Nitzer, lo que empieza por 0x es en Hexadecimal. Con lo cual, sería

Código COBOL:
  1. * FILE_NOTIFY_CHANGE_SECURITY = 0x00000100
  2.  01 FILE_NOTIFY_CHANGE_SECURITY PIC S9(9) COMP-5 VALUE H"00000100".



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:06.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.