verificar validar esta archivo abierto file process io powerbuilder

file - validar - Compruebe si un archivo está abierto desde otro proceso



validar si un archivo esta abierto c# (2)

La mejor forma que encontré es llamar al WinAPI CreateFile para abrir un archivo determinado en modo exclusivo.

Primero, declare la siguiente función externa local (PB10)

FUNCTION Long CreateFile(ref string lpszName, long fdwAccess, long fdwShareMode, long lpsa, & long fdwCreate, long fdwAttrsAndFlags, long hTemplateFile) LIBRARY "Kernel32.dll" & ALIAS FOR "CreateFileA;Ansi" FUNCTION boolean CloseHandle (long file_hand) LIBRARY "KERNEL32.DLL"

luego de Powerscript:

CONSTANT ulong GENERIC_ACCESS = 268435456 // &H10000000 CONSTANT ulong EXCLUSIVE_ACCESS = 0 CONSTANT ulong OPEN_EXISTING = 3 long ll_handle String ls_file ls_file = "c:/temp/myfile.xls" ll_handle = CreateFile ( ls_file, GENERIC_ACCESS, EXCLUSIVE_ACCESS, 0, OPEN_EXISTING, 0, 0) IF ll_handle < 1 THEN MessageBox("", "Can''t open, maybe missing or already opened ?!?") ELSE MessageBox("","File can be opened") END IF CloseHandle(ll_handle)

¿Cómo puedo verificar si un archivo ya está siendo utilizado por otro proceso de Powerscript?


Podría tratar de abrirlo y, si falla, probablemente ya esté bloqueado.