#include "main.h" #include #include #include #define MAX_ARGS 256 #define MAX_PATH_LENGTH 1024 void start(const char* conn, char* args) { char command[MAX_PATH_LENGTH]; snprintf(command, sizeof(command), "TslGame.exe %s %s", conn, args ? args : ""); STARTUPINFOA startup = { sizeof(STARTUPINFOA) }; PROCESS_INFORMATION process; BOOL success = CreateProcessA( NULL, command, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &startup, &process ); if (success) { CloseHandle(process.hProcess); CloseHandle(process.hThread); } else { printf("Failed to execute command: %d\n", GetLastError()); } } void parse_url(const char* url, char* conn, size_t conn_size) { const char* prefix = "pubggame://"; size_t prefix_len = strlen(prefix); if (_strnicmp(url, prefix, prefix_len) != 0) { conn[0] = '\0'; return; } const char* params = url + prefix_len; const char* slash = strchr(params, '/'); size_t len = slash ? (slash - params) : strlen(params); if (len >= conn_size) { len = conn_size - 1; } strncpy_s(conn, conn_size, params, len); conn[len] = '\0'; } int main(int argc, char* argv[]) { if (argc < 2) { printf("Usage: %s \n", argv[0]); #ifdef _DEBUG for (;;)Sleep(1000); #endif // _DEBUG return 1; } char conn[MAX_PATH_LENGTH] = { 0 }; char args[256] = "-AllowJoinAnyMatchState -NoVerifyGC -NoEAC -NoBattleEye"; parse_url(argv[1], conn, sizeof(conn)); if (strlen(conn) > 0) { start(conn, args); return 0; } printf("Invalid URL format\n"); #ifdef _DEBUG for (;;)Sleep(1000); #endif // _DEBUG return 1; }