Jump to content

Leaderboard


Popular Content

Showing most liked content since 01/21/2018 in all areas

  1. 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
  2. 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
  3. 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
  4. 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..
  5. 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.dll", "int", "timeBeginPeriod", "int", "1") DllCall("ntdll.dll", "dword", "NtDelayExecution", "int", 0, "int64*", -10 * $MS) EndFunc ;==>MsSleep Func __Exit() DllClose("ntdll.dll") DllClose("winmm.dll") Exit EndFunc
  6. 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.
  7. 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
  8. 1 point
    Controle da porta paralela 12 pinos PP-CONTROL
  9. 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
  10. 1 point
    Use: Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc") Func _ErrFunc($oErr)     ConsoleWrite("COM Error, ScriptLine(" & $oErr.scriptline & ") : Number 0x" & Hex($oErr.number, 8) & " - " & $oErr.windescription & @CRLF) EndFunc   ;==>_ErrFunc
  11. 1 point
    depois do -RD ou -L segundo a mensagem que aparece você precisa indicar o arquivo "log" ex: UsbDriveInfo.exe -L:resultado.txt UsbDriveInfo.exe -RD:log.log
  12. 1 point
    Olá Bllee. Local $sTexto = "" For $nConta = 1 to 5 For $nLetra = Asc("A") to Asc("Z") ConsoleWrite($sTexto & Chr($nLetra) & @CRLF) Next $sTexto &= Chr(Asc("@") + $nConta) Next
  13. 1 point
    ; mutleey ; 14/07/2018 Local $chars[6] SplashTextOn("msg", "...", 200, 50, -1, -1, 1, "", 16) For $ii = 0 To 5 For $jj = 97 To 122 ; a~z $chars[$ii] = Chr($jj) ControlSetText("msg", "", "Static1", $chars[5] & $chars[4] & $chars[3] & $chars[2] & $chars[1] & $chars[0]) Sleep(150) ; pausa Next Next SplashOff()
  14. 1 point
    Opa Belini. Aqui funcionou perfeitamente, Win 7 64. Já testou com #RequireAdmin?
  15. 1 point
    Transformando em binário e lendo com _GDIPlus_BitmapCreateFromMemory ou usando o fileInstall e jogando para o diretório temporário "@temp"
  16. 1 point
    Aquele exemplo que eu te passei já tem isso tudo, é só você usar label ao invés de botão.
  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
    @michel almeida não entendi muito bem como quer fazer o visualizador funcionar mas fiz algumas mudanças que depois vc pode alterar para o seu propósito! #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <File.au3> Global $diretorio = "", $foto = 1, $FileList, $max = 0 #region ### START Koda GUI section ### Form=C:\Users\michel\Desktop\menu programadores\Source\Form1.kxf $Form1 = GUICreate("Boot Ecu", 914, 636, 180, 131) $List = GUICtrlCreateList("", 776, 40, 137, 552) $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 ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $down If $max > 0 Then $foto += 1 If $foto >= $max Then $foto = 1 gui($foto) EndIf Case $Up If $max > 0 Then $foto -= 1 If $foto <= 0 Then $foto = $max gui($foto) EndIf Case $Dir $diretorio = FileSelectFolder("escolha uma pasta", "") Local $FileList = _FileListToArray($diretorio, "*.JPG", 1) If Not @error Then $max = $FileList[0] For $i = 1 To $max Step 1 GUICtrlSetData($List, $FileList[$i]) Next GUICtrlSetData($Button4, "Total de Imagens = " & $max) GUICtrlSetData($bar, "Imagem Atual: " & $diretorio & "\" & $FileList[1]) GUICtrlSetImage($Pic1, $diretorio & "\" & $FileList[1]) Else $max = 0 EndIf Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func gui($foto = '') GUICtrlSetImage($Pic1, $diretorio & "\" & $FileList[$foto]) GUICtrlSetData($bar, "Imagem Atual: " & $diretorio & "\" & $FileList[$foto]) EndFunc ;==>gui
  19. 1 point
    se for x64 RegWrite("HKLM64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "REG_SZ", "programa.exe") x86 RegWrite("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "REG_SZ", "programa.exe")
  20. 1 point
    A lista pode ser criada com uma Array, você poderá criar quantas listas quiser e na imagem abaixo em "Informações" na linha Pasta Selecionada você pode selecionar as listas apertando F6 e F7. Eu detalhei as variáveis principais e dividi cada sistema em uma include diferente. Criei também um SubMenu que cria uma listagem em cima da atual, para abrir o subMenu é só pressionar F4 ou F8. Programei a lista principal para salvar o item selecionado caso você troque de item Ex: Seleciona o item 100 da "lista 1" e aperta F7 para ir na "lista 2", quando você apertar F6 para voltar na "lista 1" ela estará no item 100. Cada lista salva sua posição selecionada. - Preciso de dicas para interface gráfica (Sdl é bom, mas não achei nenhuma UDF eficaz que coloque Textos e Imagens na janela, se alguém souber). - Ao abrir o programa você terá de selecionar pelo menos uma pasta para criar uma lista. - Eu deixei o projeto aberto no GitHub para colaboradores. https://github.com/pedrowarlock/FrontEnd
  21. 1 point
    @LuigiExcelente sugestão de dividir os scripts! E como ele comentou existem vários maneiras de conversar de fazer um script conversar com outro, são os chamados IPC (Inter-Process Communication). São procedimentos que utilizam de diversas técnicas para implementar a comunicação entre programas diferentes, ou no nosso caso, entre scripts diferentes. A ideia é que nosso programa que tem um conjunto de variáveis próprias e seria muito bom que fosse possível que algumas variáveis pudessem ser "compartilhadas" com outro programa. Porém o compartilhamento de espaço de memória (shared memory management) apesar de possível não é recomendado, inclusive no Windows existe uma camada de proteção para evitar isto chamada DEP (Data Prevention Execution). Explicar o motivo e como fazer (ou porque evitar) tomaria tempo e não é o objetivo do tópico. Resta saber que existem vários meios de fazer isso, sendo uma das mais comuns a utilização de Pipes, que inclusive tem funções nativas no AutoIt (ver Help, User Defined Functions, NamedPipes Management). Outro modo de fazer isso é usando MailSlot, com excelentes funções da Trancexx. Outras maneiras envolvem compartilhamento de arquivos ou mesmo do próprio registro, ou através de protocolo de rede (TCP) e assim por diante. É uma área ampla e interessante. Para saber mais pesquise IPC e AutoIt, existem vários tipos e exemplos.
  22. 1 point
    @Pedro Pinheiro, o programa acima foi feito em AutoIt? Show de bola! Parabéns! Lá vou eu dar uma ideia maluca... @Manimal tem razão, AutoIt não é, e não será multi-thread... Mas já que você precisa "ler" as teclas de algum lugar... Porque não usa um script separado para fazer isso? Exemplo: Em vez de querer tudo em um único script, divide as funções. Um script apenas lê as teclas, o outros renderiza os gráficos, e quando precisar saber o estado das teclas, ele pega as informações do primeiro, que só lê. Ah, mas e como fazer um script conversar com outro? PIPEs, TCP/IP Como disse, uma sugestão doida.
  23. 1 point
    @mutleey Que tal desvincular a função de dentro do loop? Eu não tenho ideia de como o AutoIt resolve internamente o uso do AdlibRegister, mas amontar todas as funções dentro do loop pode ter um momento que as coisas podem sair do controle... Algumas demora mais do que o esperado, e essa demora causa um efeito cascata, será que não? Então, a proposta do AdlibRegister é justamente essa, desafogar o loop. Veja este exemplo. ;~ #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 <SliderConstants.au3> #include <Array.au3> #include <GUIConstantsEx.au3> OnAutoItExitRegister("OnExit") Opt("GUIOnEventMode", 1) Opt("GUIEventOptions", 1) Opt("MustDeclareVars", 1) Global $aGuiSize[2] = [800, 600] Global $sGuiTitle = "GuiTitle" Global $hGui Global $aSlider[4], $aVal[4] = [100, 100, 100, 100], $aMov[4] = [-1, -1, -1, -1] $hGui = GUICreate($sGuiTitle, $aGuiSize[0], $aGuiSize[1]) GUISetOnEvent($GUI_EVENT_CLOSE, "Quit") $aSlider[0] = GUICtrlCreateSlider(10, 10, 20, 200, $TBS_VERT + $TBS_AUTOTICKS) GUICtrlSetData($aSlider[0], $aVal[0]) AdlibRegister("Slider0", 100) ; executa a função Slider0 a cada 100 mili segundos $aSlider[1] = GUICtrlCreateSlider(50, 10, 20, 200, $TBS_VERT + $TBS_AUTOTICKS) GUICtrlSetData($aSlider[1], $aVal[1]) AdlibRegister("Slider1", 200) ; executa a função Slider1 a cada 200 mili segundos $aSlider[2] = GUICtrlCreateSlider(90, 10, 20, 200, $TBS_VERT + $TBS_AUTOTICKS) GUICtrlSetData($aSlider[2], $aVal[2]) AdlibRegister("Slider2", 300) ; executa a função Slider2 a cada 300 mili segundos $aSlider[3] = GUICtrlCreateSlider(140, 10, 20, 200, $TBS_VERT + $TBS_AUTOTICKS) GUICtrlSetData($aSlider[3], $aVal[3]) AdlibRegister("Slider3", 400) ; executa a função Slider3 a cada 400 mili segundos GUISetState(@SW_SHOW, $hGui) While Sleep(25) WEnd Func OnExit() ; antes de encerrar o script, eu cancelo todos os adlib, é uma boa prática ; pois como o adlib não respeita um loop, o Exit pode ainda não ter sido concluído ; e o AutoIt pode executar alguma função do adlib AdlibUnRegister("Slider0") AdlibUnRegister("Slider1") AdlibUnRegister("Slider2") AdlibUnRegister("Slider3") GUISetState($hGui, @SW_HIDE) GUIDelete($hGui) EndFunc ;==>OnExit Func Quit() Exit EndFunc ;==>Quit Func Slider0() $aVal[0] = GUICtrlRead($aSlider[0]) + $aMov[0] If $aVal[0] <= 0 Or $aVal[0] >= 100 Then $aMov[0] *= -1 GUICtrlSetData($aSlider[0], $aVal[0]) EndFunc ;==>Slider0 Func Slider1() $aVal[1] = GUICtrlRead($aSlider[1]) + $aMov[1] If $aVal[1] <= 0 Or $aVal[1] >= 100 Then $aMov[1] *= -1 GUICtrlSetData($aSlider[1], $aVal[1]) EndFunc ;==>Slider1 Func Slider2() $aVal[2] = GUICtrlRead($aSlider[2]) + $aMov[2] If $aVal[2] <= 0 Or $aVal[2] >= 100 Then $aMov[2] *= -1 GUICtrlSetData($aSlider[2], $aVal[2]) EndFunc ;==>Slider2 Func Slider3() $aVal[3] = GUICtrlRead($aSlider[3]) + $aMov[3] If $aVal[3] <= 0 Or $aVal[3] >= 100 Then $aMov[3] *= -1 GUICtrlSetData($aSlider[3], $aVal[3]) EndFunc ;==>Slider3
  24. 1 point
    Deu certo desta forma deu certo @mutleey, obrigado pela ajuda!
  25. 1 point
    Excelente pergunta Mutleey. Vai levar medalha por essa ;) Eu pensei que o Belini queria um print pois havia uma função no soft que o cliente fazia o print (user request), mas agora pelo papo deu a entender que o print é apenas para preencher o espaço (ou buraco) entre um vídeo e outro, isso? Se for este o caso, porque não deixar uma série de imagens prontas e daí randomizar entre elas? O efeito é o mesmo. É o caso do banner, só que iria mudar a imagem. Na verdade, os clientes não ligam muito para isso. Quem se liga nessa viagem somos nós! Eu apanhei muito (e ainda apanho) pra não perder muito tempo viajando em um detalhe do soft (perfeccionismo) que muitas vezes o cliente nem nota. Sabe aquele "efeito arredondado" nas bordas da janela que vc movimentou meio mundo pra fazer? Pois é o ciente nem sabia que estava ali ;( O problema não é fazer o efeito mas o tempo dispendido nessa tarefa, que poderia ser melhor aproveitado desenvolvendo novas "features" ou melhorando o código em algo que realmente faça diferença. Eu ainda faço isso, mas tento me policiar para reduzir o tempo gasto nestas coisas! Não que não sejam legais, só tem que avaliar o tempo x efeito! Se dependesse só de mim, eu ficava polindo cada pixel da interface ;)
  26. 1 point
    olha se resolve... ; mutleey ; 09/06/2018 ; print screen tela cheia PrintScreen('Screen', 'fullscreen.jpg', 100) ; print screen parcial PrintScreen('Region', 'region.bmp', 100, 5, 5, 300, 200) Func PrintScreen($Type, $sFile, $Quality, $Left = "", $Top = "", $Width = "", $Height = "") Switch $Type Case "Screen" DllCall("wprint.dll", "int:cdecl", "CaptureScreen", "str", $sFile, "int", $Quality) Case "Region" DllCall("wprint.dll", "int:cdecl", "CaptureRegion", "str", $sFile, "int", $Left, "int", $Top, "int", $Width, "int", $Height, "int", $Quality) EndSwitch EndFunc DLL em anexo. wprint.zip
  27. 1 point
    Nossa, eu convertia tudo, dessa forma ficou tudo tão simples.
  28. 1 point
    Show @Manimal Eu não sabia que o Autoit tinha essa função "Ceiling", eu sempre criava uma função para fazer esse trabalho de arredondar números inteiros.
  29. 1 point
    Olá Pedro. Se vc olhar no post do Framework, existe uma função chamada PADC que faz este cálculo, mas é claro sem levar em consideração a largura da fonte. Mas a adaptação é muito simples e fica bem parecida com a fórmula que vc criou. Local $nTamanho = 100 Local $sTexto = "AutoIt" Local $nLargura_Fonte = 5 Local $nEspacos_Antes = Ceiling(($nTamanho - (StringLen($sTexto) * $nLargura_Fonte)) / 2) ConsoleWrite($nEspacos_Antes & @CRLF)
  30. 1 point
    Provavelmente o jogo esta "assumindo" a tecla que vc designou para tal tarefa, tente antes de usar o "send" ativar a janela do programa, isso nem sempre funciona pois tem aplicações que mesmo que esteja em segundo plano continuam usando determinadas teclas, mas faz um teste caso não resolva a gente pensa em alguma coisa.
  31. 1 point
    Manimal não entendi muito bem, seria mais ou menos isso? ; mutleey ; 24/04/2018 Local $itray = "Rede Acesso à Internet" Local $splash = False Local $hwnd InetGet("http://blog.corujadeti.com.br/wp-content/uploads/2017/01/joinha.jpg", @TempDir & "\joinha.jpg") While Sleep(10) $hwnd = WinGetTitle("[CLASS:tooltips_class32]", "") Select Case StringCompare($hwnd, $itray) = 0 And $splash = False $splash = True SplashImageOn("tray", @TempDir & "\joinha.jpg", 515, 589, -1, -1, 1) Case StringCompare($hwnd, $itray) <> 0 And $splash = True $splash = False SplashOff() EndSelect WEnd to meio corrido hj então só deu pra escrever o basicão mesmo rs. obs: na variável $itray esta o "tooltip" de rede, uso o windows 7 então precisa mudar para a indentificação do icone que vc for usar.
  32. 1 point
    Show de bola Mutleey. Como disse o Belini, será útil! Obrigado.
  33. 1 point
    @mutleey vou guardar aqui e com certeza será de grande utilidade principalmente para funções de crédito!
  34. 1 point
    Putz ..... me sentido constrangido! kkk Utilizo muito SEND em ferramentas via client e nunca prestei atenção no parametro opcional . . . . Valeu pela ajuda Mani!!!
  35. 1 point
    https://www.autoitscript.com/forum/topic/193404-read-text-file-from-web/ << Ajuda que os gringos que deram
  36. 1 point
    Boa noite, o pessoal do forum americano me deu a solução, o que eu fiz foi o seguinte, eu upei um arquivo no drive e gerei um link publico para que qualquer um possa acessar aquele arquivo. o meu unico erro foi usar o link errado, eu estava tentando usar esse link aqui (que é o link que me foi gerado): https://drive.google.com/open?id=1Cmk5-Mr10CwDcie37sb4AmhHj6D8S9C5 mas eu devia ter usado esse aqui: https://drive.google.com/uc?id=1Cmk5-Mr10CwDcie37sb4AmhHj6D8S9C5&export=download e ai pronto, usei o InetRead e funcionou perfeitamente, lembrando que esse arquivo é um arquivo .txt
  37. 1 point
    Brincando um pouco no autoit eu fiz esse programa de cronograma de estudos, se alguém estiver afim de estudar, ele seleciona a hora atual mostrando o que você deveria está estudando. Bem simples mesmo. Eu queria receber SMS com as informações, mas resolvi não mexer mais. #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <MsgBoxConstants.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #include <WindowsConstants.au3> GUICreate("CRONOGRAMA DE ESTUDOS", 800, 660) GUICtrlCreateLabel("Receber SMS:",665,475,140,20) GUICtrlSetState(-1,$GUI_DISABLE ) $ddi = GUICtrlCreateInput("55",665,500,25,20) GUICtrlSetState($ddi,$GUI_DISABLE ) $tell= GUICtrlCreateInput("",695,500,100,20) GUICtrlSetState($tell,$GUI_DISABLE ) $itelCheck =GUICtrlCreateCheckbox("Receber Notificações",665,523,200,20) GUICtrlSetState($itelCheck,$GUI_DISABLE ) Global $idListview = GUICtrlCreateListView("HORAS |SEGUNDA|TERÇA|QUARTA|QUINTA|SEXTA|SABADO|DOMINGO", 10, 10, 630, 640, $LVS_SHOWSELALWAYS+$LVS_SINGLESEL,$LVS_EX_GRIDLINES+$LVS_EX_DOUBLEBUFFER+$LVS_EX_FULLROWSELECT+$WS_EX_CLIENTEDGE) GUICtrlSetState($idListview,$GUI_DISABLE ) for $i=0 to 7 _GUICtrlListView_JustifyColumn($idListview, $i, 2) Next Global $Tempo Global $att = True GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch Local $seg = @SEC, $min = @MIN, $Hora= @HOUR $iTime = $Hora & ":" & $min Switch $iTime Case $ATT and $iTime >= "7:00" and $iTime <= "7:29" $Tempo = 0 $ATT = False _drawItens() Case $ATT and $iTime >= "7:30" and $iTime <= "7:59" $Tempo = 1 $ATT = False _drawItens() Case $ATT and $iTime >= "8:00" and $iTime <= "8:29" $Tempo = 2 $ATT = False _drawItens() Case $ATT and $iTime >= "8:30" and $iTime <= "8:59" $Tempo = 3 $ATT = False _drawItens() Case $ATT and $iTime >= "9:00" and $iTime <= "9:29" $Tempo = 4 $ATT = False _drawItens() Case $ATT and $iTime >= "9:30" and $iTime <= "9:59" $Tempo = 5 $ATT = False _drawItens() Case $ATT and $iTime >= "10:00" and $iTime <= "10:29" $Tempo = 6 $ATT = False _drawItens() Case $ATT and $iTime >= "10:30" and $iTime <= "10:59" $Tempo = 7 $ATT = False _drawItens() Case $ATT and $iTime >= "11:00" and $iTime <= "11:29" $Tempo = 8 $ATT = False _drawItens() Case $ATT and $iTime >= "11:30" and $iTime <= "11:59" $Tempo = 9 $ATT = False _drawItens() Case $ATT and $iTime >= "12:00" and $iTime <= "12:29" $Tempo = 10 $ATT = False _drawItens() Case $ATT and $iTime >= "12:30" and $iTime <= "12:59" $Tempo = 11 $ATT = False _drawItens() Case $ATT and $iTime >= "13:00" and $iTime <= "13:29" $Tempo = 12 $ATT = False _drawItens() Case $ATT and $iTime >= "13:30" and $iTime <= "13:59" $Tempo = 13 $ATT = False _drawItens() Case $ATT and $iTime >= "14:00" and $iTime <= "14:29" $Tempo = 14 $ATT = False _drawItens() Case $ATT and $iTime >= "14:30" and $iTime <= "14:59" $Tempo = 15 $ATT = False _drawItens() Case $ATT and $iTime >= "15:00" and $iTime <= "15:29" $Tempo = 16 $ATT = False _drawItens() Case $ATT and $iTime >= "15:30" and $iTime <= "15:59" $Tempo = 17 $ATT = False _drawItens() Case $ATT and $iTime >= "16:00" and $iTime <= "16:29" $Tempo = 18 $ATT = False _drawItens() Case $ATT and $iTime >= "16:30" and $iTime <= "16:59" $Tempo = 19 $ATT = False _drawItens() Case $ATT and $iTime >= "17:00" and $iTime <= "17:29" $Tempo = 20 $ATT = False _drawItens() Case $ATT and $iTime >= "17:30" and $iTime <= "17:59" $Tempo = 21 $ATT = False _drawItens() Case $ATT and $iTime >= "18:00" and $iTime <= "18:29" $Tempo = 22 $ATT = False _drawItens() Case $ATT and $iTime >= "18:30" and $iTime <= "18:59" $Tempo = 23 $ATT = False _drawItens() Case $ATT and $iTime >= "19:00" and $iTime <= "19:29" $Tempo = 24 $ATT = False _drawItens() Case $ATT and $iTime >= "19:30" and $iTime <= "19:59" $Tempo = 25 $ATT = False _drawItens() Case $ATT and $iTime >= "20:00" and $iTime <= "20:29" $Tempo = 26 $ATT = False _drawItens() Case $ATT and $iTime >= "20:30" and $iTime <= "20:59" $Tempo = 27 $ATT = False _drawItens() Case $ATT and $iTime >= "21:00" and $iTime <= "21:29" $Tempo = 28 $ATT = False _drawItens() Case $ATT and $iTime >= "21:30" and $iTime <= "21:59" $Tempo = 29 $ATT = False _drawItens() Case $ATT and $iTime >= "22:00" and $iTime <= "22:29" $Tempo = 30 $ATT = False _drawItens() Case $ATT and $iTime >= "22:30" and $iTime <= "22:59" $Tempo = 31 $ATT = False _drawItens() Case $min & ":" & $seg = "00:00" or $min & ":" & $seg = "30:00" $ATT = True EndSwitch WEnd ; Delete the previous GUI and all controls. GUIDelete() Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam) Local $tNMHDR, $hWndFrom, $iCode,$hListView $tNMHDR = DllStructCreate($tagNMHDR, $lParam) $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom") $iCode = DllStructGetData($tNMHDR, "Code") $hListView = GuiCtrlGetHandle($idListview) Switch $hWndFrom Case $hListView Switch $iCode Case $NM_CUSTOMDRAW Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam) Local $iDrawStage = DllStructGetData($tCustDraw, "dwDrawStage") If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW If $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYSUBITEMDRAW Local $iSubItem = DllStructGetData($tCustDraw, "iSubItem") Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec") Local $iColor, $iColor2 If $iItem = $Tempo Then If $iSubItem = @WDAY-1 Then $iColor = RGB2BGR(0x00aa00) ; green Else $iColor = RGB2BGR(0x26FF26) ; pink EndIf Else if $iItem = 5 and $iSubItem >= 1 and $iSubItem < 6 Then $iColor = RGB2BGR(0x5B9BD5) ; azul escuro ElseIf $iItem = 2 or $iItem = 3 or $iItem = 4 and ($iSubItem >= 6) Then #DEEAF6 $iColor = RGB2BGR(0xDEEAF6) ; blue ElseIf $iItem = 12 and ($iSubItem = 1 or $iSubItem = 3 or $iSubItem = 5) Then $iColor = RGB2BGR(0x5B9BD5) ; blue ElseIf $iItem = 13 and ($iSubItem >= 1 And $iSubItem <= 8) Then $iColor = RGB2BGR(0x5B9BD5) ; blue ElseIf $iItem = 14 or $iItem = 15 and ($iSubItem = 1 or $iSubItem >= 5) Then $iColor = RGB2BGR(0xFF0000) ; red ElseIf $iItem = 16 and ($iSubItem = 1 or $iSubItem = 5) Then $iColor = RGB2BGR(0xffaaff) ; pink ElseIf $iItem = 17 or $iItem = 18 and $iSubItem >= 1 And $iSubItem < 6 Then $iColor = RGB2BGR(0xffaaff) ; pink ElseIf $iItem = 22 and ($iSubItem >= 1 And $iSubItem <= 5) Then $iColor = RGB2BGR(0xFF0000) ; red ElseIf $iItem = 23 and ($iSubItem = 1 or $iSubItem = 5) Then $iColor = RGB2BGR(0xFF0000) ; red ElseIf $iItem = 23 and ($iSubItem >= 2 and $iSubItem < 5) Then $iColor = RGB2BGR(0xFFC000) ; amarelo ElseIf $iItem = 24 and ($iSubItem >= 1 and $iSubItem < 6) Then $iColor = RGB2BGR(0xFFC000) ; amarelo ElseIf $iItem = 25 and ($iSubItem >= 1 and $iSubItem < 6) Then $iColor = RGB2BGR(0xFFC000) ; amarelo ElseIf $iItem = 29 or $iItem = 30 and ($iSubItem >= 1 and $iSubItem < 6) Then $iColor = RGB2BGR(0xDEEAF6) ; azul claro ElseIf $iItem = 31 and ($iSubItem >= 1 and $iSubItem < 6) Then $iColor = RGB2BGR(0x5B9BD5) ; azul escuro Else $iColor = RGB2BGR(0xFFFFFF) ; white EndIf EndIf DllStructSetData($tCustDraw, "clrTextBk", $iColor) ; background color Return $CDRF_NEWFONT EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func RGB2BGR($iColor) Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF) EndFunc ;==>RGB2BGR() Func _drawItens() _GUICtrlListView_DeleteAllItems ( $idListview ) GUICtrlCreateListViewItem("7h - 7h30", $idListview) GUICtrlCreateListViewItem("7h30 - 8h", $idListview) GUICtrlCreateListViewItem("8h - 8h30|HISTÓRIA| MATEMÁTICA| LITERATURA| BIOLOGIA| FÍSICA", $idListview) GUICtrlCreateListViewItem("8h30 - 9h|HISTÓRIA| MATEMÁTICA| LITERATURA| BIOLOGIA| FÍSICA", $idListview) GUICtrlCreateListViewItem("9h - 9h30|HISTÓRIA| MATEMÁTICA| LITERATURA| BIOLOGIA| FÍSICA", $idListview) GUICtrlCreateListViewItem("9h30 - 10h", $idListview) GUICtrlCreateListViewItem("10h - 10h30|QUÍMICA| GEOGRAFIA| FÍSICA| FIL/SOC |HISTÓRIA", $idListview) GUICtrlCreateListViewItem("10h30 - 11h|QUÍMICA| GEOGRAFIA| FÍSICA| FIL/SOC |HISTÓRIA", $idListview) GUICtrlCreateListViewItem("11h - 11h30|QUÍMICA| GEOGRAFIA| FÍSICA| FIL/SOC |HISTÓRIA", $idListview) GUICtrlCreateListViewItem("11h30 - 12h", $idListview) GUICtrlCreateListViewItem("12h - 12h30", $idListview) GUICtrlCreateListViewItem("12h30 - 13h", $idListview) GUICtrlCreateListViewItem("13h - 13h30", $idListview) GUICtrlCreateListViewItem("13h30 - 14h", $idListview) GUICtrlCreateListViewItem("14h - 14h30||BIOLOGIA |MATEMÁTICA |QUÍMICA", $idListview) GUICtrlCreateListViewItem("14h30 - 15h||BIOLOGIA |MATEMÁTICA |QUÍMICA", $idListview) GUICtrlCreateListViewItem("15h - 15h30||BIOLOGIA |MATEMÁTICA |QUÍMICA", $idListview) GUICtrlCreateListViewItem("15h30 - 16h", $idListview) GUICtrlCreateListViewItem("16h - 16h30", $idListview) GUICtrlCreateListViewItem("16h30 - 17h|REDAÇÃO |LITERATURA |HISTÓRIA |QUÍMICA |REDAÇÃO", $idListview) GUICtrlCreateListViewItem("17h - 17h30|REDAÇÃO |LITERATURA |HISTÓRIA |QUÍMICA |REDAÇÃO", $idListview) GUICtrlCreateListViewItem("17h30 - 18h|REDAÇÃO |LITERATURA |HISTÓRIA |QUÍMICA |REDAÇÃO", $idListview) GUICtrlCreateListViewItem("18h - 18h30", $idListview) GUICtrlCreateListViewItem("18h30 - 19h", $idListview) GUICtrlCreateListViewItem("19h - 19h30", $idListview) GUICtrlCreateListViewItem("19h30 - 20h", $idListview) GUICtrlCreateListViewItem("20h - 20h30", $idListview) GUICtrlCreateListViewItem("20h30 - 21h", $idListview) GUICtrlCreateListViewItem("21h - 21h30", $idListview) GUICtrlCreateListViewItem("21h30 - 22h", $idListview) GUICtrlCreateListViewItem("22h - 22h30", $idListview) GUICtrlCreateListViewItem("22h30 - 23h", $idListview) Sleep(1000) EndFunc
  38. 1 point
    Reverter eu ví que tem como mesmo mas o problema é criptografar e nem lá no forum americano souberam dizer como faz esta encriptação, perdi vários dias até chegar neste ponto e aí não teve mais continuar por isto optei por mostar a janela de redes que aparece quando vc clica no ícone só que no caso faço ela aparecer sem clicar nele aí a pessoa escolhe a rede digita a senha e o windows faz o resto!
  39. 1 point
  40. 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
  41. 1 point
    @Pedro Pinheiro a função _WinAPI_CreateWindowEx é um coringa. Com a mesma função você cria uma janela e os elementos da janela, como input, label, button, etc... Veja esse exemplo que eu traduzi (meia boca) do fórum alemão, mas deu para perceber o que a função _WinAPI_CreateWindowEx pode fazer. Mas nesse momento, infelizmente eu não sei dizer realmente qual a diferença entre a forma tradicional que utilizamos e esta... ;============================================================================== ; _WinAPI_CreateWindowEx.au3 ;============================================================================== #include <WindowsConstants.au3> #include <GuiConstantsEx.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <Constants.au3> #include <WinAPI.au3> ; source: https://autoit.de/onlinehilfe/libfunctions/_WinAPI_CreateWindowEx.htm Opt("MustDeclareVars", 1) Global Const $IDC_STATIC = -1, $IDC_EDIT = 101 Global $hInstance ;============================================================================== Exit Example() ;============================================================================== Func Example() Local $hWndMain, $hWndEdit, $hWndStatic, $hWndButton $hInstance = _WinAPI_GetModuleHandle(0) ; cria uma janela principal $hWndMain = GUICreate( _ "_WinAPI_CreateWindowEx - Demo", _ ; título de janela 400, 300, -1, -1, _ ; tamanho e Position de janela BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPCHILDREN), _ ; janelatile $WS_EX_WINDOWEDGE, _ ; extendido janelatile 0) ; Handle de Parent-janela ; cria um simples campo de entrada $hWndEdit = _WinAPI_CreateWindowEx( _ 0, _ ; extendido janelatile "EDIT", _ ; Name o Fensterklasse "Pressione <ENTER>", _ ; Text/título de janela BitOR($WS_TABSTOP, $WS_CHILD, $WS_BORDER, _ ; janelatile $WS_VISIBLE, $ES_LEFT, $ES_NOHIDESEL), _ 100, 80, 200, 22, _ ; Position e tamanho de janela $hWndMain, _ ; Handle de Parent-janela $IDC_EDIT, _ ; Identifizierer de (Kind-)janela $hInstance, _ ; Instanzhandle de Moduls 0) ; aplicação definida valor ; cri um simples TextLabel $hWndStatic = _WinAPI_CreateWindowEx( _ 0, _ ; extendido janelatile "STATIC", _ ; Name o Fensterklasse "Text", _ ; Text/título de janela BitOR($WS_TABSTOP, $WS_CHILD, $WS_VISIBLE, _ ; janelatile $SS_CENTER), _ 160, 140, 80, 18, _ ; Position e tamanho de janela $hWndMain, _ ; Handle de Parent-janela $IDC_STATIC, _ ; Identifizierer de (Kind-)janela $hInstance, _ ; Instanzhandle de Moduls 0) ; aplicação definida valor ; cria um simples botão $hWndButton = _WinAPI_CreateWindowEx( _ 0, _ ; extendido janelatile "BUTTON", _ ; Name o Fensterklasse "Text", _ ; Text/título de janela BitOR($WS_TABSTOP, $WS_VISIBLE, $WS_CHILD, _ ; janelatile $BS_DEFPUSHBUTTON), _ 160, 220, 80, 25, _ ; Position e tamanho de janela $hWndMain, _ ; Handle de Parent-janela $IDOK, _ ; Identifizierer de (Kind-)janela $hInstance, _ ; Instanzhandle de Moduls 0) ; aplicação definida valor ; registra a funão da Janela GUIRegisterMsg($WM_COMMAND, "MyWM_COMMAND") ; exibe a Janela _WinAPI_ShowWindow($hWndMain, @SW_SHOW) While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd EndFunc ;==>Example Func MyWM_COMMAND($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg Local $sMessage Switch _WinAPI_LoWord($wParam) Case $IDC_EDIT ; Nachrichten de Eingabefeldes Switch _WinAPI_HiWord($wParam) Case $EN_UPDATE ContinueCase Case $EN_CHANGE ConsoleWrite(_WinAPI_GetWindowText($lParam) & @CRLF) EndSwitch Case $IDOK $sMessage = StringFormat("o botão com o ID %d foi deprimido.", $IDOK) _WinAPI_MsgBox( _ BitOR($MB_OK, $MB_ICONASTERISK), _ "MyWM_COMMAND", _ $sMessage) EndSwitch Return $GUI_RUNDEFMSG EndFunc ;==>MyWM_COMMAND ;================================ End of File =================================
  42. 1 point
    Este tópico é para montarmos uma biblioteca básica para utilizarmos o AutoIt de uma forma mais comercial. Todas as funções aqui apresentadas são de uso e acesso livre a qualquer pessoa para qualquer utilização que desejar, independente de cobrança ou não. Traduzindo, se quiser usar o que tiver aqui para fazer um sistema e cobrar por ele, fique a vontade. Nosso intuito é divulgar e difundir o conhecimento, mas por favor, mantenha os créditos! As funções aqui presentes serão adequadas ao padrão internacional de formatação e documentação e portanto serão centralizadas, formatadas e liberadas na última versão disponível aqui neste post. Me comprometo a fazer este trabalho de ajustes e manter a biblioteca atualizada. Por favor, peço auxílio a todos na questão de padronização. Outro detalhe é que as funções, na medida do possível, sejam completamente independentes, ou se necessário acompanhadas de todos os includes e/ou fontes que sejam necessários à sua execução. A intenção é poder incorporar através de #include a Framework e poder utilizar qualquer função nela contida. Exemplo: #include "Framework.au3" OutPut(DT2EXT(_NowCalcDate())) Observar que o #include tem ASPAS (") e não os tradicionais <>. Porque disso? Para procurar o arquivo Framework.au3 na MESMA pasta onde está o nosso script principal. Se usarmos como #include <Framework.au3> Provavelmente vai dar errado porque o AutoIt procura o arquivo na pasta INCLUDE. Se quiser usar assim, lembre de copiar o arquivo para lá mas cuidado para não ficar com 2 cópias! Uma boa dica para obter os parâmetros de cada função, é pressionar CTRL-J com o mouse em cima da função! Versão 1.04 - padronizadas constantes de localização corrigida função TRUNC com resultados 0 (zero) Versão 1.03 colocado mais algumas validações de parâmetros substituídos comandos _ArrayAdd para aumentar a eficiência corrigido retorno de algumas funções (sempre setava @error) incluído as funções StringDifference e Trunc Versão 1.02 - corrigido cálculo da função PADC e incluído algumas funções para números Versão 1.01 - integradas as funções de string Versão 1.0 Funções até então: Name ..........: OUTPUT Description ...: Mostra mensagem usando ConsoleWrite ou MsgBox Example .......: OUTPUT("Isto é uma mensagem") Name ..........: DAY Description ...: Dia do mês de uma data específica Example .......: DAY(_NowCalcDate()) ; retorna o dia da data de hoje Name ..........: DOW Description ...: Dia da semana de uma data específica Example .......: DOW(_NowCalcDate()) ; retorna o dia da semana de hoje Name ..........: DOW2EXT Description ...: Extenso do dia da semana Example .......: DOWEXT(4) ; retorna "Quarta" DOWEXT(4, 3) ; retorna "Qua" DOWEXT(4, Default, Default, True) ; retorna "Quarta-feira" DOWEXT(4, Default, False, True) ; retorna "quarta-feira" Name ..........: EXT2DOW Description ...: Dia da Semana de acordo com o extenso Example .......: EXT2DOW("Quarta") ; retorna 4 EXT2DOW("Dom") ; retorna 1 EXT2DOW("Sexta-feira") ; retorna 6 Name ..........: MONTH Description ...: Mês de uma data específica Example .......: MONTH(_NowCalcDate()) ; retorna o mês da data de hoje Name ..........: MONTH2EXT Description ...: Mês por extenso Example .......: MONTH2EXT(2) ; retorna Fevereiro MONTH2EXT(8) ; retorna Agosto Name ..........: EXT2MONTH Description ...: Mês de acordo com o extenso Example .......: EXT2MONTH("Março") ; retorna 3 EXT2MONTH("Set") ; retorna 9 Name ..........: YEAR Description ...: Ano de uma data específica Example .......: YEAR(_NowCalcDate()) ; retorna o ano da data de hoje Name ..........: DT2EXP Description ...: Expande a data para o formato dd/MMM/yyyy Example .......: DT2EXP(_NowCalcDate()) ; retorna 12/Dez/2017 Name ..........: DT2EXT Description ...: Extenso de uma data Example .......: DT2EXT(_NowCalcDate()) ; retorna Terça, 12 de Dezembro de 2017 DT2EXT(_NowCalcDate(), False) ; retorna 12 de Dezembro de 2017 Name ..........: VIRA_DATA Description ...: Inverte o formato de data de ddmmyyyy para yyymmdd ou vice-versa com ou sem separadores Example .......: VIRA_DATA("25/06/2017") ; retorna 2017/06/25 Name ..........: SPACE Description ...: Retorna string com uma quantidade determinada de espaços Example .......: SPACE(30) ; retorna " " Name ..........: LIMPA_ESPACO_DUPLO Description ...: Elimina os espaços duplos dentro de uma string Example .......: LIMPA_ESPACO_DUPLO(" Este é um exemplo ") ; retorna " Este é um exemplo " Name ..........: LTRIM Description ...: Elimina os espaços ANTES do texto, pode escolher qual caracter será limpo Example .......: LTRIM(" Este é um exemplo ") ; retorna "Este é um exemplo " Name ..........: RTRIM Example .......: RTRIM(" Este é um exemplo ") ; retorna " Este é um exemplo" Name ..........: ALLTRIM Description ...: Elimina os espaços ANTES e DEPOIS do texto, pode escolher qual caracter será limpo Example .......: ALLTRIM(" Este é um exemplo ") ; retorna "Este é um exemplo" Name ..........: PADR Description ...: Completa uma string com espaços NO FINAL até uma determinada quantidade Example .......: PADR("ABCDE", 10) ; retorna "ABCDE " PADR("ABCDE", 3) ; retorna "ABCDE" Name ..........: PADL Description ...: Completa uma string com espaços NO COMEÇO até uma determinada quantidade Example .......: PADL("ABCDE", 10) ; retorna " ABCDE" PADL("ABCDE", 3) ; retorna "ABCDE" Name ..........: PADC Description ...: Completa uma string com espaços NO COMEÇO e NO FINAL até uma determinada quantidade centralizando o texto dentro da string Example .......: PADC("ABCDE", 11) ; retorna " ABCDE " PADC("ABCDE", 3) ; retorna "ABCDE" Name ..........: FATORIAL Description ...: Fatorial de um número Example .......: FATORIAL(5) ; retorna 120 Name ..........: STRZERO Description ...: Completa com zeros à esquerda dos números Example .......: STRZERO(123, 5) ; retorna "00123" STRZERO(123, 7, 2) ; retorna "00123.00" Name ..........: NUMBERFORMAT Description ...: Formata um nro com separador de milhares e decimais Example .......: NUMBERFORMAT(12345, 0) ; retorna "12.345" NUMBERFORMAT(12345, 2) ; retorna "12.345,00" NUMBERFORMAT(-12345, 0) ; retorna "-12.345" NUMBERFORMAT(-12345, 2) ; retorna "-12.345,00" NUMBERFORMAT(12345, 0, 15) ; retorna " 12.345" NUMBERFORMAT(12345, 2, 15) ; retorna " 12.345,00" NUMBERFORMAT(-12345, 0, 15, True) ; retorna " (12.345)" NUMBERFORMAT(-12345, 2, 15, True) ; retorna " (12.345,00)" Name ..........: MONEYFORMAT Description ...: Formata um nro com separador de milhares e decimais e inclue o símbolo da moeda no começo, R$ para Brasil Example .......: MONEYFORMAT(12345, 0) ; retorna "R$ 12.345" MONEYFORMAT(12345, 2) ; retorna "R$ 12.345,00" MONEYFORMAT(-12345, 0) ; retorna "R$ -12.345" MONEYFORMAT(-12345, 2) ; retorna "R$ -12.345,00" MONEYFORMAT(12345, 0, 15) ; retorna "R$ 12.345" MONEYFORMAT(12345, 2, 15) ; retorna "R$ 12.345,00" MONEYFORMAT(-12345, 0, 15, True) ; retorna "R$ (12.345)" MONEYFORMAT(-12345, 2, 15, True) ; retorna "R$ (12.345,00)" Name ..........: STRINGDIFFERENCE Description ...: Mostra a diferença entre duas strings Example .......: STRINGDIFFERENCE("abc", "abcde") ; return "de" STRINGDIFFERENCE("123456", "246") ; return "135" Name ..........: TRUNC Description ...: Trunca números (corta o nro desprezando as decimais) Example .......: TRUNC(1.238, 2) ; returns 1.23 Framework.au3
  43. 1 point
    Apresento esta UDF chamada BackEffect, (back = para trás, effect = efeito). Quando você cria um controle* com esta UDF é possível você adicionar um efeito para este controle. Que tipo de efeito? Ao deixar o mouse sobre o controle, você vai perceber uma caixa que irá mudando gradualmente da dor do background da janela para o verde. Posso personalizar a cor? Sim. O padrão da UDF é o verde, mas é possível definir qualquer outra cor. Posso personalizar o tamanho da borda do efeito? Sim. O default é 4. Como funciona? Quando você cria um controle* em uma GUI** a UDF lê o tamanho (largura e altura) do controle e cria um GUICtrlCreateLabel com um tamanho maior do que o seu controle (4 pontos maior, por default), e depois, posiciona esse controle por trás do controle principal. E no momento que o mouse é posicionado sobre o seu controle principal, a UDF vai suavemente alterando a cor GUICtrlCreateLabel posicionada atrás do controle até a cor definida (verde, por default). Ao retirar o mouse do controle principal, o processo inverso é realizado, isto é, a cor do GUICtrlCreateLabel vai suavemente do verde até a cor do background da GUI. Requisitos: A GUI criada necessita ter $WS_EX_COMPOSITED em seu $sStyle. Restrições: $WS_EX_COMPOSITED não funciona com GDIPLus+. *Controles: GUICtrlCreateLabel GUICtrlCreateButton GUICtrlCreateRadio GUICtrlCreateGroup GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateInput GUICtrlCreateList *GUI: Graphic User Interface ou simplesmente janela https://github.com/chechelaky/AutoIt/tree/master/BackEffect
  44. 1 point
    Muito bom odaylton, seja bem vindo a comunidade e espero que traga novas soluções para engrandecer o conhecimento de todos. Não tenho muito conhecimento de AutoIt, mas vou dar uma olhada no material que colocou e aprender um pouco mais. Fico feliz que tenha encontrado esse fórum, agora poderá contribuir melhor.
  45. 1 point
    Um exemplo de sisteminha de validação.
  46. 1 point
    Olha, isso não responde a sua pergunta, mas como não encontrei outra forma, vou deixar aqui como alternativa, até encontrarmos uma maneira melhor #include <Array.au3> ; Only required to display the arrays #include <File.au3> #include <MsgBoxConstants.au3> Example() Func Example() Local $sAutoItDir = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", Default, -1)),$sDrive = "", $sDir = "", $sFileName = "", $sExtension = "",$aPathSplit, $aArray If StringRight($sAutoItDir, 5) = "beta\" Then $sAutoItDir = StringTrimRight($sAutoItDir, 5) EndIf ConsoleWrite($sAutoItDir & @CRLF) $aArray = _FileListToArrayRec($sAutoItDir, "*.au3", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_NOPATH) For $vElement In $aArray $aPathSplit = _PathSplit($vElement, $sDrive, $sDir, $sFileName, $sExtension) ConsoleWrite($sFileName & @CRLF);somente o nome do arquivo Next EndFunc Obs: faz uns anos ai que trabalho com autoit então estou bem por fora dos codes kkkk
  47. 1 point
    @Sergio-F Não precisa mudar dentro da udf, apenas informe ao chamar a função "__BackEffectStart()". Func __BackEffectStart($hGui = 0, $iColorOver = 0x00FF00, $iDelay = 10, $iIncrement = 5) Informe no segundo parâmetro a cor desejada. Mas acho que está valendo também a tua sugestão e a incremento: - Na function "__BackEffectStart()" informar a espessura da borda que seria padrão para todos. - Na function "AddBack_Effect()" dar a possibilidade de informar uma cor em específica para o elemento.
×