From 7adc675d91653bfd2e64c2d3a26cca514a0db220 Mon Sep 17 00:00:00 2001 From: Smoke <40275383+creizlein@users.noreply.github.com> Date: Thu, 10 Aug 2023 15:33:21 -0300 Subject: [PATCH] Unique ETW session name & better ListView column handling --- src/Classes/Shared.cs | 1 + src/Controls/sMkListView.cs | 24 ++++++++++++++++++++---- src/Forms/frmColumns.cs | 2 +- src/Forms/frmMain.cs | 3 ++- src/Properties/AssemblyInfo.cs | 10 +++++----- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/Classes/Shared.cs b/src/Classes/Shared.cs index a0d8902..c05212f 100644 --- a/src/Classes/Shared.cs +++ b/src/Classes/Shared.cs @@ -124,6 +124,7 @@ public static bool AddPrivilege(string privilege) { } } +[SupportedOSPlatform("windows")] internal class CpuUsage { private API.FILETIME _idleTime, _kernTime, _userTime; private long _oldCpuUsage = 0, _oldKernUsage = 0, _oldUserUsage = 0; diff --git a/src/Controls/sMkListView.cs b/src/Controls/sMkListView.cs index 938902a..7b9a97e 100644 --- a/src/Controls/sMkListView.cs +++ b/src/Controls/sMkListView.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using System.Diagnostics; using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using static sMkTaskManager.Controls.sMkListViewHelpers; @@ -234,7 +235,7 @@ private void OnDataSource_ListChanged(object? sender, ListChangedEventArgs e) { switch (e.ListChangedType) { case ListChangedType.ItemAdded: OnDataSource_RowAdded(e); break; case ListChangedType.ItemChanged: OnDataSource_RowChanged(e); break; - // case ListChangedType.ItemDeleted: OnDataSource_RowDeleted(e); break; + // case ListChangedType.ItemDeleted: OnDataSource_RowDeleted(e); break; } } private void OnDataSource_RowAdded(ListChangedEventArgs e) { @@ -249,6 +250,7 @@ private void OnDataSource_RowAdded(ListChangedEventArgs e) { if (d.Name == "BackColor") { itm.BackColor = (Color)d.GetValue(row)!; } if ((d.Name == "ImageKey") && ((string?)d.GetValue(row) != "")) { itm.ImageKey = (string)d.GetValue(row)!; } if ((d.Name == "ImageIndex") && ((int?)d.GetValue(row) > -1)) { itm.ImageIndex = (int)d.GetValue(row)!; } + if ((d.Name == "StateImageIndex") && ((int?)d.GetValue(row) > -1)) { itm.StateImageIndex = (int)d.GetValue(row)!; } } // Populate each value of the item if the column exists. foreach (ColumnHeader c in Columns) { @@ -297,6 +299,12 @@ private void OnDataSource_RowChanged(ListChangedEventArgs e) { Items[_keyDescriptor.GetValue(row)!.ToString()].ImageIndex = (int)e.PropertyDescriptor.GetValue(row)!; } return; + case "StateImageIndex": // Set The Image Index + if (Items.ContainsKey(_keyDescriptor.GetValue(row)!.ToString())) { + Items[_keyDescriptor.GetValue(row)!.ToString()].StateImageIndex = (int)e.PropertyDescriptor.GetValue(row)!; + } + return; + default: // Set Values... foreach (ColumnHeader c in Columns) { if (e.PropertyDescriptor?.Name.ToLower() == c.Tag?.ToString()?.ToLower()) { @@ -348,7 +356,13 @@ public void SetColumns(in ListViewItemCollection colItems) { } EndUpdate(); } - + public int TotalColumnsWidth(int exceptColumn) { + int res = 0; + for (int i = 0; i < Columns.Count; i++) { + if (i != exceptColumn) res += Columns[i].Width; + } + return res; + } } public static class sMkListViewHelpers { @@ -373,9 +387,11 @@ public struct HDITEM { public int iImage; public int iOrder; } - [System.Security.SuppressUnmanagedCodeSecurity()] [DllImport("USER32.DLL", EntryPoint = "SendMessage")] + [System.Security.SuppressUnmanagedCodeSecurity()] + [DllImport("USER32.DLL", EntryPoint = "SendMessage")] public static unsafe extern IntPtr GetHeaderHnd(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); - [System.Security.SuppressUnmanagedCodeSecurity()] [DllImport("USER32.DLL", EntryPoint = "SendMessage")] + [System.Security.SuppressUnmanagedCodeSecurity()] + [DllImport("USER32.DLL", EntryPoint = "SendMessage")] public static unsafe extern IntPtr SendMessageItem(IntPtr Handle, int msg, IntPtr wParam, ref HDITEM lParam); } diff --git a/src/Forms/frmColumns.cs b/src/Forms/frmColumns.cs index ca49d41..bb973d3 100644 --- a/src/Forms/frmColumns.cs +++ b/src/Forms/frmColumns.cs @@ -21,7 +21,7 @@ public frmColumns(TaskManagerColumnTypes Type) : this() { private void frmColumns_Load(object sender, EventArgs e) { lv.Columns[0].Width = -2; - lv.Columns[0].Width -= 5; + lv.Columns[0].Width -= (SystemInformation.VerticalScrollBarWidth+2); } private void btnOk_Click(object sender, EventArgs e) { DialogResult = DialogResult.OK; diff --git a/src/Forms/frmMain.cs b/src/Forms/frmMain.cs index fbdd462..a2dfc8b 100644 --- a/src/Forms/frmMain.cs +++ b/src/Forms/frmMain.cs @@ -115,8 +115,9 @@ private void OnLoadParallelInit(object? sender, DoWorkEventArgs e) { Stopwatch sw = new(); Extensions.StartMeasure(sw); // We should use this to initialize something that is not really critical? - Shared.ETW.Start(); if (Shared.PrivateMsgID == 0) Shared.PrivateMsgID = API.RegisterWindowMessage(Application.ExecutablePath.Replace("\\", "_")); + Shared.ETW.sessionName += "-" + Shared.PrivateMsgID; + Shared.ETW.Start(); // if (Shared.AddPrivilege("SeDebugPrivilege")) Debug.WriteLine("SeDebugPrivilege Set"); Shared.InitComplete = true; MonitorStart(true); diff --git a/src/Properties/AssemblyInfo.cs b/src/Properties/AssemblyInfo.cs index 4d7e7f6..c4f5cce 100644 --- a/src/Properties/AssemblyInfo.cs +++ b/src/Properties/AssemblyInfo.cs @@ -16,8 +16,8 @@ [assembly: AssemblyConfiguration("Release")] #endif -[assembly: AssemblyVersion("3.0.25.*")] -[assembly: AssemblyFileVersion("3.0.25")] -[assembly: AssemblyInformationalVersion("3.0.25")] -[assembly: GitCommit("gaf30a6a869b917296b34c552c8d229dc8c605f61")] -[assembly: BuildMark("1690083951")] +[assembly: AssemblyVersion("3.0.30.*")] +[assembly: AssemblyFileVersion("3.0.30")] +[assembly: AssemblyInformationalVersion("3.0.30")] +[assembly: GitCommit("gad32159dda4b9258bcd5de2dcb81f20b782899a0")] +[assembly: BuildMark("1691689894")]