Olá, boa tarde.
Gostaria de auxilio em uma funcionalidade do AHK.
Estou criando um script cujo preciso selecionar uma pasta para localizar arquivos TXT nessa pasta.
Até ai tudo bem.
Porém, queria que ele abrisse dessa forma, no qual eu consiga selecionar a pasta no meu computador ou colar o diretório da pasta no campo de busca do localizador de pasta para selecionar de forma mais ágil.
Grato pela atenção
Atenciosamente,
Thales
Filepath select Topic is solved
Moderator: Gio
-
- Posts: 95
- Joined: 13 Sep 2021, 06:08
Filepath select
- Attachments
-
- image.png (39.68 KiB) Viewed 868 times
Re: Filepath select
Boa tarde Thalesduarte.
Não sei se entendi o que você quer fazer exatamente, mas você pode usar um FileSelectFile para selecionar uma pasta com a opção S (ou seja, fazendo isso do diálogo de "salvar como"). A única diferença é que terá de remover o nome do arquivo no final do caminho.
Creio que seria algo como isso:
Não sei se entendi o que você quer fazer exatamente, mas você pode usar um FileSelectFile para selecionar uma pasta com a opção S (ou seja, fazendo isso do diálogo de "salvar como"). A única diferença é que terá de remover o nome do arquivo no final do caminho.
Creio que seria algo como isso:
Code: Select all
FileSelectFile, destino, s, \Selecionar aqui
If (destino = "")
{
msgbox % "Erro: nenhuma pasta selecionada"
}
else
{
StringSplit, destino_, destino, \
Pasta_Selecionada := ""
Loop % destino_0
{
If (A_index = destino_0)
{
Continue
}
Pasta_Selecionada := Pasta_Selecionada . destino_%A_Index% . "\"
}
msgbox % "Você selecionou a pasta: " . Pasta_Selecionada
}
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
-
- Posts: 95
- Joined: 13 Sep 2021, 06:08
Re: Filepath select
Prezado Gio, bom dia, tudo bem?
Obrigado pela resposta.
É basicamente isso, a unica diferença é que o Save As permitiria selecionar uma pasta, e não um arquivo.
Como faço para permitir somente selecionar pastas?
Obrigado pela resposta.
É basicamente isso, a unica diferença é que o Save As permitiria selecionar uma pasta, e não um arquivo.
Como faço para permitir somente selecionar pastas?
Re: Filepath select Topic is solved
Bom dia Thalesduarte.
Você tem essas duas opções padrão: o diálogo de selecionar arquivos (FileSelectFile) e o diálogo de selecionar pastas (FileSelectFolder). Porém as interfaces não são iguais, e a de selecionar pastas é bem "menor" que a de selecionar arquivos (em termos de opções).
Mas se nenhuma das duas opções padrão estiver do seu agrado, você ainda pode criar a sua própria opção. Isso não é tão difícil de fazer, mas pode te levar um dia ou dois dependendo do seu conhecimento.
Outra opção ainda é procurar um código que alguém já tenha criado e disponibilizado para uso nos fórums. Eu achei este aqui do usuário Just Me que parece fazer tudo que você quer. Ele disponibilizou o código através de uma função com licença de domínio público, então é bem fácil implementar e você pode usar à vontade.
Exemplo de uso do código dele:
Perceba como a função permite que você mude os diálogos da tela e até o nome do botão a ser clicado nos próprios parâmetros da função.
Consulte o tópico original desta função aqui e se você gostar dela, não se esqueça de postar um agradecimento ao autor .
Você tem essas duas opções padrão: o diálogo de selecionar arquivos (FileSelectFile) e o diálogo de selecionar pastas (FileSelectFolder). Porém as interfaces não são iguais, e a de selecionar pastas é bem "menor" que a de selecionar arquivos (em termos de opções).
Mas se nenhuma das duas opções padrão estiver do seu agrado, você ainda pode criar a sua própria opção. Isso não é tão difícil de fazer, mas pode te levar um dia ou dois dependendo do seu conhecimento.
Outra opção ainda é procurar um código que alguém já tenha criado e disponibilizado para uso nos fórums. Eu achei este aqui do usuário Just Me que parece fazer tudo que você quer. Ele disponibilizou o código através de uma função com licença de domínio público, então é bem fácil implementar e você pode usar à vontade.
Exemplo de uso do código dele:
Code: Select all
Msgbox % "Você selecionou esta pasta: '" SelectFolderEx(StartingFolder := "", Prompt := "Selecione uma pasta", OwnerHwnd := 0, OkBtnLabel := "Selecionar") "'"
Return
; ==================================================================================================================================
; Shows a dialog to select a folder.
; Depending on the OS version the function will use either the built-in FileSelectFolder command (XP and previous)
; or the Common Item Dialog (Vista and later).
; Parameter:
; StartingFolder - the full path of a folder which will be preselected.
; Prompt - a text used as window title (Common Item Dialog) or as text displayed withing the dialog.
; ---------------- Common Item Dialog only:
; OwnerHwnd - HWND of the Gui which owns the dialog. If you pass a valid HWND the dialog will become modal.
; BtnLabel - a text to be used as caption for the apply button.
; Return values:
; On success the function returns the full path of selected folder; otherwise it returns an empty string.
; MSDN:
; Common Item Dialog -> msdn.microsoft.com/en-us/library/bb776913%28v=vs.85%29.aspx
; IFileDialog -> msdn.microsoft.com/en-us/library/bb775966%28v=vs.85%29.aspx
; IShellItem -> msdn.microsoft.com/en-us/library/bb761140%28v=vs.85%29.aspx
; ==================================================================================================================================
SelectFolderEx(StartingFolder := "", Prompt := "", OwnerHwnd := 0, OkBtnLabel := "") {
Static OsVersion := DllCall("GetVersion", "UChar")
, IID_IShellItem := 0
, InitIID := VarSetCapacity(IID_IShellItem, 16, 0)
& DllCall("Ole32.dll\IIDFromString", "WStr", "{43826d1e-e718-42ee-bc55-a1e261c37bfe}", "Ptr", &IID_IShellItem)
, Show := A_PtrSize * 3
, SetOptions := A_PtrSize * 9
, SetFolder := A_PtrSize * 12
, SetTitle := A_PtrSize * 17
, SetOkButtonLabel := A_PtrSize * 18
, GetResult := A_PtrSize * 20
SelectedFolder := ""
If (OsVersion < 6) { ; IFileDialog requires Win Vista+, so revert to FileSelectFolder
FileSelectFolder, SelectedFolder, *%StartingFolder%, 3, %Prompt%
Return SelectedFolder
}
OwnerHwnd := DllCall("IsWindow", "Ptr", OwnerHwnd, "UInt") ? OwnerHwnd : 0
If !(FileDialog := ComObjCreate("{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}", "{42f85136-db7e-439c-85f1-e4075d135fc8}"))
Return ""
VTBL := NumGet(FileDialog + 0, "UPtr")
; FOS_CREATEPROMPT | FOS_NOCHANGEDIR | FOS_PICKFOLDERS
DllCall(NumGet(VTBL + SetOptions, "UPtr"), "Ptr", FileDialog, "UInt", 0x00002028, "UInt")
If (StartingFolder <> "")
If !DllCall("Shell32.dll\SHCreateItemFromParsingName", "WStr", StartingFolder, "Ptr", 0, "Ptr", &IID_IShellItem, "PtrP", FolderItem)
DllCall(NumGet(VTBL + SetFolder, "UPtr"), "Ptr", FileDialog, "Ptr", FolderItem, "UInt")
If (Prompt <> "")
DllCall(NumGet(VTBL + SetTitle, "UPtr"), "Ptr", FileDialog, "WStr", Prompt, "UInt")
If (OkBtnLabel <> "")
DllCall(NumGet(VTBL + SetOkButtonLabel, "UPtr"), "Ptr", FileDialog, "WStr", OkBtnLabel, "UInt")
If !DllCall(NumGet(VTBL + Show, "UPtr"), "Ptr", FileDialog, "Ptr", OwnerHwnd, "UInt") {
If !DllCall(NumGet(VTBL + GetResult, "UPtr"), "Ptr", FileDialog, "PtrP", ShellItem, "UInt") {
GetDisplayName := NumGet(NumGet(ShellItem + 0, "UPtr"), A_PtrSize * 5, "UPtr")
If !DllCall(GetDisplayName, "Ptr", ShellItem, "UInt", 0x80028000, "PtrP", StrPtr) ; SIGDN_DESKTOPABSOLUTEPARSING
SelectedFolder := StrGet(StrPtr, "UTF-16"), DllCall("Ole32.dll\CoTaskMemFree", "Ptr", StrPtr)
ObjRelease(ShellItem)
} }
If (FolderItem)
ObjRelease(FolderItem)
ObjRelease(FileDialog)
Return SelectedFolder
}
Perceba como a função permite que você mude os diálogos da tela e até o nome do botão a ser clicado nos próprios parâmetros da função.
Consulte o tópico original desta função aqui e se você gostar dela, não se esqueça de postar um agradecimento ao autor .
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
-
- Posts: 95
- Joined: 13 Sep 2021, 06:08
Re: Filepath select
Obrigado Gio, era exatamente isso que estava procurando.
Grato pela atenção, irei agradecer o autor do código também!
Novamente.
Obrigado!
Grato pela atenção, irei agradecer o autor do código também!
Novamente.
Obrigado!
Return to “Ajuda e Suporte Geral”
Who is online
Users browsing this forum: No registered users and 5 guests