Jump to content
LaunchBox Community Forums

Auto Hotkey Scripts


Recommended Posts

Even if that would work that's going to get real messy real quick since in reality the actual hotkey is going to be something like:

1Joy5::-
1Joy6::=
2Joy5::-
2Joy6::=
3Joy5::-
3Joy6::=
4Joy5::-
4Joy6::=
5Joy5::-
5Joy6::=
6Joy5::-
6Joy6::=
7Joy5::-
7Joy6::=
8Joy5::-
8Joy6::=

Link to post
Share on other sites
  • Replies 628
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

I want to have a single thread for this so please share your useful and interesting AHK scripts here. Provide a short description of what the script does put the script in the post using the code

In case you want to start Xpadder.exe with an emulator's games and then exit Xpadder when exiting the game, you can add this ahk code to your emulator's AutoHotkey Script tab: Run, C:\Xpadder\Xpad

Another "close emulator" script that sends Alt + F4 $Esc:: { Process, Close, {{{StartupEXE}}} } vk07sc000:: Send, !{F4} Return  

Posted Images

The below does what I need it to do, it's just a matter of how to work it into the script. It works if I put it in a separate script, but I'd like to keep everything involving the manuals in the manual script if possible (and not have 10+ lines for every single one of these).

#if WinActive("ahk_exe Cdisplayex.exe")
1Joy5::-
1Joy6::=
2Joy5::-
2Joy6::=
3Joy5::-
3Joy6::=
4Joy5::-
4Joy6::=
5Joy5::-
5Joy6::=
6Joy5::-
6Joy6::=
7Joy5::-
7Joy6::=
8Joy5::-
8Joy6::=
Return

Link to post
Share on other sites

@jayjay is correct that a Return will stop the rest of the script.  (just read that myself)

@Zombeaver  That simplification is awesome! Note, the  Return is not necessary. Even with the 8 controllers.   When a hotkey is assigned all on one line, a Return is implied.  (just read that one too.)  😊

#If WinActive("ahk_exe CDisplayEX.exe")
   :*:z::-   ;implied Return
   :*:x::=   ;implied Return
...etc.....

I just tested on a gui ahk that I had...  and ya, putting it at the top buggers everything up!  lol  It opened, but only in the taskbar (inside the ^).  Had to right click to and Exit to close it.

I moved those 3 lines to just after the Gui, Show... line and it seemed to work.

And as for you messy mess.....  Ugh.  lol  There might be a way to somehow OR all those.  (Not sure exactly how off the top of my head)  Maybe even a For Loop...  For x = 1 through 8, Do xJoy5, xjoy6.....   

Link to post
Share on other sites
7 minutes ago, JoeViking245 said:

Note, the  Return is not necessary. Even with the 8 controllers.   When a hotkey is assigned all on one line, a Return is implied.  (just read that one too.)  😊

Ah okay, good to know.

7 minutes ago, JoeViking245 said:

And as for you messy mess.....  Ugh.  lol  There might be a way to somehow OR all those.  (Not sure exactly how off the top of my head)  Maybe even a For Loop...  For x = 1 through 8, Do xJoy5, xjoy6.....

Yeah, I'm kindof at a loss. I wish a simple "Joy5" and "Joy6" would work, but it doesn't, at least not consistently in my experience. The way AHK handles Joystick inputs is kindof garbage, and if you have multiple controllers connected at once (which many people do) then there's no way to know what it's going to call each one so I'm just adding in 8 to cover my bases (I figure if you have more than that at once you're on your own lol).

I feel like you should be able to put all of them into some kind of IF loop for WinActive but I haven't gotten that to work correctly. It basically just turned them on and left them on when I messed with it before.

I do have an additional script that always runs parallel, whether the manual script runs or not, so I could put them in that, but I feel kindof dirty about adding in code that's specifically for use with the manual stuff if the manual script isn't even being used. That just seems wrong.

Link to post
Share on other sites

if @JoeViking245 code works cool, id use that.

With my last example you could replace thee loop with:

Loop
{    
	if WinActive("ahk_exe Cdisplayex.exe")
	{
		SomeOtherFunction()
	}
} 

Then at bottom of script the function would look something like:

SomeOtherFunction()
{
    if (GetKeyState("1Joy5") == 1)
    {
       	Send -
		KeyWait 1Joy5
    }
	
    if (GetKeyState("1Joy6") == 1)
    {
       	Send =
		KeyWait 1Joy6
    }
}
return

 

Edited by jayjay
Link to post
Share on other sites

Hmm, okay I tried but no luck at the moment. The good news is that everything else is still working so that's a plus!

Maybe I've done something wrong. I appreciate the help.

Spoiler

 

#SingleInstance Force
#WinActivateForce

Gui, +AlwaysOnTop
Gui, -Caption            ;removes caption and border
Gui, color, Black                ; sets window color
Gui, Add, Picture, W%A_ScreenWidth% H%A_ScreenHeight%,
Gui, Show, , Blocker

SetTitleMatchMode, 2
WinWait, Cdisplayex
WinSet, Transparent, 0, ahk_exe CDisplayEx.exe
WinWait, RetroArch VICE
WinActivate, RetroArch VICE
Sleep, 200
Gui, -AlwaysOnTop
Gui, Hide
Hotkey, ~NumpadSub & NumpadEnter, Function1

Loop
{
   IF ProcessExist("Retroarch.exe")
   { 
      IF ProcessExist("CDisplayEX.exe")
      {}
      Else
      {
         Gui, Hide
         run, nomousy.exe
         Sleep, 500
         Process, Close, nomousy.exe
         ExitApp
      }
   }
   Else
   {
      Winclose, Cdisplayex
      Gui, Hide
      run, nomousy.exe
      Sleep, 500
      Process, Close, nomousy.exe
      ExitApp
   }
   Sleep, 1500

ProcessExist(Name){
   Process,Exist,%Name%
   return Errorlevel
}

Return

Loop
{    
    if WinActive("ahk_exe Cdisplayex.exe")
    {
        Zoom()
    }

Function1:
run, nomousy.exe /hide
Gui, Show, , Blocker
SetTitleMatchMode, 2
WinSet, AlwaysOnTop, On, ahk_exe CDisplayEx.exe
WinActivate, Cdisplayex
WinSet, Transparent, 0, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 20, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 40, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 60, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 80, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 100, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 120, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 140, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 160, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 180, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 200, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 220, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 240, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, Off, ahk_exe CDisplayEx.exe
Gui, Hide
  Hotkey, ~NumpadSub & NumpadEnter, Function2
Gui, Show, NA, Blocker
WinSet, AlwaysOnTop, Off, ahk_exe CDisplayEx.exe

Return

Function2:
SetTitleMatchMode, 2
WinSet, Transparent, 240, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 220, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 200, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 180, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 160, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 140, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 120, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 100, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 80, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 60, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 40, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 20, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 0, ahk_exe CDisplayEx.exe
Gui +AlwaysOnTop
Sleep, 250
WinActivate, RetroArch VICE
Sleep, 250
WinSet, AlwaysOnTop, On, ahk_exe CDisplayEx.exe
Gui -AlwaysOnTop
Gui, Hide
run, nomousy.exe
  Hotkey, ~NumpadSub & NumpadEnter, Function1  
Return

Zoom()
{
    if (GetKeyState("1Joy5") == 1)
    {
           Send -
        KeyWait 1Joy5
    }
    
    if (GetKeyState("1Joy6") == 1)
    {
           Send =
        KeyWait 1Joy6
    }
    if (GetKeyState("2Joy5") == 1)
    {
           Send -
        KeyWait 2Joy5
    }
    
    if (GetKeyState("2Joy6") == 1)
    {
           Send =
        KeyWait 2Joy6
    }
    if (GetKeyState("3Joy5") == 1)
    {
           Send -
        KeyWait 3Joy5
    }
    
    if (GetKeyState("3Joy6") == 1)
    {
           Send =
        KeyWait 3Joy6
    }
    if (GetKeyState("4Joy5") == 1)
    {
           Send -
        KeyWait 4Joy5
    }
    
    if (GetKeyState("4Joy6") == 1)
    {
           Send =
        KeyWait 4Joy6
    }
    if (GetKeyState("5Joy5") == 1)
    {
           Send -
        KeyWait 5Joy5
    }
    
    if (GetKeyState("5Joy6") == 1)
    {
           Send =
        KeyWait 5Joy6
    }
    if (GetKeyState("6Joy5") == 1)
    {
           Send -
        KeyWait 6Joy5
    }
    
    if (GetKeyState("6Joy6") == 1)
    {
           Send =
        KeyWait 6Joy6
    }
    if (GetKeyState("7Joy5") == 1)
    {
           Send -
        KeyWait 7Joy5
    }
    
    if (GetKeyState("7Joy6") == 1)
    {
           Send =
        KeyWait 7Joy6
    }
    if (GetKeyState("8Joy5") == 1)
    {
           Send -
        KeyWait 8Joy5
    }
    
    if (GetKeyState("8Joy6") == 1)
    {
           Send =
        KeyWait 8Joy6
    }
}
return

 

 

Link to post
Share on other sites
#Persistent
#SingleInstance Force
#WinActivateForce

Gui, +AlwaysOnTop
Gui, -Caption            ;removes caption and border
Gui, color, Black                ; sets window color
Gui, Add, Picture, W%A_ScreenWidth% H%A_ScreenHeight%,
Gui, Show, , Blocker

SetTitleMatchMode, 2
WinWait, Cdisplayex
WinSet, Transparent, 0, ahk_exe CDisplayEx.exe
WinWait, RetroArch VICE
WinActivate, RetroArch VICE
Sleep, 200
Gui, -AlwaysOnTop
Gui, Hide
Hotkey, ~NumpadSub & NumpadEnter, Function1

SetTimer, MyFunction, 1000 

Loop
{    
    if WinActive("ahk_exe Cdisplayex.exe")
    {
        Zoom()
    }
} 

ProcessExist(Name){
   Process,Exist,%Name%
   return Errorlevel
}

Return

Function1:
run, nomousy.exe /hide
Gui, Show, , Blocker
SetTitleMatchMode, 2
WinSet, AlwaysOnTop, On, ahk_exe CDisplayEx.exe
WinActivate, Cdisplayex
WinSet, Transparent, 0, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 20, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 40, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 60, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 80, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 100, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 120, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 140, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 160, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 180, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 200, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 220, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 240, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, Off, ahk_exe CDisplayEx.exe
Gui, Hide
  Hotkey, ~NumpadSub & NumpadEnter, Function2
Gui, Show, NA, Blocker
WinSet, AlwaysOnTop, Off, ahk_exe CDisplayEx.exe

Return

Function2:
SetTitleMatchMode, 2
WinSet, Transparent, 240, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 220, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 200, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 180, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 160, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 140, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 120, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 100, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 80, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 60, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 40, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 20, ahk_exe CDisplayEx.exe
Sleep, 10
WinSet, Transparent, 0, ahk_exe CDisplayEx.exe
Gui +AlwaysOnTop
Sleep, 250
WinActivate, RetroArch VICE
Sleep, 250
WinSet, AlwaysOnTop, On, ahk_exe CDisplayEx.exe
Gui -AlwaysOnTop
Gui, Hide
run, nomousy.exe
  Hotkey, ~NumpadSub & NumpadEnter, Function1  
Return

MyFunction:
IF ProcessExist("Retroarch.exe")
{ 
	IF ProcessExist("CDisplayEX.exe")
	{}
	Else
	{
		Gui, Hide
		run, nomousy.exe
		Sleep, 500
		Process, Close, nomousy.exe
		ExitApp
	}
   }
   Else
   {
      Winclose, Cdisplayex
      Gui, Hide
      run, nomousy.exe
      Sleep, 500
      Process, Close, nomousy.exe
      ExitApp
   }
}
return

Zoom()
{
    if (GetKeyState("1Joy5") == 1)
    {
           Send -
        KeyWait 1Joy5
    }
    
    if (GetKeyState("1Joy6") == 1)
    {
           Send =
        KeyWait 1Joy6
    }
    if (GetKeyState("2Joy5") == 1)
    {
           Send -
        KeyWait 2Joy5
    }
    
    if (GetKeyState("2Joy6") == 1)
    {
           Send =
        KeyWait 2Joy6
    }
    if (GetKeyState("3Joy5") == 1)
    {
           Send -
        KeyWait 3Joy5
    }
    
    if (GetKeyState("3Joy6") == 1)
    {
           Send =
        KeyWait 3Joy6
    }
    if (GetKeyState("4Joy5") == 1)
    {
           Send -
        KeyWait 4Joy5
    }
    
    if (GetKeyState("4Joy6") == 1)
    {
           Send =
        KeyWait 4Joy6
    }
    if (GetKeyState("5Joy5") == 1)
    {
           Send -
        KeyWait 5Joy5
    }
    
    if (GetKeyState("5Joy6") == 1)
    {
           Send =
        KeyWait 5Joy6
    }
    if (GetKeyState("6Joy5") == 1)
    {
           Send -
        KeyWait 6Joy5
    }
    
    if (GetKeyState("6Joy6") == 1)
    {
           Send =
        KeyWait 6Joy6
    }
    if (GetKeyState("7Joy5") == 1)
    {
           Send -
        KeyWait 7Joy5
    }
    
    if (GetKeyState("7Joy6") == 1)
    {
           Send =
        KeyWait 7Joy6
    }
    if (GetKeyState("8Joy5") == 1)
    {
           Send -
        KeyWait 8Joy5
    }
    
    if (GetKeyState("8Joy6") == 1)
    {
           Send =
        KeyWait 8Joy6
    }
}
return

 

Link to post
Share on other sites

Said there was an unexpected { at line 129. This one (in red):

MyFunction:
IF ProcessExist("Retroarch.exe")
{ 
	IF ProcessExist("CDisplayEX.exe")
	{}
	Else
	{
		Gui, Hide
		run, nomousy.exe
		Sleep, 500
		Process, Close, nomousy.exe
		ExitApp
	}
   }
   Else
   {
      Winclose, Cdisplayex
      Gui, Hide
      run, nomousy.exe
      Sleep, 500
      Process, Close, nomousy.exe
      ExitApp
   }
}
return

I tried taking it out but then it said that the Else had no matching If statement.

Link to post
Share on other sites

Hopefully:

MyFunction:
iF ProcessExist("Retroarch.exe")
{ 
	iF ProcessExist("CDisplayEX.exe")
	{
	
	}
    else
	{
        Gui, Hide
        run, nomousy.exe
        Sleep, 500
        Process, Close, nomousy.exe
        ExitApp
	}
}
else
{
    Winclose, Cdisplayex
    Gui, Hide
    run, nomousy.exe
    Sleep, 500
    Process, Close, nomousy.exe
    ExitApp
}
return

 

Link to post
Share on other sites
  • 1 month later...
On 6/28/2020 at 7:54 PM, Fablog said:

Hi Guys, I know nothing about AHK script and I need your help to close every games I use with "Game Loader All RH.exe". Below is my script and obviously it doesn't work. Could you help me with that please? I use 2 Xb360 joystick.

 


~1joy7 & 3joy7::

Duration=0

Loop

{	Duration ++

	If !GetKeyState("1joy7") || !GetKeyState("3joy7")

		Break

	If Duration > 2

	{	

        Send, {Esc}

		break

	}

	Sleep, 1000

}

return

 

 

On 7/5/2020 at 3:32 AM, Kiinkyfoxx said:

If you change 


If !GetKeyState("1joy7") || !GetKeyState("3joy7")

to

 


If !GetKeyState("1joy7", "P") || !GetKeyState("3joy7", "P")

that should work for you holding button 7 on both pads at same time for more than 2 seconds.

Thanks @Kiinkyfoxx, it works but only if I run Launchbox in admin mode but it won't work in BB because games won't start in admin mode . Anyone know why is that so? 

Edited by Fablog
Link to post
Share on other sites

Hi @Fablog

I don't know why it would only work as admin, unless Game Loader All RH.exe runs as admin and therefore needs the internal version of AHK from LaunchBox to be an admin, which means having to open LaunchBox as admin?

But as a work around try the following (I cannot remember but I think you were putting this in the Running AHK tab) and this should make it work with LaunchBox or BigBox opened normally and not as an Admin.

Untested as I don't use Game Loader All RH.exe but the concept works on other programmes/emulators/games that open as admin and need the internal AHK programme elevated to admin level.

Anyone with some real knowledge and understanding is welcome to come up with a better idea.

Cheers

full_command_line := DllCall("GetCommandLine", "str")

if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
{
    try
    {
        if A_IsCompiled
            Run *RunAs "%A_ScriptFullPath%" /restart
        else
            Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
    }
    ExitApp
}
~1joy7 & 3joy7::

Duration=0

Loop

{	Duration ++

	If !GetKeyState("1joy7", "P") || !GetKeyState("3joy7", "P")

		Break

	If Duration > 2

	{	

        Send, {Esc}

		break

	}

	Sleep, 1000

}

return

 

Link to post
Share on other sites

Hey all, I'm back with an issue that most likely has a simple solution as most of my ahk issues seem to entail.

I hope I am not being difficult and that this fix is simple enough.

I am attempting to create a launcher for launching a trainer alongside GR (Ghostrunner) so my son (who's 6) can play this hard as nails game with ease and when GR's process closes, the trainer closes along with it. I need to prevent the trainer from launching multiple times as well as GR. I have the part figured out for the game already, as you can see. I tend to have difficulties laying things out simply and/or clearly when I am trying to convey what I intend to or need to accomplish, so...Just to clarify on what I am needing to accomplish:

1. Upon launching the script, The script checks to see if trainer.exe is already running (to avoid multiple instances of it running), if not then launch it (minimized preferably). If it is running, then close and reopen it (to ensure the trainer's settings are cleared). Once it is running, the script waits 2 seconds before proceeding to launching GR. If the trainer can be launched minimized, then the order of launching isn't important. As of now, the trainer needs to launch first because it launches on top of GR.
2. GR is then loaded, if GR is already running and the launcher is ran again or clicked too many times, it uses winactivate to bring the game's window to the forefront (i prefer to use ("ahk_exe Ghostrunner-Win64-Shipping.exe") over the window title) as the window it looks for.
3. Next it waits for the ghostrunner window to close as it's cue to close the trainer
4. close the script when both Ghostrunner and the trainer is closed. (exitapp)

I imagine that some of these steps are redundant. I am far from proficient in AHK though. Hopefully all of this makes sense. Here is what I've come up with so far....

 

if WinExist("ahk_exe Ghostrunner-Win64-Shipping.exe")  
 {
      WinActivate
   }
   else
Run "F:\LaunchBox\Games\PC Games\Ghostrunner\Trainer.exe", 2
Run "F:\LaunchBox\Games\PC Games\Ghostrunner\Ghostrunner.exe"
Process, Wait, Ghostrunner-Win64-Shipping.exe, 10 ;max 10 sec.
Process, WaitClose, Ghostrunner-Win64-Shipping.exe
Process, Wait, Trainer.exe
Process, WaitClose, Trainer.exe

return

 


As you can tell, it is not doing what I am intending for it to do. 🙄

Thank you in advance. I feel like a needy child. lol

Last, but most certainly not least...I would like to say thanks to all of you for all the help you selflessly provide to others. Be it here or IRL.

God bless you all.

Edited by CtinD
Correction of grammatical errors, adding information and reducing overall redundancy of my post.
Link to post
Share on other sites

"I think" this will work.

Create a next Text file and then save (or rename) it as an AutoHotkey Script file.  i.e. "F:\MyAHKs\GRwTrainer.ahk"  Make sure the actual extension is getting changed to "ahk" from "txt"!  The contents of the file will be something like this:

#SingleInstance Force
WinClose, ahk_exe Trainer.exe
if WinExist("ahk_exe Ghostrunner-Win64-Shipping.exe")  
   {
      WinActivate
   }
else
   {
      Run, "F:\LaunchBox\Games\PC Games\Ghostrunner\Ghostrunner.exe"
   }

Run, "F:\LaunchBox\Games\PC Games\Ghostrunner\Trainer.exe", , Min
Sleep, 10000
Process, WaitClose, Ghostrunner-Win64-Shipping.exe
WinClose, ahk_exe Trainer.exe

Edit your GhostRunner game and set the Application Path to

ThirdParty\AutoHotkey\AutoHotkey.exe

..and the Command Line Parameter to

"F:\MyAHKs\GRwTrainer.ahk"

image.thumb.png.3b578d48ff264d0b5fea3b9fb9bfec9a.pngWith this, your launching the script instead of the game (which in turn will launch the game etc.).

What the script does:

  • Force the script to close if it's already running, and 'restart' it.
  • Close "Trainer".  (a simple 'catch' that doesn't hurt anything it it wasn't already running)
  • Check if "Ghostrunner-Win64-Shipping.exe" is already running
  • if it is { 
  • Bring its window to the top }
  • otherwise { Run GhostRunner }
  • Run Trainer minimized
  • Wait 10 seconds for GR to [I assume this is what it does] spawn "Ghostrunner-Win64-Shipping.exe".  It shouldn't take this long to 'spawn', but doesn't matter.  He'll be 'playing' for at least 10 seconds anyway.  Right? ;) 
  • Hang out here until the game is exited.
  • Once the game is no longer running, politely close Trainer.
  • at this point, the script is done and will exit itself.  No need to ExitApp. 

I think I caught from your description that Trainer and GR are independent of each other, in that one doesn't HAVE to be running PRIOR to the other.  If that's not the case, this ain't gonna work as expected.

If all goes well, you should be good to go. Not tested, but it "looks good on paper". :D

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...