* fixed insane memory usage on Windows XP

* added Re-analyze menu item

git-svn-id: svn://svn.code.sf.net/p/processhacker/code@733 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
wj32
2009-02-26 10:09:21 +00:00
parent 2590f6dc7e
commit f331d3fbb4
7 changed files with 74 additions and 35 deletions
+1
View File
@@ -59,6 +59,7 @@ Process Hacker
* Memory searching now uses KProcessHacker if possible
* Incorrect labeling of process files which can't be read (due to permissions)
as packed
* Insane memory usage on Windows XP
* Now uses the proper method of detecting .NET processes
* System Information now runs on a separate thread
* Disables "Show one graph per CPU" in System Information if there is only one CPU
@@ -136,7 +136,7 @@ namespace wyDay.Controls
}
else
{
Image drawImg = GetImage(((MenuItem)sender));
Image drawImg = EnsurePropertiesExists((MenuItem)sender).PreVistaBitmap;
if (drawImg != null)
{
@@ -18,6 +18,7 @@ namespace wyDay.Controls
{
public Image Image;
public IntPtr renderBmpHbitmap = IntPtr.Zero;
public Bitmap PreVistaBitmap;
}
//enum WindowsType { VistaOrLater, XP, PreXP }
@@ -80,6 +81,8 @@ namespace wyDay.Controls
{
if (((Properties)de.Value).renderBmpHbitmap != IntPtr.Zero)
DeleteObject(((Properties)de.Value).renderBmpHbitmap);
if (((Properties)de.Value).PreVistaBitmap != null)
((Properties)de.Value).PreVistaBitmap.Dispose();
}
@@ -170,12 +173,30 @@ namespace wyDay.Controls
AddVistaMenuItem(mnuItem);
}
}
//for every Pre-Vista Windows, add the parent of the menu item to the list of parents
if (!DesignMode && !isVistaOrLater && formHasBeenIntialized)
else if (!DesignMode && !isVistaOrLater)
{
AddPreVistaMenuItem(mnuItem);
if (prop.PreVistaBitmap != null)
{
prop.PreVistaBitmap.Dispose();
prop.PreVistaBitmap = null;
}
if (value == null)
return;
Bitmap bmp = new Bitmap(value.Width, value.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(value, 0, 0, value.Width, value.Height);
g.Dispose();
prop.PreVistaBitmap = bmp;
//for every Pre-Vista Windows, add the parent of the menu item to the list of parents
if (formHasBeenIntialized)
{
AddPreVistaMenuItem(mnuItem);
}
}
}
+27 -27
View File
@@ -89,9 +89,7 @@
this.verifyFileSignatureMenuItem = new System.Windows.Forms.MenuItem();
this.windowMenuItem = new System.Windows.Forms.MenuItem();
this.helpMenu = new System.Windows.Forms.MenuItem();
this.debugPHMenuItem = new System.Windows.Forms.MenuItem();
this.freeMemoryMenuItem = new System.Windows.Forms.MenuItem();
this.menuItem6 = new System.Windows.Forms.MenuItem();
this.logMenuItem = new System.Windows.Forms.MenuItem();
this.helpMenuItem = new System.Windows.Forms.MenuItem();
this.aboutMenuItem = new System.Windows.Forms.MenuItem();
@@ -111,12 +109,12 @@
this.listNetwork = new ProcessHacker.NetworkList();
this.menuService = new System.Windows.Forms.ContextMenu();
this.goToProcessServiceMenuItem = new System.Windows.Forms.MenuItem();
this.performAdminServiceMenuItem = new System.Windows.Forms.MenuItem();
this.startServiceMenuItem = new System.Windows.Forms.MenuItem();
this.continueServiceMenuItem = new System.Windows.Forms.MenuItem();
this.pauseServiceMenuItem = new System.Windows.Forms.MenuItem();
this.stopServiceMenuItem = new System.Windows.Forms.MenuItem();
this.deleteServiceMenuItem = new System.Windows.Forms.MenuItem();
this.performAdminServiceMenuItem = new System.Windows.Forms.MenuItem();
this.propertiesServiceMenuItem = new System.Windows.Forms.MenuItem();
this.menuItem8 = new System.Windows.Forms.MenuItem();
this.copyServiceMenuItem = new System.Windows.Forms.MenuItem();
@@ -139,6 +137,8 @@
this.shutdownTrayMenuItem = new System.Windows.Forms.MenuItem();
this.exitTrayMenuItem = new System.Windows.Forms.MenuItem();
this.vistaMenu = new wyDay.Controls.VistaMenu(this.components);
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.reanalyzeProcessMenuItem = new System.Windows.Forms.MenuItem();
((System.ComponentModel.ISupportInitialize)(this.statusGeneral)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.statusCPU)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.statusMemory)).BeginInit();
@@ -178,6 +178,7 @@
this.propertiesProcessMenuItem,
this.menuItem7,
this.searchProcessMenuItem,
this.reanalyzeProcessMenuItem,
this.copyProcessMenuItem,
this.selectAllProcessMenuItem});
this.menuProcess.Popup += new System.EventHandler(this.menuProcess_Popup);
@@ -330,12 +331,12 @@
// copyProcessMenuItem
//
this.vistaMenu.SetImage(this.copyProcessMenuItem, global::ProcessHacker.Properties.Resources.page_copy);
this.copyProcessMenuItem.Index = 13;
this.copyProcessMenuItem.Index = 14;
this.copyProcessMenuItem.Text = "&Copy";
//
// selectAllProcessMenuItem
//
this.selectAllProcessMenuItem.Index = 14;
this.selectAllProcessMenuItem.Index = 15;
this.selectAllProcessMenuItem.Text = "Select &All";
this.selectAllProcessMenuItem.Click += new System.EventHandler(this.selectAllProcessMenuItem_Click);
//
@@ -565,31 +566,19 @@
//
this.helpMenu.Index = 4;
this.helpMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.debugPHMenuItem,
this.menuItem6,
this.freeMemoryMenuItem,
this.menuItem1,
this.logMenuItem,
this.helpMenuItem,
this.aboutMenuItem});
this.helpMenu.Text = "H&elp";
//
// debugPHMenuItem
//
this.debugPHMenuItem.Index = 0;
this.debugPHMenuItem.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.freeMemoryMenuItem});
this.debugPHMenuItem.Text = "Debug";
//
// freeMemoryMenuItem
//
this.freeMemoryMenuItem.Index = 0;
this.freeMemoryMenuItem.Text = "Free Memory";
this.freeMemoryMenuItem.Click += new System.EventHandler(this.freeMemoryMenuItem_Click);
//
// menuItem6
//
this.menuItem6.Index = 1;
this.menuItem6.Text = "-";
//
// logMenuItem
//
this.vistaMenu.SetImage(this.logMenuItem, global::ProcessHacker.Properties.Resources.page_white_text);
@@ -767,12 +756,6 @@
this.goToProcessServiceMenuItem.Text = "&Go to Process";
this.goToProcessServiceMenuItem.Click += new System.EventHandler(this.goToProcessServiceMenuItem_Click);
//
// performAdminServiceMenuItem
//
this.performAdminServiceMenuItem.Index = 6;
this.performAdminServiceMenuItem.Text = "Perform Administrative Tasks";
this.performAdminServiceMenuItem.Click += new System.EventHandler(this.performAdminServiceMenuItem_Click);
//
// startServiceMenuItem
//
this.vistaMenu.SetImage(this.startServiceMenuItem, global::ProcessHacker.Properties.Resources.control_play_blue);
@@ -807,6 +790,12 @@
this.deleteServiceMenuItem.Text = "Delete";
this.deleteServiceMenuItem.Click += new System.EventHandler(this.deleteServiceMenuItem_Click);
//
// performAdminServiceMenuItem
//
this.performAdminServiceMenuItem.Index = 6;
this.performAdminServiceMenuItem.Text = "Perform Administrative Tasks";
this.performAdminServiceMenuItem.Click += new System.EventHandler(this.performAdminServiceMenuItem_Click);
//
// propertiesServiceMenuItem
//
this.propertiesServiceMenuItem.DefaultItem = true;
@@ -945,6 +934,17 @@
//
this.vistaMenu.ContainerControl = this;
//
// menuItem1
//
this.menuItem1.Index = 1;
this.menuItem1.Text = "-";
//
// reanalyzeProcessMenuItem
//
this.reanalyzeProcessMenuItem.Index = 13;
this.reanalyzeProcessMenuItem.Text = "Re-analyze";
this.reanalyzeProcessMenuItem.Click += new System.EventHandler(this.reanalyzeProcessMenuItem_Click);
//
// HackerWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1082,10 +1082,10 @@
private System.Windows.Forms.MenuItem uacSeparatorMenuItem;
private System.Windows.Forms.MenuItem runMenuItem;
private System.Windows.Forms.MenuItem runAsMenuItem;
private System.Windows.Forms.MenuItem debugPHMenuItem;
private System.Windows.Forms.MenuItem freeMemoryMenuItem;
private System.Windows.Forms.MenuItem menuItem6;
private System.Windows.Forms.MenuItem performAdminServiceMenuItem;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem reanalyzeProcessMenuItem;
}
}
+12 -2
View File
@@ -543,7 +543,7 @@ namespace ProcessHacker
processItem.MenuItems.AddRange(new MenuItem[] { terminateItem, suspendItem, resumeItem, propertiesItem });
processesMenuItem.MenuItems.Add(processItem);
//vistaMenu.SetImage(processItem, (treeProcesses.Tree.Model as ProcessTreeModel).Nodes[process.PID].Icon);
vistaMenu.SetImage(processItem, (treeProcesses.Tree.Model as ProcessTreeModel).Nodes[process.PID].Icon);
}
}
catch
@@ -1059,6 +1059,16 @@ namespace ProcessHacker
}
}
private void reanalyzeProcessMenuItem_Click(object sender, EventArgs e)
{
try
{
processP.QueueFileProcessing(processSelectedPID);
}
catch
{ }
}
private void selectAllProcessMenuItem_Click(object sender, EventArgs e)
{
Misc.SelectAll(treeProcesses.Tree.AllNodes);
@@ -2222,6 +2232,6 @@ namespace ProcessHacker
this.Visible = false;
}
}
}
}
}
}
@@ -290,6 +290,12 @@ namespace ProcessHacker
_fpResults.Enqueue(fpResult);
}
public void QueueFileProcessing(int pid)
{
(new ProcessFileDelegate(this.ProcessFile)).BeginInvoke(pid, this.Dictionary[pid].FileName,
r => { }, null);
}
private void UpdateOnce()
{
this.UpdatePerformance();
+1
View File
@@ -349,6 +349,7 @@ namespace ProcessHacker
result = StatusToVerifyResult(winTrustResult);
CryptCATAdminReleaseCatalogContext(catAdmin, catInfo, 0);
CryptCATAdminReleaseContext(catAdmin, 0);
}
}