Jump to content
Sign in to follow this  
Boogerman

Como fazer FileSelectFolder apresentar conteúdo da pasta?

Recommended Posts

Pessoas,

 

Fiz o código abaixo para rodar vários executáveis que estiverem dentro de uma pasta que sera selecionada.

#include <file.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ###
$Form1_1 = GUICreate("Rodar executaveis", 551, 172, 316, 323)
$Group1 = GUICtrlCreateGroup("Seleção", 16, 0, 513, 153)
$Label1 = GUICtrlCreateLabel("Pasta", 40, 40, 31, 17)
$Input1 = GUICtrlCreateInput("", 80, 40, 241, 21)
$Button1 = GUICtrlCreateButton("Procurar", 328, 40, 99, 25)
$Button3 = GUICtrlCreateButton("Rodar exes", 40, 96, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit


        Case $Button1

            $Label1 = FileSelectFolder("Procurando pasta 1.", "")
            If FileExists($Label1) Then GUICtrlSetData($Input1, $Label1) ; mostrar a pasta selecionada

        Case $Button3

            $fileArray = _FileListToArray($Label1, "*.exe", 1)

            For $x = 1 To $fileArray[0]

                ShellExecuteWait($Label1 & "\" & $fileArray[$x])
            Next


    EndSwitch


WEnd

O FileSelectFolder seleciona a pasta, mas na seleção não mostra o conteúdo da pasta, eu precisaria que na seleção apresenta-se o conteúdo da pasta , assim, sabendo o conteúdo da pasta que eu iria selecionar somente a pasta e rodar todos os executáveis que estiverem dentro dela.

 

Tem como fazer com FileSelectFolder isso ou teria que usar outra coisa?

 

 

 

 

 

 

 

 

 

Share this post


Link to post
Share on other sites
Olá Boogerman.
Vc pode utilizar o FileSelectFolder para selecionar a pasta e depois uma segunda tela para mostrar os executáveis que estivessem dentro da mesma, inclusive permitindo a seleção de quais seriam executados.
Outra alternativa seria usar o FileSelectFolder do Melba23 que tem várias opções diferentes provavelmente uma delas deve ter servir.

 

Share this post


Link to post
Share on other sites

Você teria que criar um fileselector modificado que cria uma lista do que tem dentro da pasta sempre que vc clicar nela. Olha o que o manimal disse ai

Edited by Pedro Pinheiro

Share this post


Link to post
Share on other sites

Senhores, tentei com a indicação do Manimal e não consegui.

 

Na forma do post eu visualizei a outra tela, mas não apresenta todos os arquivos dentro da pasta. Algumas pastas coloquei na area de trabalho e essas nem consegui encontrar pelo script do post.

Share this post


Link to post
Share on other sites

Como exemplo, porque sei que a função do Melba23 é bem complexa e às vezes de diícil entendimento:

 

O código abaixo mostra e permite selecionar somente os executáveis que estão no desktop do usuário atual

Local $Titulo = "Executaveis no Desktop"
Local $Selecao = _CFF_Choose($Titulo, 300, 500, -1, -1, @DesktopDir, "*.exe||*", 0, -1)
If $Selecao Then
    Local $Arquivos = StringSplit($Selecao, "|")
    $Selecao = ""
    For $i = 1 To $Arquivos[0]
        $Selecao &= $Arquivos[$i] & @CRLF
    Next
    MsgBox($MB_SYSTEMMODAL + $MB_ICONINFORMATION, $Titulo, "Arquivos Escolhidos:" & @CRLF & @CRLF & $Selecao)
Else
    MsgBox($MB_SYSTEMMODAL + $MB_ICONINFORMATION, $Titulo, "Nenhum arquivo selecionado!")
EndIf

Veja se ajuda...

Share this post


Link to post
Share on other sites

Pra mim a solução que o @Manimal apresentou, serviu perfeitamente!

 

Mas olha esse outro aqui creio que e mais parecido com o que você procura: LINK

  • Like 1

Share this post


Link to post
Share on other sites

Senhores, acho que me expressei mal, fiz um curto vídeo para não ter duvidas de qual a minha necessidade.

 

https://youtu.be/p0d4pbp78HU

 

No vídeo coloquei a forma que estou buscando visualizar a seleção de pastas.

 

Script que cito no vídeo para alteração caso alguém saiba como fazer da forma que preciso.

#include <file.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ###
$Form1_1 = GUICreate("Rodar executaveis", 551, 172, 316, 323)
$Group1 = GUICtrlCreateGroup("Seleção", 16, 0, 513, 153)
$Label55 = GUICtrlCreateLabel("Pasta", 40, 40, 31, 17)
$Input1 = GUICtrlCreateInput("C:\Users\Pc Gamer\Desktop\Teste", 80, 40, 241, 21)
$Button1 = GUICtrlCreateButton("Procurar", 328, 40, 99, 25)
$Button3 = GUICtrlCreateButton("Rodar exes", 40, 96, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $Button1

            $todos = FileSelectFolder("Procurando pasta 1.", "")
            If FileExists($todos) Then GUICtrlSetData($Input1, $todos) ; mostrar a pasta selecionada


        Case $Button3


            $Input1 = $todos

            $rootFolder = $Input1

            $fileArray = _FileListToArray($rootFolder, "*.exe", 1)

            For $X = 1 To $fileArray[0]
                RunWait($rootFolder & "\" & $fileArray[$X])
            Next

    EndSwitch

WEnd

Share this post


Link to post
Share on other sites

Olá Boogerman.

 

Agora ficou claro o que vc precisa! Porém vc está usando a função errada, neste caso a FileSelectFolder.

 

Por quê errada? Porque esta função especificamente faz vc navegar pelas pastas mas não mostra os arquivos e nem vai mostrar pois o objetivo dela é seleconar PASTAS!

 

Se vc quer que mostre os arquivos dentro de cada pasta entao vc tem que usar uma função diferente, a FileOpenDialog.

 

Esta função vai permitir a navegação pelas pastas ao mesmo tempo que mostra o conteúdo delas.

 

O único inconveniente é que vc precisa selecionar um arquivo em vez de um pasta, mas isso é facilmente resolvível na linha depois da função!

 

Ou isto, o vc monta uma função própria.

 

Fiz a modificação no seu script original. Se funcionar de acordo, basta modificar a do seu jeito.

#include <file.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <StringConstants.au3>

#Region ### START Koda GUI section ###
$Original = "C:\Users\Pc Gamer\Desktop\Teste" ; definir para usar em mais de uma linha
$Form1_1 = GUICreate("Rodar executaveis", 551, 172, 316, 323)
$Group1 = GUICtrlCreateGroup("Seleção", 16, 0, 513, 153)
$Label55 = GUICtrlCreateLabel("Pasta", 40, 40, 31, 17)
$Input1 = GUICtrlCreateInput($Original, 80, 40, 241, 21)
$Button1 = GUICtrlCreateButton("Procurar", 328, 40, 99, 25)
$Button3 = GUICtrlCreateButton("Rodar exes", 40, 96, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$todos = $Original ; definir aqui senão dá erro se clicar direto no botão para rodar
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $todos = FileOpenDialog("Procurando pasta 1.", $Original, "Executáveis(*.exe)")
         $todos = StringRegExp($todos, "(^.+)\\", $STR_REGEXPARRAYMATCH)[0]
            If FileExists($todos) Then GUICtrlSetData($Input1, $todos) ; mostrar a pasta selecionada
        Case $Button3
            $Input1 = $todos
            $rootFolder = $Input1
            $fileArray = _FileListToArray($rootFolder, "*.exe", 1)
            For $X = 1 To $fileArray[0]
                ConsoleWrite($rootFolder & "\" & $fileArray[$X] & @CRLF)
            Next
    EndSwitch
WEnd

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×