Pregunta

¿Cómo verifico si un archivo ya está siendo usado por otro proceso de Powerscript?

¿Fue útil?

Solución

La mejor manera que encontré es llamar al CreateFile de WinAPI 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)

Otros consejos

Podrías intentar abrirlo y si falla, probablemente ya esté bloqueado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top