/// <summary> /// Set the window identifying properties in X11 /// </summary> /// <param name="name">The window name</param> /// <param name="wmClass">The window class</param> /// <param name="handle">Value of Form.Handle for the window</param> public static void SetWMClass(string name, string wmClass, IntPtr handle) { var hint = new XClassHint() { res_name = Marshal.StringToCoTaskMemAnsi(name), res_class = Marshal.StringToCoTaskMemAnsi(wmClass) }; IntPtr classHints = Marshal.AllocCoTaskMem(Marshal.SizeOf(hint)); Marshal.StructureToPtr(hint, classHints, true); XSetClassHint(DisplayHandle, GetWindow(handle), classHints); Marshal.FreeCoTaskMem(hint.res_name); Marshal.FreeCoTaskMem(hint.res_class); Marshal.FreeCoTaskMem(classHints); }
/// <summary> /// Set the window identifying properties in X11 /// </summary> /// <param name="name">The window name</param> /// <param name="wmClass">The window class</param> /// <param name="handle">Value of Form.Handle for the window</param> public static void SetWMClass(string name, string wmClass, IntPtr handle) { var hint = new XClassHint() { res_name = Marshal.StringToCoTaskMemAnsi(name), res_class = Marshal.StringToCoTaskMemAnsi(wmClass) }; IntPtr classHints = Marshal.AllocCoTaskMem(Marshal.SizeOf(hint)); Marshal.StructureToPtr(hint, classHints, true); try { XSetClassHint(DisplayHandle, GetWindow(handle), classHints); } catch (DllNotFoundException) { // If the DLL isn't there, don't worry about it } Marshal.FreeCoTaskMem(hint.res_name); Marshal.FreeCoTaskMem(hint.res_class); Marshal.FreeCoTaskMem(classHints); }