// some code might be scuffed cuz visual studio deleted 2 days worth of progress and got it off of dnspy private void RobloxProcessTimer_Tick(object sender, EventArgs e) { foreach (Process p in Process.GetProcessesByName("RobloxPlayerBeta")) { if (!RbxProcesses.Any(x => x.RobloxProcess.MainWindowHandle == p.MainWindowHandle)) { RbxProcess rbx = new RbxProcess(p); RbxProcesses.Add(rbx); Task.Run(() => { Task.Delay(1000); DateTime setupTime = DateTime.Now; rbx.Setup(); do { Task.Delay(500); }while (string.IsNullOrEmpty(rbx.UserName) && (DateTime.Now - setupTime).TotalSeconds < 5.0); if (rbx.Working && p.Responding) { p.EnableRaisingEvents = true; p.Exited += new EventHandler(RobloxProcess_Exited); rbx.Index = AddInviteLinkItem(rbx.UserName); } else { RbxProcesses.Remove(rbx); } }); } } }
private void InviteLinks_SelectedIndexChanged(object sender, EventArgs e) { if (InviteLinks.SelectedIndex < 0 || InviteLinks.SelectedItem == null) { return; } RbxProcess rbx = RbxProcesses.FirstOrDefault(x => x.UserName == (string)InviteLinks.SelectedItem); if (rbx != null) { Clipboard.SetText(string.Format("<rbx-join://{0}/{1}>", rbx.PlaceId, rbx.JobId)); MessageBox.Show("Copied to Clipboard!"); } }
private void RobloxProcess_Exited(object sender, EventArgs e) { Process Exited = (Process)sender; RbxProcess process = RbxProcesses.FirstOrDefault(x => x.RobloxProcess == Exited); if (process == null) { return; } RbxProcesses.Remove(process); for (int Index = 0; Index < InviteLinks.Items.Count; Index++) { if ((string)InviteLinks.Items[Index] == process.UserName) { RemoveInviteLinkItem(Index); break; } } }