Anonymous wrote:
use Cheatening to search string text "There are no active calls at this time" address
see if its static
if it is, u can make a loop to check if that address has changed to another text, if yes, press the hotkey
Good idea, I was not able to find that text, I was able to search my name and find a location that seems to reliably change from my name to another value during incoming and outgoing calls. I'm just not clear how to access it. Cheat Engine shows the value as: 08BB6B6B
Since this is the first I have really dealt with memory addresses, I don't understand the syntax.
For instance I can't yet read that address:
Code:
; Automatically closes handle when a new (or null) program is indicated
; Otherwise, keeps the process handle open between calls that specify the
; same program. When finished reading memory, call this function with no
; parameters to close the process handle i.e: "Closed := ReadMemory()"
ReadMemory(MADDRESS=0,PROGRAM="")
{
Static OLDPROC, ProcessHandle
VarSetCapacity(MVALUE,4,0)
If PROGRAM != %OLDPROC%
{
WinGet, pid, pid, % OLDPROC := PROGRAM
ProcessHandle := ( ProcessHandle ? 0*(closed:=DllCall("CloseHandle"
,"UInt",ProcessHandle)) : 0 )+(pid ? DllCall("OpenProcess"
,"Int",16,"Int",0,"UInt",pid) : 0)
}
If (ProcessHandle) && DllCall("ReadProcessMemory","UInt"
,ProcessHandle,"UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
return *(&MVALUE+3)<<24 | *(&MVALUE+2)<<16 | *(&MVALUE+1)<<8 | *(&MVALUE)
return !ProcessHandle ? "Handle Closed: " closed : "Fail"
}
value:=ReadMemory(08BB6B6B,"PCM.exe")
msgbox %value%
The above returns "Handle Closed:"
Another basic question, once I get this solved on my machine, will the memory location be the same on other machines?
UPDATE: the script calls for the Window Name, not the process name. changing "PCM.exe" to "ShoreTel Personal Call Manager" worked.