I have been working on this off and on at work, but I have no internet access there, and once I get home I would rather play then spend too much time working on AHK scripts, when what I have is ok for now (RAF making me feel like I waste time if I don't play wow enough in the first 90 days, lol).

Anyway, I havin't tested this on anything outside of multiple instances of notepad, but it appears as though it should work. The only thing is tieing in the different instances of WoW to specific toons. I am thinking of making it so when you run the script, after all the WoWs are loaded, you can hover over each window and assign each window to a toon, IE:

This Window = Toona, This other window = Toonb, ect..

This is what I have got, if anyone can improve upon it to make it less unwieldly and/or faster, or whatever, please improve upon it!

I have posted the entire file that I have so far, much of it you can edit out. If you use maximizer (which I do), then you will need to make changes.. Instead of starting wow.exe you need to start maximizer.exe with the correct options for each instance of WoW. I have just been starting wow.exe for now for testing purposes. Like I said, im not positive this will actually work, please give me some feed back whether it does or not.


#SingleInstance force ; bypasses the dialog box saying the script is already running
SetKeyDelay, 0 ;speeds up the sending of the keystrokes, may cause problems down the road though?
GamePath = c:\world of warcraft\wow.exe
TitleofGameWindow = World of Warcraft

IfWinNotExist, %TitleofGameWindow%
{
InputBox, UserInput, WoW Copies, How many copies of WoW do you want to start?., ,
if ErrorLevel
{
}
else
Loop, %UserInput%
{
run %GamePath%
}
}


Toon1ModDown = {ctrl down}{shift down}
Toon2ModDown = {ctrl down}{alt down}
Toon3ModDown = {alt down}{shift down}
Toon4ModDown = {ctrl down}{alt down}{shift down}
Toon5ModDown = {ctrl down}
Toon1ModUp = {ctrl up}{shift up}
Toon2ModUp = {ctrl up}{alt up}
Toon3ModUp = {alt up}{shift up}
Toon4ModUp = {ctrl up}{alt up}{shift up}
Toon5ModUp = {ctrl up}
1Key = ]
2Key = [

WinGet, wowid, list, %TitleofGameWindow%
WinGet, wowpid1, pid, ahk_id %wowid1%
WinGet, wowpid2, pid, ahk_id %wowid2%
WinGet, wowpid3, pid, ahk_id %wowid3%
WinGet, wowpid4, pid, ahk_id %wowid4%
WinGet, wowpid5, pid, ahk_id %wowid5%

$1::
ActiveWindow := WinExist("A") ;gets the unique ID of the currently active window
if ActiveWindow = %wowid1%
{
ControlSend,,1, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%1Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%1Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%1Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%1Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid2%
{
ControlSend,,%Toon1ModDown%%1Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,1, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%1Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%1Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%1Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid3%
{
ControlSend,,%Toon1ModDown%%1Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%1Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,1, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%1Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%1Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid4%
{
ControlSend,,%Toon1ModDown%%1Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%1Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%1Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,1, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%1Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid5%
{
ControlSend,,%Toon1ModDown%%1Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%1Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%1Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%1Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,1, ahk_id %wowid5%
}
else
{
Send 1 ;still sends a 1 to any other window
}
Return


$2::
ActiveWindow := WinExist("A") ;gets the unique ID of the currently active window
if ActiveWindow = %wowid1%
{
ControlSend,,2, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%2Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%2Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%2Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%2Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid2%
{
ControlSend,,%Toon1ModDown%%2Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,2, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%2Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%2Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%2Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid3%
{
ControlSend,,%Toon1ModDown%%2Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%2Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,2, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%2Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%2Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid4%
{
ControlSend,,%Toon1ModDown%%2Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%2Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%2Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,2, ahk_id %wowid4%
ControlSend,,%Toon5ModDown%%2Key%%Toon5ModUp%, ahk_id %wowid5%
}
else if ActiveWindow = %wowid5%
{
ControlSend,,%Toon1ModDown%%2Key%%Toon1ModUp%, ahk_id %wowid1%
ControlSend,,%Toon2ModDown%%2Key%%Toon2ModUp%, ahk_id %wowid2%
ControlSend,,%Toon3ModDown%%2Key%%Toon3ModUp%, ahk_id %wowid3%
ControlSend,,%Toon4ModDown%%2Key%%Toon4ModUp%, ahk_id %wowid4%
ControlSend,,2, ahk_id %wowid5%
}
else
{
Send 2 ;sends a 2 to whatever window is active if not a wow window
}
Return