Jump to content
Sign in to follow this  
amaral

usar uma hotkey em um arquivo.ini

Recommended Posts

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
Edited by amaral
  • Like 1

Share this post


Link to post
Share on other sites

Dois detalhes para melhorar o seu código:

Const $read_comand2 = StringLower(IniRead("MUSICBOX.ini", "PARAMETRO", "TECLA_TROCA", ""))); StringLower para converter para minúsculas
Const $read_comand3 = StringLower(IniRead("MUSICBOX.ini", "PARAMETRO", "SAIR", "")); StringLower para converter para minúsculas

HotKeySet("{" & $read_comand2 & "}", "close_open"); Usar chaves para poder usar comandos especiais tipo ENTER, ESC, END...
HotKeySet("{" & $read_comand3 & "}", "fecha_script"); Usar chaves para poder usar comandos especiais tipo ENTER, ESC, END...

 

Share this post


Link to post
Share on other sites

belini meu amigo estou com um problema nesse script     esse ta funcionando perfeito mas o que acontece é que a tecla d que uso para trocar o programa ela também da credito e quando eu aperto ela troca o programa mas também da um credito 

quero impedir a tecla de dar o credito na hora de trocar o programa como faço?

 

Quote

#NoTrayIcon
#RequireAdmin

   

#include <WinAPI.au3>
#include <wave.au3>

If Not FileExists("config.ini") Then
    IniWrite("config.ini", "Tecla que fecha um programa e abre outro", "Tecla1", "x")
    IniWrite("config.ini", "Tecla que fecha 0 Script e os programas", "Tecla2", "f")
    IniWrite("config.ini", "Caminho do Primeiro programa", "Caminho1", "")
    IniWrite("config.ini", "Nome do Primeiro programa", "Programa1", "")
    IniWrite("config.ini", "Caminho do Segundo programa", "Caminho2", "")
    IniWrite("config.ini", "Nome do Segundo programa", "Programa2", "")
    IniWrite("config.ini", "Caminho do terceiro programa", "Caminho3", "")
    IniWrite("config.ini", "Nome do terceiro programa", "Programa3", "")
EndIf

$tecla1 = IniRead("config.ini", "Tecla que fecha um programa e abre outro", "Tecla1", "")
$tecla2 = IniRead("config.ini", "Tecla que fecha 0 Script e os programas", "Tecla2", "")
$caminho1 = IniRead("config.ini", "Caminho do Primeiro programa", "Caminho1", "")
$programa1 = IniRead("config.ini", "Nome do Primeiro programa", "Programa1", "")
$caminho2 = IniRead("config.ini", "Caminho do Segundo programa", "Caminho2", "")
$programa2 = IniRead("config.ini", "Nome do Segundo programa", "Programa2", "")
$caminho3 = IniRead("config.ini", "Caminho do terceiro programa", "Caminho3", "")
$programa3 = IniRead("config.ini", "Nome do terceiro programa", "Programa3", "")
Const $MASCARA = 0x8000
Const $tecla = 0x44 ; corresponde tecla d
Global $ITIMER, $CONT_PRESS = TimerInit()

HotKeySet("{" & $tecla1 & "}", "close_open"); Usar chaves para poder usar comandos especiais tipo ENTER, ESC, END...
HotKeySet("{" & $tecla2 & "}", "fecha_script"); Usar chaves para poder usar comandos especiais tipo ENTER, ESC, END...

ShellExecute($programa1, "", $caminho1); executa o programa 1

; rotina de loop que mantém o script aberto.
While 1
    Sleep(250); dá um intervalo de 200 milisegundos
WEnd

; Função que irá verificar o estado da tecla
Func close_open()

;-----------------------------------------------------------------------------------

    Local $Tecla, $teclal ; Tecla d
    Local $Tempo = 0
    Local $Segundos = 80 ; 2000 = 2 Segundos, mude o valor que desejar

    ; Remove o hotkey temporariamente
    HotKeySet($tecla1)

    $Tempo = TimerInit()
    While 1
        $tecla = _WinAPI_GetAsyncKeyState($tecla)
        If BitAND($tecla,$MASCARA) Then
            HotKeySet("{" & $tecla1 & "}", "close_open"); Usar chaves para poder usar comandos especiais tipo ENTER, ESC, END...
            ExitLoop
        Else
            If TimerDiff($Tempo) >= $Segundos Then
                CloseOpen()
                HotKeySet("{" & $tecla1 & "}", "close_open"); Usar chaves para poder usar comandos especiais tipo ENTER, ESC, END...
                ExitLoop
            EndIf
        EndIf
        Sleep(100)
    WEnd
EndFunc

Func CloseOpen(); troca o programa quando a tecla "X" for pressionada

        If ProcessExists($programa1) Then; verifica se o programa 1 esta aberto
        ProcessClose($programa1); fecha o programa 1

        ShellExecute($programa2, "", $caminho2); executa o programa 2
        ;Define a % do volume Wave
        SoundSetWaveVolume(80)

        ElseIf ProcessExists($programa2) Then
        ProcessClose($programa2); fecha o programa 2

        ;ShellExecute($programa3, "", $caminho3); executa o programa 3
        ;ElseIf ProcessExists($programa3) Then
        ;ProcessClose($programa3); fecha o programa 3

        ShellExecute($programa1, "", $caminho1); executa o programa 1
       ;Define a % do volume Wave
        SoundSetWaveVolume(80)

        EndIf
EndFunc   ;==>close_open

Func fecha_script(); fecha o script quando a letra "F" for pressionada

    HotKeySet($tecla1); Remove a hotkey "X"
    HotKeySet($tecla2); Remove a hotkey "F"

    If ProcessExists($programa1) Then
        ProcessClose($programa1); fecha o programa 1
    EndIf

    If ProcessExists($programa2) Then
        ProcessClose($programa2); fecha o programa 2
    EndIf

       ; If ProcessExists($programa3) Then
        ;ProcessClose($programa3); fecha o programa 3
    ;EndIf


    Exit; encerra o script

EndFunc   ;==>fecha_script

Edited by amaral

Share this post


Link to post
Share on other sites

Vc não pode usar uma outra tecla diferente apenas para o crédito? O que vc pode fazer é usar um timmer tipo segurou por 3 segundos troca sem dar crédito e se segurou por menos de 3 segundos dá o credito sem fazer a troca.

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

Sign in to follow this  

×