Hotkey requires two presses to display correct information
Posted: 13 Aug 2018, 03:16
This script I have made works. However, I have to press the hotkey twice before the information in the variable is displayed correctly via the tooltip. I would like to know how to fix this and what the cause is for having to push the hotkey twice. I have gone into detail in a commented block below.
Code: Select all
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#SingleInstance, Force ;run only one instance of the script
#Persistent ;runs the script until closed by user
myfile := "a" ;file variable
toolTipTime := 2 ;time in seconds to refresh tooltip info
toolTipTime := toolTipTime * 1000 ;conversion from milliseconds to seconds
SetTimer, toolTipUpdate, % toolTipTime ;This makes the subroutine "toolTipUpdate" automatically run every Xms
return ;end of the auto-execution section
/*
expected behavior:
1. pressed ONCE
2. cut text
3. store cut text into variable sectionName
actual behavior:
1. pressed TWICE (minimum) before variable reflects changes correctly
working example:
playing a game in full screen. instead of alt+tabbing to the desktop, editing the values in the script, saving and reloading, alt+tabbing back to the game and waiting for it to render,
you can type the section of the ini you want and have the information correctly displayed via a tooltip
1st part of the example:
1. in the game and full screened
2. alt+tab out of the game to the desktop
3. navigate to the script location
4. edit the script values
5. save and reload the script
6. alt+tab back into the game
7. wait for the game to render
2nd part of the example:
1. type corresponding section of the ini file. for instance, since we are in 'a.ini', type: aa
2. highlight the text
3. use keyboard shortcut to cut the text. this puts it into the clipboard which then gets stored into a variable we use to read and write to the ini
4. read the correct and updated information via a tooltip
1a. type: ab
1b. type: ac
etc
whichever section is typed and cut should be reflected in the tooltip, no matter which file is selected at the beginning of the script
*/
$^x::
Send, ^{x} ;sends control+x
sectionName := Clipboard ;sets contents of clipboard as variable
return
Esc::ExitApp ;exits the app
[::goto, minusone ;go to subroutine
]::goto, addhalf ;go to subroutine
minusone: ;start of the subroutine
myLives-- ;subtracts 1 from variable
IniWrite, % myLives, C:\Users\User\Desktop\%myfile%.ini, % sectionName, 1 ;writes/updates ini file with new variable info
return
addhalf: ;start of the subroutine
myLives := myLives + 0.5 ;adds 0.5 to variable
IniWrite, % myLives, C:\Users\User\Desktop\%myfile%.ini, % sectionName, 1 ;writes/updates ini file with new variable info
return
toolTipUpdate: ;start of the subroutine
IniRead, myLives, C:\Users\User\Desktop\%myfile%.ini, % sectionName, 1 ;read ini file contents
ToolTip, % myLives, 0, 0 ;updates tooltip with current variable info
return
/*
the ini files are basically set up like this:
a.ini
[aa]
1=1aa
[ab]
1=1ab
[ac]
1=1ac
[ad]
1=1ad
b.ini
[ba]
1=1ba
[bb]
1=1bb
[bc]
1=1bc
[bd]
1=1bd
c.ini
[ca]
1=1ca
[cb]
1=1cb
[cc]
1=1cc
[cd]
1=1cd
*/