Clarion
Setup
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
Cambios
- añadido:
- Everything_SetDetail
- Everything_SortResults
Equates
!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)
Límites y Notas
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.
Descripciones
Everything_GetLastError
myError LONG
!revisa las constantes (equates) para las descripciones de mensajes de error
myError = Everything_GetLastError()
Everything_SetSearch
myString STRING
!Establecer la cadena de búsqueda
!la búsqueda por defecto es '' (cadena vacía)
Everything_SetSearch(myString)
Everything_SetMatchPath
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)
Everything_SetMatchCase
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)
Everything_SetMatchWholeWord
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)
Everything_EnableRegex
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)
Everything_SetMax
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)
Everything_SetOffset
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)
Everything_Query
!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()
Everything_SetDetail
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)
Everything_SortResults
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)
Everything_GetNumFileResults
numFiles LONG
!Obtener el número de archivos en la lista de resultados visible.
numFiles = Everything_GetNumFileResults()
Everything_GetNumFolderResults
numFolders LONG
!Obtener el número de carpetas en la lista de resultados visible.
numFolders = Everything_GetNumFolderResults()
Everything_GetNumResults
numResults LONG
!Obtener el número de archivos y carpetas en la lista de resultados visible.
numResults = Everything_GetNumResults()
Everything_GetTotFileResults
totFiles LONG
!Obtener el número total de archivos en la lista de resultados visible.
totFiles = Everything_GetTotFileResults()
Everything_GetTotFolderResults
totFolders LONG
!Obtener el número de archivos en la lista de resultados.
totFolders = Everything_GetTotFolderResults()
Everything_GetTotResults
totResults LONG
!Obtener el número de archivos y carpetas en la lista de resultados.
!index is 0 based
totResults = Everything_GetTotResults()
Everything_IsVolumeResult
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)
Everything_IsFolderResult
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)
Everything_IsFileResult
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)
Everything_GetResultFileName
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)
Everything_GetResultPath
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)
Everything_GetResult
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))
Ejemplo de Programa Rápido
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
Ejemplo de Programa Detallado
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