Jump to content

Leaderboard


Popular Content

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

  1. 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
  2. 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
  3. 1 point
    estou reformulando um script que fecha um programa e abre outro mas quero fazer o seguinte escolher a tecla para fechar um e abrir outro e fechar o script em um arquivo.ini ou seja escolher no .ini as teclas que vou usar no programa,mas fiquei sem ideias alguém pode ajudar? CORRIGINDO CONSEGUI FAZER FUNCIONAR APENAS MUDEI PARA Const $read_comand2 = IniRead("MUSICBOX.ini", "PARAMETRO", "TECLA_TROCA", "") Const $read_comand3 = IniRead("MUSICBOX.ini", "PARAMETRO", "SAIR", "") SÓ LEMBRANDO O BELINI POSTOU ESSE SCRIPT HA UM TEMPO ATRÁS NO ARCADEBR EU SÓ DEI UMA MELHORADA NELE FileChangeDir(@ScriptDir) If Not FileExists("MUSICBOX.ini") Then;cria o ini caso não tenha ini     IniWrite("MUSICBOX.ini", "EXECUTAVEL1", "NOME", "");cria alocação boot e numero     IniWrite("MUSICBOX.ini", "EXECUTAVEL2", "NOME", "");cria alocação boot e numero     IniWrite("MUSICBOX.ini", "PARAMETRO", "PASTA", "");cria alocação boot e numero     IniWrite("MUSICBOX.ini", "PARAMETRO", "TECLA_TROCA", "");cria alocação boot e numero     IniWrite("MUSICBOX.ini", "PARAMETRO", "SAIR", "");cria alocação boot e numero endif CONST $read_comand2 = IniRead("MUSICBOX.ini", "PARAMETRO", "TECLA_TROCA", "") CONST $read_comand3 = IniRead("MUSICBOX.ini", "PARAMETRO", "SAIR", "") global $read_comand4 = IniRead("MUSICBOX.ini", "EXECUTAVEL1", "NOME", "") global $read_comand5 = IniRead("MUSICBOX.ini", "EXECUTAVEL2", "NOME", "") global $read_comand6 = IniRead("MUSICBOX.ini", "PARAMETRO", "PASTA", "") HotKeySet($read_comand2 ,"close_open"); instala a hotkey usando no .ini HotKeySet($read_comand3 ,"fecha_script"); instala a hotkey usando a tecla "F" ShellExecute($read_comand5, "", $read_comand6); mude o nome do programa e o endereço caso necessário ; rotina de loop que mantém o script aberto. While 1 sleep(200); dá um intervalo de 200 milisegundos wend func close_open(); troca o programa quando a tecla "X" for pressionada if ProcessExists($read_comand4) Then; verifica se o advmame esta aberto ProcessClose($read_comand4); fecha 1 e abre o 2 ShellExecute($read_comand5, "", $read_comand6); mude o nome do programa e o endereço caso necessário else ProcessClose($read_comand5); fecha o 2 e abre o 1 ShellExecute($read_comand4, "", $read_comand6); mude o nome do programa e o endereço caso necessário endif endfunc func fecha_script(); fecha o script  HotKeySet($read_comand2 ,"close_open"); remove a hotkey usando no .ini HotKeySet($read_comand3 ,"fecha_script"); remove a hotkey usando no .ini Exit; encerra o script endfunc
  4. 1 point
    Olá, Compartilhando um script de efeitos com direct3D9 usando a biblioteca au3Irrlicht2.au3 #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Res_Description=Background Sample #AutoIt3Wrapper_Res_Fileversion=1.0.0.0 #AutoIt3Wrapper_Res_ProductVersion=1.0.0.0 #AutoIt3Wrapper_Res_LegalCopyright=rcneto #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.5 Author: Rodrigo Chaves Script Function: Background Sample 07/2019 #ce ---------------------------------------------------------------------------- #include "au3Irrlicht2.au3" Opt("MustDeclareVars", True) HotKeySet("{ESC}", "_exit") Dim $camera Dim $cameraNode Dim $cloudTexture Dim $cloudNode Dim $aVector3Df[3] SplashTextOn('Background Sample', 'Por favor aguarde - Iniciando audio', 350, 110, -1, -1, 32) SoundPlay(@ScriptDir & '\Media\audio.mp3') Sleep(3000) SplashOff() _irrStart($irr_Edt_Direct3D9, 1024, 768, $irr_Bits_Per_Pixel_32, $irr_Windowed, $irr_Shadows, $irr_Ignore_Events, $irr_Vertical_Sync_On) _irrSetResizableWindow($irr_on) _irrSetWindowCaption("Background Sample / Pressione Esc para fechar") $cloudTexture = _irrGetTexture("media/cloud1.bmp") $cloudNode = _irrAddClouds($cloudTexture, 1, 1000, 3100) _irrSetNodeMaterialFlag($cloudNode, $irr_Emf_Fog_Enable, $irr_On) _irrSetNodePosition($cloudNode, 4000, 100, 4000) _irrAddRotationAnimator($cloudNode, 0.05, 0.08, 0.05) $camera = _irrAddCamera(0, 0, 0, 0, 0, 0) $cameraNode = $camera _irrSetNodePosition($cameraNode, 4000, 2000.7, 20000.9) _irrSetCameraFov($cameraNode, 1.55) _irrSetCameraClipDistance($camera, 12000) _irrSetAmbientLight(0.1, 0.1, 0.1) While _irrRunning() _irrBeginScene(130, 130, 255) $aVector3Df = _irrGetNodePosition($cameraNode) _irrDrawScene() _irrEndScene() WEnd _irrStop() Func _exit() _irrstop() Exit EndFunc https://www.youtube.com/watch?v=lo03F6CpXXc&feature=youtu.be O código fonte, biblioteca e arquivos de mídia estão no link abaixo https://1drv.ms/u/s!AnsPM67Cyv4XjJF_gnMKVuSCQdpdig?e=QM0aa8
  5. 1 point
    A explicação do @Manimal é completa. Apenas a título de curiosidade, existe uma mega-power-ultra-fodástica ferramenta, CyberArk, que atua no seguimento de segurança corporativo, fazendo a troca de senhas e muitas outras coisas... E a linguagem que faz todas as automações por trás do CyberArk é... Tharám... A-U-T-O-I-T! @Fui...
  6. 1 point
    Olá AleCruz. Esse acontecimento não é de agora. Esta discussão ocorre faz muitos anos e já rendeu muito "pano pra manga". Existe inclusive um tópico "eterno" no fórum americano sobre isso. Pode acessar aqui: Meus arquivos estão realmente infectados? = https://www.autoitscript.com/forum/topic/34658-are-my-autoit-exes-really-infected/ O que acontece é que o AutoIt é uma ferramenta fantástica e muito poderosa. Tão poderosa que vários criadores de vírus utilizaram (e ainda a utilizam) para criar malwares. Porém a maioria dos programadores em AutoIt, utilizam para fins corretos e funcionais. Mas como sempre, uma pequena quantidade de óleo, suja uma grande quantidade de água! Portanto, junte isso com a "preguiça" da indústria de antivírus de reconhecer este problema, gerou uma situação que estamos vivenciando. Para a indústria de antivirus, todo e qualquer executável de AutoIt é automaticamente marcado como malware. Alguns AVs são mais rigorosos, outros nem tanto. Na prática, nosso produtos decorrentes da compilação dos nosso scripts, são basicamente taxados de vírus! E não tem como resolver isto! Eu pessoalmente, trabalho profissionalmente com AutoIt fazem vários anos, inclusive com várias ferramentas e aplicativos no mercado e todo santo dia, é um pepino para explicar que meu programas não são vírus ou não estão infectados! Ainda mais que um dos meus mercados é o setor público, que fica difícil de achar alguém preparado. Outra ferramenta minha, de segurança digital, que previne e reconhece várias tentativas de acesso de vírus e malwares, sofre muito com o reconhecimento dela mesma como se fosse um malware. Fica muito difícil vc vender uma ferramenta de proteção que os próprios AVs identificam como vírus. Parece que quero enganar todo mundo! E dê-lhe explicação... E isto não ocorre apenas com o AutoIt, vários produtores menores de software (como eu), sofrem constantemente com o "falso positivo". Estes dias, li um post no site Sordum, que possui várias ferramentas interessantes, que a reclamação deles tbm existe. Outro exemplo é a RineSoft onde eles fazem o mesmo questionamento = https://www.rizonesoft.com/is-rizonesoft-software-safe/ Tem vários lugares para vc informar as empresas de AV que seu software é seguro, mas a resposta é lenta e na maioria, não resolve nada. Já tive vários chats e trocas de e-mail com empresas como Avast sobre isso, e a prepotência e arrogância deles é incrível. Outra estupidez é a própria M$ (Microsoft) com seu filtro "SmartScreen", desenvolvido para Windows 10, outra ferramenta além do Windows Defender. Para que seu software seja reconhecido como confiável, basta pagar! E assim por diante... Uma sugestão muito apreciada é vc assinar o seu software com um certificado digital confiável, e enviar uma cópia deste certificado para as empresas de AV para que os mesmos reconheçam seu sotware como seguro. Problemas: não garante nada depende do fabricante do AV em considerar sua empresa como idônea E é caro adquirir um certificado deste modelo aqui no Brasil. Lá fora é super-barato, cerca de U$ 90 por 3 anos. Aqui custa milhares de reais por 1 ano. Dependendo da empresa, isto é inviável. Neste último link da Rizone Software tbm tem uma lista de onde enviar seus softwares para análise dos AVs
  7. 1 point
    Olha um exemplo do _IsPressed. Talvez te ajude #include <Misc.au3> #include <MsgBoxConstants.au3> Local $hDLL = DllOpen("user32.dll"), $pressed = False While 1 Select Case _IsPressed("1B", $hDLL) ExitLoop Case _IsPressed("10", $hDLL) if Not $pressed Then ConsoleWrite("Shift pressionado!" & @CRLF) $pressed = True case Else $pressed = False EndSelect WEnd DllClose($hDLL)
  8. 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
  9. 1 point
    Foi sim e eu bem achando que eram os pulsos rápidos que estavam travando o programa e na verdade era o reboot do relé que travava o teclado e por isto ficava indicando que estava pressionado o tempo todo.
  10. 1 point
    Ahhh entendi.... (bost* nenhuma kkkk)
  11. 1 point
    Enfim resolvi o problema e não vai acreditar o que era, faltava o diodo IN4007 prá evitar reboot no relé e não tinha visto pois a placa do teclado e o relé ficam dentro de uma caixinha preta pensei que fosse o programa porque o noteiro que está nela é um BV20 que manda pulsos bem mais rápido que o BL700 e por mandar mais rápido os reboots são quase juntos por isto acontecia nele e não acontecia com o BL700.
  12. 1 point
    Legal Belini. Não me toquei da linguagem, estou tão acostumado com inglês que as vezes tenho que me policiar quando indico algo. Obrigado pela lembrança. E que bom que vc achou um outro site/app, que aliás parece muito bom. Comentei do Lotto Sorcerer, pois quando brinquei com análise combinatória uns tempos atrás, eu utilizei ele como base para conferência dos meus scripts. E achei bem legal o que ele fazia, porém era ainda na versão 6. Já está na 9.2. Deve ter mudado um monte! Muttley, eu acredito que ninguém conheça toda a potencialidade de nenhuma linguagem, até porque são muitos comandos e funções. E no AutoIt então? Sem falar nas trocentas funções de terceiros que existem aqui (fora outros locais): https://www.autoitscript.com/wiki/User_Defined_Functions
  13. 1 point
    @manimal achei complicado este derador que vc indicou e também não tem opção de linguagem nele prá colocar em português aí pesquisando encontrei um site que faz o que eu quero mas na versão gartuita gera no máximo 99 combinações prá gerar mais que isto tem que ser assinante veja: https://www.mestredaloteria.com/megasena/gerador.php
  14. 1 point
    _ArrayPermute, _ArrayCombinations... cada vez me surpreendo mais com autoit, quando acho que sei 0,5% da linguagem vcs veem com mais funções. kkkkkk
  15. 1 point
    Olá Everton. Como assim "definida formalmente"? O nome da linguagem é AutoIt, simples assim.
  16. 1 point
    Olá Manimal, poxa uma pena mesmo.. uma compilação efetiva com AutoIT seria o ideial, resolveria a questão da velocidade e dos decompiladores, mais infelizmente com certeza isso não irá acontecer.
  17. 1 point
    Manimal faço das suas palavras as minhas! o AutoIT hoje em dia é sem duvida uma excepcional ferramenta seja pra automação, criação de pequenos e complexos programas.. mas o que na minha opinião poderia ser melhorado é a velocidade te interpretação do código, ou a utilização de Multithreading que já resolveria esta questão também..
  18. 1 point
    Olá Odaylton. Realmente o AutoIt Debugger é muito interessante. Os conceitos de projeto, trabalhar com vários fontes, um debugger integrado à IDE fazem parte da maioria dos ambientes de programação de linguagens mais conhecidas por aí. O fato de ter sido descontinuado não é problema, pois ainda funciona perfeitamente na atual versão do AutoIt. Futuramente? Vamos ver... Minha opinião pessoal é que apesar dos recursos, não me adaptei com ele, mas isto é uma questão de gosto mesmo. Fico um pouco chateado com os desenvolvedores originais, que são fantásticos, mas tem uma visão incorreta de sua própria criação! O AutoIt já foi uma mera ferramenta de automação ou de produção de pequenos scripts e tal, mas hoje sua complexidade e abundância de recursos exige um tratamento bem mais profissional, com uma IDE apropriada, compilação efetiva (para eliminar os problemas de direitos autorais), uma interface para produção de janelas e relatórios, etc... Hoje o AutoIt é uma linguagem madura, sem nada a dever para as outras, mas está sendo mantida em segundo plano por conta desta visão tacanha. É uma pena.
  19. 1 point
    Controle da porta paralela 12 pinos PP-CONTROL
  20. 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
  21. 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
  22. 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.
×