Clarion
Setup
Download the Clarion module: Clarion_Everything.zip
Source code of the module is included.
Extract Everything.lib to your clarion project.
Add the LIB to “Library, object, and resource files” in your Clarion project and put the following in your global map.
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
Changes
- added:
-
- Everything_SetDetail
- Everything_SortResults
Equates
!return values from Everything_GetLastError EVERYTHING_OK EQUATE(0) ! no error EVERYTHING_ERROR_MEMORY EQUATE(1) ! out of memory EVERYTHING_ERROR_IPC EQUATE(2) ! IPC not available EVERYTHING_ERROR_REGISTERCLASSEX EQUATE(3) ! RegisterClassEx failed EVERYTHING_ERROR_CREATEWINDOW EQUATE(4) ! CreateWindow failed EVERYTHING_ERROR_CREATETHREAD EQUATE(5) ! CreateThread failed EVERYTHING_ERROR_INVALIDINDEX EQUATE(6) ! Invalid result index (must be >= 0 and < numResults) EVERYTHING_ERROR_INVALIDCALL EQUATE(7) ! Call Everything_Query before getting results !attributes 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)
Limits and Notes
Everything MUST be running for this to work.
See Everything IPC.
You can only do one search at a time.
If there is demand for it, I can add multiple thread safe searches.
Descriptions
Everything_GetLastError
myError LONG !check the equates for error message descriptions myError = Everything_GetLastError()
Everything_SetSearch
myString STRING !Set the search string !default search is '' (empty string) Everything_SetSearch(myString)
Everything_SetMatchPath
val LONG !set val to zero to disable path matching !set val to non-zero to enable path matching !default is 0 (off) Everything_SetMatchPath(val)
Everything_SetMatchCase
val LONG !set val to zero to disable case matching !set val to non-zero to enable case matching !default is 0 (off) Everything_SetMatchCase(val)
Everything_SetMatchWholeWord
val LONG !set val to zero to disable whole word matching !set val to non-zero to enable whole word matching !default is 0 (off) Everything_SetMatchWholeWord(val)
Everything_EnableRegex
val LONG !set val to zero to disable regex !set val to non-zero to enable regex !default is 0 (off) Everything_EnableRegex(val)
Everything_SetMax
val LONG !If you display the results in a list, set this value to how many items are visible in the list. !How many results would you like Everything to return? !Use this for displaying small lists. !Default is 0xFFFFFFFF (all results) Everything_SetMax(val)
Everything_SetOffset
offset LONG !If you display a list with a scroll bar, set the offset to the scroll bar's offset. !From what index would you like Everything to return results from? !zero means return results starting from the first result. !10 would mean return results starting from the 10th result. !use this for displaying small lists. !default is 0 !This is 0 based Everything_SetOffset(offset)
Everything_Query
!Execute the query !use the Everything_Set* functions to override default search parameters !This sends the search options to "Everything" over the IPC. !It does not return until it has a copy of ALL the results. !Use Everything_GetResult to enumerate results. !100 results will take about 1 millisecond. !1 million results will take about 1 second. Everything_Query()
Everything_SetDetail
detail LONG !The result detail !Set detail to nonzero to get file information from Everything_GetResult !Set detail to zero to get file name, path name offsets and lengths and partial file attributes only. !The default detail is zero. !This can be called at anytime. !make sure you sort the results with Everything_SortResults() if you set the detail to non-zero. (this will speed up the enumerating process.) Everything_SetDetail(detail)
Everything_SortResults
NoDriveLetter LONG !Set NoDriveLetter to nonzero to sort by path excluding drive letters. !Set NoDriveLetter to zero to sort by path. !Use this before getting detailed results (set NoDriveLetter to zero). !Results are sorted by name by default. !Can only be called after a call to Everything_Query Everything_SortResults(NoDriveLetter)
Everything_GetNumFileResults
numFiles LONG !Get the number of files in the visible results list. numFiles = Everything_GetNumFileResults()
Everything_GetNumFolderResults
numFolders LONG !Get the number of folders in the visible results list. numFolders = Everything_GetNumFolderResults()
Everything_GetNumResults
numResults LONG !Get the number of files and folders in the visible results list. numResults = Everything_GetNumResults()
Everything_GetTotFileResults
totFiles LONG !Get the total number of files in the results list. totFiles = Everything_GetTotFileResults()
Everything_GetTotFolderResults
totFolders LONG !Get the total number of files in the results list. totFolders = Everything_GetTotFolderResults()
Everything_GetTotResults
totResults LONG !Get the total number of files and folders in the results list. !index is 0 based totResults = Everything_GetTotResults()
Everything_IsVolumeResult
index LONG val LONG !returns zero if the result is not a volume. !returns non-zero if the result is a volume. !index is 0 based !deprecated - Use Everything_GetResult val = Everything_IsVolumeResult(index)
Everything_IsFolderResult
index LONG val LONG !returns zero if the result is not a folder. !returns non-zero if the result is a folder. !index is 0 based !deprecated - Use Everything_GetResult val = Everything_IsFolderResult(index)
Everything_IsFileResult
index LONG val LONG !returns zero if the result is not a file !returns non-zero if the result is a file. !index is 0 based !deprecated - Use Everything_GetResult val = Everything_IsFileResult(index)
Everything_GetResultFileName
index LONG filename CSTRING !index is 0 based !this gets the result file name !deprecated - Use Everything_GetResult filename = Everything_GetResultFileName(index)
Everything_GetResultPath
index LONG path CSTRING !index is 0 based !this gets the result path !deprecated - Use Everything_GetResult path = Everything_GetResultPath(index)
Everything_GetResult
index LONG result GROUP FullPathFileName STRING(260) !The full path and file name of the result PathPartLength LONG ! Length of the path part only FileNamePartOffset LONG ! Offset into FullPathFileName for the file name part only (0 based) SizeHigh LONG ! High part of size (ignore this if you do not need the full 64bit size) SizeLow ULONG ! Low part of size Attributes LONG ! Attribute flags can be zero or more EVERYTHING_FILE_ATTRIBUTE_* flags CreationYear LONG ! The year (1601 - 30827). CreationMonth LONG ! The month (January = 1, December = 12) CreationDayOfWeek LONG ! The day of the week. (sunday = 0, monday = 1, Saturday = 6) CreationDay LONG ! The day of the month (1-31). CreationHour LONG ! The hour (0-23). CreationMinute LONG ! The minute (0-59). CreationSecond LONG ! The second (0-59). CreationMilliseconds LONG ! The millisecond (0-999). LastAccessYear LONG ! The year (1601 - 30827). LastAccessMonth LONG ! The month (January = 1, December = 12) LastAccessDayOfWeek LONG ! The day of the week. (sunday = 0, monday = 1, Saturday = 6) LastAccessDay LONG ! The day of the month (1-31). LastAccessHour LONG ! The hour (0-23). LastAccessMinute LONG ! The minute (0-59). LastAccessSecond LONG ! The second (0-59). LastAccessMilliseconds LONG ! The millisecond (0-999). LastWriteYear LONG ! The year (1601 - 30827). LastWriteMonth LONG ! The month (January = 1, December = 12) LastWriteDayOfWeek LONG ! The day of the week. (sunday = 0, monday = 1, Saturday = 6) LastWriteDay LONG ! The day of the month (1-31). LastWriteHour LONG ! The hour (0-23). LastWriteMinute LONG ! The minute (0-59). LastWriteSecond LONG ! The second (0-59). LastWriteMilliseconds LONG ! The millisecond (0-999). END !index is 0 based !fills in the result group !See Everything_SetDetail for what information is filled in. Everything_GetResult(index,ADDRESS(result))
Fast Program Example
x LONG,AUTO m LONG result GROUP FullPathFileName STRING(260) !The full path and file name of the result PathPartLength LONG ! Length of the path part only FileNamePartOffset LONG ! Offset into FullPathFileName for the file name part only (0 based) SizeHigh LONG ! Not used in this example. SizeLow ULONG ! Not used in this example. Attributes LONG ! Attribute flags can be zero or EVERYTHING_FILE_ATTRIBUTE_DIRECTORY flag CreationYear LONG ! Not used in this example. CreationMonth LONG ! Not used in this example. CreationDayOfWeek LONG ! Not used in this example. CreationDay LONG ! Not used in this example. CreationHour LONG ! Not used in this example. CreationMinute LONG ! Not used in this example. CreationSecond LONG ! Not used in this example. CreationMilliseconds LONG ! Not used in this example. LastAccessYear LONG ! Not used in this example. LastAccessMonth LONG ! Not used in this example. LastAccessDayOfWeek LONG ! Not used in this example. LastAccessDay LONG ! Not used in this example. LastAccessHour LONG ! Not used in this example. LastAccessMinute LONG ! Not used in this example. LastAccessSecond LONG ! Not used in this example. LastAccessMilliseconds LONG ! Not used in this example. LastWriteYear LONG ! Not used in this example. LastWriteMonth LONG ! Not used in this example. LastWriteDayOfWeek LONG ! Not used in this example. LastWriteDay LONG ! Not used in this example. LastWriteHour LONG ! Not used in this example. LastWriteMinute LONG ! Not used in this example. LastWriteSecond LONG ! Not used in this example. LastWriteMilliseconds LONG ! Not used in this example. END !setup a query using the default search parameters !change the search string to 'whatthe' Everything_SetSearch('whatthe') !Find all the results for 'whatthe' Everything_Query() m = Everything_GetNumResults() LOOP x = 0 TO m - 1 Everything_GetResult(x,ADDRESS(result)) ... !do something with name and path ... END
Detailed Program Example
x LONG,AUTO m LONG result GROUP FullPathFileName STRING(260) !The full path and file name of the result PathPartLength LONG ! Length of the path part only FileNamePartOffset LONG ! Offset into FullPathFileName for the file name part only (0 based) SizeHigh LONG ! High part of size (ignore this if you do not need the full 64bit size) SizeLow ULONG ! Low part of size Attributes LONG ! Attribute flags can be zero or more EVERYTHING_FILE_ATTRIBUTE_* flags CreationYear LONG ! The year (1601 - 30827). CreationMonth LONG ! The month (January = 1, December = 12) CreationDayOfWeek LONG ! The day of the week. (sunday = 0, monday = 1, Saturday = 6) CreationDay LONG ! The day of the month (1-31). CreationHour LONG ! The hour (0-23). CreationMinute LONG ! The minute (0-59). CreationSecond LONG ! The second (0-59). CreationMilliseconds LONG ! The millisecond (0-999). LastAccessYear LONG ! The year (1601 - 30827). LastAccessMonth LONG ! The month (January = 1, December = 12) LastAccessDayOfWeek LONG ! The day of the week. (sunday = 0, monday = 1, Saturday = 6) LastAccessDay LONG ! The day of the month (1-31). LastAccessHour LONG ! The hour (0-23). LastAccessMinute LONG ! The minute (0-59). LastAccessSecond LONG ! The second (0-59). LastAccessMilliseconds LONG ! The millisecond (0-999). LastWriteYear LONG ! The year (1601 - 30827). LastWriteMonth LONG ! The month (January = 1, December = 12) LastWriteDayOfWeek LONG ! The day of the week. (sunday = 0, monday = 1, Saturday = 6) LastWriteDay LONG ! The day of the month (1-31). LastWriteHour LONG ! The hour (0-23). LastWriteMinute LONG ! The minute (0-59). LastWriteSecond LONG ! The second (0-59). LastWriteMilliseconds LONG ! The millisecond (0-999). END !setup a query using the default search parameters !change the search string to 'whatthe' Everything_SetSearch('whatthe') !Find all the results for 'whatthe' Everything_Query() !turn detail on Everything_SetDetail(1) !Sort the results !this is required for nonzero detail Everything_SortResults(0) m = Everything_GetNumResults() LOOP x = 0 TO m - 1 Everything_GetResult(x,ADDRESS(result)) ... !do something with result ... END