Post by Gio » 24 Mar 2018, 09:06
Bom dia Nauany.
seria possível eu salvar algumas hotkey que eu escolhi após executar meu script, e toda vez que eu fecha-lo e abri-lo novamente essas "hotkeys" estarem salvas para n ser necessário configura-lo novamente?
É possível sim. Tem várias formas de fazer isso. Os executáveis rodam no computador utilizando a memória RAM, que se perde no término da execução (ou quando você desliga o computador se você usar outro aplicativo em execução para manter as informações), portanto, você precisa escrever no disco as informações que quer que sejam armazenadas entre execuções. Isso pode ser feito escrevendo um arquivo.
O AutoHotkey oferece suporte nativo para escrever e ler arquivos de texto e ainda alguns comandos para operar arquivos do tipo .ini, que são bastante utilizados como parâmetros de configuração de programas. Os comandos em questão são o IniWrite e o IniRead.
Além disso, será necessário escrever algumas coisas a mais pra que o código funcione de forma redonda, mas no fim não é tão complexo assim.
Code: Select all
; No início do programa, lemos o arquivo .ini (se ele existir) e criamos uma hotkey conforme a que estava gravada.
; Precisamos da informação valor (para recriar a hotkey nesta execução) e da informação posição (para selecionar a entrada na DropDownList).
IfExist, %A_ScriptDir%/HOTKEY_INFO.ini
{
IniRead, HOTKEY_SELECIONADA_VALOR, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, VALOR
IniRead, POSICAO_HOTKEY_ARMAZENADA, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, POSICAO
Hotkey, %HOTKEY_SELECIONADA_VALOR%, MOSTRAR_MSGBOX ; O comando hotkey permite implementar hotkeys dinamicas.
}
; Depois, criamos a Tela de controle.
Gui, font, s10 w700
Gui, add, text, x20 y20, Selecione uma hotkey e clique em gravar. Ela será lembrada entre execuções.
Gui, add, dropdownlist, x20 y40 vHOTKEY_SELECIONADA AltSubmit Choose%POSICAO_HOTKEY_ARMAZENADA%, F2|F3|F6|F7|F8
Gui, add, Button, x20 y70 gGravar, Gravar
Gui, show, w600 h200, Hotkey de Messagebox
Return
; A label Gravar vai salvar a seleção atual no arquivo .ini e implementar a hotkey na execução atual, primeiro desligando a hotkey antiga (se houver). O arquivo .ini será gravado na mesma pasta em que o script estiver.
Gravar:
Gui, submit, nohide
If !(HOTKEY_SELECIONADA_VALOR = "") ; Se não havia hotkey gravada, não precisamos desligar nada (e pular essa tentativa evita um erro).
{
Hotkey, %HOTKEY_SELECIONADA_VALOR%, MOSTRAR_MSGBOX, Off
}
ControlGetText, HOTKEY_SELECIONADA_VALOR, ComboBox1, Hotkey de Messagebox ; Aqui coletamos o valor da hotkey (a posição já está na variável do controle, em virtude do AltSubmit).
IniWrite, %HOTKEY_SELECIONADA_VALOR%, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, VALOR ; Aqui escrevemos no arquivo ini a chave VALOR.
IniWrite, %HOTKEY_SELECIONADA%, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, POSICAO ; Aqui escrevemos no arquivo ini a chave POSICAO.
Hotkey, %HOTKEY_SELECIONADA_VALOR%, MOSTRAR_MSGBOX ; E aqui ativamos a nova hotkey selecionada.
msgbox % "Gravado com sucesso"
Return
MOSTRAR_MSGBOX:
msgbox % "Você apertou a hotkey certa!"
Return
- eu gostaria de fazer um "sleep" com o tempo desejado pela pessoa
Sem problemas. Basta usar uma variável no parâmetro do tempo e dereferenciá-la.
Code: Select all
Gui, font, s10 w700
Gui, add, text, x20 y20, Indique o tempo de espera antes da msgbox (em segundos!).
Gui, add, Edit, number x20 y40 vTEMPO_DE_ESPERA
Gui, add, Button, x20 y70 gRODAR, RODAR
Gui, show, w600 h200, Mensagem com espera
Return
RODAR:
Gui, Submit, nohide
TEMPO_A_ESPERAR := TEMPO_DE_ESPERA * 1000
Sleep, %TEMPO_A_ESPERAR%
msgbox % "o tempo pretentedido transcorreu."
Return
Se tiver algum dúvida sobre os códigos dos exemplos, basta perguntar
Bom dia Nauany.
[quote]seria possível eu salvar algumas hotkey que eu escolhi após executar meu script, e toda vez que eu fecha-lo e abri-lo novamente essas "hotkeys" estarem salvas para n ser necessário configura-lo novamente?[/quote]
É possível sim. Tem várias formas de fazer isso. Os executáveis rodam no computador utilizando a memória RAM, que se perde no término da execução (ou quando você desliga o computador se você usar outro aplicativo em execução para manter as informações), portanto, você precisa escrever no disco as informações que quer que sejam armazenadas entre execuções. Isso pode ser feito escrevendo um arquivo.
O AutoHotkey oferece suporte nativo para escrever e ler arquivos de texto e ainda alguns comandos para operar arquivos do tipo .ini, que são bastante utilizados como parâmetros de configuração de programas. Os comandos em questão são o IniWrite e o IniRead.
Além disso, será necessário escrever algumas coisas a mais pra que o código funcione de forma redonda, mas no fim não é tão complexo assim.
[code]
; No início do programa, lemos o arquivo .ini (se ele existir) e criamos uma hotkey conforme a que estava gravada.
; Precisamos da informação valor (para recriar a hotkey nesta execução) e da informação posição (para selecionar a entrada na DropDownList).
IfExist, %A_ScriptDir%/HOTKEY_INFO.ini
{
IniRead, HOTKEY_SELECIONADA_VALOR, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, VALOR
IniRead, POSICAO_HOTKEY_ARMAZENADA, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, POSICAO
Hotkey, %HOTKEY_SELECIONADA_VALOR%, MOSTRAR_MSGBOX ; O comando hotkey permite implementar hotkeys dinamicas.
}
; Depois, criamos a Tela de controle.
Gui, font, s10 w700
Gui, add, text, x20 y20, Selecione uma hotkey e clique em gravar. Ela será lembrada entre execuções.
Gui, add, dropdownlist, x20 y40 vHOTKEY_SELECIONADA AltSubmit Choose%POSICAO_HOTKEY_ARMAZENADA%, F2|F3|F6|F7|F8
Gui, add, Button, x20 y70 gGravar, Gravar
Gui, show, w600 h200, Hotkey de Messagebox
Return
; A label Gravar vai salvar a seleção atual no arquivo .ini e implementar a hotkey na execução atual, primeiro desligando a hotkey antiga (se houver). O arquivo .ini será gravado na mesma pasta em que o script estiver.
Gravar:
Gui, submit, nohide
If !(HOTKEY_SELECIONADA_VALOR = "") ; Se não havia hotkey gravada, não precisamos desligar nada (e pular essa tentativa evita um erro).
{
Hotkey, %HOTKEY_SELECIONADA_VALOR%, MOSTRAR_MSGBOX, Off
}
ControlGetText, HOTKEY_SELECIONADA_VALOR, ComboBox1, Hotkey de Messagebox ; Aqui coletamos o valor da hotkey (a posição já está na variável do controle, em virtude do AltSubmit).
IniWrite, %HOTKEY_SELECIONADA_VALOR%, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, VALOR ; Aqui escrevemos no arquivo ini a chave VALOR.
IniWrite, %HOTKEY_SELECIONADA%, %A_ScriptDir%/HOTKEY_INFO.ini, HOTKEY, POSICAO ; Aqui escrevemos no arquivo ini a chave POSICAO.
Hotkey, %HOTKEY_SELECIONADA_VALOR%, MOSTRAR_MSGBOX ; E aqui ativamos a nova hotkey selecionada.
msgbox % "Gravado com sucesso"
Return
MOSTRAR_MSGBOX:
msgbox % "Você apertou a hotkey certa!"
Return[/code]
[quote]- eu gostaria de fazer um "sleep" com o tempo desejado pela pessoa[/quote]
Sem problemas. Basta usar uma variável no parâmetro do tempo e dereferenciá-la.
[code]Gui, font, s10 w700
Gui, add, text, x20 y20, Indique o tempo de espera antes da msgbox (em segundos!).
Gui, add, Edit, number x20 y40 vTEMPO_DE_ESPERA
Gui, add, Button, x20 y70 gRODAR, RODAR
Gui, show, w600 h200, Mensagem com espera
Return
RODAR:
Gui, Submit, nohide
TEMPO_A_ESPERAR := TEMPO_DE_ESPERA * 1000
Sleep, %TEMPO_A_ESPERAR%
msgbox % "o tempo pretentedido transcorreu."
Return[/code]
Se tiver algum dúvida sobre os códigos dos exemplos, basta perguntar :thumbup: