Ir para conteúdo


Fábio iGames

Cadastrado: 10 Dez 2015
Offline Última atividade: Ago 17 2017 10:13
-----

#13265 WMI & AutoIt

Postado por Fábio iGames em 20 julho 2017 - 07:15

Olá, compartilho alguns pequenos scripts de AutoIt coletando informações diversas através do WMI, veja mais em:
https://github.com/chechelaky/WMI

Alguns são bem simples, e fiz questão de colocar o link da página da Microsoft, para que você possa expandir seus conhecimentos.

O que você pode conseguir com esses scripts?
Coletar a velocidade do processador, quantos núcleos possui, quantos pentes de memória RAM há no PC e as vezes até o número de série do módulo de memória RAM (logicamente, quando o fabricante escreve tal informação, caso contrário é vazio mesmo), quantos monitores há no PC, qual a resolução de cada um, qual o número de série e data de fabricação do monitor, e por aí vai...

 

 

Man . você é demais . Cool , depois que você subiu de cargo o conhecimento está sendo difundido de uma forma gigantesca.

 

DEUS abençoe muito.

 

Precisa de alguma coisa que não está nos exemplos?

Então estude esta página: https://msdn.microso...8(v=vs.85).aspx

 

Ela possui uma grande quantidade de informação, adapte o que você precisa, ouse, erre, corrija e faça dar certo! 8D

 

 

Luigi , com certeza estudar é o caminho , entrou uma pessoa na minha vida que me fez perceber o quanto eu preciso estudar , e através dela descobri que estava numa vida Obscura e longe de DEUS.

 

Por muitas vezes me limitei por pensar que algo é muito difícil etc , e no dia de hoje DEUS está me abençoando muito pois ultrapassei os limites que eu pensava que não alcançaria.

 

--------------------------------------------------------------------------------------------------------------------------------------------------

Muitos são os planos no coração do homem, mas o que prevalece é o propósito do Senhor. - Provérbios 19:21

---------------------------------------------------------------------------------------------------------------------------------------------------

 

Mais uma vez #OBRIGADO Luigi e Manimal , vocês merecem estar onde estão hoje , compartilham conhecimento e ajudam demais a mim e aos membros desse fórum.

 

Estou em uma nova fase da minha vida e as vezes falamos de DEUS só pela boca e ficamos distantes das suas palavras.

A vida é passageira e a cada dia aprendo mais e vou estudar até o fim dos meus dias , e com essa  turma daqui isso fica muito confortável.

 

Com certeza DEUS coloca em nossas vidas todo tipo de pessoa , e hoje sei que é para o nosso bem, Amém.




#13067 Interceptar parametros de uma chamada de dll

Postado por Fábio iGames em 01 junho 2017 - 11:05

Olá mutleey e Pedro Pinheiro , eu uso o mesmo software que o joelson0007 recomendou no chat.

 

 DLL Export Viewer

 

Link:http://www.nirsoft.n...ort_viewer.html

 

Ai é só ver as funções e pesquisar no google como o Pedro disse que faz , eu faço a mesma coisa.  ;)




#13021 Remapear teclas

Postado por Fábio iGames em 11 maio 2017 - 03:14

Olá Belini.

 

Entenda que o ScanCode é permanente, ou seja, não é apenas uma questão de mudar e pronto, fica mudado até nova ordem.

 

É o contrário, a cada boot o SO lê o ScanCode e remapeia as teclas ali contidas, portanto para mudar 2 ou mais teclas, só colocá-las na lista do ScanCode ampliando ou modificando a lista.

 

Usando o mesmo exemplo de antes (P pelo A):
 
00 00 00 00 -> sempre zeros
00 00 00 00 -> sempre zeros
02 00 00 00 -> 2 definições (1 tecla e 1 NULL)
1E 00 18 00 -> troca letra P pela letra A (observe que é primeiro a tecla final depois a inicial)
00 00 00 00 -> sempre zeros (NULL)
 
Agora modificando para incluir mais teclas:
 
00 00 00 00 -> sempre zeros
00 00 00 00 -> sempre zeros
02 00 00 00 -> 5 definições (4 teclas e 1 NULL)
1E 00 18 00 -> troca letra P pela letra A
YY 00 XX 00 -> troca X pela Y
++ 00 11 00 -> troca 1 pelo +
GG 00 00 00 -> desativa o G
00 00 00 00 -> sempre zeros (NULL)
 

Não esqueça de modificar a 3a linha que contém a quantidade de definições no ScanCode inteiro.

 

A parte chata da brincadeira é que para remover uma tecla, por exemplo, tem que remover a linha dela MAS preservar o resto do ScanCode e ajustar a 3a linha.

 

Ok?

 

@Manimal muito bom.

 

Vai ser bem útil esse esquema nesse momento pra mim. 




#12972 Remapear teclas

Postado por Fábio iGames em 07 maio 2017 - 09:35

Ou @Manimal. Mestre kkkkk da umas dicas ai de programador. Que linguagem você mais gosta e o que mais ajuda e a que se mais precisa no ramo da programação. Eu estou querendo ampliar meu saber. Por muitos anos eu aprendi um pouco de tudo...html, php, css, ajax, lua, c++, o basico mesmo, com o autoit eu aprendi a parte mais lógica do funcionamento das coisas. Eu parei de "pega isso...coloca ali...pega aquilo e coloca ali" eu gostaria de fazer algo diferente, o que me falta é ideia. Manda umas dicas ai pro pessoal.

 

Caracas Pedro Pinheiro com todo esse currículo...

 

:ninja:  Pedro:  " html, php, css, ajax, lua, c++, o básico mesmo, com o autoit eu aprendi a parte mais lógica do funcionamento das coisas."   ==>  UAU   :like_icon: 

 

Eu só tenho AutoIt e tô pegando firme no C++ , o resto brinco no Photoshop e Flash que é bem Básico do Básico mesmo... :lol: 

 

você com isso tudo ai :P ... acho que tem que sair postando oque sabe fazer e parar de jogar Dota amigão.  :huh: 

 

É como te disse antes , precisa de alguém que reconheça o seu talento. :trofeu:

 

Uma hora vai acontecer pode crer, tenha FÉ e faça a sua parte, vai estudando e praticando. :up:

 

Você sabe que quero muito que você tenha reconhecimento e seja recompensado pelo tempo que se dedica estudando e etc.

 

Eu só posso te aconselhar como já fiz muitas vezes , até em OFF. Desejo muito que as coisas melhorem pra você e se precisar de algo que estiver ao meu alcance é só falar.  ;)

 

DEUS Abençoe. 




#12913 Problema com mensagem usando GDIPlus

Postado por Fábio iGames em 02 maio 2017 - 11:04

Peguei um exemplo que mostra uma imagem e um um texto usando GDIPlus mas encontrei 3 problemas e só consegui resolver um deles, o primeiro era limpar a mensagem anterior para mostrar a próxima e este eu resolvi ocultando e depois mostrando novamente a GUI filha porém o segundo que é trocar a cor da fonte e o 3º que é um serilhado branco em algumas letras também não consegui tirar, segue o script para teste!

  1.  
  2. #include <guiconstantsex.au3>
  3. #include <windowsconstants.au3>
  4. #include <gdiplus.au3>
  5.  
  6. Global $hGUI, $hImage, $hGraphic, $hImage, $conta
  7.  
  8. _GDIPlus_Startup()
  9. ; Load PNG image
  10. $hImage = _GDIPlus_ImageLoadFromFile(StringReplace(@AutoItExe, "autoit3.exe", "Examples\GUI\Torus.png"))
  11. $iWidth = _GDIPlus_ImageGetWidth($hImage)
  12. $iHeight = _GDIPlus_ImageGetHeight($hImage)
  13.  
  14. ; Create GUI
  15. $hGUI = GUICreate("Show PNG", $iWidth, $iHeight, -1, -1, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
  16. $hGUI_child = GUICreate("", $iWidth, $iHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_MDICHILD, $hGUI)
  17. $hButton = GUICtrlCreateButton("Texto", $iWidth * 2 / 3, $iHeight * 2 / 3, 40, 40)
  18. GUISetBkColor(0xFFFFFF, $hGUI_child)
  19. GUISetState(@SW_SHOW, $hGUI)
  20. GUISetState(@SW_SHOW, $hGUI_child)
  21. SetTransparentBitmap($hGUI, $hImage)
  22. _WinAPI_SetLayeredWindowAttributes($hGUI_child, 0xFFFFFF, 0xFF)
  23.  
  24. $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI_child)
  25. _GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)
  26. DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $hGraphic, "int", 3)
  27. _GDIPlus_GraphicsDrawString($hGraphic, "GDI+ Full Transparency", 0, $iHeight / 2 - 20, "Arial", 12)
  28.  
  29.  
  30. While 1
  31. $nMsg = GUIGetMsg()
  32. Switch $nMsg
  33. Case $GUI_EVENT_CLOSE
  34. _GDIPlus_ImageDispose($hImage)
  35. _GDIPlus_GraphicsDispose($hGraphic)
  36. _GDIPlus_Shutdown()
  37. Case $hButton
  38. ;GUISetState(@SW_HIDE, $hGUI_child); Oculta para limpar a mensagem anterior (retire o ponto e vírgulas para limpar)
  39. $conta += 1
  40. GUISetState(@SW_SHOW, $hGUI_child); Mostra novamente a mensagem
  41. _GDIPlus_GraphicsDrawString($hGraphic, "TESTANDO: " & $conta, 0, $iHeight / 2 - 20, "Arial Black", 16)
  42. EndSwitch
  43. WEnd
  44.  
  45. Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
  46. Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
  47. $hScrDC = _WinAPI_GetDC(0)
  48. $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
  49. $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
  50. $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
  51. $tSize = DllStructCreate($tagSIZE)
  52. $pSize = DllStructGetPtr($tSize)
  53. DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
  54. DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
  55. $tSource = DllStructCreate($tagPOINT)
  56. $pSource = DllStructGetPtr($tSource)
  57. $tBlend = DllStructCreate($tagBLENDFUNCTION)
  58. $pBlend = DllStructGetPtr($tBlend)
  59. DllStructSetData($tBlend, "Alpha", $iOpacity)
  60. DllStructSetData($tBlend, "Format", 1)
  61. _WinAPI_UpdateLayeredWindow($hGUI, $hMemDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
  62. _WinAPI_ReleaseDC(0, $hScrDC)
  63. _WinAPI_SelectObject($hMemDC, $hOld)
  64. _WinAPI_DeleteObject($hBitmap)
  65. _WinAPI_DeleteDC($hMemDC)
  66. EndFunc ;==>SetTransparentBitmap
  67.  

Obs: O serilhado ficou visível na letra "S, O" e no número "1"

 

Essa do serrilhado é de lascar mesmo, que chato , agora sobre a cor, acho que é default a cor Preta do texto na Include.

 

Testei aqui e... tem que alterar em _GDIPlus_BrushCreateSolid() na #include <GDIPlus.au3> na função _GDIPlus_GraphicsDrawString ai troca a cor de Boa.

 

Coloque a cor que quiser lá . :up:

  1.  
  2. Ex: _GDIPlus_BrushCreateSolid(0xFF00FF00) ; ==> = Verde Acentuado , Ótimo Para Overlay.
  3.  

:lol:

 

Manimal é só declarar a $ghGDIPDll como Global , é que o Belini usa a versão antiga do AutoIt;)




#12890 Remapear teclas

Postado por Fábio iGames em 28 abril 2017 - 11:24

 

Bom dia.
Desculpe o atraso...
 
Para remapear as teclas em Windows através do REGISTRO, a opção é usar a chave
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
através do valor
Scancode Map
 
Observações:
  1. Obrigatório reboot para efetivar as mudanças
  2. As mudanças são permanentes até apagar a chave do registro e reboot novamente
  3. As mudanças ocorrem para TODOS os usuários e/ou teclados (lay-outs)
 
Até o Windows XP era possível remapear as teclas "por usuário" usando a chave
HKEY_CURRENT_USER\Keyboard Layout
porém do Windows 7 pra frente não funciona mais
 
A "sintaxe" do Scancode Map é a seguinte:
  • 4 bytes indicando a versão (deixar sempre zeros)
  • 4 bytes indicando os flags (deixar sempre zeros)
  • 4 bytes informando a quantidade de teclas que estão sendo remapeadas (nro de teclas + 1 que é o terminador NULL da string)
  • 4 bytes para cada tecla remapeada sendo:
  •    2 bytes para a tecla desejada (deixar 00 00 para desativar a tecla)
  •    2 bytes da tecla original
  • 4 bytes indicando terminador NULL (deixar sempre zeros)
 
A maneira mais simples de pegar os Scancodes é utilizando o Sharpkeys que mostra os Scancodes
 
Senão os Scancodes podem ser procurados na net mas recomendo (para melhor entendimento):
 
 
Como exemplo usando a sugestão do teu post (trocando o P pelo A)
 
Precisamos saber
00 18 = scancode tecla P
00 1E - scancode tecla A
 
Resultando na string
00 00 00 00 -> sempre zeros
00 00 00 00 -> sempre zeros
02 00 00 00 -> 2 definições (1 tecla e 1 NULL)
1E 00 18 00 -> troca letra P pela letra A (observe que é primeiro a tecla final depois a inicial)
00 00 00 00 -> sempre zeros (NULL)
 
Ficando em AutoIt
  1.  
  2. RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout", "Scancode Map", REG_BINARY, "0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x18,0x00,0x1E,0x00,0x00,0x00,0x00,0x00")
  3.  
Depois só reiniciar  :lol:

 

 

 

  :digno1:  @Manimal

 

Vou te falar uma coisa , atualmente estou desapontado com umas coisas que aconteceram em relação ao ser humano , sempre aparece na minha vida umas pessoas que querem levar vantagem , enfim , mas adoro vir aqui pois tem pessoas como você Manimal que sempre está disposto a ajudar o próximo e compartilha esse conhecimento, te juro que pensei que ia demorar para solucionarem , mas você é fera mesmo, nada como conhecimento e experiência.

 

Bom sem mais... ==> MUITO OBRIGADO.  :like_icon:  de Coração.  :P 




#12849 Capturar conteudo de labels e dbedits em sistemas Delphi

Postado por Fábio iGames em 07 abril 2017 - 12:00

Você já experimentou usar AutoIt v3 Windows Info ?

 

Abre ai e coloque o cursor em Finder Tool , segure e arraste para a Janela que quer pegar as informações, (Labels, Botões , Inputs etc).

 

A partir dai você pode usar as informações que pegou da janela e fazer um Loop combinando uns IFS ou CASES com uma ou mais funções abaixo:

 

WinExists  WinExists => Verifica se existe uma janela especificada.

WinActive  WinActive => Verifica se existe uma janela especificada e está atualmente ativa.

ControlClick ControlClick => Envia um comando de clique do mouse para um determinado controle.

MouseClick  MouseClick => Execute uma operação de clique do mouse.

 

Essas entre outras funçoes podem lhe ajudar no que quer , veja os exemplos que tem no Help apertando a tecla F1 no editor de Scripts SciTE.  ;) 




#12831 Sons do windows ao digitar em um GUI

Postado por Fábio iGames em 30 março 2017 - 11:42

 

Se eu tivesse resolvido teria postado logo que iniciaram o tópico e só não entrei na conversa por falta de tempo e porque este som nunca me incomodou!

 

Bem lá atrás quando comecei a usar o programa de música de 3ºs como falei , um botão ficou preso  :o ai com o volume alto  -_-  se sabe né :whistle: , ficou um TumTumTum danado com disse antes kkkkkkkkkkkk ( isso nem é pra rir kkkkkkkkk).  <_<

 

Dai então fui logo no Painel de Controle e desativei todos os eventos de Som do Windows , ainda bem que não aconteceu com você , pois é chato e as vezes o cliente é longe ou não pode ir naquela hora entende , principalmente se for fim de semana , o cara fica louco te ligando pra ir na hora.  :wacko:

 

Como diz o ditado: É melhor prevenir do que remediar.  :D

 

Cada vez mais me apego ao  :autoit:  , tô engatinhando no C++ , mas oque o AutoIt tem facilita muito a nossa vida: Help , Exemplos , Esse Fórum Maravilhoso e muitos outros mundo afora , uma IDE (SciTE) fantástica , KODA ... etc. :like_icon:

 

[OFF]

Daqui uns dias até o seu filho Belini e minha filha vão estar programando em AutoIt :ILA: , pois os Pais fazem isso "sempre".

No meu caso ela sempre fica me vendo programar , ela já até aprendeu umas Letras através do teclado.  :wub:

[ON]

 

:ILA2:

 

Editado: Acabei de testar com a Janela sem  $WS_POPUP e menor por exemplo e tem dois detalhes a serem levados em consideração:

 

Vejam:  :lol:

  1.  
  2. #cs ----------------------------------------------------------------------------
  3.  
  4. AutoIt Version: 3.3.14.2
  5. Author: Fábio iGames
  6.  
  7. Script Function:
  8. "Teste com $WS_DISABLED ou 0x08000000 no 6º Parâmetro da GUICreate"
  9.  
  10. Até agora encontrei duas coisas para serem levadas em consideração.
  11.  
  12. Testem e Vejam o Comentário no Loop principal ... If _IsPressed("1B", $hDLL) Then Exit(0)
  13. #ce ----------------------------------------------------------------------------
  14.  
  15. #include <WinAPI.au3> ; Necessário para _WinAPI_GetAsyncKeyState.
  16. #include <Misc.au3> ; Necessário para a Função _IsPressed.
  17.  
  18. OnAutoItExitRegister("_Sair") ; Registra uma Função Para ser Chamada Antes de Sair/Fechar o Programa.
  19.  
  20. Global $Gui, $hDLL = DllOpen("user32.dll") ; Abre a Dll Para a Função _IsPressed
  21. Global $Troca = True ; Variável Auxiliar.
  22. Global $Tiltle = "Teste com $WS_DISABLED ou 0x08000000 no 6º Parâmetro da GUICreate."
  23. $Gui = GUICreate($Tiltle, 640, 480, -1 , -1, 0x08000000, 0x00000008) ; Cria a Janela.
  24. GUISetBkColor(0x000000) ; Cor de Fundo da Janela.
  25.  
  26. GUICtrlCreateLabel("Esc = Sair / Fechar" &@CRLF&@CRLF& _
  27. "Tente mover a Janela com o Ponteiro do Mouse" &@CRLF&@CRLF& _
  28. "Tecla 'A' Move a Janela", 0, 37, 640, 350, 0x01) ; Cria uma Label.
  29. GUICtrlSetColor(-1, 0xFF00FF) ; Cor do Texto.
  30. GUICtrlSetBkColor(-1, -2) ; Fundo Transparente.
  31. GUICtrlSetFont(-1, 30, 600, Default, "Arial Black") ; Parâmetros da Fonte pro Texto.
  32.  
  33. GUISetState(@SW_SHOW, $Gui) ; Mostra a Janela.
  34.  
  35. MouseClick("primary", 1, 1, 1, 0) ; Coloquei Esse aqui só pra Janela ficar sem foco para entenderem ....
  36. ; ==> ... a Linha do If _IsPressed("1B", $hDLL) Then Exit(0) no Loop Principal.
  37. ; ==> Teste descomentando ela dentro do Loop depois.
  38.  
  39. #Region ==> Loop Principal
  40. Do
  41. ;~ If _IsPressed("1B", $hDLL) Then Exit(0) ; Tecla Esc Sair / Fechar. ===> NOTA: Coloquei esse pois a Janela não fecha nem ferrando se perder o Foco, acho que é por que está desabilitada... Testem ai tirando essa Linha e deixando ela sem Foco.
  42. If _IsPressed("41", $hDLL) Then ; Se a Tecla 'A' for Pressionada ...
  43. While 1
  44. GUIGetMsg()
  45. If Not BitAND(_WinAPI_GetAsyncKeyState(0x41), 0x8000) Then ExitLoop ; Espera a Tecla Ser Solta. ==> Dica do Belini.
  46. WEnd
  47. If $Troca Then
  48. WinMove($Tiltle, "", 0, 0, 640, 480) ; Move a Janela.
  49. $Troca = False
  50. Else
  51. WinMove($Tiltle, "", 500, 0, 640, 480) ; Move a Janela.
  52. $Troca = True
  53. EndIf
  54. EndIf
  55. Until GUIGetMsg() = -3
  56. #EndRegion
  57.  
  58. #Region Essa Função é Chamada quando o Programa Sair.
  59. Func _Sair()
  60. OnAutoItExitUnRegister("_Sair") ; Desregistra uma Função Que foi Chamada Quando o Programa Sair/Fechar.
  61. DllClose($hDLL) ; Fecha a DLL que foi Préviamente Aberta.
  62. MsgBox(0x40000," By: Fábio iGames"," Bye bye" ,1) ;Mensagem.
  63. EndFunc
  64. #EndRegion
  65.  

Mas nesse caso ai é só para Janelas pequenas , para janelas que ocupam toda a área de trabalho isso é irrelevante pois não teria necessidade de Mover , e em FullScreen teoricamente a Janela fica em foco. :P

 

Testem ai mais coisas, Belini seu programa que já está completo tem que ser bem testado antes hein amigão, vou ver oque encontro sobre desabilitar todo os eventos de som via chamada de dll.  ;)




#12825 Sons do windows ao digitar em um GUI

Postado por Fábio iGames em 29 março 2017 - 12:15

 

É uma coisa bem curiosa e difícil de se pesquisar, já que não tem como achar palavras chaves a respeito. Enfim, descobri como resolve isso. Bem simples! é só usar um style na GUI. "$WS_DISABLED"

 

 

Prontinho.

  1.  
  2. GUICreate("Example", 400, 100,-1,-1,$WS_DISABLED)
  3.  

 

Pedro Fantástico , cheguei a testar com :

  1.  
  2. GUICtrlSetStyle($Gui, $WS_DISABLED) ; Altera o Estilo de um Controle.

Mas como não funcionou , nem pensei em colocar direto o Parâmetro na Criação da GUI , pensando que poderia deixar todos os elementos internos desabilitados. :P

 

Ainda bem que você testou , por enquanto tá resolvido mais uma vez.  :up:

 

:ILA2:   Editado: ==> kkkkkkkkkk você mesmo resolveu e deu a sua resposta como melhor.  :lol:

             Eu me divirto e aprendo muito com vocês. :like_icon:  




#12818 Sons do windows ao digitar em um GUI

Postado por Fábio iGames em 28 março 2017 - 07:08

@Manimal como sempre adorei seus comentários e explicações , para você entender oque estamos falando é isso ai:

 

Leia o cometário no inicio do Script. :lol:

  1.  
  2. #cs ----------------------------------------------------------------------------
  3.  
  4. AutoIt Version: 3.3.14.2
  5. Author: Fábio iGames
  6.  
  7. Script Function:
  8. Exemplo de Som Irritante ao Pressionar Teclas.
  9.  
  10. No Windows XP ou 7 é o arquivo Campainha do Windows.wav
  11.  
  12. Fica na pasta C:\Windows\Media\Campainha do Windows.wav
  13.  
  14. No Window XP vá em Painel de Controle , Sons e dispositivos de áudio , aba Sons , é o Evento do Windows Aviso sonoro padrão
  15. No Windows 7 vá em Painel de Controle , Som , aba Sons, é o Evento do Windows Aviso sonoro padrão
  16.  
  17. Nos dois são o mesmo evento e o mesmo arquivo que reproduz esse som ==> Campainha do Windows.wav
  18.  
  19. No Windows 10 não sei pois não uso , o Pedro pode responder.
  20.  
  21. Se desabilitar esse evento ai fica de boa entendeu.
  22.  
  23. Geralmente desabilito tudo.
  24.  
  25. Oque queremos é desabilitar só esse evento ou tudo de uma vez via Script AutoIt entendeu.
  26.  
  27. Todas essas teclas que citei ai no exemplo ativam esse evento.
  28.  
  29. Veja:
  30. #ce ----------------------------------------------------------------------------
  31.  
  32. #include <WindowsConstants.au3> ; Necessário para Parâmetros da GUICreate.
  33.  
  34. Global $Gui, $Label ; Variáveis...
  35.  
  36. $Gui = GUICreate( " Teste", @DesktopWidth, @DesktopHeight, 0 , 0, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED, $WS_EX_TOPMOST)) ; Janela FULL.
  37. GUISetBkColor(0x000000) ; Cor de Fundo da Janela.
  38.  
  39. GUICtrlCreateLabel("Esc = Sair Fechar", 0, 0, @DesktopWidth, 79, 1) ; Cria uma Label.
  40. GUICtrlSetColor(-1, 0xFF00FF) ; Cor do Texto.
  41. GUICtrlSetBkColor(-1, -2) ; Fundo Transparente.
  42. GUICtrlSetFont(-1, 37, 600, Default, "Arial Black") ; Parâmetros da Fonte pro Texto.
  43.  
  44. $Label = GUICtrlCreateLabel("Todas as teclas abaixo fazem o barulho irritante." & @CRLF & _
  45. "' 1 2 3 4 5 6 7 8 9 0 - = Backspace" & @CRLF & "Q W E R T Y U I O P ´ [" & @CRLF & _
  46. " A S D F G H J K L Ç ~ ]" & @CRLF & "\ Z X C V B N M , . ; /" & @CRLF & "No NUMPAD as teclas: / * - + . ,", _
  47. 0, @DesktopHeight-460, @DesktopWidth, 420, 1) ; Cria uma Label.
  48.  
  49. GUICtrlSetColor($Label, 0xFFFFFF) ; Cor do Texto.
  50. GUICtrlSetBkColor($Label, 0xFF0000) ; Cor de Fundo do Texto.
  51. GUICtrlSetFont($Label, 37, 600, Default, "Arial Black") ; Parâmetros da Fonte pro Texto.
  52.  
  53. GUISetState(@SW_SHOW, $Gui) ; Mostra a Janela.
  54.  
  55. Do
  56. Until GUIGetMsg() = -3
  57.  

As teclas modificadoras como mencionou não ativam esse evento de som.

 

:mad2:  esse barulho é chatíssimo , já vi um monte se softwares na rua em outras linguagens que fazem esse barulho irritante , o negócio é desabilitar mesmo no Painel de Controle , mas os operadores ou quem instala não estão nem ai , não são nenhum pouquinho profissionais , ou são relaxados mesmo. :down:

 

O software que uso mesmo que foi feito em VB o programador não se preocupou com isso , ai então desabilito todos os sons do Windows , é uma opção né. :P

 

Agora veja nesse exemplo definindo a tecla 'A' na função HotKeySet por exemplo , ai somente a tecla 'A' não ativa esse evento do Aviso sonoro padrão / Campainha do Windows.wav.  :excl:

  1.  
  2. #cs ----------------------------------------------------------------------------
  3.  
  4. AutoIt Version: 3.3.14.2
  5. Author: Fábio iGames
  6.  
  7. Script Function:
  8. Exemplo de Som Irritante ao Pressionar Teclas. ( Exeto a Tecla 'A' )
  9.  
  10. No Windows XP ou 7 é o arquivo Campainha do Windows.wav
  11.  
  12. Fica na pasta C:\Windows\Media\Campainha do Windows.wav
  13.  
  14. No Window XP vá em Painel de Controle , Sons e dispositivos de áudio , aba Sons , é o Evento do Windows Aviso sonoro padrão
  15. No Windows 7 vá em Painel de Controle , Som , aba Sons, é o Evento do Windows Aviso sonoro padrão
  16.  
  17. Nos dois são o mesmo evento e o mesmo arquivo que reproduz esse som ==> Campainha do Windows.wav
  18.  
  19. No Windows 10 não sei pois não uso , o Pedro pode responder.
  20.  
  21. Se desabilitar esse evento ai fica de boa entendeu.
  22.  
  23. Geralmente desabilito tudo.
  24.  
  25. Oque queremos é desabilitar só esse evento ou tudo de uma vez via Script AutoIt entendeu.
  26.  
  27. Todas essas teclas que citei ai no exemplo ativam esse evento....
  28.  
  29. ==> OBS: MENOS A TECLA 'A' POIS A DEFINI PARA CHAMAR UMA FUNÇÃO COM A FUNÇÃO HotKeySet.
  30.  
  31. Veja:
  32. #ce ----------------------------------------------------------------------------
  33.  
  34. #include <WindowsConstants.au3> ; Necessário para Parâmetros da GUICreate.
  35.  
  36. Global $Gui, $Label ; Variáveis...
  37.  
  38. $Gui = GUICreate( " Teste", @DesktopWidth, @DesktopHeight, 0 , 0, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED, $WS_EX_TOPMOST)) ; Janela FULL.
  39. GUISetBkColor(0x000000) ; Cor de Fundo da Janela.
  40.  
  41. GUICtrlCreateLabel("Esc = Sair Fechar", 0, 0, @DesktopWidth, 79, 1) ; Cria uma Label.
  42. GUICtrlSetColor(-1, 0xFF00FF) ; Cor do Texto.
  43. GUICtrlSetBkColor(-1, -2) ; Fundo Transparente.
  44. GUICtrlSetFont(-1, 37, 600, Default, "Arial Black") ; Parâmetros da Fonte pro Texto.
  45.  
  46. $Label = GUICtrlCreateLabel("Todas as teclas abaixo fazem o barulho irritante." & @CRLF & "( Exeto a Tecla 'A' )" & @CRLF & _
  47. "' 1 2 3 4 5 6 7 8 9 0 - = Backspace" & @CRLF & "Q W E R T Y U I O P ´ [" & @CRLF & _
  48. "S D F G H J K L Ç ~ ]" & @CRLF & "\ Z X C V B N M , . ; /" & @CRLF & "No NUMPAD as teclas: / * - + . ,", _
  49. 0, @DesktopHeight-460, @DesktopWidth, 420, 1) ; Cria uma Label.
  50.  
  51. GUICtrlSetColor($Label, 0xFFFFFF) ; Cor do Texto.
  52. GUICtrlSetBkColor($Label, 0xFF0000) ; Cor de Fundo do Texto.
  53. GUICtrlSetFont($Label, 37, 600, Default, "Arial Black") ; Parâmetros da Fonte pro Texto.
  54.  
  55. GUISetState(@SW_SHOW, $Gui) ; Mostra a Janela.
  56.  
  57. Local $Troca = True
  58. HotKeySet("a", "_Troca")
  59.  
  60. Do
  61. Until GUIGetMsg() = -3
  62.  
  63. Func _Troca()
  64. If $Troca Then
  65. GUICtrlSetBkColor($Label, -2) ; Seta Transparência no Fundo do Texto.
  66. $Troca = False
  67. Else
  68. GUICtrlSetBkColor($Label, 0xFF0000) ; Seta a Cor Vermelha no Fundo do Texto.
  69. $Troca = True
  70. EndIf
  71. EndFunc
  72.  

Basicamente é isso. :muttley:

Editado_1:

Vou testar outra função aqui e já volto. ;)

Editado_2:

Acabei de testar com a Função _WinAPI_GetAsyncKeyState ( If BitAND(_WinAPI_GetAsyncKeyState(0x41), 0x8000) Then ... e deu na mesma  :mad:  , tem que procurar qual chamada de dll se usa para desabilitar esse evento mesmo.  <_<




#12806 Movendo texto na label

Postado por Fábio iGames em 28 março 2017 - 01:16

Olá Fábio.

 

Pelo que entendi, então não pode usar os limites da GUI, mas "caminhar" no meio da GUI, isso?

 

Bom, neste caso acho que usar o GUICtrlSetPos não seria a melhor estratégia, pois estaríamos movendo o LABEL inteiro.

 

Acho mais válido criar um LABEL fixo dentro das coordenadas que vc precisa e modificar o TEXTO dentro dele para fazer o mesmo efeito. Estou imaginando...

 

Segue novo exemplo (ainda sem janela filha) e usando Timer simples:

  1.  
  2. #include <String.au3>
  3. #include <Timers.au3>
  4. #include <FontConstants.au3>
  5. #include <ColorConstantS.au3>
  6. #include <GUIConstantsEx.au3>
  7. #include <AutoItConstants.au3>
  8. #include <StaticConstants.au3>
  9. #include <WindowsConstants.au3>
  10.  
  11. Global $Margem = 30, $Altura = 30, $Tam_Janela = 350
  12. Global $Label, $Qual, $Posicao, $Texto, $Playing = True
  13. Global $Tamanho = Floor(($Tam_Janela - ($Margem * 2)) / 7) - 1
  14. Global $Musicas = [ "TOCANDO: Detonautas >> Retorno de saturno", _
  15. "PRÓXIMA MÚSICA: Legião Urbana Disco 4 >> Pais e Filhos", _
  16. "PRÓXIMA MÚSICA: Engenheiros do Hawaii Disco 7 >> Era um garoto que como eu amava os Beatles" ]
  17. PRINCIPAL()
  18.  
  19. Func PRINCIPAL()
  20. ; GUI PRINCIPAL
  21. GUICreate("By: Fábio iGames / Pedro Pinheiro / Manimal", $Tam_Janela, 80, -1, -1, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED, $WS_EX_TOPMOST))
  22.  
  23. ; Label da mensagem
  24. $Label = GUICtrlCreateLabel("", $Margem, $Altura, $Tam_Janela - ($Margem * 2), 20, $SS_RIGHT)
  25. GUICtrlSetColor($Label, $COLOR_WHITE) ; ajusta a cor da letra
  26. GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
  27. GUICtrlSetFont($Label, 9, $FW_SEMIBOLD, Default, "Arial")
  28.  
  29. ; Fundo (para mostrar o efeito de transparência)
  30. GUICtrlCreatePic(StringRegExpReplace(@AutoItExe, "autoit3(_x64)?\.exe", "") & "Examples\GUI\msoobe.jpg", 0, 0, 500, 600, Default, $GUI_WS_EX_PARENTDRAG) ; put up the panel graphic
  31.  
  32. ; Mostra janela principal
  33. GUISetState(@SW_SHOW)
  34. SplashTextOn("Info", "", 400, 220, Default, 100, $DLG_TEXTLEFT, "")
  35.  
  36. ; Configura teclas
  37. HotKeySet("{ESC}", "_Fechar")
  38. HotKeySet("z", "_trocar_reserva")
  39. HotKeySet("a", "_trocar")
  40.  
  41. AJUSTA_LABEL()
  42. Local $Tempo = _Timer_Init()
  43. Do
  44. If _Timer_Diff($Tempo) > 100 Then
  45. ROLA_TEXTO()
  46. $Tempo = _Timer_Init()
  47. EndIf
  48. Until GUIGetMsg() = $GUI_EVENT_CLOSE
  49. EndFunc ;==>PRINCIPAL
  50.  
  51. Func ROLA_TEXTO()
  52. If $Playing Then
  53. $Posicao += 1
  54. Local $Mostra = StringLeft($Texto, $Posicao)
  55. If $Posicao <= $Tamanho Then
  56. GUICtrlSetStyle($Label, $SS_RIGHT)
  57. If $Posicao > StringLen($Mostra) Then $Mostra &= _StringRepeat(" ", $Posicao - StringLen($Mostra))
  58. GUICtrlSetData($Label, $Mostra)
  59. Else
  60. $Mostra = StringTrimLeft($Mostra, $Posicao - $Tamanho)
  61. GUICtrlSetStyle($Label, $SS_LEFT)
  62. GUICtrlSetData($Label, $Mostra)
  63. If StringLen($Mostra) = 0 Then AJUSTA_LABEL()
  64. EndIf
  65. ControlSetText("Info", "", "Static1", _
  66. "Aperte 'Z' para trocar de mensagem na proxima volta" & @CRLF & _
  67. "Aperte 'A' para iniciar ou parar o texto" & @CRLF & @CRLF & _
  68. "Mostrando: " & $Playing & @CRLF & @CRLF & _
  69. "Mensagem: " & $Musicas[$Qual])
  70. EndIf
  71. EndFunc ;==>ROLA_TEXTO
  72.  
  73. Func AJUSTA_LABEL()
  74. $Posicao = 0
  75. $Texto = $Musicas[$Qual]
  76. EndFunc ;==>AJUSTA_LABEL
  77.  
  78. Func _TROCAR_RESERVA()
  79. $Qual += 1
  80. If $Qual >= UBound($Musicas) Then $Qual = 0
  81. EndFunc ;==>_TROCAR_RESERVA
  82.  
  83. Func _TROCAR()
  84. $Playing = not $Playing
  85. EndFunc ;==>_TROCAR
  86.  
  87. Func _FECHAR()
  88. EndFunc ;==>_FECHAR
  89.  
  90.  

Neste caso, mudando as variáveis:

  • $Margem = diz quanto afastado das margens laterais vc quer
  • $Altura = diz quanto de altura em relação à janela
  • $Tam_Janela = nem precisa explicar...  ;)

 

Coloquei um fundo padrão apenas para reforçar a transparência...

 

É por aí?

 

 

Estou sem Palavras  :digno1:  #ObrigadoManimal , cara vou fazer oque falei antes hein:

 

 

... acho que vou até postar os meus scripts pra você rever pra mim kkkk.  :P

 

Acho que o seu exemplo está em 1º lugar agora kkkkk. BOM D+. ==> Experiência é tudo. :like_icon:

:600866:  :lol:  ;)  :up:  :guitar:  :trofeu:  :aplausos:  :dance:  B)  :)  :rolleyes:  :D  

:ILA2:




#12745 Duvida com array

Postado por Fábio iGames em 20 março 2017 - 01:23

Olá Fábio.

 

Em relação ao meu exemplo, minha intenção foi apenas mostrar que é possível montar quaisquer tipos de estruturas com arrays.

Tem aquela opção que mostrei, tem outra que envolvia cada pasta num sub-array fazendo um array 2D (esse eu achei mais complexo pro Pedro), mas a idéia era mostrar que tudo é possível!

 

 

 

Eu sei Manimal , gostei muito do seu exemplo :like_icon:  , até vi que você colocou bem assim antes de exemplificar:

 

 

Olá Pedro.

 

Pode ser algo assim?

 

 

Sei que a intenção foi ajudar mesmo , e ajudou muito a mim também ;) ,  seus exemplos sempre me ajudam a entender mais o conceito de como utilizar determinada função. :up:

 

 

 

Boa Fábio, agora use a mesma técnica no AutoIt, só colocando o ; (ponto e vírgula para os comentários) e o _ (underline) para continuar o comando na próxima linha).

Adaptado do exemplo do Help:

  1.  
  2. Local $hChild = GUICreate("", _ ; título da janela
  3. 169, _ ; largura
  4. 68, _ ; altura
  5. 20, _ ; posição à esquerda
  6. 20, _ ; posição ao topo
  7. $WS_POPUP, _ ; estilo a ser aplicado
  8. BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), _ ; estilo estendido
  9. $hGUI) ; handle da janela pai
  10.  
  11.  

 

 

Isso ai já sabemos de cor e salteado , só não coloquei pois aqui AutoIt já é de praxe  :guitar: .

 

Só não tenho costume em AutoIt de colocar uma função com os parâmetros em cada linha , coloco tudo numa linha só mesmo , coloquei no C++ ai para galera ver tudo bem explicado.   :P

 

Deveria ter colocado mesmo pra galera ver a diferença e semelhanças , mas deixei pra você colocar.  :emoticons387:

 

 

 

Realmente o AutoIt é muito divertido, simples e eficiente.  :lol:

Uma das melhores linguagens que já trabalhei.  :600866:

 

Me too  :digno1:  , my first language and programming.  ;)   :ILA2:

 

PS: Adoro esse fórum , e são vocês que fazem ele ser assim ... Tão Maravilhoso. THANK YOU, :like_icon:




#12743 Duvida com array

Postado por Fábio iGames em 20 março 2017 - 10:02

@Manimal esse seu exemplo é muito bom , mas para o que ele quer tem que fazer umas adaptações e achei complicado , digo para quem não usa e mexe muito com array entende.

 

Estou fazendo um para ele que já vai ser uma mão na roda , e na verdade vai servir até pra mim :muttley:  , pois eu estou com um projeto parado aqui desde 2015 igualmente ao que o Pedro está fazendo agora.

Na época fiz de uma forma bem complexa , agora com mais experiência parece que estou brincando mesmo e me divertindo com disse o Pedro.  :autoit:  :wub:

 

Obrigado pela linguagem :autoit:  Jon  :D (Jonathan Bennett).

 

Editado:

 

[OFF Tópico]

Fiz minha 1ª Janela (Gui) em C++ , e adivinha só , todos esses anos mexendo com AutoIt estão me ajudando muito, vocês acreditam que os Parâmetros são muito parecidos  :600866: , só que são colocados em ordem diferentes por exemplo:

 

Vejam a semelhança com o nosso AutoIt:dance:

 

Esse // e para se fazer comentário no código em C++ , ou pode ser /* Comentário */

     

        hwnd = CreateWindowEx(      // Criação da Janela.

                    WS_EX_TOPMOST ,   // 1º Parâmetro Opções Extras de Estilos para dar a Janela. 
                    "Classe da Janela",   // 2º Parâmetro é o identificador da Class da Janela ==> O legal é que você que cria o nome da Classe.. FANTÁSTICO.

                    ''Título da Janela" ,    // 3º Parametro como já diz ai é o Título da Janela.

                    WS_VISIBLE | WS_POPUP ,  // 4º Estilo da Janela , aqui tem dois ==> Visível e sem Borda , só colocar esse separador ai.

                    100,  // 5º Posição X da Janela.

                    100,  // 6º Posição Y da Janela.

                    640,  // 7º Tamanho X da Janela.

                    480,  // 8º Tamanho Y da Janela.

                    HWND_DESKTOP, // 9º   (OPCIONAL) Um identificador para a janela pai ou proprietário da janela sendo criada...

                    NULL,                    //  10º (OPCIONAL) Um identificador para um menu ou especifica um identificador de janela filho, dependendo do estilo da janela...

                    hInstance, //  11º (OPCIONAL) Um identificador para a instância do módulo a ser associado com a janela..

                    NULL);      //  12º (OPCIONAL) Ponteiro para um valor a ser passado para a janela através da estrutura CREATESTRUCT ...

 

Fonte: https://msdn.microso...0(v=vs.85).aspx

 

Nesse caso ai usei CreateWindowEx pois a Microsoft diz bem assim: Para usar estilos de janela estendida para além dos estilos suportados por CreateWindow , use a função CreateWindowEx.

Fonte: https://msdn.microso...9(v=vs.85).aspx

          

Viram que LEGAL , e dá pra colocar esses comentários dentro da função se usar assim cada parâmetro numa linha.

 

Lógico que não é tão fácil como parece , mas estou gostando muito de mexer com o Pai / Mãe do AutoIt:guitar:

  

[ON Tópico]

:rolleyes:

 

 Autoit é tão divertido. Tenho muita raiva de não ser muito conhecido. :(

 

 

Eu também :ILA2:  meu amigo , infelizmente não é reconhecido mesmo para se trabalhar no mercado , mas é ÓTIMO para nós trabalharmos por conta por exemplo e para desenvolver conhecimento e experiência em programar. :up:

 

Uma Frase de incentivo: Se a Linguagem que você está usando atende as suas necessidades então ela é perfeita.

 

Eu cheguei a conclusão que AutoIt vai estar presente sempre na minha vida de programação , mas estou agregando mais conhecimento que no futuro penso que servirá para agregar ao próprio AutoIt. :up:

 

Todo esse material riquíssimo que temos em AutoIt é surpreendente , vejam  o número de pessoas que se cadastram aqui no fórum como cresce. ;)

 

Oque o AutoIt faz o :autoit:  faz.  :like_icon:




#12740 Duvida basica sobre labels

Postado por Fábio iGames em 19 março 2017 - 10:13

Boa mutleey.    :like_icon:

 

Eu também colocaria essa condição que o Belini recomendou.  :up:

 

Curti o exemplo dos dois   :like_icon:  :like_icon: , faria do mesmo jeito , novidade mesmo foi essa função _StringProper ;)  a função _StringTitleCase também faz a mesma coisa. :lol:




#12705 proteger contra decompiler. (Resolvido)

Postado por Fábio iGames em 15 março 2017 - 03:32

Quando falei em passaram a ser interpretadas, também não é coisa nova, sempre existiram linguagens interpretadas, sendo a BASIC uma primeira delas lá na década de 80 ainda.

 

Só que todas as linguagens interpretadas, tem uma característica em comum:

 

São "lentas", pois dependem de um interpretador que lê e executa cada linha. Isso em termos de máquina é horrível.

 

Quando vc compila um programa e transforma ele em linguagem de máquina, não só não há a necessidade do interpretador, como o código é nativo ao processador, então naturalmente é muito mais rápido e eficiente.

 

O melhor exemplo que eu posso usar agora é o antigo DBase III. Era uma linguagem de banco de dados que "rodava" dentro do banco. As desvantagens eram

 

Daí surgiu um compilador chamado Clipper, que basicamente transformava o seu fonte Dbase em código de máquina. Esta experiência deu tão certo que o Clipper mais tarde, se desvinculou do Dbase e evoluiu para uma linguagem própria com comando novos, funções próprias, etc

 

Talvez, com a nova versão do AutoIt, surja um compilador para ele. Seria uma mão na roda e um tremendo "salto" de qualidade para a comunidade (esperança).

 

 

Suas Palavras foram confortantes , foi bem como questionei , só precisamos que os desenvolvedores ou alguém que fez Faculdade de Ciência da Computação por exemplo  :P  kkkkkkk , faça um Compilador para que nossos Scripts sejam compilados para linguagem de máquina.  :up:

 

Cara isso seria um sonho , imagina o desempenho e "proteção" que teremos em nossos programas feitos com AutoIt.

 

Sabia que o mestre :jscript:  tinha razão em suas sábias palavras. :digno1:   :jscript:

 

Se isso acontecesse acho que AutoIt seria reconhecido no mercado de trabalho , teria até escolas da linguagem etc...

 

... Se eu soubesse e tivesse conhecimento pra fazer esse compilador... Acho que sonhei em voz alta.  :emoticons387:

 

Jonathan Bennett e Equipe AutoIt façam esse compilador logo. PLEASE.  ;)

 

Vamos ter não só esperança , mas o mais importante ... FÉ.  :like_icon: