Domanda

Come posso verificare se un file è già utilizzato da un altro processo da Powerscript?

È stato utile?

Soluzione

Il modo migliore che ho trovato è chiamare il file di creazione WinAPI per aprire un determinato file in modalità esclusiva.

Innanzitutto, dichiarare la seguente funzione esterna locale (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"

quindi da 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)

Altri suggerimenti

Potresti provare ad aprirlo e, se si verifica un errore, probabilmente è già bloccato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top