Descargue el módulo Clarion: Clarion_Everything.zip
El código fuente del módulo está incluido.
Extraiga Everything.lib en su proyecto clarion.
Añada LIB en "Archivos de biblioteca, objeto y recursos" en su proyecto Clarion y ponga lo siguiente en su mapa global.
MODULE('Everything.lib')
Everything_GetLastError(),LONG,RAW,PASCAL
Everything_SetSearch(*CSTRING),RAW,PASCAL
Everything_SetMatchPath(LONG),RAW,PASCAL
Everything_SetMatchCase(LONG),RAW,PASCAL
Everything_SetMatchWholeWord(LONG),RAW,PASCAL
Everything_EnableRegex(LONG),RAW,PASCAL
Everything_SetMax(LONG),RAW,PASCAL
Everything_SetOffset(LONG),RAW,PASCAL
Everything_Query(),RAW,PASCAL
Everything_SetDetail(LONG),RAW,PASCAL
Everything_SortResults(LONG),RAW,PASCAL
Everything_GetNumFileResults(),LONG,RAW,PASCAL
Everything_GetNumFolderResults(),LONG,RAW,PASCAL
Everything_GetNumResults(),LONG,RAW,PASCAL
Everything_GetTotFileResults(),LONG,RAW,PASCAL
Everything_GetTotFolderResults(),LONG,RAW,PASCAL
Everything_GetTotResults(),LONG,RAW,PASCAL
Everything_IsVolumeResult(LONG),LONG,RAW,PASCAL
Everything_IsFolderResult(LONG),LONG,RAW,PASCAL
Everything_IsFileResult(LONG),LONG,RAW,PASCAL
Everything_GetResultFileName(LONG),*CSTRING,RAW,PASCAL
Everything_GetResultPath(LONG),*CSTRING,RAW,PASCAL
Everything_GetResult(LONG,LONG),RAW,PASCAL
END
!valores de retorno de Everything_GetLastError
EVERYTHING_OK EQUATE(0) ! sin error
EVERYTHING_ERROR_MEMORY EQUATE(1) ! Falta de memoria
EVERYTHING_ERROR_IPC EQUATE(2) ! IPC no disponible
EVERYTHING_ERROR_REGISTERCLASSEX EQUATE(3) ! Ha fallado RegisterClassEx
EVERYTHING_ERROR_CREATEWINDOW EQUATE(4) ! Ha fallado CreateWindow
EVERYTHING_ERROR_CREATETHREAD EQUATE(5) ! Ha fallado CreateThread
EVERYTHING_ERROR_INVALIDINDEX EQUATE(6) ! Resultado de índice inválido (debe ser >= 0 y < numResults)
EVERYTHING_ERROR_INVALIDCALL EQUATE(7) ! Llame a Everything_Query antes de obtener los resultados
!atributos
EVERYTHING_FILE_ATTRIBUTE_READONLY EQUATE(0001h)
EVERYTHING_FILE_ATTRIBUTE_HIDDEN EQUATE(0002h)
EVERYTHING_FILE_ATTRIBUTE_SYSTEM EQUATE(0004h)
EVERYTHING_FILE_ATTRIBUTE_DIRECTORY EQUATE(0010h)
EVERYTHING_FILE_ATTRIBUTE_ARCHIVE EQUATE(0020h)
EVERYTHING_FILE_ATTRIBUTE_DEVICE EQUATE(0040h)
EVERYTHING_FILE_ATTRIBUTE_NORMAL EQUATE(0080h)
EVERYTHING_FILE_ATTRIBUTE_TEMPORARY EQUATE(0100h)
EVERYTHING_FILE_ATTRIBUTE_SPARSE_FILE EQUATE(0200h)
EVERYTHING_FILE_ATTRIBUTE_REPARSE_POINT EQUATE(0400h)
EVERYTHING_FILE_ATTRIBUTE_COMPRESSED EQUATE(0800h)
EVERYTHING_FILE_ATTRIBUTE_OFFLINE EQUATE(1000h)
EVERYTHING_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED EQUATE(2000h)
EVERYTHING_FILE_ATTRIBUTE_ENCRYPTED EQUATE(4000h)
Everything DEBE estarse ejecutando para que esto funcione.
Vea IPC de Everything.
Sólo puede realizar una búsqueda a la vez.
Si hay necesidad de ello, puedo añadir búsquedas seguras de múltiples hilos.
myError LONG
!revisa las constantes (equates) para las descripciones de mensajes de error
myError = Everything_GetLastError()
myString STRING
!Establecer la cadena de búsqueda
!la búsqueda por defecto es '' (cadena vacía)
Everything_SetSearch(myString)
val LONG
!establezca val a cero para deshabilitar coincidir ubicación
!establezca val a no-cero para habilitar coincidir ubicación
!por defecto es 0 (apagado)
Everything_SetMatchPath(val)
val LONG
!establezca val a cero para deshabilitar coincidir mayúsculas y minúsculas
!establezca val a no-cero para habilitar coincidir mayúsculas y minúsculas
!por defecto es 0 (apagado)
Everything_SetMatchCase(val)
val LONG
!establezca val a cero para deshabilitar coincidir palabra completa
!establezca val a no-cero para habilitar coincidir palabra completa
!por defecto es 0 (apagado)
Everything_SetMatchWholeWord(val)
val LONG
!establezca val a cero para deshabilitar regex
!establezca val a no-cero para habilitar regex
!por defecto es 0 (apagado)
Everything_EnableRegex(val)
val LONG
!Si muestra los resultados en una lista, establezca este valor a cuantos elementos sean visibles en la misma.
!¿Cuántos resultados desearía que retornara Everything?
!Utilice esto para mostrar pequeñas listas.
!Por defecto es 0xFFFFFFFF (todos los resultados)
Everything_SetMax(val)
offset LONG
!Si muestra una lista con una barra de desplazamiento, establezca el offset al mismo que el de la barra.
!¿Desde qué índice le gustaría que Everything retornara los resultados?
!cero significa retornar los resultados comenzando por el primero.
!10 significaría retornar los resultados comenzando por el décimo.
!utilícelo para mostrar pequeñas listas.
!por defecto es 0
!Esto es basado en 0
Everything_SetOffset(offset)
!Ejecutar la consulta
!utilice las funciones Everything_Set* para sobreescribir los parámetros de búsqueda por defecto
!Esto envía las opciones de búsqueda a "Everything" sobre el IPC.
!no hay retorno hasta que tenga una copia de TODOS los resultados.
!Utilice Everything_GetResult para enumarar los resultados.
!100 resultados tomará cerca de 1 milisegundo.
!1 millón de resultados tomará cerca de 1 segundo.
Everything_Query()
detail LONG
!El detalle de resultado
!Establezca detalle a no-cero para obtener información de archivo desde Everything_GetResult
!Establezca detalle a cero para obtener nombre de archivo, offsets y longitudes de nombres de ubicación y atributos de archivo parciales solamente.
!El detalle por defecto es cero.
!Esto puede llamarse en cualquier momento.
!asegúrese de que ordena los resultados con Everything_SortResults() si establece los detalles a no-cero. (esto acelerará el proceso de enumerado.)
Everything_SetDetail(detail)
NoDriveLetter LONG
!Establezca NoDriveLetter a no-cero para ordenar por ubicación excluyendo las letras de unidad.
!Establezca NoDriveLetter a cero para ordenar por ubicación.
!Utilice esto antes de obtener los resultados detallados (establezca NoDriveLetter a cero).
!Los resultados son ordenados por defecto por nombre.
!Puede llamarse solo tras llamar a Everything_Query
Everything_SortResults(NoDriveLetter)
numFiles LONG
!Obtener el número de archivos en la lista de resultados visible.
numFiles = Everything_GetNumFileResults()
numFolders LONG
!Obtener el número de carpetas en la lista de resultados visible.
numFolders = Everything_GetNumFolderResults()
numResults LONG
!Obtener el número de archivos y carpetas en la lista de resultados visible.
numResults = Everything_GetNumResults()
totFiles LONG
!Obtener el número total de archivos en la lista de resultados visible.
totFiles = Everything_GetTotFileResults()
totFolders LONG
!Obtener el número de archivos en la lista de resultados.
totFolders = Everything_GetTotFolderResults()
totResults LONG
!Obtener el número de archivos y carpetas en la lista de resultados.
!index is 0 based
totResults = Everything_GetTotResults()
index LONG
val LONG
!retorna cero si el resultado no es un volumen.
!retorna no-cero si el resultado es un volumen.
!el índice es basado en 0
!obsoleto - Utilice Everything_GetResult
val = Everything_IsVolumeResult(index)
index LONG
val LONG
!retorna cero si el resultado no es una carpeta.
!retorna no-cero si el resultado es una carpeta.
!el índice es basado en 0
!obsoleto - Utilice Everything_GetResult
val = Everything_IsFolderResult(index)
index LONG
val LONG
!retorna cero si el resultado no es un archivo.
!retorna no-cero si el resultado es un archivo.
!el índice es basado en 0
!obsoleto - Utilice Everything_GetResult
val = Everything_IsFileResult(index)
index LONG
filename CSTRING
!el índice es basado en 0
!esto obtiene el resultado de nombre de archivo
!obsoleto - Utilice Everything_GetResult
filename = Everything_GetResultFileName(index)
index LONG
path CSTRING
!el índice es basado en 0
!esto obtiene el resultado de ubicación
!obsoleto - Utilice Everything_GetResult
path = Everything_GetResultPath(index)
index LONG
result GROUP
FullPathFileName STRING(260) !La ubicación completa y nombre de archivo del resultado
PathPartLength LONG ! Longitud de la parte de ubicación solamente
FileNamePartOffset LONG ! Offset into FullPathFileName for the file name part only (0 based)
SizeHigh LONG ! Parte alta de tamaño (ignore esto si no necesita el tamaño completo en 64 bits)
SizeLow ULONG ! Parte baja de tamaño
Attributes LONG ! Los flags de atributos pueden ser cero o más flags de EVERYTHING_FILE_ATTRIBUTE_*
CreationYear LONG ! El año (1601 - 30827).
CreationMonth LONG ! El mes (Enero = 1, Diciembre = 12)
CreationDayOfWeek LONG ! El día de la semana. (domingo = 0, lunes = 1, Sábado = 6)
CreationDay LONG ! El día del mes (1-31).
CreationHour LONG ! La hora (0-23).
CreationMinute LONG ! El minuto (0-59).
CreationSecond LONG ! El segundo (0-59).
CreationMilliseconds LONG ! El milisegundo (0-999).
LastAccessYear LONG ! El año (1601 - 30827).
LastAccessMonth LONG ! El mes (Enero = 1, Diciembre = 12)
LastAccessDayOfWeek LONG ! El día de la semana. (domingo = 0, lunes = 1, Sábado = 6)
LastAccessDay LONG ! El día del mes (1-31).
LastAccessHour LONG ! La hora (0-23).
LastAccessMinute LONG ! El minuto (0-59).
LastAccessSecond LONG ! El segundo (0-59).
LastAccessMilliseconds LONG ! El milisegundo (0-999).
LastWriteYear LONG ! El año (1601 - 30827).
LastWriteMonth LONG ! El mes (Enero = 1, Diciembre = 12)
LastWriteDayOfWeek LONG ! El día de la semana. (domingo = 0, lunes = 1, Sábado = 6)
LastWriteDay LONG ! El día del mes (1-31).
LastWriteHour LONG ! La hora (0-23).
LastWriteMinute LONG ! El minuto (0-59).
LastWriteSecond LONG ! El segundo (0-59).
LastWriteMilliseconds LONG ! El milisegundo (0-999).
END
!el índice es basado en 0
!llenar el grupo de resultado
!Vea Everything_SetDetail para saber qué información se ha rellenado.
Everything_GetResult(index,ADDRESS(result))
x LONG,AUTO
m LONG
result GROUP
FullPathFileName STRING(260) !La ubicación completa y nombre de archivo del resultado
PathPartLength LONG ! Longitud de la parte de ubicación solamente
FileNamePartOffset LONG ! Offset dentro de FullPathFileName para la parte de nombre de archivo solamente(basado en 0)
SizeHigh LONG ! No utilizado en este ejemplo.
SizeLow ULONG ! No utilizado en este ejemplo.
Attributes LONG ! Los flags de atributos pueden ser cero o más flags de EVERYTHING_FILE_ATTRIBUTE_DIRECTORY
CreationYear LONG ! No utilizado en este ejemplo.
CreationMonth LONG ! No utilizado en este ejemplo.
CreationDayOfWeek LONG ! No utilizado en este ejemplo.
CreationDay LONG ! No utilizado en este ejemplo.
CreationHour LONG ! No utilizado en este ejemplo.
CreationMinute LONG ! No utilizado en este ejemplo.
CreationSecond LONG ! No utilizado en este ejemplo.
CreationMilliseconds LONG ! No utilizado en este ejemplo.
LastAccessYear LONG ! No utilizado en este ejemplo.
LastAccessMonth LONG ! No utilizado en este ejemplo.
LastAccessDayOfWeek LONG ! No utilizado en este ejemplo.
LastAccessDay LONG ! No utilizado en este ejemplo.
LastAccessHour LONG ! No utilizado en este ejemplo.
LastAccessMinute LONG ! No utilizado en este ejemplo.
LastAccessSecond LONG ! No utilizado en este ejemplo.
LastAccessMilliseconds LONG ! No utilizado en este ejemplo.
LastWriteYear LONG ! No utilizado en este ejemplo.
LastWriteMonth LONG ! No utilizado en este ejemplo.
LastWriteDayOfWeek LONG ! No utilizado en este ejemplo.
LastWriteDay LONG ! No utilizado en este ejemplo.
LastWriteHour LONG ! No utilizado en este ejemplo.
LastWriteMinute LONG ! No utilizado en este ejemplo.
LastWriteSecond LONG ! No utilizado en este ejemplo.
LastWriteMilliseconds LONG ! No utilizado en este ejemplo.
END
!establecer una consulta utilizando los parámetros de búsqueda por defecto
!cambiar la cadena de búsqueda a 'whatthe'
Everything_SetSearch('whatthe')
!Encontrar todos los resultados para 'whatthe'
Everything_Query()
m = Everything_GetNumResults()
LOOP x = 0 TO m - 1
Everything_GetResult(x,ADDRESS(result))
...
!hacer algo con nombre y ubicación
...
END
x LONG,AUTO
m LONG
result GROUP
FullPathFileName STRING(260) !La ubicación completa y nombre de archivo del resultado
PathPartLength LONG ! Longitud de la parte de ubicación solamente
FileNamePartOffset LONG ! Offset dentro de FullPathFileName para la parte de nombre de archivo solamente(basado en 0)
SizeHigh LONG ! Parte alta de tamaño (ignore esto si no necesita el tamaño completo en 64 bits)
SizeLow ULONG ! Parte baja de tamaño
Attributes LONG ! Los flags de atributos pueden ser cero o más flags de EVERYTHING_FILE_ATTRIBUTE_*
CreationYear LONG ! El año (1601 - 30827).
CreationMonth LONG ! El mes (Enero = 1, Diciembre = 12)
CreationDayOfWeek LONG ! El día de la semana. (domingo = 0, lunes = 1, Sábado = 6)
CreationDay LONG ! El día del mes (1-31).
CreationHour LONG ! La hora (0-23).
CreationMinute LONG ! El minuto (0-59).
CreationSecond LONG ! El segundo (0-59).
CreationMilliseconds LONG ! El milisegundo (0-999).
LastAccessYear LONG ! El año (1601 - 30827).
LastAccessMonth LONG ! El mes (Enero = 1, Diciembre = 12)
LastAccessDayOfWeek LONG ! El día de la semana. (domingo = 0, lunes = 1, Sábado = 6)
LastAccessDay LONG ! El día del mes (1-31).
LastAccessHour LONG ! La hora (0-23).
LastAccessMinute LONG ! El minuto (0-59).
LastAccessSecond LONG ! El segundo (0-59).
LastAccessMilliseconds LONG ! El milisegundo (0-999).
LastWriteYear LONG ! El año (1601 - 30827).
LastWriteMonth LONG ! El mes (Enero = 1, Diciembre = 12)
LastWriteDayOfWeek LONG ! El día de la semana. (domingo = 0, lunes = 1, Sábado = 6)
LastWriteDay LONG ! El día del mes (1-31).
LastWriteHour LONG ! La hora (0-23).
LastWriteMinute LONG ! El minuto (0-59).
LastWriteSecond LONG ! El segundo (0-59).
LastWriteMilliseconds LONG ! El milisegundo (0-999).
END
!establecer una consulta utilizando los parámetros de búsqueda por defecto
!cambiar la cadena de búsqueda a 'whatthe'
Everything_SetSearch('whatthe')
!Encontrar todos los resultados para 'whatthe'
Everything_Query()
!activar detalles
Everything_SetDetail(1)
!Ordenar los resultados
!esto es necesario para detalles no-cero
Everything_SortResults(0)
m = Everything_GetNumResults()
LOOP x = 0 TO m - 1
Everything_GetResult(x,ADDRESS(result))
...
!hacer algo con los resultados
...
END