Jump to content
JScript

_GUIRegisterMsgEx - Somente para controls!.

Recommended Posts

Function Reference


_GUIRegisterMsgEx.au3

 

Registra uma função definida pelo usuário com "Windows Message ID (WM_MSG)" para um ctrl usando Call Back!

 

Sintaxes:

 

_GUICtrlMsg_Register( controlID, MsgID, "Function" )
_GUICtrlMsg_UnRegister( hWnd [, MsgID ])

 

Suporte:

 

; Controles de janelas AutoIt!

 

Downloads:

 

Versão: 0.9b

_GUIRegisterMsgEx_(RedirectLink).html

 

Nota: Podemos usar essa UDF em controles que usam internamente determinadas "Windows Message ID" que não podem serem registradas com a função GUIRegisterMsg, exemplo: WM_CHAR, WM_KEYDOWN, WM_KEYUP.

Está incluso exemplo de uso!

 

Amostra:

 

sample10.jpg

 

Correções:

 


    0.9.1412.2600b
  • 14/09/2012 -> Correções feitas nas funções _GUICtrlMsg_Register() e __GRM_CallBack() por @SmOke_N no link: http://www.autoitscript.com/forum/topic/144041-guiregistermsgex-udf-like-native-but-for-controls/#entry1016135
     
    0.9.1112.2600b
  • 11/09/2012 -> Novo parâmetro adicionado: iMsgID!
    Remarks:
     
    Para tornar a função do usuário funcional, você terá que defini-la com EXATOS 4 parãmetros na função, caso contrário a função não será chamada!
    Exemplo:
    [autoit]Func _MyRegisterFunc( $hCtrlID, $iMsgID, $WParam, $LParam )
    ;...
    EndFunc[/autoit]
    Os 4 parâmetros deven ser no seguinte formato:
     
    1. hCtrlID, O controlID na forma de handle da mensagem registrada.
    2. iMsg, Retorna "Windows message ID".
    3. wParam, O primeiro parâmetro da mensagem em hexdecimal.
    4. lParam, O segundo parâmetro da mensagem em hexdecimal.
      (Posição. Parâmetro, Significado)

    Aceita até 256 funções de usuário registradas com "message IDs".

     

    Por padrão, após terminar a função do usuário, a UDF passa as mensagens que não foram capturadas para o próprio controle (default WindowProc), da mesma forma se você usar a variável $GUI_RUNDEFMSG (em GUIConstantsEx.au3) na keyword Return.

     

    Note: Pode-se usar funções de bloqueio como por exemplo "Msgbox()".

     

    Podemos usar em controles que usam certas mensagens internamente, exemplo: WM_CHAR, WM_KEYDOWN, WM_KEYUP que são usadas por edit e input!


    0.9.0812.2600b
  • 09/09/2012 -> Primeira versão lançada!

 


Abraços,

 

João Carlos.

Edited by JScript
  • Like 2

Share this post


Link to post
Share on other sites

kkkk, pra você ver que a necessidade faz o momento...

E eu adoro UDFs, pois elas facilitam e muito o tedioso trabalho de digitação e entendimento!

 

Abraços,

 

João Carlos.

Share this post


Link to post
Share on other sites

@Belini

Muito obrigado por seu reconhecimento ao meu trabalho!

 

Novas mudanças:



    0.9.1112.2600b
  • 11/09/2012 -> Novo parâmetro adicionado: iMsgID!
    Remarks:
     
    Para tornar a função do usuário funcional, você terá que defini-la com EXATOS 4 parãmetros na função, caso contrário a função não será chamada!
    Exemplo:
    [autoit]Func _MyRegisterFunc( $hCtrlID, $iMsgID, $WParam, $LParam )
    ;...
    EndFunc[/autoit]
    Os 4 parâmetros deven ser no seguinte formato:
     
    1. hCtrlID, O controlID na forma de handle da mensagem registrada.
    2. iMsg, Retorna "Windows message ID".
    3. wParam, O primeiro parâmetro da mensagem em hexdecimal.
    4. lParam, O segundo parâmetro da mensagem em hexdecimal.
      (Posição. Parâmetro, Significado)

    Aceita até 256 funções de usuário registradas com "message IDs".

     

    Por padrão, após terminar a função do usuário, a UDF passa as mensagens que não foram capturadas para o próprio controle (default WindowProc), da mesma forma se você usar a variável $GUI_RUNDEFMSG (em GUIConstantsEx.au3) na keyword Return.

     

    Note: Pode-se usar funções de bloqueio como por exemplo "Msgbox()".

     

    Podemos usar em controles que usam certas mensagens internamente, exemplo: WM_CHAR, WM_KEYDOWN, WM_KEYUP que são usadas por edit e input!


Abraços,

 

João Carlos.

Share this post


Link to post
Share on other sites

Fala pessoal, dei uma sumida pois estou num momento de muito serviço e entregas com data para finalizar. :wacko:

Mas dentro do possível, to acessando o fórum para ver as news e tentar ajudar o pessoal.

 

 

@JScript - Muito bom e útil! Parabéns e obrigado por compartilhar ^^, essa UDF vai ser de grande valia.

Share this post


Link to post
Share on other sites

Que bom que está tendo bastante serviço!

 

Sobre a UDF, muito obrigado também.

 

Abraços,

 

João Carlos.

Share this post


Link to post
Share on other sites

Correções:

Abraços,

 

João Carlos.

Share this post


Link to post
Share on other sites

Resolvi obfuscar alguns scripts usando a opção /OM prá testar e em todos que usei esta UDF esa dando este erro:

 

-### Obfuscation Error: Found Call() statement using unsolvable Func, which will/could lead to problems running your obfuscated script.
>### current Func: __GRM_CallBack
G:\\.\includes\_GUIRegisterMsgEx.au3(274,1) Warning for line:Local $vRet = Call($asSubArray[$iIndex2][1], $hWnd, $iMsg, $wParam, $lParam)

-#############################################################################################
-#### Obfuscator Found   1 Error(s)!!!!    This means your script could have problems running properly.  ####
-#############################################################################################
+> Obfuscator v1.0.30.1 finished obfuscating 6598 lines, stripped 9822 comment lines. created:G:\Configarcade_Obfuscated.au3

Share this post


Link to post
Share on other sites

Não, definitivamente não é bem um "erro"! Está mais pra um aviso sobre o sistema do Obfuscator com funções que fazem uso da função Call()!

Seu programa pode ou não funcionar normalmente, isso não é problema da UDF...

 

Observe que:

Warning for line:Local $vRet = Call($asSubArray[$iIndex2][1], $hWnd, $iMsg, $wParam, $lParam)
A função Call() espera o nome de uma função sua que no caso está dentro da array $asSubArray[$iIndex2][1]!

 

JS

Share this post


Link to post
Share on other sites

@Jscript nem precisa perder tempo com isto pois testei em scripts que funcionam perfeitamente inclusive usei o o parâmetro #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 prá conferir e depois de compilados obfuscando com o parâmetro /OM passaram a dar erro de variáveis, mais vai falar isto lá no forum oficial prá ver.

Edited by Belini

Share this post


Link to post
Share on other sites

Já comentei contigo que abandonei lá por umas idiotices que vi?

 

A que me encheu foi não poder postar em tópicos considerados por eles como "necro posts", em média com dois anos! Um absurdo e contestei isso perguntando pra que servia o sistema de buscas do fórum se não podíamos fazer perguntas no tópico...

 

Ao que percebi atualmente eles agora não protestam mais sobre isso, acho que foi porque eu chamei a atenção de muita gente!

 

JS

Share this post


Link to post
Share on other sites

Sim você é muito influente lá e deve ter sido por isto mesmo que mudaram a postura, eu se tivesse a metade do conhecimento que você tem também já teria abandonado o forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×