Jump to content

Manimal

Administradores (Adm)
  • Content count

    539
  • Joined

  • Last visited

  • Days Won

    69

Manimal last won the day on March 12

Manimal had the most liked content!

Community Reputation

175 Ótimo

2 Followers

About Manimal

  • Rank
    Membro Avançado
  • Birthday 09/06/1967

Profile Information

  • Gender
    Male
  • Location
    Videira/SC
  1. Receber dados no pc via Bluetooth

    Olá @mutleey. Pois eu acho que isso nós conseguimos trabalhar!!! Muito boa a ideia.
  2. Receber dados no pc via Bluetooth

    Olá. @mutleey nem esquenta. Meu comentário foi no sentido de que o formato Bluetooth foi desenvolvido já pensando nesta questão do pareamento obrigatório por motivos de segurança. E eu estava apenas apresentando uma seqüência cronológica dos modelos de segurança de rede. Do totalmente aberto até o atual padrão. No seu caso, a caixinha xing-ling tbm exige o pareamento. A função senha é quando vc precisa conectar "manualmente" ao dispositivo. A conexão automática (sem senha) é o pareamento por hardware. Vou usar o exemplo da Wi-fi. É a coisa mais normal do mundo vc chegar em um lugar e para conectar na wi-fi, vc pedir a senha e pronto. Mas poucas pessoas percebem que os modens atuais já permitem o pareamento por hardware tbm, que é o protocolo WPS. Se vc procurar no seu modem/roteador, deve ter um botào WPS (Wi-Fi Protected Setup) que é basicamente a mesma coisa do Bluetooth, ou seja, vc aperta ele e o celular se conecta na rede wi-fi sem a necessidade de informar a senha. Este sistema foi desenvolvido om base no conceito do acesso físico, que eu falei no meu outro post). Se, em teoria, a pessoa tem acesso físico ao roteador, por exemplo então ele já estaria "pré-autorizado" a se conectar, visto que este roteador não está na vitrine, por assim dizer. Portanto, em qualquer situação de pareamento é necessário que uma das partes, normalmente a qual vc deseja se conectar e que vc precisa ter acesso físico (apertar o botão na caxinha xing-ling, por exemplo) para permitir o acesso. Considerando que são 2 (duas) partes e que uma sempre está em "espera" (passivo, caixinha de som) e a outra em "pesquisa" (ativo, celular) sempre vai haver uma exigência de pareamento. No nosso caso em termos de software a vantagem é que podemos ativar o pareamento via script do dong no computador, mas acho que vai depender do outro dispositivo tbm ativar o dispositivo para efetivar o pareamento. Depois disso é só curtir! Em termos de tecnologia ou conhecimento necessário para isso, acredito que os hardwares já estão prontos para isso, tanto o pareamento como a comunicação, e nós só precisamos aprender como acessar o outro dispositivo em um nível mais de recurso mesmo. Digo isso, combatendo a minha vontade de de saber como funciona em baixo nível. Na prática, vai ser como copiar um arquivo de um ponto a outro pela rede, concordam? Agora se esta rede é LAN, WAN, IP, Bluetooth, Netbios ou o que for, não nos importa.
  3. Receber dados no pc via Bluetooth

    Olá. O pareamento, como todos já sabem, é uma barreira que existe por questões de segurança, para que nenhum equipamento possa se conectar com outro e ter acesso aos seus recursos sem pelos menos uma autorização. Estamos acostumados a conectar em redes ponto-a-ponto sem muita firula (nossas redes normais do dia-a-dia entre computadores) e achamos estranho que haja necessidade de "confirmação" para poder se juntar a uma rede protegida. Porém este comportamento deve-se a alguns fatores que originalmente (em rede P2P) nós ignorávamos. Por exemplo, até hoje, para poder conectar em uma rede é necessário uma estrutura física (como cabo de rede, acesso ao hub/switch, etc) e eventualmente alguma configuração. Partindo deste princípio, qual o sentido de "impedir" o acesso de quem teve todo este trabalho para conectar? Mas quando gradualmente fomos migrando para redes wi-fi, onde a conexão já não depende mais de cabeamento, ou seja, basta "estar na área" de cobertura daquele wi-fi e já podemos nos conectar. Daí surgiu a necesidade de termos a "senha" do wi-fi (início dos procedimentos de segurança), onde em teoria, há pelo menos alguém que passa a senha, que faz o trabalho (ou deveria) de permissão para se juntar na rede. O que a maioria não percebeu (e ainda não percebe) é que apenas as senhas de wi-fi não bastam para dar segurança à rede. É muito comum atualmente, encontrarmos em trocentas redes abertas, a maioria nos estabelecimentos comerciais ou de serviços (médicos, dentistas, etc) onde a senha é visível (placas, facebook) e estas redes estão permitindo a todos que nela se conectem poderem utilizar quaisquer recursos desta mesma rede, ou seja, qualquer pessoa com um celular pode acessar os documentos, impresoras e quaisquer outros recursos que a rede disponha. Eu pessoalmente utilizo desta artimanha para vender meus serviços em muitos consultórios médicos e lojas, demonstrando a facilidade do vazamento de dados e informaçòes condifenciais. A maioria destes clientes (99%) não tem noção que a rede deles está completamente aberta! Claro que ao mesmo tempo, por outro lado, são pouquíssimas pessoas que detém o conhecimento para fuçar na rede (por exemplo nós aqui do fórum ou qualquer outro programador). A maioria das pessoas que se conectam pela senha do wi-fi nas redes comenricais que existem hoje é para poder utilizar a internet mesmo. Já com o advento das redes "remotas", onde o usuário pode se conectar na rede interna (intranet) através da rede externa (internet), começaram a surgir procedimentos, protocolos e programas para "limitar" esta conexão, como VPNs e autorização de conexão (protocolo de confiança), muito utilzado até mesmo em redes internas através do Active Directory. Ou seja, o procedimento de autorizar um equipamento a ter acesso à rede (ou a outro equipamento) não é novidade. E agora neste mundo completamente w-fi então... Agora imagina a zona que seria se qualquer telefone se conectasse com qualquer outro através do Bluetooth e poderia ter acesso a qualquer informação, foto e vídeo que tiver no telefone alheio. E se alguém estivesse fuçando no seu telefone? Quais segredos e nudes acharia? kkkkk Mas vamos conversar mais, também me interessa essa questão de usar o Bluetooth para conectar e conversar entre dispositivos. Parabéns pela iniciativa, Belini.
  4. Dicas e truques

    Agora vou falar sobre alguns programas externos que eu uso diariamente, que me ajudam um monte ao fazer minhas tarefas. 1) WInMerge = https://winmerge.org/ O WinMerge é um comparador de arquivos. Sua principal função é comparar arquivos estilo TXT (como scripts) e mostrar as diferenças entre eles. Serve também para quaisquer outros tipos de arquivos, mas nos arquivos estilo TXT é que ele mostra sua força. Quer comparar 2 fontes? Quer comparar 2 arqs INI? Quer comparar sei lá o que? WinMerge te ajuda. Ele mostra linha a linha as diferenças e ainda permite que vc copie de um lado para outro se vc quiser. Compara até pastas, informando quais arquivos são iguais e quais são diferentes. E quando vc escolhe um arquivo, ele detalha como expliquei acima. 2) GrepWin = https://tools.stefankueng.com/grepWin.html Para efetuar pesquisas dentro dos arquivos, o GrepWin é fantástico. Eu uso muito para encontrar referências dentro dos scripts da pasta Include por exemplo, mas ele serve para qualquer tipo de pesquisa. É só clicar com o botão direito na pasta que vc quer procurar e informar o que procurar que ele sai vasculhando. Tem pesquisa Regex, mostra os arquivos e trechos onde achou o item pesquisado e até mesmo pode ser usado para REPLACE. 3) Everything = https://www.voidtools.com/ Sabe aquele search de arquivos do Windows que leva uma eternidade para localizar o que vc quer? Mande pro inferno... O Everything é extremamente rápido e encontra tudo que vc quiser em questão de segundos (se não antes). Precisa procurar um arquivo pelo nome? Mesmo parcial? Não sabe qual pasta ele está? Vc sabe quantos arquivos .MP3 vc tem? Ou .JPG? A medida que vc vai digitando os nomes na barra de pesquisa, ele vai filtrando os resultados. Por exemplo: .PDF - mostra todos os PDFs que tem na máquina .PDF jorge - mostra todos os PDFs que tem o nome jorge (em qualquer llugar do nome) .PDF jorge contratos\ - mostra todos os PDFs com o nome jorge na pasta contratos E assim por diante. Com os recursos de AND, OR e NOT, vc tem um poderoso procurador de arquivos instantâneo! Outro ponto positivo, no português brasil, é que ele ignora acentos e cedilha. Assim ao procurar "declaracao" ele acha "declaração" tbm!! Mesmo assim, para procurar DENTRO dos arquivos, ainda recomendo o GrepWin ou o FileSearchy (como 2a opção). 4) Ditto = https://ditto-cp.sourceforge.io/ Um gereciador de clipboard. Não sabe o que é isso? Lembra do copia-e-cola? CTRL-C e CTRL-V que usamos diariamente? Pois é, pense nisso como um turbinador dessa função. Com o Ditto, vc pode guardar até os últimos 500 recortes. Sabe quando vc copiou um trecho de alguma coisa e entre uma coisa e outra ao colar, colou outra coisa que vc copiou nesse meio tempo? Pois é. Com o Ditto, vc pode recuperar o que foi copiado, sem precisar copiar de novo! Nunca pensei que usaria um destes. Até fui muito resistente a instalar este programa. Hoje não vivo mais sem ele! Não muda nada no CTRL-C e CTRL-V normal, mas facilmente vc pode olhar, selecionar e até pesquisar os últimos CTRL-C que foram feitos e o melhor, reaproveitá-los! Hoje eu uso para salvar senhas da repetição, códigos, informações que posso usar depois. É muito prático. E daí O que acharam? Tem outras recomendações? Eu uso mais uma penca de aplicativos aqui... Inclusive vários eu cobro para instalar/configurar para os meus colegas advogados (hehehehe)
  5. Olá. Para o SO (sistema operacional), um arquivo precisa se encaixar nas definições de um programa executável quando: termina com a extensão .COM ou .EXE ou .BAT (arquivo auxiliar) ou .CMD (arquivo auxiliar mais novo) ou qualquer outra reconhecida pelo SO obedece alguns critérios técnicos (como identificação do PE, Data table definida, etc) específico para cada tipo de arquivo existem prerrogativas de segurança para executar o arquivo (usuário, regras, controle de domínio, etc) Finalmente se todas estes pré-requisitos forem observados, o arquivo será executado, ou seja, é carregado na memória e transferido o controle à primeira instrução dele. Portanto, o arquivo executável é exatamente como outro arquivo qualquer dentro do computador, seja ele uma foto, uma música, um vídeo, um documento... A única diferença que existe é que em vez de ser um arquivo tipo secundário (que precisa de um outro programa para utlizar), ele pode ser uma extensão (nativa ou não) do SO. Infelizmente aqui no Brasil, nossos procedimentos de segurança não são lá grande coisa e por uma questão cultural nos acostumamos a ser sempre o proprietário, dono e senhor do computador e seus programas, inclusive o SO. Isto inclusive explica a nossa resistência, enquando sociedade a não pagar pelos programas que utilizamos. Fica difícil se preocupar com se nossos scripts serão ou não copiados ou descompilados, numa clara preocupação com nossos direitos autorais, aprendizado e esforços, porém na maioria dos casos, desrespeitamos os direitos autorais dos outros sem discriminação, ao piratear um Windows, um Office ou qualquer outro software do mercado. Mas, tirando esta questão da frente e nos focando no problema em questão, a trava no executável (se houvesse), deveria ser de responsabilidade que quem o criou e não do SO. O próprio programa, poderia em sua inicialização, deveria fazer um auto-diagnóstico e caso se identifique identificado, se auto-encerra. Porém esta abordagem traz algumas dificuldades técnicas: muitos desenvolvedores não se preocupariam com este auto-diagnóstico (preguiça) a verificação só pode acontecer com um código de segurança, checksum por exemplo, se este mesmo checksum for externo, pois não há como inserir um checksum no meu próprio programa sem alterar o valor do próprio checksum. Se fosse um checksum parcial, abre uma brecha para modificação, daí não serve (impossibildade técnica) finamente, se o programa se auto-diagnosticar como infectado, mesmo que ele auto-encerre, o objetico do vírus já foi alcançado, pois o vírus vem antes do programa, então no momento que o programa se verifica bichado, é porque o vírus já foi para a memória (atraso) A partir daí, para evitar esta situação, seria necessário que o SO fizesse uma verificação antes de carregar o programa, que aliás isto não é tarefa dele (SO), mas do sistema de segurança (AVs). Assim mostramos que mesmo que haja um mecanismo de auto-bloqueio, ele seria inútil por parte do desenvolvedor. E confiar em um software de segurança, por melhor que ele seja, sempre haverá exceções, falhas, janelas de reconhecimento, etc, ou seja, não há como evitar uma virose surja e se instale. Porém podemos e devemos tomar algumas medidas protetivas que não só protegem os programas mas também o ambiente que trabalham (SO): manter nosso SO atualizado, limpo e não corrompido usar programas de segurança confiáveis e comprovadamente eficazes (ou no mínimo que sejam menos furados!!!!) utilizar softwares somente de fontes confiáveis ou verificáveis (quase impossível) utilizar as prerrogativas de segurança do próprio SO, como usuários limitados e restrições de segurança de arquivos bloquear os arquivos executáveis para serem apenas lidos e/ou executados mas nunca gravados ou modificados (com restrições de gravação e não atributo RO) aceitar as restrições De qualquer maneira, depende muito mais do usuário (e das configurações aplicadas no computador) do que propriamente do desenvolvedor. E mesmo assim, existe a possibildade de uma infecção acontecer devido a fatores ainda desconhecidos. Posso citar aqui como exemplos: erro do caminho da DLL: ao fazer a chamada a uma DLL (coisa comum em programas), foi descoberto que havia um erro na chamada do SO e se houvesse uma DLL com o mesmo nome na mesma pasta do programa, esta seria chamada em detrimento à DLL original pretendida modificação do processo de carregamento: muito utilizado pelos vírus envelopadores ou até mesmo os teimosos mesmo, resulta de uma modificação do mecanismo de chamada do executável (por exemplo mudança no registro) de tal forma que quando qualquer executável seja chamado, uma nova cópia do vírus é executada antes do programa original injeção de DLL ou SQL: quando um malware se auto-coloca em uma seção de memória de um programa conhecido, de tal forma que o programa original ao chamar esta porção de código, execute o vírus e tem mais trocentos exemplos... Como disse o @mutleey, as instruções são inseridas em código de máquina e a qualquer momento possível onde haja uma brecha para tal. A última ideia do @Belini é a mais correta de se usar atualmente, porém demanda que o usuário aceite as restrições impostas a ele para sua própria proteção, o que culturalmente nunca vai ocorrer por livre e espontâna vontade. Veja o caso que estamos falando onde o usuário não usa o AV porque não deia ele trabalhar. O problema é tão grande que ele (usuário) não percebe o absurdo da situação e ainda reclama do AV, que está tentando ajudar. Finalmente, tem vários softwares de segurança que ao fazerem a varredura, montam seus próprios checksum (CRC) para identificarem quando houve alterações nos programas e a partir daí, conseguirem bloquear as infecções futuras. Porém o mesmo remédio que ajuda, também atrapalha, pois mudanças legítimas nos progamas (versões novas por exemplo) não são aceitas. E se o software perguntar se houve uma alteração e se o usuário confirma a modificação (até para substituir pelo novo checksum), é o espaço de abertura necessário para um malware se instalar, e por onde passa boi, passa boiada!!!! Mas e o que vc acham? Teríamos como poteger mais nosso sistemas (progs e SO)???
  6. @Belini Em teoria, vc deixar o arquivo sem extensão poderia ser uma solução no seu caso, onde os programas são chamados por você através do Run. Em termos genéricos não resolve o problema dele. Mas isso pode depender de onde o vírus fez seu gatilho, se na chave do registro do arquivo tipo .EXE ou na chamada de execução do SO para eecutáveis. Se for no registro, este método resolve. Mas é inacreditável que um cara esteja tão "sujo" que não percebe a situação ridícula que se colocou, a ponto do AV "não deixar ele trabalhar"! Caramba! @mutleey A ideia é boa, eu mesmo utilizo em alguns clients esta mesma técnica, mas o ideal é desativar o autorun geral, pois caso algun pendrive estranho (ou sem a pasta) apareça, daí recomeça o ciclo de infecção. Uma outra técnica que existe, quando vc não quer ativar o autorun para um determinado dispositivo (pendrive ou HD) é segurar o SHIFT enquanto espeta o dispositivo. Mantendo o SHIFT pressionado diz pro SO não ativar o autorun para aquele dispositivo. Segue um arquivo de registro que eu uso para desativar os autorun de todos os drives. AutoPlay for all drives - Disable.reg
  7. Olá. Exatamente pelo mesmo motivo que vc não consegue sobrepor os arqs que vc quer descompactar, pois estão em uso. Vc até pode mandar um HD limpo para seu cliente, mas avise ele que: Tenha um antivírus atualizado, qualquer um, pode até ser o Avast mesmo (arghhh) Limpe os pendrives Se estiver na rede, tem que desinfectar a rede também Enquanto ele não fizer isto, continuará a ser reinfectado eternamente (e mais 6 meses depois - dizia um colega meu de faculdade kkk) Mas ambos os vírus que vc citou são bem antigos. Qualquer AV de hoje pega e elimina antes de dar problema. O Sality é o mais chato, porque é um envelopador, o outro é apenas um keylogger. Provavelmente o Sality deve estar em algum programa que ele utiliza que não está no HD que vc mandou ou até mesmo em um pendrive infectado, portanto começe desativando o AUTORUN das mídias removíveis. Isto ajuda bastante. Para identificar o arquivo zero, tem que varrer TODOS os HD e mídias removíveis, até mesmo CD's que podem ser sido infectados previamente à gravação. Como esta é a minha linha principal de trabalho, sei que este tipo de vírus é muito chato de remover, pois o cliente sempre tem um arquivo infectado em algum lugar que depois reinfecta tudo novamente! É um saco mesmo. Boa sorte!
  8. Olá Belini. Suponho que vc está fazendo um backup (zipado) dos arquivos executáveis para alguma eventual contaminação por vírus, principalmente dos envelopadores, correto? Não concordo com sua estratégia porque vc estaria resolvendo a consequência e não a causa! E se realmente houver um vírus, mesmo que a cada nova geração de arquivos limpos seja extraída, eles serão novamente reinfectados gerando um loop, ou pior, um dead lock! Mesmo assim, estou recomendando uma biblioteca de compactação para utilizar para decompactar os seus arquivos. Acredito que vc já tenha utilizado (ou conheça) esta, mas foi a melhor que encontrei até agora, com uma taxa de compressão muito boa e bem simples de utilizar. É a que eu uso nos meus projetos. O único problema é que é necessário enviar uma DLL junto para que o processo possa ocorrer. E para contornar este problema, eu utilizo com o FileInstall. Segue o link do fórum americano porque por algum motivo não estou conseguindo anexar a LIB na resposta (https://www.autoitscript.com/forum/topic/85094-7zip/). Voltando ao problema original que vc descreveu, que é a confirmação da sobregravação dos arquivo EM USO, eu diria que é impossível. É exatamente por este motivo que o próprio Windows pede para reiniciar, pois ele não consegue nem sobrepor os próprios arquivos que estão em uso, portanto não teria como fazer isto diretamente. Porém uma alternativa (sem considerar reiniciar a máquina), seria a de utilizar um terceiro programa (ou helper) para efetuar esta tarefa. Este helper pode ser um programa especialmente criado para isto ou uma cópia do próprio programa inicializado especificamente para este fim (minha técnica preferida). De qualquer maneira é preciso um programa externo. Isto SE os arquivos (executáveis ou não) estiverem em uso. E finalmente, caso a mensagem de sobreposição não seja mostrada (ou ignorada) e o arquivo não seja sobreposto (dá erro mas não mostra isso), vc não resolverá o problema, visto que o arquivo infectado não seria sobreposto e continuaria sujo, ou seja, de volta ao início!
  9. Dicas e truques

    2) O outro aquivo a ser modificado, se quiser, é o arquivo das Abreviações. Abreviações, para quem não conhece é uma maneira bem legal de facilitar a codificação, pois reduz bastante a digitação (e obviamente os erros) por aceitar atalhos. Funciona mais ou menos assim, vc está escrevendo o código e vc vai fazer um ConsoleWrite, daí em vez de digitar o comando inteiro, vc digita cw e pressiona Ctrl B E o editor "escreve" o comando inteiro e ainda coloca um @CRLF no final, ou seja, faz o trabalho por vc. Mamão com açúcar. Existem "trocentas" abreviações. Tbm não tem como saber tudo e nem precisa, mas pelo menos algumas são obrigatórias (como o CW, por exemplo). Outra que gosto muito é o incl, depois Ctrl B, e vc sai digitando o nome do arquivo de include que vai sendo preenchido o nome correto e vc encerra com Enter!!! Para conhecer as abreviações olhem o arquivo "C:\Program Files (x86)\AutoIt3\SciTE\au3abbrev.properties", ou entrem no SciTe, menu Options, opção Open Abbreviations File, mas se precisarem editar para criar novas abreviações usem a Menu Options, opção Open au3UserAbbrev.properties, porque se vcs editarem o arquivo principal, ao atualizarem o SciTe, as alterações serão perdidas, então trabalhem sempre nos arquivos tipo USER. Vc pode criar quantas abreviações quiser com quaisquer combinações malucas de letras, desde que não conflitem com as originais, claro. Um detalhe interessante ao criar/editar abreviações é que o I (pipe) é a posição onde o cursor vai ficar após o Ctrl B, ou seja vc mesmo coloca o cursor onde ele deve ficar. Tipo (exemplo meu): cw[=ConsoleWrite("[" & | & "]" & @CRLF) Neste caso, ao digitar cw[ e pressionar Ctrl B, vai escrever todo o comando do ConsoleWrite, e deixar o cursor exatamente no local para inserir uma variável! Isto é muito legal! outro exemplo: ""=" & | & " Aqui, após o Ctrl B, as aspas duplas são subtituídas por abre e fecha string e deixa no local para continuar o código. Depois que vc acostuma com isso, é muito mais rápido de trabalhar e ajuda "paracamba"! Mudando um pouco, acredito que todos utilizem o recurso de hint, até porque ele está ativo por default. O recurso de hint é aquele que ao escrever uma função do AutoIt, ele apresenta os parâmetros que vc deve preencher, inclusive acompanhando a medida que vc os escreve. E para aquele que não conhecem (acho difícil), pressionar F1 em um comando ou função qualquer do AutoIt, abre o Help focalizado nesta função, o que é bem útil em algumas situações! Alguém aí tem mais alguma dica?
  10. Dicas e truques

    Olá. Dando sequência na ideia de customizar o SciTe, para fazê-lo basta editar os arqs de configuração. Isto pode ser feito de dentro do editor, pelo menu Option e selecionando o arquivo a ser modificado, Ou editando estes mesmos arquivos externamente através do bloco de notas (ou similar). Porém se fizer isso, recomendo que o SciTe esteja fechado para evitar que as alterações não sejam gravadas ou sejam sobregravadas quando o SciTe fechar. De qualquer maneira, editando estes arquivos (e quaisquer outros) pode aumentar o seu controle sobre o SciTe e deixar o seu ambiente de trabalho mais amigável. Vamos aos arquivos: 1) Menu Options / Open User Options File, ou externamente edite o arquivo "C:\Program Files (x86)\AutoIt3\SciTE\SciTEUser.properties" Este arquivo controle várias configurações do SciTe, em particular algumas das mais interessantes como: highlight.current.word=1 => para realçar a palavra onde está o cursor e podermos visualmente identificar as iguais no resto do código. Dica: quando fizer isto, normalmente mostra somente na tela as palavras iguais. No momento que vc move o cursor, vai selecionar outra palavra. A dica aqui é usar o botão do meio do mouse para rolar e ver as demais coincidências no resto do script highlight.current.word.minlength=3 => identifica qual o mínimo de letras para realçar uma palavra use.tabs=0 => para escolher entre tabulação ou espaço nas identações. Pessoalmente prefiro espaços, ou seja, quando eu aperto o TAB o SciTe insere x espaços a cada TAB. Para usar o TAB mesmo, coloque use.tabs=1 tabsize=3 => para escolher quantos espaços serão inseridos a cada TAB indent.size=3 => para escolher quantos espaços serão inseridos a cada nova linha para manter a identação highlight.current.word.stoponspace=0 => quando vc seleciona com o Shift uma quantidade maior do que uma palavra, tbm funciona o realce, porém ao chegar no primeiro espaço, para de realçar. Com esta opção, não para. Eu acho ótimo para comparar visualmente 2 linhas de código, pois ao marcar com o Shift, vai mostrando se a outra linha está igual. As vezes, uma pequena diferença como um apóstrofe é ruim de ver, mas no realce é fécil de ver. Tbm para mexer nas cores do editor, mexa nas seguintes configurações #Background -> style.au3.32=style.*.32=$(font.base),back:#F0F4F9 # CaretLineBackground -> caret.line.back= # Brace highlight -> style.au3.34= # Brace incomplete highlight -> style.au3.35= # White space -> style.au3.0= # Comment line -> style.au3.1= # Comment block -> style.au3.2= # Number -> style.au3.3= # Function -> style.au3.4= # Keyword -> style.au3.5= # Macro -> style.au3.6= # String -> style.au3.7= # Operator -> style.au3.8= # Variable -> style.au3.9= # Sent keys -> style.au3.10= # Pre=Processor -> style.au3.11= # Special -> style.au3.12= # Abbrev=Expand -> style.au3.13= # Com Objects -> style.au3.14= # Standard UDF's -> style.au3.15= As minhas cores são basicamente o padrão, porém eu gosto de usar uma cor amarela para realçar a linha atual que estou trabalhando. Então eu mexi na linha caret.line.back=#FFFA2B Se fizer isto por detro do prório editor, ao pressionar Ctrl S para salvar, a mudança aparece na hora. Para ajudar a selecionar cores e os seus códigos eu recomendo 2 sites, onde vc pode selecionar as cores e copiar o código hexa ou informar o código hexa e ver a cor desejada: https://www.colorschemer.com/color-picker/ https://www.rapidtables.com/web/color/RGB_Color.html
  11. Dicas e truques

    Olá. Vc sabia que o SciTe é um baita editor (para AutoIt, pelo menos)? Claro que tem outros como o Sublime ou até mesmo o EditpadLite. Sem falar nos específicos, como o ISN Auto Studio. Mas vamos nos ater ao SciTe, por enquanto. As vezes, usamos só o básico por desconhecimento das funções mais "cabeludas", mas igualmente interessantes. E tbm, com um pouco de ajustes, vc pode personalizar mais ainda o SciTe. Minha sugestão é começar baixando o SciTe atualizado aqui => https://www.autoitscript.com/site/autoit-script-editor/downloads/ O SciTe é uma versão do editor Scintilla, especificamente ajustado para o AutoIt (ambos freeware). O Scintilla/SciTe está na versão 4.3 e o mais atualizado para o AutoIt é a versão 4.2. Sempre tem melhorias e mudanças, por isso recomendo volta e meia, dar uma olhadinha para ver se tem alguma versão mais atualizada. Ao baixar e instalar o SciTe atualizado (v4.2), ainda podemos fazer mais alguns ajustes finos nele. Recursos que eu uso com frequência: Abreviações (excelentes) Duplicar uma linha ou um bloco mais fácil do que usar o Ctrl C e Ctrl V é pressionar Ctrl D Localizador de funções = Alt L Para pular direto para a função = com o cursor na função digite Ctrl J e vai pra função, pode mexer à vontade daí Ctrl Shift J volta pro ponto anterior (muito bom). Serve inclusive para as funções internas do AutoIt (para tirar alguma dúvida ou apenas para estudo mesmo) Bookmarks = marca pontos no script e permite ir e voltar para eles rapidamente. Ctrl F2 para criar um bookmark e apenas F2 para trocar entre eles. Pode criar quantos quiser. Só existe enquanto não fechar o editor. Para abrir um include rapidamente = vá a té a linha do include e pressione Alt I (alt i) Em scripts grandes, clique no menu View e depois em Toogle All Folds, para "encolher" todas as funções. Faça novamente para "abrir" tudo de novo. Muito útil para navegar para cima e para baixo. Se quiser "encolher" manualmente cada bloco de código (pode ser uma função, um IF, um FOR, um WHILE, várias linhas de comentários, etc) pressione o + (sinal de mais) do bloco numérico. Pressionando novamente, "abre" o bloco Para comentar/descomentar linhas de código pressione o - (sinal de menos) do bloco numérico. Serve para a linha atual, não importa onde está o cursor. Se quiser fazer com várias linhas, marque as linhas e pressione a tecla para comentar/descomentar Ao pressionar o TAB ou Shift TAB, vc pode aumentar ou reduzir a identação do seu código. Para várias linhas, marque as linhas e aperte o TAB. Funções não tão comuns, mas tbm úteis: Para criar um cabeçalho de função (para fins de documentação) = Ctrl Alt H. Tem como ajustar os detalhes permanentemente Opção avançada para trabalhar com várias linhas ao mesmo tempo, como se fosse o TAB, mas para escrever, apagar ou editar: vá até a linha que inicia o bloco e deixe o cursor no local correto, agora mantenha pressiona o Shift e o Alt e clique com o mouse no ponto onde vc quer marcar o bloco. Se fizer certo vai aparecer um "cursorzão". Tudo que digitar ou apagar será replicado para as outras linhas. No mesmo estilo, vc pode usar "blocos verticais". O padrão do Scite é usar blocos horizontais, ou seja, ao marcarmos um bloco as "linhas" são marcadas. Porém eventualmente precisamos marcar um bloco "vertical", que seria um bloco no meio das linhas, não sei se fui claro... Neste caso, ponha o cursor no início do bloco a ser marcado e depois segurando os mesmos Shift e Alt, clique aonde (qual coluna) vc quer marcar o fim do bloco. Com o bloco marcado, pode usar quaisquer opções (Ctrl C, Ctrl D, Del, etc). A diferença entre um cursorzão e o bloco vertical é a coluna onde vc está clicando para marcar o fim do bloco. Se clicar numa coluna IGUAL à do cursor, gera um cursorzão, se clicar em uma coluna diferente, gera um bloco vertical. E daí? Vcs tem mais algumas dicas? Vamos lá! Próximo post será sobre como customizar o SciTe (se quiser).
  12. Olá. Para converter seu script basta informar a pasta raiz onde estão armazenados os seus scripts e mandar ver. Eles serão convertidos para o padrão UTF-8 with BOM, com vários benefícios. Não esqueça de fazer uma cópia dos seus arquivos ANTES da conversão pois se der alguma coisa errada, poder fazer novamente (se ainda quiser). #include <File.au3> #include <Array.au3> #include <FileConstants.au3> #include <MsgBoxConstants.au3> If not CONVERSOR_ENCODING("C:\Scripts") Then MsgBox($MB_OK, "Erro", "Problemas ao converter os cripts") EndIf Func CONVERSOR_ENCODING ($sPasta, $nEncoding = $FO_UTF8) If IsKeyword($nEncoding) Then $nEncoding = $FO_UTF8 Local $aArquivos = _FileListToArrayRec($sPasta, "*.au3", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH) If @error Then Return SetError(1, 0, False) 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 = $nEncoding Then ConsoleWrite("> ") Else ConsoleWrite("! ") $sConteudo = FileRead($aArquivos[$nArquivo]) FileDelete($aArquivos[$nArquivo]) $hArquivo = FileOpen($aArquivos[$nArquivo], $FO_OVERWRITE + $nEncoding) 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 Return SetError(0, 0, True) EndFunc ;==>CONVERSOR_ENCODING Func NOME_ENCODING ($nCode) Local $aNomes = [ [ $FO_UTF16_LE, "UTF16 Little Endian" ], _ [ $FO_UTF16_BE, "UTF16 Big Endian" ], _ [ $FO_UTF8, "UTF8 (with BOM)" ], _ [ $FO_UTF8_NOBOM, "UTF8 (without BOM)" ], _ [ $FO_ANSI, "ANSI (containing char > 127 and < 255)" ] ] Local $nPosicao = _ArraySearch($aNomes, $nCode) If @error Then Return SetError(1, 0, "NÃO ENCONTRADO") Return SetError(0, 0, StringFormat("%40s", $aNomes[$nPosicao][1])) EndFunc
  13. Dicas e truques

    Olá pessoal. Aproveitando o feriado de carnaval, que dependendo da região é mais ou menos comemorado, quero abrir um tópico para que todos possam dar sua contribuição em dicas, macetes e truques ao utilizar o AutoIt. Afinal todos nós, de uma maneira ou outra, ao fazermos nosso scripts, utilizamos as vezes sem nem mesmo pensar, alguma dica ou macete. Vou tentar manter compilado aqui no 1o post, essas dicas. Não tem sequência, nem melhor nem pior. Só uma lista! 1) a diretiva #include serve para incorporarmos códigos já prontos referentes a um determinado tópico aos nossos scripts. Ao utilizarmos o #include tem duas maneiras, que passam desapercebidas: #include <> com os sinais de maior e menor, que identifica um arquivo que será procurado e incorporado a partir da subpasta Include da pasta principal do AutoIt #include "" com as aspas, que identiica um arquivo que está na mesma pasta do script, facilitando assim para desdobrar o script em vários outros scripts menores para facilitar a edição ou manutenção Exemplos: #include <Misc.au3> - estamos procurando o arquivo Misc.au3 que está na pasta Include #include "MeuScript.au3" - estamos procurando o arquivo MeuScript.au3 que está na mesma pasta do meu script stual Aqui fica uma segunda dica que eu utilizo. Quando o script passa a ser meio genérico, tipo uma biblioteca de scripts em comum a vários projetos (vide o tópico Framework), eu costumo criar um link simbólico do arquivo na subpasta Include. Dessa forma, tenho o melhor dos dois mundos, pois mantenho o script "à mão" e ao mesmo tempo ele está disponível para qualquer projeto, sem criar uma cópia do mesmo e correndo o risco de ficar com arquivos desatualizados. 2) Já aconteceu a situação de vc testar seu código e as mensagens estarem em português correto (ou com acentos) mas ao compilar o mesmo script, ele aparece com alguns caracteres malucos no lugar dos acentos? Outra situação é quando eu vejo o pessoal reclamando do erro UTF-8 ou UNICODE ao compilar algum script, principalmente do fórum gringo. Isto acontece porque ao escrevermos nosso códigos no SciTe (assumindo que vc use o editor padrão do AutoIt), os códigos são escritos utilizando o código de página Windows 1252, que preserva os acentos e demais caracteres diferenciados da nossa língua portuguesa e similares. Porém, várias ferramentas do AutoIt e outras exigem UNICODE como forma de codificação. Não vou entrar em detalhes aqui (não é local para isto), mas minha recomendação é que vcs modifiquem o SciTe para que todos os seus scripts sejam gravados em UTF-8 with BOM, que é um padrão internacional UNICODE. Assim, vc ganha de várias formas: os acentos que estão no seu código em desenvolvimento serão transferidos adequada e corretamente para a versào compilada pode-se trocar scripts (ou compartilhá-los) nos fóruns estrangeiros sem problemas as ferramentas do AutoIt e outras externas não reclamarão da codificação do arquivo. Mas atenção, ao fazer esta modificação é necessário abrir o script, mudar a codificação e conferir o script para as mudanças que possam surgir, principalmente nas mensagens ao usuário. Ao salvar o script, ele já será salvo nste novo formato. Para fazer isto, com o script aberto no SciTe, vá no menu FILE, opção ENCODING e troque de Code Page Property para UFT-8 with BOM e salve seu script ou feche o editor, salvando o arquivo. Finalmente este procedimento é necessário ser feito em todos os seus scripts, o que dependendo da quantidade, pode ser um processo longo e trabalhoso/tedioso, assim vou colocar em outro tópico um script para fazer este processo de forma automática (a conversão apenas). Mesmo assim é importante que os scripts sejam conferidos. Veja aqui => Conversão de Codificação dos Scripts E vem mais por aí... A comunidade agradece!
  14. Humm, então é por isso. Faz sentido. Belini, por questões pessoais, ainda usa uma versão mais antiga do AutoIt. Agora funcionou o exemplo.
  15. Show de bola! Agora deu boa. Parabéns!
×