Question

Comment vérifier si un fichier est déjà utilisé par un autre processus de Powerscript?

Était-ce utile?

La solution

Le meilleur moyen que j’ai trouvé est d’appeler WinAPI CreateFile pour ouvrir un fichier donné en mode exclusif.

Commencez par déclarer la fonction externe locale suivante (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"

puis 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)

Autres conseils

Vous pouvez essayer de l'ouvrir et s'il y a erreur, il est probablement déjà verrouillé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top