From 32b4abadd8404881df2d9d5a472a79f5f16406f7 Mon Sep 17 00:00:00 2001 From: Afevis Date: Mon, 18 Nov 2024 10:29:38 -0700 Subject: [PATCH] Source --- Source/ico.ico | Bin 0 -> 112218 bytes Source/main.cpp | 253 +++++++++++++++++++++++++++++++++++++++++++ Source/resources.aps | Bin 0 -> 114228 bytes Source/resources.rc | 30 +++++ 4 files changed, 283 insertions(+) create mode 100644 Source/ico.ico create mode 100644 Source/main.cpp create mode 100644 Source/resources.aps create mode 100644 Source/resources.rc diff --git a/Source/ico.ico b/Source/ico.ico new file mode 100644 index 0000000000000000000000000000000000000000..2d88d86125d9165ab96c83f92222c8623b3de243 GIT binary patch literal 112218 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 z zhv(YPgF$^%8wPR~fX5GgyD(({Ch!P?IP^oG{{#Kd57crGC+Idc@WYSJuMtM}n5SaW z&+nX~2Zk+946>sJ;0fqA86NNiw_kF8QO9kdZz7F#klxVA9_vEY89|ZyLNZ-o&*%c+ z3AO4v&Y98>oUz`MkXPwlsKOHaV-T{C3wG&=-1HXBF zqkE71eWCUN)uu0?+CVyb$?u>a7p2XU>7uqP@;932Ff3z1u_$L{sr8WOEXj1zJ=cbI zYP|x|LZ7k4yg_T^O9a5A)jg1jFggHv#Fe|KcnPcbn06d<&+{RhDQbPtmih4j{C08L zyQp|Tendm9_Cuq!VQ+Ej1wDXy3Cstu??88L<^)8>1L2NkS(_NuE3r8;k!cV^|ElT` z+TIDn8*%lZ4(a{3ok~dVRK7r4suy}h&;hVnRJa{Yw5Y!j$1sIxv~&Wl%d!iOq( zHzd00_yKck=;w+0%=lW{2$-9OJ0K|Yb#(PM#CLd)SrtD55I^YmoZz*{%Kv4;hC5Q~ zLe6Mh2A2k)0RQO)Vh*~e0Ak=KiYhN4;C|+2$bt7t6>yIO+&}=?xdqq|bFX}Whst8; z|Hg3dF{u1sHSk`Od%ppSxnK~W1bB-8C7?ej$aA<6_kY>I6Z}sb2=ISxAi)2&flwV+ zChPAnyRzzPd~ljm`Mw%|oKC2GFOOr)2h0~7W4>|OU-|!cpd`B90V2d_4#Y@M2@oSW YV7YJsX#OiVEXQiOq73LW3S9C252S}>h5!Hn literal 0 HcmV?d00001 diff --git a/Source/main.cpp b/Source/main.cpp new file mode 100644 index 0000000..4602134 --- /dev/null +++ b/Source/main.cpp @@ -0,0 +1,253 @@ +#include +#include +#include +#include +#include + +using namespace std; + +LPCTSTR gEX; +LPCTSTR oID; +HANDLE GetHndl(LPCTSTR pName); +int Start(LPCTSTR pName, LPCTSTR pArgs); +bool IsRunning(LPCTSTR pName); +void Kill(LPCTSTR pName); + +int main(int argc, char **argv) +{ + FreeConsole(); + //Return error if no parameter is specified + if (argv[1] == NULL) { + MessageBox(0, "Specify which game to launch: \n\nBlizzard Arcade Collection = rtro\nCall of Duty HQ = codhq\nCall of Duty: Black Ops 4 = codbo4\nCall of Duty: Black Ops Cold War = codbocw\nCall of Duty: Modern Warfare = codmw2019\nCall of Duty: Modern Warfare 2 Campaign Remastered = codmw2cr\nCall of Duty: MWII | WZ2.0 = codmw2\nCall of Duty: Vanguard = codvg\nCrash Bandicoot 4: It's About Time = cb4\nDiablo 2: Resurrected = d2r\nDiablo 3 = d3\nDiablo 3 Public Test Realm = d3ptr\nDiablo 4 = d4\nDiablo Immortal = di\nHearthstone = hs\nHeroes of the Storm = hots\nHeroes of the Storm Public Test Realm = hotsptr\nOverwatch = ow\nOverwatch Public Test Realm = owptr\nStarcraft 2 = sc2\nStarcraft Remastered = scr\nWarcraft 1: Orcs & Humans = w1\nWarcraft 1: Remastered = w1r\nWarcraft 2: Battle.net Edition = w2\nWarcraft 2: Remastered = w2r\nWarcraft 3: Reforged = w3\nWorld of Warcraft = wow\nWorld of Warcraft Classic = wowclassic\nWorld of Warcraft Public Test Realm = wowptr", "Error", MB_OK); + return TRUE; + } + //determine which battlefield to start + if (_stricmp(argv[1], "rtro") == 0) { + //name=Blizzard Arcade Collection + oID = "--exec=\"launch rtro\""; + gEX = "client.exe"; + } + else if (_stricmp(argv[1], "codmw2") == 0) { + //name=Call of Duty: MWII | WZ2.0 + oID = "--exec=\"launch AUKS\""; + gEX = "cod22-cod.exe"; + } + else if (_stricmp(argv[1], "codhq") == 0) { + //name=Call of Duty HQ + oID = "--exec=\"launch AUKS\""; + gEX = "cod.exe"; + } + else if (_stricmp(argv[1], "codbo4") == 0) { + //name=Call of Duty: Black Ops 4 + oID = "--exec=\"launch VIPR\""; + gEX = "BlackOps4.exe"; + } + else if (_stricmp(argv[1], "codbocw") == 0) { + //name=Call of Duty: Black Ops Cold War + oID = "--exec=\"launch ZEUS\""; + gEX = "BlackOpsColdWar.exe"; + } + else if (_stricmp(argv[1], "codmw2019") == 0) { + //name=Call of Duty: Modern Warfare + oID = "--exec=\"launch ODIN\""; + gEX = "ModernWarfare.exe"; + } + else if (_stricmp(argv[1], "codmw2cr") == 0) { + //name=Call of Duty: Modern Warfare 2 Campaign Remastered + oID = "--exec=\"launch LAZR\""; + gEX = "MW2CR.exe"; + } + else if (_stricmp(argv[1], "codvg") == 0) { + //name=Call of Duty: Vanguard + oID = "--exec=\"launch FORE\""; + gEX = "Vanguard.exe"; + } + else if (_stricmp(argv[1], "cb4") == 0) { + //name=Crash Bandicoot 4: It's About Time + oID = "--exec=\"launch WLBY\""; + gEX = "CrashBandicoot4.exe"; + } + else if (_stricmp(argv[1], "d2r") == 0) { + //name=Diablo 2: Resurrected + oID = "--exec=\"launch OSI\""; + gEX = "D2R.exe"; + } + else if (_stricmp(argv[1], "d3") == 0) { + //name=Diablo 3 + oID = "--exec=\"launch D3\""; + gEX = "Diablo III%.exe"; + } + else if (_stricmp(argv[1], "d3ptr") == 0) { + //name=Diablo 3 Public Test Realm + oID = "--exec=\"launch d3t\""; + gEX = "Diablo III%.exe"; + } + else if (_stricmp(argv[1], "d4") == 0) { + //name=Diablo 4 + oID = "--exec=\"launch Fen\""; + gEX = "Diablo IV.exe"; + } + else if (_stricmp(argv[1], "di") == 0) { + //name=Diablo Immortal + oID = "--exec=\"launch ANBS\""; + gEX = "DiabloImmortal.exe"; + } + else if (_stricmp(argv[1], "hs") == 0) { + //name=Hearthstone + oID = "--exec=\"launch WTCG\""; + gEX = "Hearthstone.exe"; + } + else if (_stricmp(argv[1], "hots") == 0) { + //name=Heroes of the Storm + oID = "--exec=\"launch Hero\""; + gEX = "HeroesSwitcher%.exe"; + } + else if (_stricmp(argv[1], "hotsptr") == 0) { + //name=Heroes of the Storm Public Test Realm + oID = "--exec=\"launch herot\""; + gEX = "HeroesSwitcher%.exe"; + } + else if (_stricmp(argv[1], "ow") == 0) { + //name=Overwatch + oID = "--exec=\"launch Pro\""; + gEX = "Overwatch.exe"; + } + else if (_stricmp(argv[1], "owptr") == 0) { + //name=Overwatch Public Test Realm + oID = "--exec=\"launch prot\""; + gEX = "Overwatch.exe"; + } + else if (_stricmp(argv[1], "scr") == 0) { + //name=Starcraft Remastered + oID = "--exec=\"launch S1\""; + gEX = "StarCraft.exe"; + } + else if (_stricmp(argv[1], "sc2") == 0) { + //name=Starcraft 2 + oID = "--exec=\"launch S2\""; + gEX = "SC2Switcher%.exe"; + } + else if (_stricmp(argv[1], "w1") == 0) { + //name=Warcraft I: Orcs & Humans + gEX = "DOSBox.exe"; + oID = "--exec=\"launch W1\""; + } + else if (_stricmp(argv[1], "w1r") == 0) { + //name=Warcraft I Remastered + gEX = "Warcraft.exe"; + oID = "--exec=\"launch W1R\""; + } + else if (_stricmp(argv[1], "w2") == 0) { + //name=Warcraft II Battle.net Edition + gEX = "Warcraft II BNE.exe"; + oID = "--exec=\"launch W2\""; + } + else if (_stricmp(argv[1], "w2r") == 0) { + //name=Warcraft II Remastered + gEX = "Warcraft II.exe"; + oID = "--exec=\"launch W2R\""; + } + else if (_stricmp(argv[1], "w3") == 0) { + //name=Warcraft 3: Reforged + oID = "--exec=\"launch W3\""; + gEX = "Warcraft III.exe"; + } + else if (_stricmp(argv[1], "wow") == 0) { + //name=World of Warcraft + oID = "--exec=\"launch WoW\""; + gEX = "Wow.exe"; + } + else if (_stricmp(argv[1], "wowclassic") == 0) { + //name=World of Warcraft Classic + oID = "--exec=\"launch WoWC\""; + gEX = "WowClassic.exe"; + } + /* Not currently functional, classic era/season of discovery doesn't use the normal launch code system. Not entirely sure where to start on this one. + else if (_stricmp(argv[1], "wowclassicera") == 0) { + //name=World of Warcraft Classic Era + oID = "--exec=\"launch wow_classic_era\""; + gEX = "WowClassic.exe"; + }*/ + else if (_stricmp(argv[1], "wowptr") == 0) { + //name=World of Warcraft Public Test Realm + oID = "--exec=\"launch wowt\""; + gEX = "WowT.exe"; + } + else { + MessageBox(0, "Please specify a valid parameter: \n\nBlizzard Arcade Collection = rtro\nCall of Duty HQ = codhq\nCall of Duty: Black Ops 4 = codbo4\nCall of Duty: Black Ops Cold War = codbocw\nCall of Duty: Modern Warfare = codmw2019\nCall of Duty: Modern Warfare 2 Campaign Remastered = codmw2cr\nCall of Duty: MWII | WZ2.0 = codmw2\nCall of Duty: Vanguard = codvg\nCrash Bandicoot 4: It's About Time = cb4\nDiablo 2: Resurrected = d2r\nDiablo 3 = d3\nDiablo 3 Public Test Realm = d3ptr\nDiablo 4 = d4\nDiablo Immortal = di\nHearthstone = hs\nHeroes of the Storm = hots\nHeroes of the Storm Public Test Realm = hotsptr\nOverwatch = ow\nOverwatch Public Test Realm = owptr\nStarcraft 2 = sc2\nStarcraft Remastered = scr\nWarcraft 1: Orcs & Humans = w1\nWarcraft 1: Remastered = w1r\nWarcraft 2: Battle.net Edition = w2\nWarcraft 2: Remastered = w2r\nWarcraft 3: Reforged = w3\nWorld of Warcraft = wow\nWorld of Warcraft Classic = wowclassic\nWorld of Warcraft Public Test Realm = wowptr", "Error", MB_OK); + return TRUE; + } + //determine battlenet directory + LPCTSTR oDir; + if (argv[2]!=NULL){ + oDir = argv[2];} + else oDir = "C:/PROGRA~2/Battle.net/Battle.net.exe"; + //check if battlenet is running + if (IsRunning("Battle.net.exe")){ + Kill("Battle.net.exe");} + //start battlenet as child program + if (Start(oDir,oID) <= 32){ + MessageBox(0, "Failed to launch Battle.net. \nMake sure it's installed in its default location.", "Error", MB_OK); + return TRUE;} + while (!IsRunning("Battle.net.exe")){ + Sleep(1000);} + //wait for battlenet to go idle + Sleep(8000); + //launch game + Start(oDir, oID); + for (int i = 1; i<10; i++){ + Sleep (1000);} + if (!IsRunning(gEX)) { + Start(oDir, oID); + for (int i = 1; i < 10; i++) { + Sleep(1000); + } + //exit if game does not start after 2 attempts over 20s + if (!IsRunning(gEX)) { + MessageBox(0, "Game doesn't appear to be running. Closing launcher.", "Error", MB_OK); + Kill("Battle.net.exe"); + return TRUE; + } + } + //wait for game to close + while (IsRunning(gEX)){ + Sleep(1000);} + //give some time for cloud sync + Sleep(8000); + //Close battlenet + Kill("Battle.net.exe"); + return FALSE; +} + +//--------------- F U N C T I O N S ---------------// + +HANDLE GetHndl(LPCTSTR pName){ + PROCESSENTRY32 entry; + entry.dwSize = sizeof(PROCESSENTRY32); + HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); + if (Process32First(snapshot, &entry) == TRUE){ + while (Process32Next(snapshot, &entry) == TRUE){ + if (_stricmp(entry.szExeFile, pName ) == 0){ + HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); + CloseHandle(snapshot); + return hProcess;}} + }return FALSE; +} + +int Start(LPCTSTR pName, LPCTSTR pArgs){ + HINSTANCE h = ShellExecute(NULL,"open",pName,pArgs,NULL,SW_SHOW); + int r = (int) h; + return r; +} + +bool IsRunning(LPCTSTR pName){ + if (GetHndl(pName)==0) + return FALSE; + return TRUE; +} + +void Kill(LPCTSTR pName){ + HANDLE hProcess = GetHndl(pName); + TerminateProcess(hProcess, 0 ); +} + diff --git a/Source/resources.aps b/Source/resources.aps new file mode 100644 index 0000000000000000000000000000000000000000..32e86d91e175c37fe33aeab99ce4eddc27af82f6 GIT binary patch literal 114228 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