Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using DiscordRPC;
- using System;
- using System.Diagnostics;
- using System.Linq;
- using System.Runtime.InteropServices;
- namespace CDisplayEx
- {
- class Program
- {
- private static DiscordRpcClient client;
- private static Process cdisplayex;
- private static string windowTitle;
- private void timer1_Tick(object sender, EventArgs e)
- {
- StringBuilder sbBufferText = new StringBuilder(255);
- GetWindowText(GetForegroundWindow(), sbBufferText, sbBufferText.Capacity);
- Console.WriteLine("Foreground Window text = {0}", sbBufferText.ToString());
- }
- [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
- public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
- [DllImport("User32.dll", SetLastError = true)]
- public static extern IntPtr GetForegroundWindow();
- static void Main(string[] args)
- {
- Initialize();
- if (Process.GetProcesses().Where(x => x.ProcessName.StartsWith("CDisplayEx")).Count() == 0)
- return;
- while (true)
- {
- Update();
- if (Process.GetProcesses().Where(x => x.ProcessName.StartsWith("CDisplayEx")).Count() == 0)
- {
- Deinitialize();
- Console.WriteLine("Thanks for using CDisplayEx!");
- return;
- }
- }
- }
- private static void Initialize()
- {
- client = new DiscordRpcClient("815595590515032074");
- if(Process.GetProcesses().Where(x => x.ProcessName.StartsWith("CDisplayEx")).Count() == 0)
- {
- Console.WriteLine("CDisplayEX was not found! Is it open?");
- return;
- }
- cdisplayex = Process.GetProcesses().Where(x => x.ProcessName.StartsWith("CDisplayEx")).ToList()[0];
- windowTitle = cdisplayex.MainWindowTitle;
- client.OnReady += (sender, e) =>
- {
- Console.WriteLine("Received Ready from user {0}", e.User.Username);
- };
- client.OnPresenceUpdate += (sender, e) =>
- {
- Console.WriteLine("Received Update! {0}", e.Presence);
- };
- try
- {
- client.Initialize();
- Console.WriteLine("Successfully connected to client!");
- }
- catch(Exception e)
- {
- Console.WriteLine($"Connection to client was not successful!\nERROR: {e.Message}");
- return;
- }
- try { SetNewPresence(); }
- catch(Exception e)
- {
- Console.WriteLine($"Setting presence was not successful!\nERROR: {e.Message}");
- return;
- }
- }
- private static void Update()
- {
- client.OnPresenceUpdate += (sender, e) =>
- {
- Console.WriteLine("Received Update! {0}", e.Presence);
- };
- client.Invoke();
- OnUpdate();
- }
- private static void Deinitialize()
- {
- client.ClearPresence();
- client.Dispose();
- }
- private static void OnUpdate()
- {
- Process[] processes = Process.GetProcessesByName("CDisplayEx");
- foreach (Process p in processes)
- try
- {
- IntPtr windowHandle = cdisplayex.MainWindowHandle;
- }
- catch(Exception) { return; }
- if (cdisplayex.MainWindowTitle != windowTitle)
- {
- IntPtr windowHandle = cdisplayex.MainWindowHandle;
- SetNewPresence();
- }
- }
- private static void SetNewPresence()
- {
- string details = cdisplayex.MainWindowTitle;
- if(details == " " || details == "")
- details = "Picking a New File";
- client.SetPresence(new RichPresence
- {
- Details = details,
- State = "State Placeholder",
- Timestamps = new Timestamps(DateTime.UtcNow),
- Assets = new Assets()
- {
- LargeImageKey = "cdisplayex",
- LargeImageText = "cdisplayex"
- }
- });
- Console.WriteLine("Presence successfully set!");
- }
- }
- internal class StringBuilder
- {
- private int v;
- public StringBuilder(int v)
- {
- this.v = v;
- }
- public int Capacity { get; internal set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement