I found the AHK file
If not A_IsAdmin { ; Runs script as Administrator for UAC in Windows Vista and 7+
Run *RunAs "%A_ScriptFullPath%"
ExitApp
}
; _______ _______ __
; | _ |.---.-.----.-----.-----.-----. | __|.-----.-----.-----.| |.-----.
; | || _ | _| _ | |__ --| | | || _ | _ | _ || || -__|
; |___|___||___._|__| |_____|__|__|_____| |_______||_____|_____|___ ||__||_____|
; _______ __ __ ______ __ |_____|
; | ___|.---.-.----.| |_| |--. | |.---.-.----.| |--.-----.
; | ___|| _ | _|| _| | | ---|| _ | __|| | -__|
; |_______||___._|__| |____|__|__| |______||___._|____||__|__|_____|
; _______ __ __
; | __| |_.---.-.-----.| |--.-----.----.
; |__ | _| _ |__ --|| | -__| _|
; |_______|____|___._|_____||__|__|_____|__|
; Written in Autohotkey
; by Aaron Bewza
#NoTrayIcon ; Not needed at all
#SingleInstance Force ; New attempt to open script will replace current instance
#NoEnv ; No system variables apply
EnvGet, User, UserProfile ; Sends User's profile name to User variable
SetWorkingDir, %User%\AppData\LocalLow\Google\GoogleEarth ; Sets working directory to this directory
GoogleCache = %User%\AppData\LocalLow\Google\GoogleEarth ; Location of Google Earth's image cache files
VersionInfo = 0.1.4.0 (beta) ; Creates these variables for "About" message window -->>
BuildDate = June 21st 2011 ; -------------------------------------------------------<<
RegRead, OSVersion, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows NT\CurrentVersion, ProductName ; Checks OS version, contents sent to OSVersion variable
IfInString, OSVersion, XP ; Looks for XP in the name of the operating system
{
SetWorkingDir, %User%\Application Data\Google\GoogleEarth ; Sets these two variables to XP location -->>
GoogleCache = %User%\Application Data\Google\GoogleEarth ; -------------------------------------------<<
}
FileCreateDir, %A_MyDocuments%\Google Earth Cache Stash ; Creates the stash destination
MainStashFolder = %A_MyDocuments%\Google Earth Cache Stash ; sends that location to MainStashFolder variable
FileCreateDir, %MainStashFolder%\Default Cache ; Creates folder structure for Default Cache items
DefaultCache = %MainStashFolder%\Default Cache ; Sends entire address to DefaultCache variable
If Not FileExist(DefaultCache "\Default Backup Message.txt") ; If this file does not exist, User has not seen the initial one-time Default Cache prompt
GoSub DefaultBackupMessage ; Calls function to prompt User to create a Default Cache, and creates the above file
BkgPic_Extract(DefaultCache "\bkg.jpg") ; Calls "BkgPic_Extract" function, creates background image for main window
Gui, Add, Picture, x0 y0 w280 h170 , %DefaultCache%\bkg.jpg ; Displays background image
Gui, Add, Button, x10 y10 w120 h40 vCreateStash , Create Stash
Gui, Add, Button, x140 y10 w120 h40 vRestoreStash, Restore Stash
Gui, Add, Button, x10 y55 w60 h20 vInfo, Info
Gui, Add, Button, x10 y80 w60 h20 vOpen, Open
Gui, Add, Button, x200 y55 w60 h20 vAbout, About
; Calls animation when main window opened--------------->>
Gui, +LastFound
Gui, Show, Hide h171 w270, Cache Stasher
H := WinExist()
AnimateWindow(H, "Center", 400)
; ------------------------------------------------------<<
Return
ButtonCreateStash:
Process, Close, googleearth.exe ; Closes Google Earth so files can be manipulated
Gui, +Disabled
Gui, +OwnDialogs
If Not FileExist(GoogleCache "\dbCache.dat") ; If User's Google Earth Cache is empty then User is shown message
{
MsgBox, There are no cache files available to stash.`nYou need to use Google Earth to create a Cache File`nor restore one with this tool.
Gui, -Disabled
Return
}
InputBox, StashName, Google Earth Cache Stasher, Type the name you want for your Cache Stash: ; Sends User's chosen Cache Stash name to "Stashname" variable
If ErrorLevel ; If nothing is typed in the Input Box
{
MsgBox, Operation cancelled.
Gui, -Disabled
Return
}
FileGetSize, CacheSize, %GoogleCache%\dbCache.dat, M ; Retrieves the size of Google Earth's current cache in megabytes
MsgBox, Size of `"%StashName%`" will be %CacheSize%mb. ; Reports cache size
FileCreateDir, %MainStashFolder%\%StashName% (%CacheSize%mb) %A_MMMM% %A_DD% %A_YYYY% ; Creates folder in Stash directory with User's chosen name, size, month/day/year
StashLocation = %MainStashFolder%\%StashName% (%CacheSize%mb) %A_MMMM% %A_DD% %A_YYYY% ; Sends entire location and modified filename to "StashLocation" variable
Loop, 100 { ; Controls how the progress bar operates
Progress, %A_Index%,, Stashing Cache`, please wait... ; Message shown on progress bar
Sleep 1 ; Sets progress bar updates to approximately 15 milliseconds
If A_Index = 100
Break
}
FileMove, %GoogleCache%\dbCache.dat, %StashLocation%\dbCache.dat, 1 ; These three files are moved to User's chosen stash location and name --->>
FileMove, %GoogleCache%\dbCache.dat.index, %StashLocation%\dbCache.dat.index, 1 ; ------------------------------------------------------------
FileMove, %GoogleCache%\dbroot_cache, %StashLocation%\dbroot_cache, 1 ; ----------------------------------------------------------------------<<
Progress, Off ; Progress bar finished
If Errorlevel ; If something goes wrong, User is returned to "ButtonCreateStash" (usually because Google Earth has been opened, making cache files "in use")
{
MsgBox, There was an error. Please make sure`nGoogle Earth is closed and try again.
FileRemoveDir, %StashLocation%, 1
GoTo ButtonCreateStash
}
MsgBox, ; Shown when FileMove operation restores Stash successfully, reports location of Stash
( LTrim
Cache Stash Operation finished!`n
"%StashName%" has been saved to`n
%MainStashFolder%
)
Gui, -Disabled
Return
ButtonRestoreStash:
Process, Close, googleearth.exe ; Closes Google Earth so files can be manipulated
Gui, +Disabled
Gui, +OwnDialogs
FileSelectFolder, StashName, %MainStashFolder%, 0, Please select the Cache Stash you wish to restore:`n(Will overwrite your current cache) ; User selects Stash to restore
If ErrorLevel ; If something goes wrong, User is returned to main window
{
MsgBox, Nothing was selected.`nOperation cancelled.
Gui, -Disabled
Return
}
If StashName = %MainStashFolder% ; User is returned to "ButtonRestoreStash" if main stash folder is selected instead of one of the archives inside it
{
Gui, -Disabled
MsgBox, Please select a valid Cache Stash!
GoTo ButtonRestoreStash
}
If StashName = %DefaultCache% ; If, for some reason, Default Cache is selected and there is nothing in it, User is returned to "ButtonRestoreStash"
{
If Not FileExist(DefaultCache "\dbCache.dat")
{
MsgBox, There is nothing in your default Cache Stash!`nPlease select a different backup.
GoTo ButtonRestoreStash
}
}
Loop, 100 { ; Controls how the progress bar operates
Progress, %A_Index%,, Restoring Cache`, please wait...
Sleep 1 ; Sets progress bar updates to approximately 15 milliseconds
If A_Index = 100
Break
}
FileCopy, %StashName%\dbCache.dat, %GoogleCache%\dbCache.dat, 1 ; These three files are restored to Google Earth's cache location --->>
FileCopy, %StashName%\dbCache.dat.index, %GoogleCache%\dbCache.dat.index, 1 ; -------------------------------------------------------
FileCopy, %StashName%\dbroot_cache, %GoogleCache%\dbroot_cache, 1 ; -----------------------------------------------------------------<<
Progress, Off
If Errorlevel ; If something goes wrong, User is returned to "ButtonRestoreStash" (usually because Google Earth has been opened, making cache files "in use")
{
MsgBox, There was an error. Please make sure`nGoogle Earth is closed and try again.
GoTo ButtonRestoreStash
}
MsgBox, ; Shown when FileMove operation restores Stash successfully, reports location of Google Earth's cache
( LTrim
Cache Restore Operation finished!`n
Selected Cache Stash has been restored to:`n
%GoogleCache%
)
Gui, -Disabled
Return
ButtonInfo: ; Shows some information about the program
Gui, +Disabled
Gui, +OwnDialogs
MsgBox,
( LTrim
Aaron's Google Earth Cache Stash
Google Earth caches the images you view in:`n
%GoogleCache%`n
It constantly fills with images you view
from locations you visit with Google Earth
to a maximum size of 2gb. This is the cache
that is referenced if no internet is available.`n
Use this tool to create backups of that cache.
For example, you can zoom into your own
town or city and collect all those images.`n
Stash that cache and name it "Your Hometown".
This way you can use Google Earth even if
you are offline.`n
)
Gui, -Disabled
Return
ButtonOpen: ; Opens the Stash folder location, for easy deleting
Run, %MainStashFolder%
Return
ButtonAbout: ; Reports version, build date, Google Earth cache location and User's Stash location
Gui, +Disabled
Gui, +OwnDialogs
MsgBox,
( LTrim
Version:`n%VersionInfo%`n
Build Date:`n%BuildDate%`n
Google Earth Cache location:`n%GoogleCache%`n
Your Cache Stash location:`n%MainStashFolder%
)
Gui, -Disabled
Return
DefaultBackupMessage: ; Subroutine that shows User a prompt to make a default initial backup of Google Earth's cache
Process, Close, googleearth.exe ; Closes Google Earth so files can be manipulated
Gui, +Disabled
Gui, +OwnDialogs
MsgBox,3,,
( LTrim
It is recommended that you do a "default backup" of your
Google Earth Cache files. This will keep intact all the
images you've viewed so far in Google Earth, so if you want
to restore all of them like they originally were, you can.`n
If you make a default backup now, you will then have an empty
cache to work with so you can collect images from specific
locations and keep them in their own individually named stashes.`n
Press YES to create a default stash...
(Always accessible to restore at any time)
Press NO to cancel...
(Your entire cache will be stashed the first time you create one)`n
This message will be seen only once.
)
IfMsgBox No
{
FileCreateDir, %DefaultCache% ; Creates empty "Default Cache" archive with text message in it.
FileAppend, One-time message seen about making a default backup.`nThis file ensures the message is only seen once., %DefaultCache%\Default Backup Message.txt
Gui, -Disabled
Return
}
IfMsgBox Yes
{
Process, Close, googleearth.exe ; Closes Google Earth so files can be manipulated
If Not FileExist(GoogleCache "\dbCache.dat")
{
MsgBox, There are no cache files available to stash.`nYou need to use Google Earth to create a Cache File.
Gui, -Disabled
Return
}
FileGetSize, CacheSize, %GoogleCache%\dbCache.dat, M ; Retrieves the size of Google Earth's current cache in megabytes
MsgBox Size of Default Cache is %CacheSize%mb. ; Reports cache size
Loop, 100 { ; Controls how the progress bar operates
Progress, %A_Index%,, Stashing...
Sleep 1 ; Sets progress bar updates to approximately 15 milliseconds
If A_Index = 100
Break
}
FileMove, %GoogleCache%\dbCache.dat, %DefaultCache%\dbCache.dat, 1 ; These three files are moved to "Default Cache" location --->>
FileMove, %GoogleCache%\dbCache.dat.index, %DefaultCache%\dbCache.dat.index, 1 ; -----------------------------------------------
FileMove, %GoogleCache%\dbroot_cache, %DefaultCache%\dbroot_cache, 1 ; ---------------------------------------------------------<<
Progress, Off
If Errorlevel ; If something goes wrong, User is returned to main window
{
MsgBox, There was an error. Please make sure`nGoogle Earth is closed and try again.
Gui, -Disabled
Return
}
FileAppend, One-time message seen about making a default backup.`nThis file ensures the message is only seen once., %DefaultCache%\Default Backup Message.txt
MsgBox, Cache Stash Operation finished! ; Message shown when operation successful
}
Gui, -Disabled
Return
GuiClose:
ExitApp
; Function adapted from "[AHK_L] AnimateWindow wrapper (by nimda)" ...applies animation to main window when opened and closed
AnimateWindow(HWND, Options, t=200) {
o := 0, op := {Center : 0x00000010}
List = Center
Loop Parse, List,|
If InStr(Options, A_LoopField, false)
o |= op[A_LoopField]
Return DllCall("AnimateWindow", "UInt", HWND, "Int", t, "UInt", o)
}
; Creates background picture for main window (by Rseding91)
BkgPic_Extract(Filename)
{
Static Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
VarSetCapacity(Temp_Data,13062)
Temp_Data .= "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"
StringReplace Temp_Data, Temp_Data, =,, All
VarSetCapacity(Out_Data, 3*StrLen(Temp_Data)//4, 0)
pos := 0, Address := &Out_Data
Loop Parse, Temp_Data
{
m := A_Index&3, d := InStr(Chars,A_LoopField,1) - 1, b := m ? (m=1 ? d<<18 : b+(d<<24-6*m)) : b+d
IfEqual,m,0
Numput(b>>16,Address+0,Pos++,"UChar"), Numput(255 & b>>8,Address+0,Pos++,"UChar"), Numput(255 & b,Address+0,Pos++,"UChar")
}
c1 := b>>16, c2 := 255 & b>>8, c3 := 0
Loop % !!m+(m&1)
NumPut(c%A_Index%,Address+0,Pos++,"UChar")
h := DllCall("CreateFile","str",Filename,"Uint",0x40000000,"Uint",0,"UInt",0,"UInt",4,"Uint",0,"UInt",0)
DllCall("SetFilePointerEx","Uint",h,"Int64",0,"UInt *",p,"Int",0)
DllCall("WriteFile","UInt",h,"UInt",&Out_Data,"UInt",9748,"UInt",0,"UInt",0)
DllCall("CloseHandle", "Uint", h)
}