diff --git a/trunk/CHANGELOG.txt b/trunk/CHANGELOG.txt
index f067ac2d3..51b7dc019 100644
--- a/trunk/CHANGELOG.txt
+++ b/trunk/CHANGELOG.txt
@@ -4,6 +4,7 @@ Process Hacker
* NEW:
* CSR Processes tool - displays hidden processes (this does not detect Hacker
Defender but does detect simple kernel-mode rootkits)
+ * Options window has a detailed description for each setting
* FIXED:
* Disables "Show one graph per CPU" if there is only one CPU
* Process tree weirdness for users with limited privileges
diff --git a/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs b/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs
index 849891eb6..fa5534b47 100644
--- a/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs
+++ b/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs
@@ -50,6 +50,7 @@
this.checkShowTrayIcon = new System.Windows.Forms.CheckBox();
this.checkVerifySignatures = new System.Windows.Forms.CheckBox();
this.tabHighlighting = new System.Windows.Forms.TabPage();
+ this.label22 = new System.Windows.Forms.Label();
this.label20 = new System.Windows.Forms.Label();
this.label19 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
@@ -62,16 +63,6 @@
this.label5 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
- this.tabPlotting = new System.Windows.Forms.TabPage();
- this.checkPlotterAntialias = new System.Windows.Forms.CheckBox();
- this.label12 = new System.Windows.Forms.Label();
- this.label13 = new System.Windows.Forms.Label();
- this.label14 = new System.Windows.Forms.Label();
- this.label15 = new System.Windows.Forms.Label();
- this.label16 = new System.Windows.Forms.Label();
- this.label17 = new System.Windows.Forms.Label();
- this.toolTipProvider = new System.Windows.Forms.ToolTip(this.components);
- this.label22 = new System.Windows.Forms.Label();
this.colorPackedProcesses = new ProcessHacker.Components.ColorModifier();
this.colorDotNetProcesses = new ProcessHacker.Components.ColorModifier();
this.colorJobProcesses = new ProcessHacker.Components.ColorModifier();
@@ -82,12 +73,21 @@
this.colorOwnProcesses = new ProcessHacker.Components.ColorModifier();
this.colorRemovedProcesses = new ProcessHacker.Components.ColorModifier();
this.colorNewProcesses = new ProcessHacker.Components.ColorModifier();
+ this.tabPlotting = new System.Windows.Forms.TabPage();
+ this.checkPlotterAntialias = new System.Windows.Forms.CheckBox();
+ this.label12 = new System.Windows.Forms.Label();
+ this.label13 = new System.Windows.Forms.Label();
+ this.label14 = new System.Windows.Forms.Label();
+ this.label15 = new System.Windows.Forms.Label();
+ this.label16 = new System.Windows.Forms.Label();
+ this.label17 = new System.Windows.Forms.Label();
this.colorIORO = new ProcessHacker.Components.ColorModifier();
this.colorIOW = new ProcessHacker.Components.ColorModifier();
this.colorMemoryWS = new ProcessHacker.Components.ColorModifier();
this.colorMemoryPB = new ProcessHacker.Components.ColorModifier();
this.colorCPUUT = new ProcessHacker.Components.ColorModifier();
this.colorCPUKT = new ProcessHacker.Components.ColorModifier();
+ this.toolTipProvider = new System.Windows.Forms.ToolTip(this.components);
((System.ComponentModel.ISupportInitialize)(this.textUpdateInterval)).BeginInit();
this.tabControl.SuspendLayout();
this.tabGeneral.SuspendLayout();
@@ -104,6 +104,8 @@
this.label1.Size = new System.Drawing.Size(83, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Update Interval:";
+ this.toolTipProvider.SetToolTip(this.label1, "The number of milliseconds between each check for new, modified or removed object" +
+ "s.");
//
// textUpdateInterval
//
@@ -154,6 +156,8 @@
this.checkShowProcessDomains.Size = new System.Drawing.Size(156, 18);
this.checkShowProcessDomains.TabIndex = 3;
this.checkShowProcessDomains.Text = "Show user/group domains";
+ this.toolTipProvider.SetToolTip(this.checkShowProcessDomains, "Shows account domains. For example, \"MyUser\" would be displayed as \"ComputerName\\" +
+ "MyUser\".");
this.checkShowProcessDomains.UseVisualStyleBackColor = true;
//
// checkWarnDangerous
@@ -165,6 +169,8 @@
this.checkWarnDangerous.Size = new System.Drawing.Size(228, 18);
this.checkWarnDangerous.TabIndex = 4;
this.checkWarnDangerous.Text = "Warn about potentially dangerous actions";
+ this.toolTipProvider.SetToolTip(this.checkWarnDangerous, "Warns about any attempts to suspend a system process or inspect a system process\'" +
+ " thread.");
this.checkWarnDangerous.UseVisualStyleBackColor = true;
//
// label2
@@ -175,6 +181,8 @@
this.label2.Size = new System.Drawing.Size(80, 13);
this.label2.TabIndex = 5;
this.label2.Text = "Search Engine:";
+ this.toolTipProvider.SetToolTip(this.label2, "The URL to open when searching for a process or module. \"%s\" is replaced with the" +
+ " process/module name.");
//
// textSearchEngine
//
@@ -234,6 +242,7 @@
this.buttonFont.Size = new System.Drawing.Size(75, 23);
this.buttonFont.TabIndex = 15;
this.buttonFont.Text = "Font...";
+ this.toolTipProvider.SetToolTip(this.buttonFont, "The font to use for all lists and trees.");
this.buttonFont.UseVisualStyleBackColor = true;
this.buttonFont.Click += new System.EventHandler(this.buttonFont_Click);
//
@@ -252,6 +261,7 @@
this.label21.Size = new System.Drawing.Size(100, 13);
this.label21.TabIndex = 13;
this.label21.Text = "Require Signatures:";
+ this.toolTipProvider.SetToolTip(this.label21, "A comma-separated list of process names to require valid signatures for.");
//
// checkHideHandlesWithNoName
//
@@ -262,6 +272,7 @@
this.checkHideHandlesWithNoName.Size = new System.Drawing.Size(160, 18);
this.checkHideHandlesWithNoName.TabIndex = 12;
this.checkHideHandlesWithNoName.Text = "Hide handles with no name";
+ this.toolTipProvider.SetToolTip(this.checkHideHandlesWithNoName, "Hides unnamed handles by default. This can be changed in each process window.");
this.checkHideHandlesWithNoName.UseVisualStyleBackColor = true;
//
// checkEnableKPH
@@ -273,6 +284,8 @@
this.checkEnableKPH.Size = new System.Drawing.Size(217, 18);
this.checkEnableKPH.TabIndex = 12;
this.checkEnableKPH.Text = "Enable experimental kernel-mode driver";
+ this.toolTipProvider.SetToolTip(this.checkEnableKPH, "Enables the experimental driver which allows Process Hacker to bypass rootkits an" +
+ "d security software to a certain extent.");
this.checkEnableKPH.UseVisualStyleBackColor = true;
//
// comboSizeUnits
@@ -300,6 +313,7 @@
this.label18.Size = new System.Drawing.Size(78, 13);
this.label18.TabIndex = 10;
this.label18.Text = "Max. Size Unit:";
+ this.toolTipProvider.SetToolTip(this.label18, "The maximum unit of size to use.");
//
// checkStartHidden
//
@@ -310,6 +324,8 @@
this.checkStartHidden.Size = new System.Drawing.Size(89, 18);
this.checkStartHidden.TabIndex = 9;
this.checkStartHidden.Text = "Start hidden";
+ this.toolTipProvider.SetToolTip(this.checkStartHidden, "Starts Process Hacker hidden. To restore it, double-click on the notification ico" +
+ "n.");
this.checkStartHidden.UseVisualStyleBackColor = true;
//
// checkHideWhenMinimized
@@ -321,6 +337,7 @@
this.checkHideWhenMinimized.Size = new System.Drawing.Size(131, 18);
this.checkHideWhenMinimized.TabIndex = 9;
this.checkHideWhenMinimized.Text = "Hide when minimized";
+ this.toolTipProvider.SetToolTip(this.checkHideWhenMinimized, "Hides Process Hacker when it is minimized.");
this.checkHideWhenMinimized.UseVisualStyleBackColor = true;
//
// checkShowTrayIcon
@@ -329,9 +346,10 @@
this.checkShowTrayIcon.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.checkShowTrayIcon.Location = new System.Drawing.Point(6, 139);
this.checkShowTrayIcon.Name = "checkShowTrayIcon";
- this.checkShowTrayIcon.Size = new System.Drawing.Size(102, 18);
+ this.checkShowTrayIcon.Size = new System.Drawing.Size(136, 18);
this.checkShowTrayIcon.TabIndex = 7;
- this.checkShowTrayIcon.Text = "Show tray icon";
+ this.checkShowTrayIcon.Text = "Show notification icon";
+ this.toolTipProvider.SetToolTip(this.checkShowTrayIcon, "A notification icon which can be configured to alert you of events.");
this.checkShowTrayIcon.UseVisualStyleBackColor = true;
this.checkShowTrayIcon.CheckedChanged += new System.EventHandler(this.checkShowTrayIcon_CheckedChanged);
//
@@ -344,11 +362,12 @@
this.checkVerifySignatures.Size = new System.Drawing.Size(254, 18);
this.checkVerifySignatures.TabIndex = 3;
this.checkVerifySignatures.Text = "Verify signatures and perform additional checks";
+ this.toolTipProvider.SetToolTip(this.checkVerifySignatures, "Verifies the digital signatures of all processes and highlights certain types of " +
+ "suspicious processes.");
this.checkVerifySignatures.UseVisualStyleBackColor = true;
//
// tabHighlighting
//
- this.tabHighlighting.Controls.Add(this.label22);
this.tabHighlighting.Controls.Add(this.label20);
this.tabHighlighting.Controls.Add(this.label19);
this.tabHighlighting.Controls.Add(this.label11);
@@ -379,6 +398,16 @@
this.tabHighlighting.Text = "Highlighting";
this.tabHighlighting.UseVisualStyleBackColor = true;
//
+ // label22
+ //
+ this.label22.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.label22.AutoSize = true;
+ this.label22.Location = new System.Drawing.Point(12, 387);
+ this.label22.Name = "label22";
+ this.label22.Size = new System.Drawing.Size(300, 13);
+ this.label22.TabIndex = 10;
+ this.label22.Text = "Tip: Hover over an item to get a more detailed description of it.";
+ //
// label20
//
this.label20.Location = new System.Drawing.Point(214, 133);
@@ -461,11 +490,13 @@
// label7
//
this.label7.AutoSize = true;
- this.label7.Location = new System.Drawing.Point(6, 8);
+ this.label7.Location = new System.Drawing.Point(6, 9);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(108, 13);
this.label7.TabIndex = 4;
this.label7.Text = "Highlighting Duration:";
+ this.toolTipProvider.SetToolTip(this.label7, "The number of milliseconds for which new or removed objects will be highlighted a" +
+ "s such.");
//
// label6
//
@@ -505,114 +536,6 @@
this.label3.TabIndex = 0;
this.label3.Text = "New Objects:";
//
- // tabPlotting
- //
- this.tabPlotting.Controls.Add(this.checkPlotterAntialias);
- this.tabPlotting.Controls.Add(this.label12);
- this.tabPlotting.Controls.Add(this.label13);
- this.tabPlotting.Controls.Add(this.label14);
- this.tabPlotting.Controls.Add(this.label15);
- this.tabPlotting.Controls.Add(this.label16);
- this.tabPlotting.Controls.Add(this.label17);
- this.tabPlotting.Controls.Add(this.colorIORO);
- this.tabPlotting.Controls.Add(this.colorIOW);
- this.tabPlotting.Controls.Add(this.colorMemoryWS);
- this.tabPlotting.Controls.Add(this.colorMemoryPB);
- this.tabPlotting.Controls.Add(this.colorCPUUT);
- this.tabPlotting.Controls.Add(this.colorCPUKT);
- this.tabPlotting.Location = new System.Drawing.Point(4, 22);
- this.tabPlotting.Name = "tabPlotting";
- this.tabPlotting.Padding = new System.Windows.Forms.Padding(3);
- this.tabPlotting.Size = new System.Drawing.Size(417, 338);
- this.tabPlotting.TabIndex = 2;
- this.tabPlotting.Text = "Plotting";
- this.tabPlotting.UseVisualStyleBackColor = true;
- //
- // checkPlotterAntialias
- //
- this.checkPlotterAntialias.AutoSize = true;
- this.checkPlotterAntialias.FlatStyle = System.Windows.Forms.FlatStyle.System;
- this.checkPlotterAntialias.Location = new System.Drawing.Point(6, 6);
- this.checkPlotterAntialias.Name = "checkPlotterAntialias";
- this.checkPlotterAntialias.Size = new System.Drawing.Size(110, 18);
- this.checkPlotterAntialias.TabIndex = 22;
- this.checkPlotterAntialias.Text = "Use Anti-aliasing";
- this.checkPlotterAntialias.UseVisualStyleBackColor = true;
- //
- // label12
- //
- this.label12.AutoSize = true;
- this.label12.Location = new System.Drawing.Point(6, 135);
- this.label12.Name = "label12";
- this.label12.Size = new System.Drawing.Size(87, 13);
- this.label12.TabIndex = 21;
- this.label12.Text = "IO Reads+Other:";
- //
- // label13
- //
- this.label13.AutoSize = true;
- this.label13.Location = new System.Drawing.Point(6, 160);
- this.label13.Name = "label13";
- this.label13.Size = new System.Drawing.Size(54, 13);
- this.label13.TabIndex = 20;
- this.label13.Text = "IO Writes:";
- //
- // label14
- //
- this.label14.AutoSize = true;
- this.label14.Location = new System.Drawing.Point(6, 109);
- this.label14.Name = "label14";
- this.label14.Size = new System.Drawing.Size(69, 13);
- this.label14.TabIndex = 12;
- this.label14.Text = "Working Set:";
- //
- // label15
- //
- this.label15.AutoSize = true;
- this.label15.Location = new System.Drawing.Point(6, 83);
- this.label15.Name = "label15";
- this.label15.Size = new System.Drawing.Size(72, 13);
- this.label15.TabIndex = 13;
- this.label15.Text = "Private Bytes:";
- //
- // label16
- //
- this.label16.AutoSize = true;
- this.label16.Location = new System.Drawing.Point(6, 58);
- this.label16.Name = "label16";
- this.label16.Size = new System.Drawing.Size(83, 13);
- this.label16.TabIndex = 14;
- this.label16.Text = "CPU User Time:";
- //
- // label17
- //
- this.label17.AutoSize = true;
- this.label17.Location = new System.Drawing.Point(6, 32);
- this.label17.Name = "label17";
- this.label17.Size = new System.Drawing.Size(91, 13);
- this.label17.TabIndex = 10;
- this.label17.Text = "CPU Kernel Time:";
- //
- // toolTipProvider
- //
- this.toolTipProvider.AutomaticDelay = 250;
- this.toolTipProvider.AutoPopDelay = 5000;
- this.toolTipProvider.InitialDelay = 250;
- this.toolTipProvider.IsBalloon = true;
- this.toolTipProvider.ReshowDelay = 50;
- this.toolTipProvider.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
- this.toolTipProvider.ToolTipTitle = "Description";
- //
- // label22
- //
- this.label22.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.label22.AutoSize = true;
- this.label22.Location = new System.Drawing.Point(6, 319);
- this.label22.Name = "label22";
- this.label22.Size = new System.Drawing.Size(333, 13);
- this.label22.TabIndex = 10;
- this.label22.Text = "Tip: Hover over the names to get a more detailed description of them.";
- //
// colorPackedProcesses
//
this.colorPackedProcesses.Color = System.Drawing.Color.Transparent;
@@ -693,6 +616,102 @@
this.colorNewProcesses.Size = new System.Drawing.Size(40, 20);
this.colorNewProcesses.TabIndex = 1;
//
+ // tabPlotting
+ //
+ this.tabPlotting.Controls.Add(this.checkPlotterAntialias);
+ this.tabPlotting.Controls.Add(this.label12);
+ this.tabPlotting.Controls.Add(this.label13);
+ this.tabPlotting.Controls.Add(this.label14);
+ this.tabPlotting.Controls.Add(this.label15);
+ this.tabPlotting.Controls.Add(this.label16);
+ this.tabPlotting.Controls.Add(this.label17);
+ this.tabPlotting.Controls.Add(this.colorIORO);
+ this.tabPlotting.Controls.Add(this.colorIOW);
+ this.tabPlotting.Controls.Add(this.colorMemoryWS);
+ this.tabPlotting.Controls.Add(this.colorMemoryPB);
+ this.tabPlotting.Controls.Add(this.colorCPUUT);
+ this.tabPlotting.Controls.Add(this.colorCPUKT);
+ this.tabPlotting.Location = new System.Drawing.Point(4, 22);
+ this.tabPlotting.Name = "tabPlotting";
+ this.tabPlotting.Padding = new System.Windows.Forms.Padding(3);
+ this.tabPlotting.Size = new System.Drawing.Size(417, 338);
+ this.tabPlotting.TabIndex = 2;
+ this.tabPlotting.Text = "Plotting";
+ this.tabPlotting.UseVisualStyleBackColor = true;
+ //
+ // checkPlotterAntialias
+ //
+ this.checkPlotterAntialias.AutoSize = true;
+ this.checkPlotterAntialias.FlatStyle = System.Windows.Forms.FlatStyle.System;
+ this.checkPlotterAntialias.Location = new System.Drawing.Point(6, 6);
+ this.checkPlotterAntialias.Name = "checkPlotterAntialias";
+ this.checkPlotterAntialias.Size = new System.Drawing.Size(110, 18);
+ this.checkPlotterAntialias.TabIndex = 22;
+ this.checkPlotterAntialias.Text = "Use Anti-aliasing";
+ this.toolTipProvider.SetToolTip(this.checkPlotterAntialias, "Uses anti-aliasing for all graphs. This can cause higher CPU usage on older compu" +
+ "ters.");
+ this.checkPlotterAntialias.UseVisualStyleBackColor = true;
+ //
+ // label12
+ //
+ this.label12.AutoSize = true;
+ this.label12.Location = new System.Drawing.Point(6, 135);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(92, 13);
+ this.label12.TabIndex = 21;
+ this.label12.Text = "I/O Reads+Other:";
+ this.toolTipProvider.SetToolTip(this.label12, "I/O reads and other operations - ReadFile, DeviceIoControl");
+ //
+ // label13
+ //
+ this.label13.AutoSize = true;
+ this.label13.Location = new System.Drawing.Point(6, 160);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(59, 13);
+ this.label13.TabIndex = 20;
+ this.label13.Text = "I/O Writes:";
+ this.toolTipProvider.SetToolTip(this.label13, "I/O writes - WriteFile");
+ //
+ // label14
+ //
+ this.label14.AutoSize = true;
+ this.label14.Location = new System.Drawing.Point(6, 109);
+ this.label14.Name = "label14";
+ this.label14.Size = new System.Drawing.Size(69, 13);
+ this.label14.TabIndex = 12;
+ this.label14.Text = "Working Set:";
+ this.toolTipProvider.SetToolTip(this.label14, "The working set.");
+ //
+ // label15
+ //
+ this.label15.AutoSize = true;
+ this.label15.Location = new System.Drawing.Point(6, 83);
+ this.label15.Name = "label15";
+ this.label15.Size = new System.Drawing.Size(72, 13);
+ this.label15.TabIndex = 13;
+ this.label15.Text = "Private Bytes:";
+ this.toolTipProvider.SetToolTip(this.label15, "The amount of memory not shared with other processes.");
+ //
+ // label16
+ //
+ this.label16.AutoSize = true;
+ this.label16.Location = new System.Drawing.Point(6, 58);
+ this.label16.Name = "label16";
+ this.label16.Size = new System.Drawing.Size(83, 13);
+ this.label16.TabIndex = 14;
+ this.label16.Text = "CPU User Time:";
+ this.toolTipProvider.SetToolTip(this.label16, "Time spent in user-mode.");
+ //
+ // label17
+ //
+ this.label17.AutoSize = true;
+ this.label17.Location = new System.Drawing.Point(6, 32);
+ this.label17.Name = "label17";
+ this.label17.Size = new System.Drawing.Size(91, 13);
+ this.label17.TabIndex = 10;
+ this.label17.Text = "CPU Kernel Time:";
+ this.toolTipProvider.SetToolTip(this.label17, "Time spent in kernel-mode.");
+ //
// colorIORO
//
this.colorIORO.Color = System.Drawing.Color.Transparent;
@@ -741,12 +760,23 @@
this.colorCPUKT.Size = new System.Drawing.Size(40, 20);
this.colorCPUKT.TabIndex = 11;
//
+ // toolTipProvider
+ //
+ this.toolTipProvider.AutomaticDelay = 250;
+ this.toolTipProvider.AutoPopDelay = 5000;
+ this.toolTipProvider.InitialDelay = 250;
+ this.toolTipProvider.IsBalloon = true;
+ this.toolTipProvider.ReshowDelay = 50;
+ this.toolTipProvider.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
+ this.toolTipProvider.ToolTipTitle = "Description";
+ //
// OptionsWindow
//
this.AcceptButton = this.buttonClose;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(449, 417);
+ this.Controls.Add(this.label22);
this.Controls.Add(this.tabControl);
this.Controls.Add(this.buttonClose);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
@@ -767,6 +797,7 @@
this.tabPlotting.ResumeLayout(false);
this.tabPlotting.PerformLayout();
this.ResumeLayout(false);
+ this.PerformLayout();
}
diff --git a/trunk/ProcessHacker/Forms/OptionsWindow.resx b/trunk/ProcessHacker/Forms/OptionsWindow.resx
index fb4813b39..d443dcf18 100644
--- a/trunk/ProcessHacker/Forms/OptionsWindow.resx
+++ b/trunk/ProcessHacker/Forms/OptionsWindow.resx
@@ -120,4 +120,13 @@
17, 17
+
+ 17, 17
+
+
+ 17, 17
+
+
+ 17, 17
+
\ No newline at end of file