Jump to content

Leaderboard

  1. JScript

    JScript

    Administradores (Adm)


    • Points

      420

    • Content count

      2,077


  2. Luigi

    Luigi

    Administradores (Adm)


    • Points

      317

    • Content count

      697


  3. joelson0007

    joelson0007

    Administradores (Adm)


    • Points

      259

    • Content count

      783


  4. Belini

    Belini

    Administradores (Adm)


    • Points

      230

    • Content count

      2,080



Popular Content

Showing most liked content since 07/03/2011 in Posts

  1. 2 points
    Olá pessoal. Aproveitando o feriado de carnaval, que dependendo da região é mais ou menos comemorado, quero abrir um tópico para que todos possam dar sua contribuição em dicas, macetes e truques ao utilizar o AutoIt. Afinal todos nós, de uma maneira ou outra, ao fazermos nosso scripts, utilizamos as vezes sem nem mesmo pensar, alguma dica ou macete. Vou tentar manter compilado aqui no 1o post, essas dicas. Não tem sequência, nem melhor nem pior. Só uma lista! 1) a diretiva #include serve para incorporarmos códigos já prontos referentes a um determinado tópico aos nossos scripts. Ao utilizarmos o #include tem duas maneiras, que passam desapercebidas: #include <> com os sinais de maior e menor, que identifica um arquivo que será procurado e incorporado a partir da subpasta Include da pasta principal do AutoIt #include "" com as aspas, que identiica um arquivo que está na mesma pasta do script, facilitando assim para desdobrar o script em vários outros scripts menores para facilitar a edição ou manutenção Exemplos: #include <Misc.au3> - estamos procurando o arquivo Misc.au3 que está na pasta Include #include "MeuScript.au3" - estamos procurando o arquivo MeuScript.au3 que está na mesma pasta do meu script stual Aqui fica uma segunda dica que eu utilizo. Quando o script passa a ser meio genérico, tipo uma biblioteca de scripts em comum a vários projetos (vide o tópico Framework), eu costumo criar um link simbólico do arquivo na subpasta Include. Dessa forma, tenho o melhor dos dois mundos, pois mantenho o script "à mão" e ao mesmo tempo ele está disponível para qualquer projeto, sem criar uma cópia do mesmo e correndo o risco de ficar com arquivos desatualizados. 2) Já aconteceu a situação de vc testar seu código e as mensagens estarem em português correto (ou com acentos) mas ao compilar o mesmo script, ele aparece com alguns caracteres malucos no lugar dos acentos? Outra situação é quando eu vejo o pessoal reclamando do erro UTF-8 ou UNICODE ao compilar algum script, principalmente do fórum gringo. Isto acontece porque ao escrevermos nosso códigos no SciTe (assumindo que vc use o editor padrão do AutoIt), os códigos são escritos utilizando o código de página Windows 1252, que preserva os acentos e demais caracteres diferenciados da nossa língua portuguesa e similares. Porém, várias ferramentas do AutoIt e outras exigem UNICODE como forma de codificação. Não vou entrar em detalhes aqui (não é local para isto), mas minha recomendação é que vcs modifiquem o SciTe para que todos os seus scripts sejam gravados em UTF-8 with BOM, que é um padrão internacional UNICODE. Assim, vc ganha de várias formas: os acentos que estão no seu código em desenvolvimento serão transferidos adequada e corretamente para a versào compilada pode-se trocar scripts (ou compartilhá-los) nos fóruns estrangeiros sem problemas as ferramentas do AutoIt e outras externas não reclamarão da codificação do arquivo. Mas atenção, ao fazer esta modificação é necessário abrir o script, mudar a codificação e conferir o script para as mudanças que possam surgir, principalmente nas mensagens ao usuário. Ao salvar o script, ele já será salvo nste novo formato. Para fazer isto, com o script aberto no SciTe, vá no menu FILE, opção ENCODING e troque de Code Page Property para UFT-8 with BOM e salve seu script ou feche o editor, salvando o arquivo. Finalmente este procedimento é necessário ser feito em todos os seus scripts, o que dependendo da quantidade, pode ser um processo longo e trabalhoso/tedioso, assim vou colocar em outro tópico um script para fazer este processo de forma automática (a conversão apenas). Mesmo assim é importante que os scripts sejam conferidos. Veja aqui => Conversão de Codificação dos Scripts E vem mais por aí... A comunidade agradece!
  2. 2 points
    Olá. Dando sequência na ideia de customizar o SciTe, para fazê-lo basta editar os arqs de configuração. Isto pode ser feito de dentro do editor, pelo menu Option e selecionando o arquivo a ser modificado, Ou editando estes mesmos arquivos externamente através do bloco de notas (ou similar). Porém se fizer isso, recomendo que o SciTe esteja fechado para evitar que as alterações não sejam gravadas ou sejam sobregravadas quando o SciTe fechar. De qualquer maneira, editando estes arquivos (e quaisquer outros) pode aumentar o seu controle sobre o SciTe e deixar o seu ambiente de trabalho mais amigável. Vamos aos arquivos: 1) Menu Options / Open User Options File, ou externamente edite o arquivo "C:\Program Files (x86)\AutoIt3\SciTE\SciTEUser.properties" Este arquivo controle várias configurações do SciTe, em particular algumas das mais interessantes como: highlight.current.word=1 => para realçar a palavra onde está o cursor e podermos visualmente identificar as iguais no resto do código. Dica: quando fizer isto, normalmente mostra somente na tela as palavras iguais. No momento que vc move o cursor, vai selecionar outra palavra. A dica aqui é usar o botão do meio do mouse para rolar e ver as demais coincidências no resto do script highlight.current.word.minlength=3 => identifica qual o mínimo de letras para realçar uma palavra use.tabs=0 => para escolher entre tabulação ou espaço nas identações. Pessoalmente prefiro espaços, ou seja, quando eu aperto o TAB o SciTe insere x espaços a cada TAB. Para usar o TAB mesmo, coloque use.tabs=1 tabsize=3 => para escolher quantos espaços serão inseridos a cada TAB indent.size=3 => para escolher quantos espaços serão inseridos a cada nova linha para manter a identação highlight.current.word.stoponspace=0 => quando vc seleciona com o Shift uma quantidade maior do que uma palavra, tbm funciona o realce, porém ao chegar no primeiro espaço, para de realçar. Com esta opção, não para. Eu acho ótimo para comparar visualmente 2 linhas de código, pois ao marcar com o Shift, vai mostrando se a outra linha está igual. As vezes, uma pequena diferença como um apóstrofe é ruim de ver, mas no realce é fécil de ver. Tbm para mexer nas cores do editor, mexa nas seguintes configurações #Background -> style.au3.32=style.*.32=$(font.base),back:#F0F4F9 # CaretLineBackground -> caret.line.back= # Brace highlight -> style.au3.34= # Brace incomplete highlight -> style.au3.35= # White space -> style.au3.0= # Comment line -> style.au3.1= # Comment block -> style.au3.2= # Number -> style.au3.3= # Function -> style.au3.4= # Keyword -> style.au3.5= # Macro -> style.au3.6= # String -> style.au3.7= # Operator -> style.au3.8= # Variable -> style.au3.9= # Sent keys -> style.au3.10= # Pre=Processor -> style.au3.11= # Special -> style.au3.12= # Abbrev=Expand -> style.au3.13= # Com Objects -> style.au3.14= # Standard UDF's -> style.au3.15= As minhas cores são basicamente o padrão, porém eu gosto de usar uma cor amarela para realçar a linha atual que estou trabalhando. Então eu mexi na linha caret.line.back=#FFFA2B Se fizer isto por detro do prório editor, ao pressionar Ctrl S para salvar, a mudança aparece na hora. Para ajudar a selecionar cores e os seus códigos eu recomendo 2 sites, onde vc pode selecionar as cores e copiar o código hexa ou informar o código hexa e ver a cor desejada: https://www.colorschemer.com/color-picker/ https://www.rapidtables.com/web/color/RGB_Color.html
  3. 2 points
    Consegui colocar Mute e Volume neste que usa a Ole32.dll e agora já dá prá incluir ele na minha lista de players também. Func IMediaControl_Mute(ByRef $IGraphBuilder, $opt = 0) If $opt = 0 Then IMediaControl_Vol($IGraphBuilder, $volume); 100 para volume total Else IMediaControl_Vol($IGraphBuilder, 0) EndIf GUICtrlSetData($lab_mute, "Mute: " & $opt) EndFunc ;==>IMediaControl_Mute Func IMediaControl_Vol(ByRef $IGraphBuilder, $vol = 50); Faltando $IMediaControl = GetIMediaControl($IGraphBuilder) If @error Then Return SetError(1, 0, False) ;-------IMediaControl Vol Virtual Method Number Is 46;---------------- $Rt = InterfaceCall($IMediaControl, "long", 46, "long", -Exp((100 - $vol) / 10.86)) ;-------IMediaControl Vol Virtual Method Number Is 46;---------------- GUICtrlSetData($lab_vol, "Vol: " & $vol) If @error Or $Rt[0] <> 1 Then CtrlGraphRelease($IMediaControl) Return SetError(2, 0, False) EndIf Return SetError(0, 0, True) EndFunc ;==>IMediaControl_Vol _DirectShow_Ole32.au3
  4. 2 points
    Embora o ultimo post foi de 2017 e vi o codigo apenas agora Muito bom a UDF. Criei um script pra testar e ficou legal Notei que as vezes ao passar o mouse o efeito vem acompanhado de alguns blinks Adicionei uma função de sleep (_HighPrecisionSleep) na UDF mas não consegui eliminar totalmente o blink #include "BackEffect.au3" #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <UDF_AnimateWindow.au3> #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.5 Author: Rodrigo Chaves Script Function: Popup Exemplo 2 11/2019 #ce ---------------------------------------------------------------------------- ;Variavel de dimensionamento Dim Const $iW = 610, $iH = 430 ;Variavel para arrendondamento das bordas da janela e dimensionamento do botao fechar Dim Const $iC = 25 Dim Const $iC2 = 8 ;0 = Quadrado / 8 = Quadrado com cantos arredondados / 16 = Quase circular / 32 = Circulo ;Variavel para controle do MouseHover Dim $fOver0 = False, $fOver1 = False, $fOver2 = False ;/Tabela de cores Dim $tSTRUCTCOLOR = 'struct;char white[8];char alpha[2];char blueCustom[8];char blue[8];char dark[8];char red[8];char gray[8];endstruct' Dim $oColor = DllStructCreate($tSTRUCTCOLOR) DllStructSetData($oColor, 'blueCustom', 0x006BB7) DllStructSetData($oColor, 'blue', 0x01558C) DllStructSetData($oColor, 'white', 0xFFFFFF) DllStructSetData($oColor, 'alpha', -2) DllStructSetData($oColor, 'dark', 0x252525) DllStructSetData($oColor, 'red', 0xD61425) DllStructSetData($oColor, 'gray', 0xD1D1D1) ;// ;Cria o Popup Dim Const $hWnd_Main = GUICreate("", $iW, $iH, -1, -1, $WS_POPUP) GUISetBkColor($oColor.blueCustom) $aGetPos = WinGetPos($hWnd_Main) ;Arredonda os cantos da form Dim Const $hRegion = _WinAPI_CreateRoundRectRgn(0, 0, $iW, $iH, $iC, $iC) _WinAPI_SetWindowRgn($hWnd_Main, $hRegion) Dim $idBtn_Ok = GUICtrlCreateLabel("Ok", 410, 369, 75, 25, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetBkColor(-1, $oColor.dark) GUICtrlSetColor(-1, $oColor.white) Dim $idBtn_Cancel = GUICtrlCreateLabel("Cancelar", 500, 369, 75, 25, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetBkColor(-1, $oColor.dark) GUICtrlSetColor(-1, $oColor.white) ;Aplica efeito de entrada WinAPI_AnimateWindow($hWnd_Main, 'explode', 350) GUISetState(@SW_SHOW) ;/Cria o botao close Dim Const $hWnd_Close = GUICreate('', $iC, $iC, $aGetPos[2] - 35, 10, $WS_POPUP, $WS_EX_MDICHILD, $hWnd_Main) ;Arredonda os cantos da form Dim Const $hRegion_ = _WinAPI_CreateRoundRectRgn(0, 0, $iC, $iC, $iC2, $iC2) _WinAPI_SetWindowRgn($hWnd_Close, $hRegion_) ;Define a cor de fundo GUISetBkColor($oColor.dark) ;/Cria o botao X Dim $idBtn_Close_C = GUICtrlCreateLabel('X', 0, 0, $iC - 1, $iC - 1, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetFont(-1, 11, 400, 0, 'Segoe UI', 0) GUICtrlSetBkColor(-1, $oColor.dark) GUICtrlSetColor(-1, $oColor.white) ;// ;Executa a animacao de entrada WinAPI_AnimateWindow($hWnd_Close, 'explode', 300) ;Exibe a form GUISetState(@SW_SHOW) WinActivate($hWnd_Main) ;// ;Altera os estilos da form GUISetStyle(-1, $WS_EX_COMPOSITED, $hWnd_Main) ;Registra uma funcao definida para um Windows Message ID (WM_MSG) conhecido GUIRegisterMsg($WM_NCHITTEST, "_WM_NCHITTEST") ;Habilita o efeito nos controles __BackEffectStart($hWnd_Main, $oColor.gray) ;Adiciona o efeito no botao $idBtn_Ok AddBack_Effect($hWnd_Main, $idBtn_Ok, 3) ;Adiciona o efeito no botao $idBtn_Cancel AddBack_Effect($hWnd_Main, $idBtn_Cancel, 3) While 1 ;Identifica a posicao do mouse sobre a form _MouseHover() $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $idBtn_Close_C Exit Case $idBtn_Ok MsgBox(262144 + 0, 'Debug', 'Botao Ok pressionado', 0, $hWnd_Main) Case $idBtn_Cancel MsgBox(262144 + 0, 'Debug', 'Botao cancelar pressionado', 0, $hWnd_Main) Exit EndSwitch WEnd ;Retorna a posicao do mouse relativa a Form Func _MouseHover() $aCInfo = GUIGetCursorInfo($hWnd_Main) ;/Button Ok If $aCInfo[4] = $idBtn_Ok Then If $fOver0 = False Then GUICtrlSetBkColor($idBtn_Ok, $oColor.blue) GUICtrlSetColor($idBtn_Ok, $oColor.white) $fOver0 = True EndIf Else If $fOver0 = True Then GUICtrlSetBkColor($idBtn_Ok, $oColor.dark) GUICtrlSetColor($idBtn_Ok, $oColor.gray) $fOver0 = False EndIf EndIf ;// ;/Button Cancel If $aCInfo[4] = $idBtn_Cancel Then If $fOver1 = False Then GUICtrlSetBkColor($idBtn_Cancel, $oColor.red) GUICtrlSetColor($idBtn_Cancel, $oColor.white) $fOver1 = True EndIf Else If $fOver1 = True Then GUICtrlSetBkColor($idBtn_Cancel, $oColor.dark) GUICtrlSetColor($idBtn_Cancel, $oColor.gray) $fOver1 = False EndIf EndIf ;// $aCInfo = GUIGetCursorInfo($hWnd_Close) ;/Button Close If $aCInfo[4] = $idBtn_Close_C Then If $fOver2 = False Then GUICtrlSetBkColor($idBtn_Close_C, $oColor.red) GUICtrlSetColor($idBtn_Close_C, $oColor.white) $fOver2 = True EndIf Else If $fOver2 = True Then GUICtrlSetBkColor($idBtn_Close_C, $oColor.dark) GUICtrlSetColor($idBtn_Close_C, $oColor.gray) $fOver2 = False EndIf EndIf ;// EndFunc ;==>_MouseHover ;Habilita o movimento da form de qualquer ponto de referencia Func _WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam) ;https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-nchittest #forceref $hWnd, $iMsg, $iwParam, $ilParam If $iMsg = $WM_NCHITTEST Then Return $HTCAPTION EndFunc ;==>_WM_NCHITTEST Abaixo eu anexei a UDF com a função _HighPrecisionSleep adicionada E a UDF AnimateWindow que não vem na instalação do Autoit mas esta presente nesse código de exemplo BackEffect.au3 UDF_AnimateWindow.au3
  5. 2 points
    Olá, Compartilhando um script de efeitos de entrada e saída de GUI utilizando a função _WinAPI_AnimateWindow Deve ser usado junto com GUISetState() #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.5 Author: Rodrigo Chaves Script Function: Animate Window 07/2019 Base de pesquisa https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-animatewindow #ce ---------------------------------------------------------------------------- #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <WinAPIDiag.au3> ;Variaveis de efeitos Dim Const $tSTRUCT = 'struct;char fadeIn[128];char fadeOut[128];char Slide_In_Left[128];char Slide_Out_Left[128];char Slide_In_Right[128];char Slide_Out_Right[128];char Slide_In_Top[128];char Slide_Out_Top[128];' & _ 'char Slide_In_Bottom[128];char Slide_Out_Bottom[128];char DiagSlide_In_TopLeft[128];char DiagSlide_Out_TopLeft[128];char DiagSlide_In_TopRight[128];char DiagSlide_Out_TopRight[128];' & _ 'char DiagSlide_In_BottomLeft[128];char DiagSlide_Out_BottomLeft[128];char DiagSlide_In_BottomRight[128];char DiagSlide_Out_BottomRight[128];char explode[128];char implode[128];endstruct' Dim $oAW = DllStructCreate($tSTRUCT) $oAW.fadeIn = 0x00080000 $oAW.fadeOut = 0x00090000 $oAW.slide_In_Left = 0x00040001 $oAW.slide_Out_Left = 0x00050002 $oAW.slide_In_Top = 0x00040004 $oAW.slide_Out_Top = 0x00050008 $oAW.slide_In_Right = 0x00040002 $oAW.slide_Out_Right = 0x00050001 $oAW.slide_In_Bottom = 0x00040008 $oAW.slide_Out_Bottom = 0x00050004 $oAW.diagSlide_In_TopLeft = 0x00040005 $oAW.diagSlide_Out_TopLeft = 0x0005000a $oAW.diagSlide_In_TopRight = 0x00040006 $oAW.diagSlide_Out_TopRight = 0x00050009 $oAW.diagSlide_In_BottomLeft = 0x00040009 $oAW.diagSlide_Out_BottomLeft = 0x00050006 $oAW.diagSlide_In_BottomRight = 0x0004000a $oAW.diagSlide_Out_BottomRight = 0x00050005 $oAW.explode = 0x00040010 $oAW.implode = 0x00050010 ;Verificar a estrutura da variavel ;~ _WinAPI_DisplayStruct($oAW, $tSTRUCT) ;Variaveis de cores Dim Const $tagSTRUCT = 'struct;char white[8];char black[8];char dark[8];char light[8];char darkLight[8];char aqua[8];char alpha[2];endstruct' Dim $oColor = DllStructCreate($tagSTRUCT) $oColor.white = 0xFFFFFF $oColor.black = 0x000000 $oColor.dark = 0x202020 $oColor.light = 0xf5f6f7 $oColor.darkLight = 0x323232 $oColor.aqua = 0x00f2ff $oColor.alpha = -2 ;Verificar a estrutura da variavel ;~ _WinAPI_DisplayStruct($oColor, $tagSTRUCT) ;Texto de exemplo Dim $sSampleText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor ' & _ 'incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud ' & _ 'exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure ' & _ 'dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur ' & _ 'sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' $hWnd_Main = GUICreate("", 615, 437, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOPMOST) GUISetBkColor($oColor.dark) $aGetPos = WinGetPos($hWnd_Main) $sLabel_Title = GUICtrlCreateLabel(" Exemplo de janela animada", 0, 0, $aGetPos[2] - 2, 17, $SS_CENTERIMAGE, $GUI_WS_EX_PARENTDRAG) GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI") GUICtrlSetBkColor(-1, $oColor.darkLight) GUICtrlSetColor(-1, $oColor.white) $Label2 = GUICtrlCreateLabel($sSampleText, 35, 40, 546, 337) GUICtrlSetFont(-1, 11, 400, 0, "Segoe UI") GUICtrlSetColor(-1, $oColor.white) $idBtn_Run = GUICtrlCreateButton("Run Effect", 430, 385, 75, 25) $idBtn_Exit = GUICtrlCreateButton("Exit", 510, 385, 75, 25) GUISetState(@SW_SHOW) ;Cria um sublinhado na barra de titulo $lineGraphic = GUICtrlCreateGraphic(0, 18, $aGetPos[2] - 1, 1) GUICtrlSetBkColor(-1, $oColor.aqua) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $idBtn_Exit Exit Case $idBtn_Run GUICtrlSetState($idBtn_Run, $GUI_HIDE) GUISetState(@SW_HIDE, $hWnd_Main) Sleep(1500) For $i = 1 To 20 ;Coleta o valor da variavel da estrutura $oAW $getAW = DllStructGetData($oAW, $i) ;Aplica o efeito _WinAPI_AnimateWindow($hWnd_Main, $getAW, 300) Sleep(200) Next ;Aplica o efeito de entrada fade-in com tempo de entrada de 1s (1000ms) _WinAPI_AnimateWindow($hWnd_Main, $oAW.fadeIn, 1000) ;Recolore o sublinhado GUICtrlSetBkColor($lineGraphic, $oColor.aqua) GUISetState(@SW_SHOW) GUICtrlSetState($idBtn_Run, $GUI_SHOW) EndSwitch WEnd
  6. 2 points
    Bem... Segundo o Google Translator, DUMMY é um adjetivo que significa: simulado simulated, dummy, mock, sham, assumed, feigned falso false, untrue, bogus, phony, wrong, dummy postiço false, dummy Mas e no AutoIt, pra que serve? Se você usar um GuiCtrlCreateButton, ele retorno o id do elemento, e você vê um botão na GUI (Graphic User Interface ou apenas janela). Se você usar um GuiCtrlCreateLabel, ele retorno o id do elemento, e você vê um label na GUI. E assim por diante... Se você usar um GuiCtrlCreateDummy, ele retorno o id do elemento, e você não vê nada na GUI. Como assim? Ele cria e não retorna nada? Sim! Isso mesmo! É um controle fake, falso. Ah, mas e isso tem utilidade? Pior que tem... Vou mostrar aqui 1 exemplo: Você quer fazer uma GUI, mas nessa GUI tem várias "telas", por exemplo: tela de login tela de cadastro tela de logout Cada tela tem seus elementos (buttons, edit, radio, combobox, etc)... São muitas telas, e cada tela tem seus elementos, pronto, virou um salseiro! Uma confusão! Como fazer para @GUI_SHOW e @GUI_HIDE nesses controles? É nessa questão que venho mostrar esse exemplo. Ocultar o que não precisa, e exibir o que precisa. Outra alternativa simples, seria usar um GuiCtrlCreateTab... Mas fica para outro tópico, vou me ater no Dummy(). A ideia é simples. Antes de começar a criar os comandos da tela da primeira "tela de login", você cria um Dummy antes: #Region Tela de login Global $dummy1 = GuiCtrlCreateDummy() GuiCtrlCreateLabel("Nome de usuário", x1, y1, w1, h1) GuiCtrlCreateInput("digite seu nome de usuario", x2, y2, w2, h2) GuiCtrlCreateLabel("Senha", x3, y3, w3, h3) GuiCtrlCreateInput("digite sua senha", x4, y4, w4, h4) Global $dummy2 = GuiCtrlCreateDummy() #EndeRegion Tela de login E assim... Eu desenho todas as telas que eu preciso: Tela de login, Tela de cadastro, Tela de logout, etc... O segredo é, um Dummy antes do primeiro controle, e um Dummy depois do último controle para cada tela ou sessão. E preciso de um jeito, de manipular cada sessão, isto é, fazer que quando eu quiser a sessão "Tela de login", ele exiba todos os elementos da "Tela de login", e oculte todos os outros elementos que não fazer parte da "Tela de login". Por isso um Dummy antes, e um Dummy depois! O Dummy nada mais é, do que um número qualquer... E qualquer que seja o próximo controle que você criar, ele terá um número a mais do que o Dummy, nesta tela. E o próximo controle, terá um número a mais do que o anterior, até você colocar o Dummy no fim. Então todos os controles da sessão "Tela de login", estarão entre um Dummy (número inicial) e outro Dummy (número final). Agora, já é possível sair ocultando e exibindo os controles. ;~ #AutoIt3Wrapper_AU3Check_Parameters= -q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7 ;~ #Tidy_Parameters=/sf #include-once #include <Array.au3> #include <GUIConstantsEx.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <EditConstants.au3> OnAutoItExitRegister("OnExit") Opt("GUIOnEventMode", 1) Opt("GUIEventOptions", 1) Opt("MustDeclareVars", 1) Global $sLoremIpsum = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum." Global $aGuiSize[2] = [800, 600] Global $sGuiTitle = "GuiTitle" Global $hGui $hGui = GUICreate($sGuiTitle, $aGuiSize[0], $aGuiSize[1]) GUISetOnEvent($GUI_EVENT_CLOSE, "Quit") GUISetFont(11, 400, 0, "DOSLike", $hGui) #Region VIEWS Global $VIEW = 1 Global $aVIEWS[][4] = [[0, "login"], [0, "account"], [0, "exit"]] Global $pos[4] = [10, 10, 100, 25] For $ii = 0 To UBound($aVIEWS, 1) - 1 $aVIEWS[$ii][0] = GUICtrlCreateRadio($aVIEWS[$ii][1], $pos[0] + $ii * $pos[2], $pos[1], $pos[2], $pos[3]) GUICtrlSetOnEvent($aVIEWS[$ii][0], "View_Click") Next GUICtrlCreateGroup("", -99, -99, 1, 1) #EndRegion VIEWS #Region Tela0 $aVIEWS[0][2] = GUICtrlCreateDummy() Global $hLabel_Tela0_Texto = GUICtrlCreateLabel("Tela de login", 10, 50, 780, 25, BitOR($SS_CENTER, $SS_SUNKEN)) GUICtrlSetBkColor($hLabel_Tela0_Texto, 0xccbbaa) Global $hLabel_Tela0_Usuario = GUICtrlCreateLabel("usuario", 10, 83, 80, 25, $ES_RIGHT) Global $hInput_Tela0_Usuario = GUICtrlCreateInput("", 100, 83, 200, 25) Global $hLabel_Tela0_Senha = GUICtrlCreateLabel("senha", 10, 113, 80, 25, $ES_RIGHT) Global $hInput_Tela0_Senha = GUICtrlCreateInput("", 100, 113, 200, 25) Global $hButton_Tela0_TryLogin = GUICtrlCreateButton("Login", 100, 140, 80, 25) $aVIEWS[0][3] = GUICtrlCreateDummy() #EndRegion Tela0 #Region Tela1 $aVIEWS[1][2] = GUICtrlCreateDummy() Global $hLabel_Tela1_Texto = GUICtrlCreateLabel("Tela de cadastro", 10, 50, 780, 25, BitOR($SS_CENTER, $SS_SUNKEN)) GUICtrlSetBkColor($hLabel_Tela1_Texto, 0x889922) Global $hLabel_Tela1_Nome = GUICtrlCreateLabel("Nome completo", 10, 83, 160, 25, $ES_RIGHT) Global $hInput_Tela1_Nome = GUICtrlCreateInput("", 180, 80, 200, 25) Global $hLabel_Tela1_Usuario = GUICtrlCreateLabel("Nome de usuário", 10, 113, 160, 25, $ES_RIGHT) Global $hInput_Tela1_Usuario = GUICtrlCreateInput("", 180, 110, 200, 25) Global $hLabel_Tela1_Senha = GUICtrlCreateLabel("Senha", 10, 143, 160, 25, $ES_RIGHT) Global $hInput_Tela1_Senha = GUICtrlCreateInput("", 180, 140, 200, 25) $aVIEWS[1][3] = GUICtrlCreateDummy() #EndRegion Tela1 #Region Tela2 $aVIEWS[2][2] = GUICtrlCreateDummy() Global $hLabel_Tela2_Texto = GUICtrlCreateLabel("Tela de logout", 10, 50, 780, 25, BitOR($SS_CENTER, $SS_SUNKEN)) GUICtrlSetBkColor($hLabel_Tela2_Texto, 0xff0011) Global $hLabel_Tela2_Texto = GUICtrlCreateEdit($sLoremIpsum, 10, 83, 780, 400, $ES_MULTILINE) $aVIEWS[2][3] = GUICtrlCreateDummy() #EndRegion Tela2 GUISetState(@SW_SHOW, $hGui) View_Click($VIEW) While Sleep(25) WEnd Func OnExit() GUISetState($hGui, @SW_HIDE) GUIDelete($hGui) EndFunc ;==>OnExit Func Quit() Exit EndFunc ;==>Quit Func View_Click($input = -1) $VIEW = IsDeclared("input") ? $input : @GUI_CtrlId - $aVIEWS[0][0] GUICtrlSetState($aVIEWS[$VIEW][0], $GUI_CHECKED) For $ii = 0 To UBound($aVIEWS, 1) - 1 For $jj = $aVIEWS[$ii][2] + 1 To $aVIEWS[$ii][3] - 1 GUICtrlSetState($jj, $ii = $VIEW ? $GUI_SHOW : $GUI_HIDE) Next Next EndFunc ;==>View_Click Como disse... eis o segredo: Global $aVIEWS[][4] = [ _ [0, "login", "Dummy 0 inicio", "Dummy 0 fim"], _ [0, "account", "Dummy 1 inicio", "Dummy 1 fim"], _ [0, "exit", "Dummy 2 inicio", "Dummy 2 fim"] _ ] coluna 0 $aVIEWS, recebe o handle do CheckBox da tela coluna 1 $aVIEWS, recebe o nome do CheckBox da tela coluna 2 $aVIEWS, recebe o Dummy inicial coluna 3 $aVIEWS, recebe o Dummy final E a cada vez que você chama a função View_Click, ele sabe qual a tela que é pra mostrar, exibindo a tela solicitada, e ocultado tudo o que não é solicitado. Agora para pirar um pouco, os controles não são deletados da tela, eles apenas são ocultados e exibidos! Outra coisa, nem todo o controle pode responder bem aqui... Todos os controles básicos funcionam bem, quero dizer: GuiCtrlCreateButton, GuiCtrlCreateLabe, etc.. Os controles plus não respondem bem: _GuiCtrlCreateButton, _GuiCtrlCreateEdit, etc... Em tempo... Se você precisa executar uma função toda a vez que entrar em uma tela, adicine uma coluna no $aVIEWS, contendo o nome da função que deseja chamar: Func View_Click($input = -1) $VIEW = IsDeclared("input") ? $input : @GUI_CtrlId - $aVIEWS[0][0] GUICtrlSetState($aVIEWS[$VIEW][0], $GUI_CHECKED) CALL($aVIEWS[$VIEW][5]) For $ii = 0 To UBound($aVIEWS, 1) - 1 For $jj = $aVIEWS[$ii][2] + 1 To $aVIEWS[$ii][3] - 1 GUICtrlSetState($jj, $ii = $VIEW ? $GUI_SHOW : $GUI_HIDE) Next Next EndFunc ;==>View_Click Então, toda a vez que você mudar de tela, ele chama a função programada, graças à: CALL($aVIEWS[$VIEW][5]) Você pode fazer a execução de saída de tela... Adicione mais uma coluna, rss... Acredito que mostro aqui um exemplo prático do uso do GuiCtrlCreteDummy, e para pequenos projetos e devido à sua simplicidade se adapta muito bem. É isso! 8D
  7. 2 points
    Bom dia, Compartilho uma pequena função que auxilia muito o debug... Ao invés de usar o ConsoleWrite, use o Print. Versão melhorada: https://github.com/chechelaky/AutoIt/blob/master/Print/Print.au3 Local $arr[][4] = [ _         ["0a", "0b", "0c", "0d"], _         ["1a", "1b", "1c", "1d"], _         ["2a", "2b", "2c", "2d"], _         ["3a", "3b", "3c", "3d"], _         ["4a", "4b", "4c", "4d"], _         ["5a", "5b", "5c", "5d"], _         ["6a", "6b", "6c", "6d"], _         ["7a", "7b", "7c", "7d"], _         ["8a", "8b", "8c", "8d"], _         ["9a", "9b", "9c", "9d"], _         ["10a", "10b", "10c", "10d"], _         ["11a", "11b", "11c", "11d"] _         ] Saída: --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop +--0+--1+--2+--3+ 0 | 0a| 0b| 0c| 0d| 1 | 1a| 1b| 1c| 1d| 2 | 2a| 2b| 2c| 2d| 3 | 3a| 3b| 3c| 3d| 4 | 4a| 4b| 4c| 4d| 5 | 5a| 5b| 5c| 5d| 6 | 6a| 6b| 6c| 6d| 7 | 7a| 7b| 7c| 7d| 8 | 8a| 8b| 8c| 8d| 9 | 9a| 9b| 9c| 9d| 10 |10a|10b|10c|10d| 11 |11a|11b|11c|11d| +---+---+---+---+ +>14:09:07 AutoIt3.exe ended.rc:0 Local $arr[] = ["um", "dois", 3, 4, 5, 6, 7, 8, 9, 10, 22] Saída: --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop +----+ 0 | um| 1 |dois| 2 | 3| 3 | 4| 4 | 5| 5 | 6| 6 | 7| 7 | 8| 8 | 9| 9 | 10| 10 | 22| +----+ +>14:15:59 AutoIt3.exe ended.rc:0
  8. 2 points
    É porque na linha 89 você adiciona um valor sequencial sempre que é adicionado um novo elemento na tabela. " $id= $id + 1" e sempre que você adiciona um novo item, ele segue a referencia da variável $id, até aí tudo bem, mas na hora de deletar um item da tabela você simplesmente exclui um item selecionado sem remover o valor da variável e mesmo removendo o valor da variável, o item selecionado pode ser que não seja sequencial como está na variavel $id. Exemplo (linha 89): você adiciona 1 item novo $id=1 $id=2 $id=3 $id=4 Aí você resolve deletar o item 2, a variavel $id continuará somando o valor 1 . Ao invés de usar a variável $id eu coloquei o _GUICtrlListView_GetItemCount para ler quantas linhas tinham na ListView e adicionar +1 de acordo com a quantidade, então se você deletar uma linha, a função que eu citei ali vai ter um valor exato de itens na lista. #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include <GuiImageList.au3> #include <GuiListView.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <MsgBoxConstants.au3> #include <WinAPI.au3> #include <StringConstants.au3> #include <Array.au3> #include <GuiListBox.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 612, 480, 192, 154) $MenuItem1 = GUICtrlCreateMenu("&Arquivo") $MenuItem2 = GUICtrlCreateMenuItem("Salvar Ctrl+S", $MenuItem1, $SS_CENTER) $MenuItem4 = GUICtrlCreateMenuItem("Carregar Ctrl+O", $MenuItem1, $SS_CENTER) $MenuItem3 = GUICtrlCreateMenuItem("Salvar Como Shitft+Ctrl+S", $MenuItem1, $SS_CENTER) $Group1 = GUICtrlCreateGroup("", 21, 8, 569, 97, $SS_CENTER) $Input1 = GUICtrlCreateInput("ID COR", 122, 32, 97, 21, $SS_CENTER) $Input2 = GUICtrlCreateInput("REGIÃO", 138, 64, 249, 21, $SS_CENTER) $Input3 = GUICtrlCreateInput("Label", 264, 30, 121, 21, $SS_CENTER) $Label1 = GUICtrlCreateLabel("Label", 232, 32, 30, 17, $SS_CENTER) $Button1 = GUICtrlCreateButton("Capturar Cor", 42, 30, 75, 25, $SS_CENTER) $Button2 = GUICtrlCreateButton("Capturar Região", 42, 62, 91, 25, $SS_CENTER) $Button3 = GUICtrlCreateButton("ADD", 442, 24, 113, 33) $Button5 = GUICtrlCreateButton("Delet", 442, 64, 113, 33) $Group2 = GUICtrlCreateGroup("Editar ID selecionado", 8, 384, 601, 57, $SS_CENTER) $Input7 = GUICtrlCreateInput("ID", 10, 402, 40,21, $SS_CENTER) $Input4 = GUICtrlCreateInput("COR", 51, 402, 121, 21, $SS_CENTER) $Input5 = GUICtrlCreateInput("REGIÃO", 173, 402, 249, 21, $SS_CENTER) $Input6 = GUICtrlCreateInput("LABEL", 423, 402, 121, 21, $SS_CENTER) $Button4 = GUICtrlCreateButton("\/", 544, 400, 30, 25, $SS_CENTER) $Button6 = GUICtrlCreateButton("/\", 574, 400, 30, 25, $SS_CENTER) ; Add column ;~ Global $id = Int(0) $List1 = GUICtrlCreateListView("",5, 120, 601, 253, $SS_CENTER) _GUICtrlListView_AddColumn($List1, "ID",40) _GUICtrlListView_AddColumn($List1, "COR",100) _GUICtrlListView_AddColumn($List1, "COORDENADA",305) _GUICtrlListView_AddColumn($List1, "LABEL",150) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $MenuItem2 MsgBox($MB_SYSTEMMODAL, "ctrl + s", "Nothing Here",1) Case $MenuItem3 MsgBox($MB_SYSTEMMODAL, "shift+ctrl s", "Nothing Here",1) Case $MenuItem4 MsgBox($MB_SYSTEMMODAL, "ctrl + o", "Nothing Here",1) Case $Button1 MsgBox($MB_SYSTEMMODAL, "Capturar cor", "Aperte espaço para capturar a cor") GUICtrlSetData($Input1,MouseColor()) Case $Button2 MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição inicial") local $mouse = MouseGetPos() $x_init = $mouse[0] $y_init = $mouse[1] MsgBox($MB_SYSTEMMODAL, "capturar região", "Aperte espaço para capturar a posição final") local $mouse = MouseGetPos() $x_end = $mouse[0] $y_end = $mouse[1] GUICtrlSetData($Input2,$x_init&','&$y_init&' ; '&$x_end&','&$y_end) Case $Button3 _GUICtrlListView_AddItem($List1, _GUICtrlListView_GetItemCount ( $List1 )+1, 1) ; id _GUICtrlListView_AddSubItem($List1, _GUICtrlListView_GetItemCount ( $List1 )-1, GUICtrlRead($Input1), 1, 1) ;cor _GUICtrlListView_AddSubItem($List1, _GUICtrlListView_GetItemCount ( $List1 )-1, GUICtrlRead($Input2), 2, 1) ;coordenada _GUICtrlListView_AddSubItem($List1, _GUICtrlListView_GetItemCount ( $List1 )-1, GUICtrlRead($Input3), 3, 1) ;label ;~ $id= $id + 1 Case $Button4 $Item = _GUICtrlListView_GetSelectedIndices($List1) $Sid = _GUICtrlListView_GetItem($List1, Number($Item),0) $Scor = _GUICtrlListView_GetItem($List1, Number($Item),1) $Scord = _GUICtrlListView_GetItem($List1, Number($Item),2) $Slabel = _GUICtrlListView_GetItem($List1, Number($Item),3) ; get info GUICtrlSetData($Input7,$Sid[3]) GUICtrlSetData($Input4,$Scor[3]) GUICtrlSetData($Input5,$Scord[3]) GUICtrlSetData($Input6,$Slabel[3]) Case $Button5 _GUICtrlListView_DeleteItemsSelected($List1) Case $Button6 ; give back inf if GUICtrlRead($Input7) <> "ID" Then _GUICtrlListView_SetItem($List1, GUICtrlRead($Input4), GUICtrlRead($Input7),1) ;cor _GUICtrlListView_SetItem($List1, GUICtrlRead($Input5), GUICtrlRead($Input7),2) ;coordenada _GUICtrlListView_SetItem($List1, GUICtrlRead($Input6), GUICtrlRead($Input7),3) ;coordenada EndIf EndSwitch WEnd Func MouseColor() local $mouse = MouseGetPos() Return Hex(PixelGetColor($mouse[0],$mouse[1]), 6) EndFunc
  9. 2 points
    Olha vou te dar um exemplo, mais pode ser que você tenha que ajustar para seu proposito.. ; mutleey ; 12/06/2018 ; de uma olhada nas opçoes do ffmpeg (ffmpeg -help) $vidIN = "meu_video.mp4" ; video entrada $imgOUT = "frame.jpg" ; frame saida $outRES = "1024x768" ; resolução da imagem $vidTIME = "00:01:14" ; posição do video reproduzido HH:MM:SS ShellExecute("ffmpeg.exe", '-ss ' & $vidTIME & ' -i ' & $vidIN & ' -t 1 -s '& $outRES & ' -f image2 ' & $imgOUT, @ScriptDir, "open", @SW_HIDE) ffmpeg Download obs: isso é só uma ideia, existe outros softwares que podem extrair frames, basta testar e ajustar..
  10. 2 points
    Depois de muita procura e testes, achei uma modificação da UDF _HighPrecisionSleep() que retornou resultados satisfatorios.. Pra quem estiver com o mesmo problema segue o código. ; mutleey HotKeySet("{ESC}", "__Exit") Global $ntdll = DllOpen("ntdll.dll") Global $winmm = DllOpen("winmm.dll") While True $timer = TimerInit() MsSleep(1) ConsoleWrite('> ' & TimerDiff($timer) & @LF) WEnd Func MsSleep($MS) $MS *= 1000 DllCall($winmm, "int", "timeBeginPeriod", "int", "1") DllCall($ntdll, "dword", "NtDelayExecution", "int", 0, "int64*", -10 * $MS) EndFunc ;==>MsSleep Func __Exit() DllClose($ntdll) DllClose($winmm) Exit EndFunc
  11. 2 points
    bom dia @Pedro Pinheiro, sugiro o uso do Telegram. Embora houve uma tentativa de minha parte para fazer uma comunicação bidirecional entre ambos sem sucesso (PC -> Celular e Celular -> PC) sem muito sucesso, mas a comunicação PC -> Celular funciona perfeitamente.
  12. 2 points
    Segue... #include <File.au3> #include <Array.au3> #include <FileConstants.au3> CONVERSOR_ENCODING("C:\Scripts") Func CONVERSOR_ENCODING ($sPasta, $iENCODING = $FO_UTF8) Local $aArquivos = _FileListToArrayRec($sPasta, "*.au3", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) If @error Then Return ConsoleWrite($sPasta & @CRLF) Local $sConteudo, $hArquivo, $nOld_Encoding = -1, $nNew_Encoding = -1, $sAtributos = "", $bMudou_Atributo = False For $nArquivo = 1 to $aArquivos[0] $bMudou_Atributo = False $nOld_Encoding = FileGetEncoding($aArquivos[$nArquivo]) $sAtributos = FileGetAttrib($aArquivos[$nArquivo]) If StringInStr($sAtributos, "R") Then $bMudou_Atributo = True FileSetAttrib($aArquivos[$nArquivo], "-R") EndIf If $nOld_Encoding = $iENCODING Then ConsoleWrite("> ") Else ConsoleWrite("! ") $sConteudo = FileRead($aArquivos[$nArquivo]) FileDelete($aArquivos[$nArquivo]) $hArquivo = FileOpen($aArquivos[$nArquivo], $FO_OVERWRITE + $iENCODING) ConsoleWrite(FileWrite($hArquivo, $sConteudo) & " ") FileClose($hArquivo) EndIf If $bMudou_Atributo Then FileSetAttrib($aArquivos[$nArquivo], "+R") $nNew_Encoding = FileGetEncoding($aArquivos[$nArquivo]) ConsoleWrite(StringFormat("%-100s", $aArquivos[$nArquivo]) & " = " & NOME_ENCODING($nOld_Encoding) & " => " & NOME_ENCODING($nNew_Encoding) & @CRLF) Next EndFunc ;==>CONVERSOR_ENCODING Func NOME_ENCODING ($nCode) Local $aNomes = [ [ $FO_UTF16_LE, "UTF16 Little Endian" ], _ [ $FO_UTF16_BE, "UTF16 Big Endian" ], _ [ $FO_UTF8, "UTF8 (with BOM)" ], _ [ $FO_UTF8_NOBOM, "UTF8 (without BOM)" ], _ [ $FO_ANSI, "ANSI (containing char > 127 and < 255)" ] ] Local $nPosicao = _ArraySearch($aNomes, $nCode) If @error Then Return SetError(1, 0, "NÃO ENCONTRADO") Return SetError(0, 0, StringFormat("%40s", $aNomes[$nPosicao][1])) EndFunc
  13. 1 point
    Muito bom o comando Enum. A forma como o array $aKeyboard é construida lembra bastante a de criação de dicionario $oDictionary = ObjCreate("Scripting.Dictionary") $oDictionary.Add ("01", "Um" ) $oDictionary.Add ("02", "Dois") $oDictionary.Add ("03", "Três") $oDictionary.Add ("04", "Quatro")
  14. 1 point
    A udf que uso é a video.au3 mesmo e ela só não é perfeita porque não tem como mostrar os vídeos em tela cheia independente da resolução mas o resto funciona tudo perfeitamente, achei uma UDF que coloca os videos em tela cheia mas ela depende de uma dll feita pelo criador e nos testes deu alguns bug's que impossibitou de usar. #include-once ; #CURRENT# =============================================================================================== ; _Video_Close ; _Video_Dimension ; _Video_FrameRate ; _Video_Length ; _Video_Mute ; _Video_Open ; _Video_Pause ; _Video_Play ; _Video_Resume ; _Video_Seek ; _Video_Status ; _Video_Step ; _Video_Stop ; _Video_TimePos ; _Video_Volume ; _RandomStr ; _MSToHMS ; _mciDeviceExists ; _mciListDevices ; _mciSendString ;========================================================================================================== ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Close ; Description....: Close a video. ; Syntax.........: _Video_Close($sAlias) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; Return values .: Success - Return 1 and sets Alias name to "". ; Failure - Return 0 and @error 1~2 ; @error 1 = Invalid Alias ; @error 2 = MCI failed to close video ; Author ........: smashly ; ========================================================================================================= Func _Video_Close(ByRef $sAlias) If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) If _mciSendString("close " & $sAlias) = 0 Then $sAlias = "" Return SetError(0, 0, 1) Else Return SetError(2, 0, 0) EndIf EndFunc ;==>_Video_Close ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Dimension ; Description....: Retrieves the Width and Height of the source video. ; Syntax.........: _Video_Dimension($sFile) ; Parameters ....: $sFile - The full path to video file. ; Return values .: Success - Returns an array. array[0] = Width, array[1] = Height ; Failure - Return 0 and @error 1~3 ; @error 1 = File doesn't exist. ; @error 2 = MCI failed to open the video file. ; @error 3 = MCI failed to get the source video dimensions. ; Author ........: smashly ; ========================================================================================================= Func _Video_Dimension($sFile) Local $iRet, $sVID, $aTmp If Not FileExists($sFile) Then Return SetError(1, 0, 0) $sVID = _RandomStr() $iRet = _mciSendString("open " & FileGetShortName($sFile) & " alias " & $sVID) If $iRet <> 0 Then Return SetError(2, 0, 0) $iRet = _mciSendString("where " & $sVID & " source", 255) If $iRet = "" Then _mciSendString("close " & $sVID) Return SetError(3, 0, 0) EndIf _mciSendString("close " & $sVID) $aTmp = StringSplit($iRet, Chr(32)) $aTmp[1] = $aTmp[$aTmp[0]] $aTmp[0] = $aTmp[$aTmp[0] - 1] ReDim $aTmp[2] Return $aTmp EndFunc ;==>_Video_Dimension ; #FUNCTION# ============================================================================================== ; Name...........: _Video_FrameRate ; Description....: Close a video. ; Syntax.........: _Video_FrameRate($sAlias) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; Return values .: Success - Returns the Frames Per Second of the video. ; Failure - Return 0 and @error 1 ; @error 1 = Invalid Alias ; Author ........: smashly ; ========================================================================================================= Func _Video_FrameRate($sAlias) If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) Return _mciSendString("status " & $sAlias & " nominal frame rate", 255) / 1000 EndFunc ;==>_Video_FrameRate ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Length ; Description....: Get the time length of a video in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS) ; Syntax.........: _Video_Length($sAlias[, $iTime = 0]) ; Parameters ....: $sAlias - Alias name returned by _Video_Open ; $iTime - 0 Return time lenth in Hours, Minutes, Seconds (HH:MM:SS) ; - 1 Return time lenth in Milliseconds. ; Return values .: Success - Return time length in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS) ; Failure - Return 0 and @error 1 ; @error 1 = Invalid Alias ; Author ........: smashly ; ========================================================================================================= Func _Video_Length($sAlias, $iTime = 0) Local $iMS If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) _mciSendString("set " & $sAlias & " time format ms") $iMS = _mciSendString("status " & $sAlias & " length", 255) If Not $iTime Then Return _MSToHMS($iMS) If $iTime Then Return $iMS EndFunc ;==>_Video_Length ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Mute ; Description....: Turn off/on the audio in a video. ; Syntax.........: _Video_Mute($sAlias[, $iMute = 0]) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; $iAudio - 0 = Audio On, 1 = Audio Off ; Return values .: Success - Return 1 and @error 0 ; Failure - Return 0 and @error 1~2 ; @error 1 = Invalid Alias ; @error 2 = MCI failed to turn the video audio off/on ; Author ........: smashly ; ========================================================================================================= Func _Video_Mute($sAlias, $iMute = 0) Local $iRet, $iAM = "on" If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) If $iMute Then $iAM = "off" $iRet = _mciSendString("set " & $sAlias & " audio all " & $iAM) If $iRet = 0 Then Return SetError(0, 0, 1) Else Return SetError(2, 0, 0) EndIf EndFunc ;==>_Video_Mute ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Open ; Description ...: Opens a Video file ready for use with other _Video_xxxx functions. ; Syntax.........: _Video_Open($sFile, $hWnd, $iX, $iY, $iW, $iH[, $sDevice = ""]) ; Parameters ....: $sFile - The full path to video file. ; $hWnd - Handle to a window or control that the video will be displayed on ; $iX - Left position of the video. ; $iY - Top position of the video. ; $iW - Width of the video. ; $iH - Height of the video. ; $sDevice - MCI Device type to play video with. (See Remarks for more info) ; Return values .: Success - Return an Alias name for use with other _Video_xxxx functions. ; Failure - Return an empty String "" and @error 1~5 ; @error 1 = File doesn't exist ; @error 2 = Window or Control handle not valid. ; @error 3 = Invalid MCI Device type specified. ; @error 4 = MCI failed to open video file ; @error 5 = MCI failed window for video. ; @error 5 = MCI failed to put video at the deignated location. ; Author ........: smashly ; Remarks .......: If your having trouble with avi playback (eg; playing fast, slow, choppy or no audio) ; or a video won't play but it plays fine in any other player ... ; Then set the $sDevice parameter to "MPEGVideo" ; If the $sDevice parameter is left blank then windows will decide which MCI Device type ; to use. ; Most current day avi/wmv/mp4 formats dont play properly or at all when windows selects ; the mci device type to use. ; Windows would default use "AVIVideo" MCI Device type to play avi with mci. ; When you specify "MPEGVideo" for an avi and mci fails it then uses the windows native ; chain of codecs that would be used by any other player not using mci ;) ; Because of this behaviour you can usually play almost any type of video that normally ; fails when using mci just by specifying "MPEGVideo" mci device type. ; For playing video on an autoit gui then be sure to add the $WS_CLIPCHILDREN style ; to your Gui. This will keep the Video dislpayed on your Gui all the time. ; ========================================================================================================= Func _Video_Open($sFile, $hWnd, $iX, $iY, $iH, $iW, $sDevice = "") Local $sVID, $gId, $iRet, $sDT = "" If Not FileExists($sFile) Then Return SetError(1, 0, "") If Not IsHWnd($hWnd) Then Return SetError(2, 0, "") If $sDevice <> "" Then If Not _mciDeviceExists($sDevice) Then Return SetError(3, 0, "") $sDT = " type " & $sDevice EndIf $gId = Dec(StringTrimLeft($hWnd, 2)) $sVID = _RandomStr() $iRet = _mciSendString("open " & FileGetShortName($sFile) & " alias " & $sVID & $sDT) If $iRet <> 0 Then Return SetError(4, 0, "") $iRet = _mciSendString("window " & $sVID & " handle " & $gId) If $iRet <> 0 Then _mciSendString("close " & $sVID) Return SetError(5, 0, "") EndIf $iRet = _mciSendString("put " & $sVID & " destination at " & $iX & " " & $iY & " " & $iH & " " & $iW) If $iRet <> 0 Then _mciSendString("close " & $sVID) Return SetError(6, 0, "") EndIf Return SetError(0, 0, $sVID) EndFunc ;==>_Video_Open ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Pause ; Description....: Pause a Video at the current playing position. ; Syntax.........: _Video_Pause($sAlias) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; Return values .: Success - Return 1 and @error 0 ; Failure - Return 0 and @error 1~2 ; @error 1 = Invalid Alias ; @error 2 = Failed to pause video. ; Author ........: smashly ; ========================================================================================================= Func _Video_Pause($sAlias) Local $iRet If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) $iRet = _mciSendString("pause " & $sAlias) If $iRet = 0 Then Return SetError(0, 0, 1) Else Return SetError(2, 0, 0) EndIf EndFunc ;==>_Video_Pause ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Play ; Description....: Plays a Video from the current position. ; Syntax.........: _Video_Play($sAlias[, $iMode = 0]) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; $iMode - 0 play video on the window or control as specified in _Video_Open ; - 1 play video in Fullscreen mode. ; Return values .: Success - Return 1 and @error 0 ; Failure - Return 0 and @error 1~2 ; @error 1 = Invalid Alias ; @error 2 = MCI failed to play video. ; Author ........: smashly ; ========================================================================================================= Func _Video_Play($sAlias, $iMode = 0) Local $iRet If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) If _Video_TimePos($sAlias, 1) = _Video_Length($sAlias, 1) Then _Video_Seek($sAlias, "start") If $iMode Then $vRet = _mciSendString("play " & $sAlias & " fullscreen") Else $iRet = _mciSendString("play " & $sAlias) EndIf If $iRet = 0 Then Return SetError(0, 0, 1) Else Return SetError(1, 0, 0) EndIf EndFunc ;==>_Video_Play ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Resume ; Description....: Resume playing a video after pausing. ; Syntax.........: _Video_Resume($sAlias) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; Return values .: Success - Return 1 and @error 0 ; Failure - Return 0 and @error 1~2 ; @error 1 = Invalid Alias ; @error 2 = MCI failed to resume video. ; Author ........: smashly ; ========================================================================================================= Func _Video_Resume($sAlias) Local $iRet If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) $iRet = _mciSendString("resume " & $sAlias) If $iRet = 0 Then Return SetError(0, 0, 1) Else Return SetError(2, 0, 0) EndIf EndFunc ;==>_Video_Resume ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Seek ; Description....: Seek a video to the specified time position. ; Syntax.........: _Video_Seek($sAlias, $iTime) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; $iTime - Time to Seek. Can be Millisecons or HH:MM:SS or "start" or "end" ; Return values .: Success - Return 1 and @error 0 ; Failure - Return 0 and @error 1~3 ; @error 1 = Invalid Alias ; @error 2 = Invalid time format. ; @error 3 = MCI Seek error ; Author ........: smashly ; ========================================================================================================= Func _Video_Seek($sAlias, $iTime) Local $iMS, $aTime, $iRet If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) If StringInStr($iTime, ":") Then $aTime = StringSplit($iTime, ":") If $aTime[0] <> 3 Then Return SetError(2, 0, 0) $iMS = 1000 * ((3600 * $aTime[1]) + (60 * $aTime[2]) + $aTime[3]) ElseIf StringIsInt($iTime) Or $iTime = "start" Or $iTime = "end" Then $iMS = $iTime Else Return SetError(2, 0, 0) EndIf _mciSendString("set " & $sAlias & " time format ms") $iRet = _mciSendString("seek " & $sAlias & " to " & $iMS) If $iRet = 0 Then Return SetError(0, 0, 1) Else Return SetError(3, 0, 0) EndIf EndFunc ;==>_Video_Seek ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Status ; Description....: Get a status status message from a video device. ; Syntax.........: _Video_Status($sAlias[, $sQuery = "mode"]) ; Parameters ....: $sAlias - Alias name returned by _Video_Open ; $sQuery - What to get the status of: ; "audio" - returns the "on" or "off" ; "mode" - returns "paused", "playing" and "stopped" ; Return values .: Success - Returns a Status message from the video device. ; Failure - Return 0 and @error 1 ; @error 1 = Invalid Alias ; @error 2 = Invalid query (To be implemented) ; Author ........: smashly ; ========================================================================================================= Func _Video_Status($sAlias, $sQuery = "mode") If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) ;; error check for the $sQuery goes here Return _mciSendString("status " & $sAlias & " " & $sQuery, 255) EndFunc ;==>_Video_Status ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Step ; Description....: Step a video forwards or backwards by a number of frames. ; Syntax.........: _Video_Step($sAlias, $iFrames) ; Parameters ....: $sAlias - Alias name returned by _Video_Open ; $iFrames - The number of frames to step, use negative numbers to step backwards. ; Return values .: Success - Returns 1 and @error 0 ; Failure - Return 0 and @error 1~3 ; @error 1 = Invalid Alias ; @error 2 = Invalid frames ; @error 3 = MCI Step error ; Author ........: smashly ; ========================================================================================================= Func _Video_Step($sAlias, $iFrames) Local $iRet If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) If StringRegExp(StringReplace($iFrames, "-", ""), '\D', 0) Then Return SetError(2, 0, 0) $iRet = _mciSendString("step " & $sAlias & " by " & $iFrames) If $iRet = 0 Then Return SetError(0, 0, 1) Else Return SetError(3, 0, 0) EndIf EndFunc ;==>_Video_Step ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Stop ; Description....: Stop a Video playing. (seeks video to start) ; Syntax.........: _Video_Stop($sAlias) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; Return values .: Success - Return 1 and @error 0 ; Failure - Return 0 and @error 1~2 ; @error 1 = Invalid Alias ; @error 2 = Failed to stop or seek ; Author ........: smashly ;========================================================================================================== Func _Video_Stop($sAlias) Local $iRet, $iRet2 If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) $iRet = _Video_Seek($sAlias, "start") $iRet2 = _mciSendString("stop " & $sAlias) If $iRet = 0 And $iRet2 = 0 Then Return SetError(0, 0, 1) Else Return SetError(2, 0, 0) EndIf EndFunc ;==>_Video_Stop ; #FUNCTION# ============================================================================================== ; Name...........: _Video_TimePos ; Description....: Get the time poition of a video in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS) ; Syntax.........: _Video_TimePos($sAlias[, $iTime = 0]) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; $iTime - 0 Return time lenth in Hours, Minutes, Seconds (HH:MM:SS) ; - 1 Return time lenth in Milliseconds. ; Return values .: Success - Return time position in Milliseconds or Hours, Minutes, Seconds (HH:MM:SS) ; Failure - Return 0 and @error 1 ; @error 1 = Invalid Alias ; Author ........: smashly ; ========================================================================================================= Func _Video_TimePos($sAlias, $iTime = 0) Local $iMS If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) _mciSendString("set " & $sAlias & " time format ms") $iMS = _mciSendString("status " & $sAlias & " position", 255) If Not $iTime Then Return _MSToHMS($iMS) If $iTime Then Return $iMS EndFunc ;==>_Video_TimePos ; #FUNCTION# ============================================================================================== ; Name...........: _Video_Volume ; Description....: Turn the video audio volume up or down. ; Syntax.........: _Video_AudioVolume($sAlias[, $iVolume = 100]) ; Parameters ....: $sAlias - Alias name returned by _Video_Open. ; $iVolume - 0 = Min, 100 = Max ; Return values .: Success - Return 1 and @error 0 ; Failure - Return 0 and @error 1~2 ; @error 1 = Invalid Alias ; @error 2 = Invalid Volume ; @error 3 = MCI failed to set volume ; Author ........: smashly ; ========================================================================================================= Func _Video_Volume($sAlias, $iVolume = 100) Local $iRet, $iVol If $sAlias = "" Or StringRegExp($sAlias, "\W|_", 0) Then Return SetError(1, 0, 0) If StringRegExp($iVolume, '\D', 0) Then Return SetError(2, 0, 0) If $iVolume >= 100 Then $iVol = 1000 ElseIf $iVolume <= 0 Then $iVol = 0 ElseIf $iVolume > 0 And $iVolume < 100 Then $iVol = $iVolume * 10 EndIf $iRet = _mciSendString("setaudio " & $sAlias & " volume to " & $iVol) If $iRet = 0 Then Return SetError(0, 0, 1) Else Return SetError(3, 0, 0) EndIf EndFunc ;==>_Video_Volume ;========================================================================================================== ; Internal use functions beyond this point ;========================================================================================================== ; #FUNCTION# ============================================================================================== ; Name...........: _MSToHMS ; Description....: Converts Milliseconds to Hours, Minutes, Seconds ; Syntax.........: _MSToHMS($iMS) ; Parameters ....: $iMS - Milliseconds to convert ; Return values .: Success - Returns Hours, Minutes, Seconds (HH:MM:SS) ; Author ........: smashly ; ========================================================================================================= Func _MSToHMS($iMS) Local $iHours = 0, $iMins = 0, $iSecs = 0 If Number($iMS) > 0 Then $iMS = Round($iMS / 1000) $iHours = Int($iMS / 3600) $iTicks = Mod($iMS, 3600) $iMins = Int($iMS / 60) $iSecs = Round(Mod($iMS, 60)) Return StringFormat("%02i:%02i:%02i", $iHours, $iMins, $iSecs) EndIf Return StringFormat("%02i:%02i:%02i", $iHours, $iMins, $iSecs) EndFunc ;==>_MSToHMS ; #FUNCTION# ============================================================================================== ; Name...........: _RandomStr ; Description....: Creates a random string ; Syntax.........: _RandomStr([$iLen = 10]) ; Parameters ....: $iLen - Length of string to return ; Return values .: Success - Returns a string of random letters (a~z) ; Author ........: RazerM ; ========================================================================================================= Func _RandomStr($iLen = 10) Local $sTmp = '' For $i = 1 To $iLen $sTmp &= Chr(Random(97, 122, 1)) Next Return $sTmp EndFunc ;==>_RandomStr ; #FUNCTION# ============================================================================================== ; Name...........: _mciDeviceExists ; Description....: Check if a MCI Device type exists ; Syntax.........: _mciDeviceExists($sDevice) ; Parameters ....: $sDevice - Name of MCI Device type to check for ; Return values .: Success - Return 1 if MCI Device type exists and @error 0 ; Failure - Return 0 if MCI Device type does not exist and @error 1~2 ; @error 1 = No matching MCI Device type found. ; @error 2 = Failed to list any MCI Device types ; Author ........: smashly ; ========================================================================================================= Func _mciDeviceExists($sDevice) Local $aDT = _mciListDevices() If @error Then Return SetError(2, 0, 0) For $idx = 1 To $aDT[0] If $sDevice = $aDT[$idx] Then Return SetError(0, 0, 1) Next Return SetError(1, 0, 0) EndFunc ;==>_mciDeviceExists ; #FUNCTION# ============================================================================================== ; Name...........: _mciListDevices ; Description....: List all found MCI Device types in an array ; Syntax.........: _mciListDevices() ; Parameters ....: None ; Return values .: Success - Return 1D array of found MCI Device types and @error 0 ; array[0] Number of MCI Device types found ; array[n] MCI Device type name ; Failure - Return empty 1D array and @error 1 ; Author ........: smashly ; ========================================================================================================= Func _mciListDevices() Local $iMD, $sTmp $iMD = _mciSendString("sysinfo all quantity", 255) If StringIsInt($iMD) Then For $idx = 1 To $iMD $sTmp &= _mciSendString("sysinfo all name " & $idx, 255) & Chr(0) Next Return SetError(0, 0, StringSplit(StringTrimRight($sTmp, 1), Chr(0))) EndIf Return SetError(1, 0, StringSplit($sTmp, Chr(0))) EndFunc ;==>_mciListDevices ; #FUNCTION# ============================================================================================== ; Name...........: _mciSendString ; Description....: ; Syntax.........: _mciSendString($string[, $iLen = 0]) ; Parameters ....: $string ; $iLen ; Return values .: ; Author ........: RazerM ; ========================================================================================================= Func _mciSendString($string, $iLen = 0) Local $iRet $iRet = DllCall("winmm.dll", "int", "mciSendStringA", "str", $string, "str", "", "long", $iLen, "long", 0) If Not @error Then Return $iRet[2] EndFunc ;==>_mciSendString
  15. 1 point
    #include <MsgBoxConstants.au3> HotKeySet("a", "ShowMessage") While Sleep(100) Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Func ShowMessage() HotKeySet("a") ;Remove a Hotkey durante a execução da função MsgBox($MB_SYSTEMMODAL, "", "Testando.") ;Executa qualquer coisa Sleep(1000) HotKeySet("a", "ShowMessage") ;Adiciona novamente a hotkey EndFunc
  16. 1 point
    Precisei fazer um programa de backup que atendesse as minhas necessidades e quero compartilhar com vocês. #RequireAdmin #region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=.\Bk.ico #AutoIt3Wrapper_Compression=0 #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Res_Comment=Função: Aplicativo para fazer backup #AutoIt3Wrapper_Res_Description=Autoit3 3.3.9.4 #AutoIt3Wrapper_Res_Fileversion=1.1.10.18 #AutoIt3Wrapper_Res_LegalCopyright=Feito por Belini #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #endregion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs ------------------------------------------------- Title: Backup Personal Objective: Fazer backup de arquivos e pastas Author: Belini (Brazil) Autoit Version: 3.3.9.4 Version: 1.0.10.18 Forum: http://www.autoitbrasil.com/forum #ce ------------------------------------------------- #include <ListViewConstants.au3> #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <EditConstants.au3> #include "_UskinLibrary.au3" #include <GuiListView.au3> #include "Skin_03.au3" #include <File.au3> Global $iFix_Col = 1, $Dir_backup, $Input, $Listv, $Listv_Files, $Check, $lab[3] Global $nMsg, $proceed = 1, $item_num, $But[8], $item_text[4], $mantidos = 0, $atualizados = 0 _Arq_ini() _Uskin_LoadDLL() _USkin_Init(_Skin_03(True)); Skin usada _Gui_backup() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $But[1] _Add_Line() Case $But[2] _Del_line() Case $But[3] _Opt_Dir() Case $But[4] _Opt_Backup() Case $But[5] _Dir_Backup() Case $But[6] $proceed = 0 Case $But[7] _Start_backup() Case $Check _Opt_Finalize() EndSwitch WEnd Func _Add_Line() Local $dir = FileSelectFolder("Procurando pasta.", "") If IniRead(@ScriptDir & "\Config.ini", "PASTAS", $dir, "") = "" Then GUICtrlCreateListViewItem($dir & "|Incluir Subpastas" & "|Sim", $Listv) IniWrite(@ScriptDir & "\Config.ini", "PASTAS", $dir, "|Incluir Subpastas" & "|Sim") Else MsgBox(4096, "", "Este diretório já foi escolhido!", 3) EndIf EndFunc ;==>_Add_Line Func _Arq_ini() If Not FileExists(@ScriptDir & "\Config.ini") Then _ FileWrite(@ScriptDir & "\Config.ini", "[BACKUP]" & @CRLF & "endereço= " & @CRLF & @CRLF & "[DESLIGAR]" & @CRLF & "opção=0" & @CRLF & @CRLF & "[PASTAS]") EndFunc ;==>_Arq_ini Func _Backup_Files($path = "") Local $searh_files, $i $searh_files = _FileListToArray($path, "*.*", 1) If Not @error Then For $i = 1 To $searh_files[0] If GUIGetMsg() = $But[6] Then $proceed = 0 If $proceed = 0 Then ExitLoop _Compare_files($path & "\" & $searh_files[$i]) Next EndIf EndFunc ;==>_Backup_Files Func _Backup_Full($path = "", $counter = 0) $counter = 0 $path &= '\' Local $file, $searh_files $searh_files = FileFindFirstFile($path & '*') If $searh_files = -1 Then Return '' While 1 If GUIGetMsg() = $But[6] Then $proceed = 0 $file = FileFindNextFile($searh_files) If @error Or $proceed = 0 Then ExitLoop If @extended Then If $counter >= 10 Then ContinueLoop _Backup_Full($path & $file, $counter + 1) Else _Compare_files($path & $file) EndIf WEnd FileClose($searh_files) EndFunc ;==>_Backup_Full Func _Compare_files($file = "") Local $File_backup, $item, $folder $item = StringTrimLeft($file, StringInStr($file, "\", 1, -1)) $folder = StringTrimLeft($file, StringInStr($file, "\", 1, -2)) $folder = StringMid($folder, 1, StringInStr($folder, "\", 1, -1) -1 ) $File_backup = StringReplace($file, StringMid($file, 1, 2), $Dir_backup, 0, 2) $file = FileGetShortName($file) $File_backup = FileGetShortName($File_backup) _GUICtrlListView_SetItemText($Listv, 0, $folder, 2) _GUICtrlListView_SetItemText($Listv, 0, $item, 1) If FileGetTime($file, 0, 1) > FileGetTime($File_backup, 0, 1) Then $atualizados += 1 FileCopy($file, $File_backup, 9) GUICtrlSetData($lab[2], "Atualizados: " & $atualizados) Else $mantidos += 1 GUICtrlSetData($lab[1], "Mantidos: " & $mantidos) EndIf EndFunc ;==>_Compare_files Func _Del_line() $item_num = _GUICtrlListView_GetSelectedIndices(GUICtrlGetHandle($Listv)) $item_text[1] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num)) _GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($Listv)) IniDelete(@ScriptDir & "\Config.ini", "PASTAS", $item_text[1]) EndFunc ;==>_Del_line Func _Dir_Backup() $Dir_backup = FileSelectFolder("Procurando pasta.", "", 1) ;GUICtrlSetState($Input, $GUI_FOCUS) GUICtrlSetData($Input, $Dir_backup) IniWrite(@ScriptDir & "\Config.ini", "BACKUP", "endereço", $Dir_backup) EndFunc ;==>_Dir_Backup Func _Gui_backup() GUICreate("Backup Personal - Feito Por Belini", 660, 679, -1, -1) GUICtrlCreateGroup("Diretório para backup ", 352, 11, 290, 69) $But[1] = GUICtrlCreateButton("Incluir endereço", 15, 16, 140, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $But[2] = GUICtrlCreateButton("Excluir endereço", 15, 56, 140, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $But[3] = GUICtrlCreateButton("Arquivos / Subpastas", 170, 16, 170, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $But[4] = GUICtrlCreateButton("Marcar / Desmarcar", 170, 56, 170, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $But[5] = GUICtrlCreateButton("Procurar", 553, 36, 75, 25) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $But[6] = GUICtrlCreateButton("Cancelar", 514, 631, 130, 33) GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif") $But[7] = GUICtrlCreateButton("Iniciar", 390, 631, 110, 33) GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif") $Input = GUICtrlCreateInput(IniRead(@ScriptDir & "\Config.ini", "BACKUP", "endereço", ""), 368, 38, 183, 21) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $Check = GUICtrlCreateCheckbox("Desligar o computador quando finalizar a tarefa.", 15, 647, 352, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $lab[1] = GUICtrlCreateLabel("Mantidos: 0", 32, 623, 175, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $lab[2] = GUICtrlCreateLabel("Atualizados: 0", 210, 623, 175, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $Listv = GUICtrlCreateListView("Endereço das Pastas|Listar Arquivos|Fazer Backup", 16, 96, 627, 520, _ BitOR($LVS_SHOWSELALWAYS, $LVS_SINGLESEL), BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT)) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x000000) _GUICtrlListView_SetColumnWidth($Listv, 0, 395) _GUICtrlListView_SetColumnWidth($Listv, 1, 120) _GUICtrlListView_SetColumnWidth($Listv, 2, 105) _GUICtrlListView_JustifyColumn($Listv, 1, 2) _GUICtrlListView_JustifyColumn($Listv, 2, 2) GUISetState(@SW_SHOW) Local $aArray = IniReadSection(@ScriptDir & "\Config.ini", "PASTAS") _ArraySort($aArray) If Not @error Then For $i = 1 To $aArray[0][0] If FileExists($aArray[$i][0]) Then GUICtrlCreateListViewItem(StringReplace($aArray[$i][0] & $aArray[$i][1], "=|", "|"), $Listv) Else GUICtrlCreateListViewItem($aArray[$i][0] & "|Pasta Inexistente|Não", $Listv) EndIf Next EndIf If IniRead(@ScriptDir & "\Config.ini", "DESLIGAR", "opção", "1") = "1" Then GUICtrlSetState($Check, $GUI_CHECKED) EndFunc ;==>_Gui_backup Func _Opt_Dir() $item_num = _GUICtrlListView_GetSelectedIndices(GUICtrlGetHandle($Listv)) $item_text[1] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num), 1) $item_text[2] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num), 2) Switch $item_text[1] Case "Apenas Diretório" _GUICtrlListView_SetItemText($Listv, $item_num, "Incluir Subpastas", 1) IniWrite(@ScriptDir & "\Config.ini", "PASTAS", _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num)), "|Incluir Subpastas|" & $item_text[2]) Case "Incluir Subpastas" _GUICtrlListView_SetItemText($Listv, $item_num, "Apenas Diretório", 1) IniWrite(@ScriptDir & "\Config.ini", "PASTAS", _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num)), "|Apenas Diretório|" & $item_text[2]) Case "Pasta Inexistente" MsgBox(4096, "", "Diretório inexistente!", 3) EndSwitch EndFunc ;==>_Opt_Dir Func _Opt_Backup() $item_num = _GUICtrlListView_GetSelectedIndices(GUICtrlGetHandle($Listv)) $item_text[1] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num), 1) $item_text[2] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num), 2) If $item_text[1] <> "Pasta Inexistente" Then Switch $item_text[2] Case "Sim" _GUICtrlListView_SetItemText($Listv, $item_num, "Não", 2) IniWrite(@ScriptDir & "\Config.ini", "PASTAS", _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num)), "|" & $item_text[1] & "|Não") Case "Não" _GUICtrlListView_SetItemText($Listv, $item_num, "Sim", 2) IniWrite(@ScriptDir & "\Config.ini", "PASTAS", _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), Number($item_num)), "|" & $item_text[1] & "|Sim") EndSwitch Else MsgBox(4096, "", "Diretório inexistente!", 3) EndIf EndFunc ;==>_Opt_Backup Func _Opt_Finalize() If GUICtrlRead($Check) = 1 Then IniWrite(@ScriptDir & "\Config.ini", "DESLIGAR", "opção", "1") Else IniWrite(@ScriptDir & "\Config.ini", "DESLIGAR", "opção", "0") EndIf EndFunc ;==>_Opt_Finalize Func _Start_backup() Local $itens = _GUICtrlListView_GetItemCount($Listv) If $itens > 0 Then $Dir_backup = GUICtrlRead($Input) If FileExists($Dir_backup) Then For $i = 1 To $itens If $proceed = 0 Then ExitLoop $item_text[1] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), 0, 0) $item_text[2] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), 0, 1) $item_text[3] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($Listv), 0, 2) If $item_text[2] <> "Pasta Inexistente" And $item_text[3] = "Sim" Then If $item_text[2] = "Incluir Subpastas" Then _Backup_Full($item_text[1], 0) Else _Backup_Files($item_text[1]) EndIf EndIf If $proceed = 1 Then _GUICtrlListView_DeleteItem($Listv, 0) Next If $proceed = 1 Then If GUICtrlRead($Check) = 1 Then Shutdown(1) Else GUICtrlSetState($Listv_Files, $GUI_HIDE) MsgBox(4096, "", "Tarefa Finalizada!") Exit EndIf Else $proceed = 1 _GUICtrlListView_SetItemText($Listv, 0, $item_text[2], 1) _GUICtrlListView_SetItemText($Listv, 0, $item_text[3], 2) EndIf Else MsgBox(4096, "", "Diretório de backup não existe!", 3) EndIf EndIf EndFunc ;==>_Start_backup Baixar arquivos: https://mega.nz/#!cdNw0CaQ!q4r5KYyOXGb-a9dVJeZLz8Le9Z29UobQuhDtYeVZl5g
  17. 1 point
    ListBox tem pouca opção e neste caso vc terá que criar um ListView. #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <GuiListView.au3> #include <File.au3> Global $diretorio = "", $foto = 1, $FileList, $max = 0, $item_atual #region ### START Koda GUI section ### Form=C:\Users\michel\Desktop\menu programadores\Source\Form1.kxf $Form1 = GUICreate("Boot Ecu", 914, 636, 180, 131) $List = GUICtrlCreateListView("LISTA", 776, 40, 137, 552, BitOR($LVS_NOCOLUMNHEADER, $LVS_SINGLESEL)) _GUICtrlListView_SetColumnWidth($List, 0, 133) $Pic1 = GUICtrlCreatePic("", 0, 40, 761, 561, $SS_CENTERIMAGE) $Dir = GUICtrlCreateButton("Diretorio", 776, 0, 137, 41) GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif") GUICtrlSetBkColor(-1, 0xFFFF00) $Up = GUICtrlCreateButton("Up", 776, 592, 73, 41) GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif") $down = GUICtrlCreateButton("Dw", 848, 592, 65, 41) GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif") $Button2 = GUICtrlCreateButton("", 760, 40, 17, 561) GUICtrlSetState(-1, $GUI_DISABLE) $bar = GUICtrlCreateButton("Sem imagens", 0, 0, 777, 41) GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif") GUICtrlSetState(-1, $GUI_DISABLE) $Button4 = GUICtrlCreateButton("Total de Imagens = 0", 0, 600, 777, 30) GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif") GUICtrlSetState(-1, $GUI_DISABLE) GUISetState(@SW_SHOW) #endregion ### END Koda GUI section ### ;Define_pasta("Diretório onde estão suas fotos"); ==> Habilite para não precisar usar o botão diretório While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $down If $max > 0 Then $foto += 1 Troca_imagem($foto) If $foto >= $max Then $foto = 1 EndIf Case $Up If $max > 0 Then $foto -= 1 Troca_imagem($foto) If $foto <= 0 Then $foto = $max EndIf Case $Dir $pasta = FileSelectFolder("escolha uma pasta", "") Define_pasta($pasta) Case $GUI_EVENT_CLOSE Exit EndSwitch $item_atual = _GUICtrlListView_GetSelectedIndices($List) If $item_atual <> ($foto) and $max > 0 Then $foto = $item_atual GUICtrlSetImage($Pic1, $diretorio & "\" & $FileList[$item_atual + 1]) ControlFocus("", "", $List) EndIf WEnd Func Define_pasta($pasta = "") $diretorio = $pasta $FileList = _FileListToArray($diretorio, "*.JPG", 1) If Not @error Then $max = $FileList[0] For $i = 1 To $max _GUICtrlListView_AddItem($List, $FileList[$i], $i - 1) Next GUICtrlSetData($Button4, "Total de Imagens = " & $max) GUICtrlSetData($bar, "Imagem Atual: " & $diretorio & "\" & $FileList[1]) GUICtrlSetImage($Pic1, $diretorio & "\" & $FileList[1]) Else $max = 0 EndIf _GUICtrlListView_SetItemSelected($List, 0) ControlFocus("", "", $List) EndFunc ;==>Define_pasta Func Troca_imagem($imagem = '') If $imagem = $max Then $imagem = 0 If $imagem = -1 Then $imagem = $max - 1 GUICtrlSetImage($Pic1, $diretorio & "\" & $FileList[$imagem + 1]) GUICtrlSetData($bar, "Imagem Atual: " & $diretorio & "\" & $FileList[$imagem]) _GUICtrlListView_SetItemSelected($List, $imagem) ControlFocus("", "", $List) EndFunc ;==>Troca_imagem
  18. 1 point
    Lí o tópico todo e não consegui fazer a conecçao usando usuário e senha, pensei que houvesse alguma coisa mais simpples tipo uma função que enviasse nome de usuário + senha e já conectase, alguém conseguiu conectar usando UDF? EDITADO: Na realidade o que quero fazer é listar as redes disponíveis para poder escolher uma delas colocar a senha e conectar tipo é na barra de tarefas quando a gente clica no ícone da internet wifi! Até agora consegui apenas listar as redes wifi #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <wifi33a.au3> Global $Cb_rede, $Inp_pass, $But_refresh, $But_connect _Wlan_StartSession() Gui() Func Gui() GUICreate("Wifi connection", 434, 104, -1, -1) GUICtrlCreateLabel("Rede wifi:", 8, 20, 51, 17) GUICtrlCreateLabel("Password:", 253, 20, 53, 17) $Cb_rede = GUICtrlCreateCombo("Choose a network", 64, 16, 169, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL)) update_combo() $Inp_pass = GUICtrlCreateInput("", 312, 16, 113, 21, BitOR($ES_PASSWORD, $ES_CENTER, $ES_NUMBER)) $But_refresh = GUICtrlCreateButton("Refresh", 40, 64, 139, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $But_connect = GUICtrlCreateButton("Connect", 246, 64, 139, 25) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUICtrlSetState($But_connect, $GUI_FOCUS) GUISetState(@SW_SHOW) EndFunc ;==>Gui While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $But_refresh update_combo() Case $But_connect $rede = GUICtrlRead($Cb_rede) $pass = GUICtrlRead($Inp_pass) ; I do not know how to connect to the network EndSwitch WEnd Func update_combo() Local $data = "", $scan = "" GUICtrlSetData($Cb_rede, "") $scan = _Wlan_GetAvailableNetworkList(0) $avaiable = UBound($scan) - 1 If $avaiable > 0 Then For $i = 0 To $avaiable $data &= $scan[$i][0] & "|" Next GUICtrlSetData($Cb_rede, $data, $scan[0][0]) EndIf EndFunc ;==>update_combo
  19. 1 point
    Olá Luigi. Com certeza que usar o Github facilitaria as coisas, mas acho que sairia do escopo do fórum não? Nem todos aqui tem acesso ou sabem (ou saberiam) usar o GitHub, só por isso...
×