// Funções de Seleção de Arquivos

// SetHardSymLinkMode(int mode) para definir o modo de seleção e ação 0 - Modo de Hiperligação Física, 1 - Modo de Hiperligação Simbólica 
SetHardSymLinkMode(1) define o Modo de Hiperligação Simbólica 
SetHardSymLinkMode(0) reverter o Modo de Hiperligação Física (Padrão)

// SelectAll(bool setSelection) para selecionar/desmarcar todos os arquivos
// Uso: 
SelectAll(true) // Selecionar tudo
SelectAll(false) // Desmarcar tudo

// SelectFirstFiles(bool setSelection) para selecionar/desmarcar os primeiros arquivos em grupos
// Uso: 
SelectFirstFiles(true) // Selecione os primeiros arquivos em grupos
SelectFirstFiles(false) // Desmarque os primeiros arquivos em grupos

// SelectLastFiles(bool setSelection) para selecionar / desmarcar os últimos arquivos em grupos
// Uso: 
SelectFirstFiles(true) // Selecione os últimos arquivos em grupos
SelectFirstFiles(false) // Desmarque os últimos arquivos em grupos

// SelectFile(bool setSelection, string filePathOrWildCard) para selecionar / desmarcar arquivo(s) especificado(s) por caminho, nome ou curinga
// Uso:
SelectFile(true, 'c:\Teste\1.txt')  // Selecione o arquivo 'c:\\Teste\1.txt' (Se estiver na lista de resultados)
SelectFile(true, 'Imagem.jpg')  // Selecione o(s) arquivo(s) com o nome 'Imagem.jpg' (Se houver algum na lista de resultados)
SelectFile(false, 'Imagem*.jpg')  // Desmarque arquivos) com o curinga 'Imagem*.jpg' (Se houver algum na lista de resultados)

// SelectFilesInFolder(bool setSelection, string folder) para selecionar/desselecionar arquivos na pasta especificada
// Uso:
SelectFilesInFolder(true, 'c:\Teste\') // Selecione todos os arquivos encontrados na pasta c:\Teste\
SelectFilesInFolder(false, 'c:\Teste\') // Desmarque todos os arquivos encontrados na pasta c:\Teste\

// SelectFilesInFolderAndSubfolders(bool setSelection, string folder) para selecionar/desselecionar arquivos na pasta e subpasta especificadas
// Uso:
SelectFilesInFolderAndSubfolders(true, 'c:\Teste\') // Selecione todos os arquivos encontrados na pasta c:\Teste\ e subpastas
SelectFilesInFolderAndSubfolders(false, 'c:\test\') // Desmarque todos os arquivos encontrados na pasta c:\Test\ e subpastas

// SelectFilesByExt(bool setSelection, string extension) para selecionar/desmarcar arquivos com a extensão fornecida
// Uso:
SelectFilesByExt(true, '.jpg') // Selecione todos os arquivos .jpg 
SelectFilesByExt(false, '.jpg') // Desmarque todos os arquivos .jpg 

// SelectAllLinksIfAnyFileIsUnchecked(bool setSelection) para selecionar / desmarcar todas as hiperligações físicas ou simbólicas se algum delas já estiver selecionada ou desmarcada para que todos tenham o mesmo estado
// Uso:
SelectAllLinksIfAnyFileIsUnchecked(true) // Selecione outras hiperligações físicas ou simbólicas de um arquivo se alguma delas já estiver selecionada
SelectAllLinksIfAnyFileIsUnchecked(false) // Desmarque outras hiperligações físicas ou simbólicas de um arquivo se algum delas já estiver desmarcada

//SelectAllReadonly(bool setSelection) para selecionar / desmarcar todos os arquivos com conjunto de atributos somente-leitura ou sistema
SelectAllReadonly(true) // Selecione todos os arquivos com conjunto de atributos somente-leitura ou sistema
SelectAllReadonly(false) // Selecione todos os arquivos com conjunto de atributos somente leitura ou sistema

// UnselectMinimallyFragmentedFiles() para desmarcar um arquivo minimamente fragmentado em cada grupo
// Uso:
UnselectMinimallyFragmentedFiles()

// SelectTheNewestFileInEachGroup(bool setSelection) to select / unselect one newest file in each group
// Uso:
SelectTheNewestFileInEachGroup(true) // select
SelectTheNewestFileInEachGroup(false) // unselect

// SelectTheOldestFileInEachGroup(bool setSelection) to select / unselect one oldest file in each group
// Uso:
SelectTheOldestFileInEachGroup(true) // select
SelectTheOldestFileInEachGroup(false) // unselect

// UnselectFilesProtectedFromModification() // Para desmarcar todos os arquivos que o aplicativo não tem permissão para alterar
// Uso:
UnselectFilesProtectedFromModification()

// SelectFullyUnselectedGroups() to select all files in groups that do not contain any selected files
// Uso:
SelectFullyUnselectedGroups()

// UnselectFullySelectedGroups() to unselect all files of groups where all files are selected
// Uso:
UnselectFullySelectedGroups()

// InvertSelection() to invert selection
// Uso: 
InvertSelection()

// Seleção de arquivos como destinos de hiperlição física ou simbólica 

// SelectFirstFilesAsLinkTargets() para selecionar os primeiros arquivos como destinos de hiperlição física ou simbólica 
// Uso:
SelectFirstFilesAsLinkTargets()

// SelectLastFilesAsLinkTargets() para selecionar os últimos arquivos como destinos de hiperlição física ou simbólica 
// Uso:
SelectLastFilesAsLinkTargets()

// SelectFilesWithTheMostHardLinksAsLinkTargets() to select files with the most hard links (if any) as hard- or sym- link targets
// Uso:
SelectFilesWithTheMostHardLinksAsLinkTargets()

// SelectFilesInFolderAsLinkTargets(string path) para selecionar arquivos em uma determinada pasta como destinos de hiperligação física ou simbólica (Um arquivo por grupo) 
// Uso:
SelectFilesInFolderAsLinkTargets('c:\test\') // para selecionar arquivos na pasta c:\Teste\ como destinos de hiperligação física ou simbólica (Um por grupo) 

// SelectFilesInFolderOrSubfolderAsLinkTargets(string path) para selecionar arquivos em uma determinada pasta e suas subpastas como destinos de hiperligação física ou simbólica (Um arquivo por grupo) 
// Uso:
SelectFilesInFolderOrSubfolderAsLinkTargets('c:\Teste\') // para selecionar arquivos na pasta c:\Teste\ e suas subpastas como destinos de hiperligação física ou simbólica (Um por grupo) 

// SelectMinimallyFragmentedFilesAsLinkTargets() // Para selecionar um arquivo minimamente fragmentado em cada grupo como destino de hiperligação física ou simbólica
// Uso:
SelectMinimallyFragmentedFilesAsLinkTargets()

// SelectTheNewestFileInEachGroupAsLinkTargets() para selecionar os arquivos mais recentes como destinos de hiperligação física ou simbólica (Um arquivo por grupo) 
// Usage:
SelectTheNewestFileInEachGroupAsLinkTargets()

// SelectReadonlyAndSystemFilesAsLinkTargets() para selecionar arquivos com atributo Somente-leitura ou Sistema definido como destinos de hiperligação física ou simbólica (Um arquivo por grupo) 
// Uso:
SelectReadonlyAndSystemFilesAsLinkTargets()

// SelectFilesProtectedFromModificationAsLinkTargets() para selecionar arquivos que o aplicativo não tem permissão para alterar como destinos de hiperligação física ou Simbólico (Um arquivo por grupo) 
// Uso:
SelectFilesProtectedFromModificationAsLinkTargets()


// Ações 

// ExcludeSelectedFilesFromTheList() para excluir arquivos selecionados da lista de resultados
// Uso:
ExcludeSelectedFilesFromTheList() 

// RunReplaceFileWithLinkAction() para executar a substituição de arquivos selecionados por hiperligações físicas ou simbólicas (Dependendo do modo atual) para destinos de hiperligações selecionadas 
// Uso:
RunReplaceFileWithLinkAction() para executar a substituição de arquivos selecionados por hiperligações físicas ou simbólicas (Dependendo do modo atual) para destinos de hiperligações selecionadas 

// RunDetachFileLinksAction() para executar a substituição de hiperligações físicas ou simbólicas selecionados por arquivos.
// Uso:
RunDetachFileLinksAction()

// RunDeleteFilesAction(bool deleteToRecycle, bool deleteEmptyFolders) para excluir arquivos selecionados, opcional excluir para a lixeira, opcional excluir pastas vazias após excluir arquivos.
// Uso:
RunDeleteFilesAction(false, false) // Para excluir arquivos.
RunDeleteFilesAction(false, true) // Para excluir arquivos e excluir pastas vazias após excluir arquivos.
RunDeleteFilesAction(true, false) // Para excluir arquivos para a lixeira.
RunDeleteFilesAction(true, true) // Para excluir arquivos da lixeira e excluir pastas vazias após excluir arquivos.

// RunCompressFilesAction(bool skipIncompressibleFiles, bool useCompactTool = false) para compactar arquivos selecionados usando compactação NTFS
// Uso:
RunCompressFilesAction(false, false) para definir o atributo de compactação NTFS de todos os arquivos selecionados usando compactação NTFS sem estimativa de compactação.
RunCompressFilesAction(true, false) para estimar a compactação e compactar arquivos selecionados usando compactação NTFS se a taxa de compactação estimada for <90%.
