* got rid of Win32ForegroundWindow

* fixed coding styles, etc.

git-svn-id: svn://svn.code.sf.net/p/processhacker/code@1752 21ef857c-d57f-4fe0-8362-d861dc6d29cd
This commit is contained in:
wj32
2009-08-28 07:21:17 +00:00
parent ede746e27c
commit efb5477351
16 changed files with 1074 additions and 1140 deletions
+1
View File
@@ -2,6 +2,7 @@ Process Hacker
1.6
* NEW/IMPROVED:
* Update system
* FIXED:
* Critical KProcessHacker denial-of-service security issues
* Incorrect menu items for System threads
@@ -1,50 +0,0 @@
/*
* Process Hacker -
* ThreadSafe IWin32Window for obtaining ForegroundWindow Handle
*
* Copyright (C) 2009 dmex
*
* This file is part of Process Hacker.
*
* Process Hacker is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Process Hacker is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Process Hacker. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class IWin32ForegroundWindow : IWin32Window
{
private static IWin32ForegroundWindow _window = new IWin32ForegroundWindow();
private IWin32ForegroundWindow() { }
public static IWin32Window Instance
{
get { return _window; }
}
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
IntPtr IWin32Window.Handle
{
get
{
return GetForegroundWindow();
}
}
}
+18 -18
View File
@@ -48,6 +48,7 @@
this.label7 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.linkGamingMasteR = new System.Windows.Forms.LinkLabel();
this.linkKerem = new System.Windows.Forms.LinkLabel();
@@ -61,7 +62,6 @@
this.labelFiller = new System.Windows.Forms.Label();
this.buttonChangelog = new System.Windows.Forms.Button();
this.buttonDiagnostics = new System.Windows.Forms.Button();
this.label12 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit();
this.flowCredits.SuspendLayout();
this.SuspendLayout();
@@ -207,13 +207,13 @@
this.flowCredits.AutoScroll = true;
this.flowCredits.Controls.Add(this.label8);
this.flowCredits.Controls.Add(this.label5);
this.flowCredits.Controls.Add(this.label12);
this.flowCredits.Controls.Add(this.label1);
this.flowCredits.Controls.Add(this.label6);
this.flowCredits.Controls.Add(this.label10);
this.flowCredits.Controls.Add(this.label9);
this.flowCredits.Controls.Add(this.label7);
this.flowCredits.Controls.Add(this.label1);
this.flowCredits.Controls.Add(this.label11);
this.flowCredits.Controls.Add(this.label12);
this.flowCredits.Controls.Add(this.label2);
this.flowCredits.Controls.Add(this.linkGamingMasteR);
this.flowCredits.Controls.Add(this.linkKerem);
@@ -261,7 +261,7 @@
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(6, 29);
this.label6.Location = new System.Drawing.Point(6, 55);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(91, 13);
this.label6.TabIndex = 18;
@@ -270,7 +270,7 @@
// label10
//
this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(6, 42);
this.label10.Location = new System.Drawing.Point(6, 68);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(89, 13);
this.label10.TabIndex = 23;
@@ -279,7 +279,7 @@
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(6, 55);
this.label9.Location = new System.Drawing.Point(6, 81);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(127, 13);
this.label9.TabIndex = 22;
@@ -288,7 +288,7 @@
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(6, 68);
this.label7.Location = new System.Drawing.Point(6, 94);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(142, 13);
this.label7.TabIndex = 18;
@@ -297,7 +297,7 @@
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 81);
this.label1.Location = new System.Drawing.Point(6, 42);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(188, 13);
this.label1.TabIndex = 13;
@@ -307,12 +307,21 @@
//
this.label11.AutoSize = true;
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label11.Location = new System.Drawing.Point(6, 94);
this.label11.Location = new System.Drawing.Point(6, 107);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(68, 13);
this.label11.TabIndex = 17;
this.label11.Text = "Thanks to:";
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(6, 29);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(90, 13);
this.label12.TabIndex = 29;
this.label12.Text = "dmex - Developer";
//
// label2
//
this.label2.AutoSize = true;
@@ -457,15 +466,6 @@
this.buttonDiagnostics.UseVisualStyleBackColor = true;
this.buttonDiagnostics.Click += new System.EventHandler(this.buttonDiagnostics_Click);
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(6, 107);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(161, 13);
this.label12.TabIndex = 29;
this.label12.Text = "dmex - Inspiration for x64 version";
//
// AboutWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+62 -62
View File
@@ -115,7 +115,7 @@
this.windowMenuItem = new System.Windows.Forms.MenuItem();
this.helpMenu = new System.Windows.Forms.MenuItem();
this.freeMemoryMenuItem = new System.Windows.Forms.MenuItem();
this.UpdateCheckMenuItem = new System.Windows.Forms.MenuItem();
this.checkForUpdatesMenuItem = new System.Windows.Forms.MenuItem();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.logMenuItem = new System.Windows.Forms.MenuItem();
this.helpMenuItem = new System.Windows.Forms.MenuItem();
@@ -129,8 +129,11 @@
this.timerMessages = new System.Windows.Forms.Timer(this.components);
this.tabControl = new System.Windows.Forms.TabControl();
this.tabProcesses = new System.Windows.Forms.TabPage();
this.treeProcesses = new ProcessHacker.ProcessTree();
this.tabServices = new System.Windows.Forms.TabPage();
this.listServices = new ProcessHacker.Components.ServiceList();
this.tabNetwork = new System.Windows.Forms.TabPage();
this.listNetwork = new ProcessHacker.Components.NetworkList();
this.toolStrip = new System.Windows.Forms.ToolStrip();
this.refreshToolStripButton = new System.Windows.Forms.ToolStripButton();
this.optionsToolStripButton = new System.Windows.Forms.ToolStripButton();
@@ -172,9 +175,6 @@
this.menuNetwork = new System.Windows.Forms.ContextMenu();
this.menuItem6 = new System.Windows.Forms.MenuItem();
this.selectAllNetworkMenuItem = new System.Windows.Forms.MenuItem();
this.treeProcesses = new ProcessHacker.ProcessTree();
this.listServices = new ProcessHacker.Components.ServiceList();
this.listNetwork = new ProcessHacker.Components.NetworkList();
this.vistaMenu = new wyDay.Controls.VistaMenu(this.components);
((System.ComponentModel.ISupportInitialize)(this.statusGeneral)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.statusCPU)).BeginInit();
@@ -282,7 +282,7 @@
// terminatorProcessMenuItem
//
this.terminatorProcessMenuItem.Index = 10;
this.terminatorProcessMenuItem.Text = "Terminator...";
this.terminatorProcessMenuItem.Text = "Terminator";
this.terminatorProcessMenuItem.Click += new System.EventHandler(this.terminatorProcessMenuItem_Click);
//
// miscellaneousProcessMenuItem
@@ -305,7 +305,7 @@
// heapsProcessMenuItem
//
this.heapsProcessMenuItem.Index = 1;
this.heapsProcessMenuItem.Text = "Heaps...";
this.heapsProcessMenuItem.Text = "Heaps";
this.heapsProcessMenuItem.Click += new System.EventHandler(this.heapsProcessMenuItem_Click);
//
// injectDllProcessMenuItem
@@ -317,7 +317,7 @@
// protectionProcessMenuItem
//
this.protectionProcessMenuItem.Index = 3;
this.protectionProcessMenuItem.Text = "Protection...";
this.protectionProcessMenuItem.Text = "Protection";
this.protectionProcessMenuItem.Click += new System.EventHandler(this.protectionProcessMenuItem_Click);
//
// setTokenProcessMenuItem
@@ -453,7 +453,7 @@
this.propertiesProcessMenuItem.DefaultItem = true;
this.vistaMenu.SetImage(this.propertiesProcessMenuItem, global::ProcessHacker.Properties.Resources.application_form_magnify);
this.propertiesProcessMenuItem.Index = 15;
this.propertiesProcessMenuItem.Text = "&Properties...";
this.propertiesProcessMenuItem.Text = "&Properties";
this.propertiesProcessMenuItem.Click += new System.EventHandler(this.propertiesProcessMenuItem_Click);
//
// menuItem7
@@ -465,7 +465,7 @@
//
this.searchProcessMenuItem.Index = 17;
this.searchProcessMenuItem.Shortcut = System.Windows.Forms.Shortcut.CtrlM;
this.searchProcessMenuItem.Text = "&Search Online...";
this.searchProcessMenuItem.Text = "&Search Online";
this.searchProcessMenuItem.Click += new System.EventHandler(this.searchProcessMenuItem_Click);
//
// reanalyzeProcessMenuItem
@@ -674,7 +674,7 @@
//
this.sysInfoMenuItem.Index = 1;
this.sysInfoMenuItem.Shortcut = System.Windows.Forms.Shortcut.CtrlI;
this.sysInfoMenuItem.Text = "System &Information...";
this.sysInfoMenuItem.Text = "System &Information";
this.sysInfoMenuItem.Click += new System.EventHandler(this.sysInfoMenuItem_Click);
//
// trayIconsMenuItem
@@ -761,7 +761,7 @@
// hiddenProcessesMenuItem
//
this.hiddenProcessesMenuItem.Index = 1;
this.hiddenProcessesMenuItem.Text = "&Hidden Processes...";
this.hiddenProcessesMenuItem.Text = "&Hidden Processes";
this.hiddenProcessesMenuItem.Click += new System.EventHandler(this.hiddenProcessesMenuItem_Click);
//
// verifyFileSignatureMenuItem
@@ -785,7 +785,7 @@
this.helpMenu.Index = 5;
this.helpMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.freeMemoryMenuItem,
this.UpdateCheckMenuItem,
this.checkForUpdatesMenuItem,
this.menuItem1,
this.logMenuItem,
this.helpMenuItem,
@@ -798,11 +798,11 @@
this.freeMemoryMenuItem.Text = "Free Memory";
this.freeMemoryMenuItem.Click += new System.EventHandler(this.freeMemoryMenuItem_Click);
//
// UpdateCheckMenuItem
// checkForUpdatesMenuItem
//
this.UpdateCheckMenuItem.Index = 1;
this.UpdateCheckMenuItem.Text = "Check for Update";
this.UpdateCheckMenuItem.Click += new System.EventHandler(this.UpdateCheckMenuItem_Click);
this.checkForUpdatesMenuItem.Index = 1;
this.checkForUpdatesMenuItem.Text = "Check for Updates";
this.checkForUpdatesMenuItem.Click += new System.EventHandler(this.UpdateCheckMenuItem_Click);
//
// menuItem1
//
@@ -814,7 +814,7 @@
this.vistaMenu.SetImage(this.logMenuItem, global::ProcessHacker.Properties.Resources.page_white_text);
this.logMenuItem.Index = 3;
this.logMenuItem.Shortcut = System.Windows.Forms.Shortcut.CtrlL;
this.logMenuItem.Text = "&Log...";
this.logMenuItem.Text = "&Log";
this.logMenuItem.Click += new System.EventHandler(this.logMenuItem_Click);
//
// helpMenuItem
@@ -822,19 +822,19 @@
this.vistaMenu.SetImage(this.helpMenuItem, global::ProcessHacker.Properties.Resources.help);
this.helpMenuItem.Index = 4;
this.helpMenuItem.Shortcut = System.Windows.Forms.Shortcut.F1;
this.helpMenuItem.Text = "&Help...";
this.helpMenuItem.Text = "&Help";
this.helpMenuItem.Click += new System.EventHandler(this.helpMenuItem_Click);
//
// aboutMenuItem
//
this.vistaMenu.SetImage(this.aboutMenuItem, global::ProcessHacker.Properties.Resources.information);
this.aboutMenuItem.Index = 5;
this.aboutMenuItem.Text = "&About...";
this.aboutMenuItem.Text = "&About";
this.aboutMenuItem.Click += new System.EventHandler(this.aboutMenuItem_Click);
//
// statusBar
//
this.statusBar.Location = new System.Drawing.Point(0, 320);
this.statusBar.Location = new System.Drawing.Point(0, 404);
this.statusBar.Name = "statusBar";
this.statusBar.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {
this.statusGeneral,
@@ -908,28 +908,65 @@
this.tabProcesses.Text = "Processes";
this.tabProcesses.UseVisualStyleBackColor = true;
//
// treeProcesses
//
this.treeProcesses.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeProcesses.Draw = true;
this.treeProcesses.Location = new System.Drawing.Point(3, 3);
this.treeProcesses.Name = "treeProcesses";
this.treeProcesses.Provider = null;
this.treeProcesses.Size = new System.Drawing.Size(784, 344);
this.treeProcesses.TabIndex = 4;
this.treeProcesses.SelectionChanged += new System.EventHandler(this.treeProcesses_SelectionChanged);
this.treeProcesses.NodeMouseDoubleClick += new System.EventHandler<Aga.Controls.Tree.TreeNodeAdvMouseEventArgs>(this.treeProcesses_NodeMouseDoubleClick);
this.treeProcesses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeProcesses_KeyDown);
//
// tabServices
//
this.tabServices.Controls.Add(this.listServices);
this.tabServices.Location = new System.Drawing.Point(4, 22);
this.tabServices.Name = "tabServices";
this.tabServices.Padding = new System.Windows.Forms.Padding(3);
this.tabServices.Size = new System.Drawing.Size(790, 348);
this.tabServices.Size = new System.Drawing.Size(790, 350);
this.tabServices.TabIndex = 1;
this.tabServices.Text = "Services";
this.tabServices.UseVisualStyleBackColor = true;
//
// listServices
//
this.listServices.Dock = System.Windows.Forms.DockStyle.Fill;
this.listServices.DoubleBuffered = true;
this.listServices.Location = new System.Drawing.Point(3, 3);
this.listServices.Name = "listServices";
this.listServices.Provider = null;
this.listServices.Size = new System.Drawing.Size(784, 344);
this.listServices.TabIndex = 0;
this.listServices.DoubleClick += new System.EventHandler(this.listServices_DoubleClick);
this.listServices.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listServices_KeyDown);
//
// tabNetwork
//
this.tabNetwork.Controls.Add(this.listNetwork);
this.tabNetwork.Location = new System.Drawing.Point(4, 22);
this.tabNetwork.Name = "tabNetwork";
this.tabNetwork.Padding = new System.Windows.Forms.Padding(3);
this.tabNetwork.Size = new System.Drawing.Size(790, 348);
this.tabNetwork.Size = new System.Drawing.Size(790, 350);
this.tabNetwork.TabIndex = 2;
this.tabNetwork.Text = "Network";
this.tabNetwork.UseVisualStyleBackColor = true;
//
// listNetwork
//
this.listNetwork.Dock = System.Windows.Forms.DockStyle.Fill;
this.listNetwork.DoubleBuffered = true;
this.listNetwork.Location = new System.Drawing.Point(3, 3);
this.listNetwork.Name = "listNetwork";
this.listNetwork.Provider = null;
this.listNetwork.Size = new System.Drawing.Size(784, 344);
this.listNetwork.TabIndex = 0;
this.listNetwork.DoubleClick += new System.EventHandler(this.listNetwork_DoubleClick);
this.listNetwork.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listNetwork_KeyDown);
//
// toolStrip
//
this.toolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
@@ -1066,7 +1103,7 @@
this.propertiesServiceMenuItem.DefaultItem = true;
this.vistaMenu.SetImage(this.propertiesServiceMenuItem, global::ProcessHacker.Properties.Resources.application_form_magnify);
this.propertiesServiceMenuItem.Index = 6;
this.propertiesServiceMenuItem.Text = "&Properties...";
this.propertiesServiceMenuItem.Text = "&Properties";
this.propertiesServiceMenuItem.Click += new System.EventHandler(this.propertiesServiceMenuItem_Click);
//
// menuItem8
@@ -1107,7 +1144,7 @@
// sysInformationIconMenuItem
//
this.sysInformationIconMenuItem.Index = 1;
this.sysInformationIconMenuItem.Text = "System &Information...";
this.sysInformationIconMenuItem.Text = "System &Information";
this.sysInformationIconMenuItem.Click += new System.EventHandler(this.sysInformationIconMenuItem_Click);
//
// notificationsMenuItem
@@ -1241,43 +1278,6 @@
this.selectAllNetworkMenuItem.Text = "Select &All";
this.selectAllNetworkMenuItem.Click += new System.EventHandler(this.selectAllNetworkMenuItem_Click);
//
// treeProcesses
//
this.treeProcesses.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeProcesses.Draw = true;
this.treeProcesses.Location = new System.Drawing.Point(3, 3);
this.treeProcesses.Name = "treeProcesses";
this.treeProcesses.Provider = null;
this.treeProcesses.Size = new System.Drawing.Size(784, 260);
this.treeProcesses.TabIndex = 4;
this.treeProcesses.SelectionChanged += new System.EventHandler(this.treeProcesses_SelectionChanged);
this.treeProcesses.NodeMouseDoubleClick += new System.EventHandler<Aga.Controls.Tree.TreeNodeAdvMouseEventArgs>(this.treeProcesses_NodeMouseDoubleClick);
this.treeProcesses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeProcesses_KeyDown);
//
// listServices
//
this.listServices.Dock = System.Windows.Forms.DockStyle.Fill;
this.listServices.DoubleBuffered = true;
this.listServices.Location = new System.Drawing.Point(3, 3);
this.listServices.Name = "listServices";
this.listServices.Provider = null;
this.listServices.Size = new System.Drawing.Size(784, 281);
this.listServices.TabIndex = 0;
this.listServices.DoubleClick += new System.EventHandler(this.listServices_DoubleClick);
this.listServices.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listServices_KeyDown);
//
// listNetwork
//
this.listNetwork.Dock = System.Windows.Forms.DockStyle.Fill;
this.listNetwork.DoubleBuffered = true;
this.listNetwork.Location = new System.Drawing.Point(3, 3);
this.listNetwork.Name = "listNetwork";
this.listNetwork.Provider = null;
this.listNetwork.Size = new System.Drawing.Size(784, 281);
this.listNetwork.TabIndex = 0;
this.listNetwork.DoubleClick += new System.EventHandler(this.listNetwork_DoubleClick);
this.listNetwork.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listNetwork_KeyDown);
//
// vistaMenu
//
this.vistaMenu.ContainerControl = this;
@@ -1466,7 +1466,7 @@
private System.Windows.Forms.MenuItem maximizeProcessMenuItem;
private System.Windows.Forms.MenuItem menuItem15;
private System.Windows.Forms.MenuItem closeProcessMenuItem;
private System.Windows.Forms.MenuItem UpdateCheckMenuItem;
private System.Windows.Forms.MenuItem checkForUpdatesMenuItem;
}
}
+17 -181
View File
@@ -524,6 +524,23 @@ namespace ProcessHacker
createServiceWindow.ShowDialog();
}
private void UpdateCheckMenuItem_Click(object sender, EventArgs e)
{
updateNowMenuItem.Enabled = false;
Thread t = new Thread(new ThreadStart(this.UpdateProgram));
t.IsBackground = true;
t.Start();
}
private void UpdateProgram()
{
this.QueueMessage("Starting update check");
Updater.Update();
this.QueueMessage("Finished update check");
this.Invoke(new MethodInvoker(() => updateNowMenuItem.Enabled = true));
}
#region View
private void cpuHistoryMenuItem_Click(object sender, EventArgs e)
@@ -3192,186 +3209,5 @@ namespace ProcessHacker
catch { }
}
}
#region "Update Check"
String _AppUpdateVers;
String _AppUpdateMSG;
String _AppUpdateURL;
private void UpdateCheckMenuItem_Click(object sender, EventArgs e)
{
this.updateProcessesMenuItem.Enabled = false;
Thread t = new Thread(new ThreadStart(this.UpdateJob));
t.IsBackground = true;
t.Start();
}
/// <summary>
/// Lock around UpdateXML target
/// </summary>
private readonly object stateLock = new object();
private void UpdateJob()
{
this.QueueMessage("Starting Update Check");
lock (this.stateLock)
{
this.AppUpdateCheckXML();
}
this.QueueMessage("Finished Update Check");
this.Invoke(new MethodInvoker(this.EnableButton));
}
private void EnableButton()
{
this.updateProcessesMenuItem.Enabled = true;
}
private void UpdateDownloadBegin()
{
try
{
Process.Start(this._AppUpdateURL);
}
catch (Exception ex)
{ Logging.Log(ex); }
}
private void AppUpdateCheckXML()
{
XmlDocument xDoc = new XmlDocument();
try
{ xDoc.Load("http://processhacker.sourceforge.net/AppUpdate.xml"); }
catch (Exception ex)
{
Logging.Log(ex);
return;
}
XmlNodeList items = xDoc.SelectNodes("//update");
foreach (XmlNode xn in items)
{
if (DateTime.Parse(xn["released"].InnerText) > this.AssemblyBuildDate() & new Version(xn["version"].InnerText) > new Version(Application.ProductVersion) & xn["type"].InnerText == "release")
{
this.QueueMessage("Found New Release Version: " + xn["version"].InnerText + " - Current Version: " + Application.ProductVersion.ToString());
this._AppUpdateVers = xn["version"].InnerText;
this._AppUpdateMSG = xn["description"].InnerText;
this._AppUpdateURL = xn["updateurl"].InnerText;
}
else if (Properties.Settings.Default.AppUpdateBeta)
{
if (DateTime.Parse(xn["released"].InnerText) > this.AssemblyBuildDate() & new Version(xn["version"].InnerText) > new Version(Application.ProductVersion) & xn["type"].InnerText == "beta")
{
this.QueueMessage("Found New Beta Version: " + xn["version"].InnerText + " - Current Version: " + Application.ProductVersion.ToString());
this._AppUpdateVers = xn["version"].InnerText;
this._AppUpdateMSG = xn["description"].InnerText;
this._AppUpdateURL = xn["updateurl"].InnerText;
}
}
else if (Properties.Settings.Default.AppUpdateAlpha)
{
if (DateTime.Parse(xn["released"].InnerText) > this.AssemblyBuildDate() & new Version(xn["version"].InnerText) > new Version(Application.ProductVersion) & xn["type"].InnerText == "alpha")
{
this.QueueMessage("Found New Alpha Version: " + xn["version"].InnerText + " - Current Version: " + Application.ProductVersion.ToString());
this._AppUpdateVers = xn["version"].InnerText;
this._AppUpdateMSG = xn["description"].InnerText;
this._AppUpdateURL = xn["updateurl"].InnerText;
}
}
}
if (this._AppUpdateVers != null & this._AppUpdateMSG != null)
{
if (OSVersion.HasTaskDialogs)
{
TaskDialog td = new TaskDialog();
td.PositionRelativeToWindow = true;
td.Content = "Your Version: " + Application.ProductVersion + Environment.NewLine + "Server Version: " + this._AppUpdateVers + Environment.NewLine + Environment.NewLine + this._AppUpdateMSG;
td.MainInstruction = "Process Hacker Update Available";
td.WindowTitle = "Update Available!";
td.MainIcon = TaskDialogIcon.SecurityWarning;
td.Buttons = new TaskDialogButton[]
{
new TaskDialogButton((int)DialogResult.Yes, "Yes, Begin Downloading Update"),
new TaskDialogButton((int)DialogResult.No, "No, I will Update Later"),
};
DialogResult dr = (DialogResult)td.Show(IWin32ForegroundWindow.Instance);
if (dr == DialogResult.Yes)
{
this.Invoke(new MethodInvoker(this.UpdateDownloadBegin));
}
}
else
{
DialogResult dr = MessageBox.Show(IWin32ForegroundWindow.Instance, "Your Version: " + Application.ProductVersion + Environment.NewLine + "Server Version: " + this._AppUpdateVers + Environment.NewLine + Environment.NewLine + this._AppUpdateMSG + Environment.NewLine + Environment.NewLine + "Do you want to download the update now?", "Update Available", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
if (dr == DialogResult.Yes)
{
this.Invoke(new MethodInvoker(this.UpdateDownloadBegin));
}
}
}
else
{
this.QueueMessage("No Updates Available!");
if (OSVersion.HasTaskDialogs)
{
TaskDialog td = new TaskDialog();
td.PositionRelativeToWindow = true;
td.Content = "Your Version: " + Application.ProductVersion + Environment.NewLine + Environment.NewLine + "Server Version: " + this._AppUpdateVers;
td.MainInstruction = "Process Hacker is Update2Date";
td.WindowTitle = "No Updates Available!";
td.MainIcon = TaskDialogIcon.SecuritySuccess;
td.CommonButtons = TaskDialogCommonButtons.Ok;
td.Show(IWin32ForegroundWindow.Instance);
}
else
{
MessageBox.Show(IWin32ForegroundWindow.Instance, "Process Hacker is Update2Date", "No Updates Available!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
private DateTime AssemblyBuildDate()
{
const int PeHeaderOffset = 60;
const int LinkerTimestampOffset = 8;
byte[] b = new byte[2048];
System.IO.Stream s = default(System.IO.Stream);
try
{
s = new System.IO.FileStream(System.Reflection.Assembly.GetExecutingAssembly().Location, System.IO.FileMode.Open, System.IO.FileAccess.Read);
s.Read(b, 0, 2048);
}
finally
{
if ((s != null))
s.Close();
}
int i = BitConverter.ToInt32(b, PeHeaderOffset);
int SecondsSince1970 = BitConverter.ToInt32(b, i + LinkerTimestampOffset);
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0);
dt = dt.AddSeconds(SecondsSince1970);
dt = dt.AddHours(TimeZone.CurrentTimeZone.GetUtcOffset(dt).Hours);
return dt;
}
#endregion
}
}
+63 -35
View File
@@ -99,9 +99,11 @@
this.toolTipProvider = new System.Windows.Forms.ToolTip(this.components);
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonApply = new System.Windows.Forms.Button();
this.UpdateStableRadioBtn = new System.Windows.Forms.RadioButton();
this.UpdateBetaRadioBtn = new System.Windows.Forms.RadioButton();
this.UpdateAlphaRadioBtn = new System.Windows.Forms.RadioButton();
this.tabUpdates = new System.Windows.Forms.TabPage();
this.optUpdateAlpha = new System.Windows.Forms.RadioButton();
this.optUpdateBeta = new System.Windows.Forms.RadioButton();
this.optUpdateStable = new System.Windows.Forms.RadioButton();
this.label5 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.textUpdateInterval)).BeginInit();
this.tabControl.SuspendLayout();
this.tabGeneral.SuspendLayout();
@@ -113,6 +115,7 @@
this.tabPlotting.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.textStep)).BeginInit();
this.tabSymbols.SuspendLayout();
this.tabUpdates.SuspendLayout();
this.SuspendLayout();
//
// label1
@@ -222,6 +225,7 @@
this.tabControl.Controls.Add(this.tabHighlighting);
this.tabControl.Controls.Add(this.tabPlotting);
this.tabControl.Controls.Add(this.tabSymbols);
this.tabControl.Controls.Add(this.tabUpdates);
this.tabControl.Location = new System.Drawing.Point(12, 12);
this.tabControl.Name = "tabControl";
this.tabControl.SelectedIndex = 0;
@@ -230,9 +234,6 @@
//
// tabGeneral
//
this.tabGeneral.Controls.Add(this.UpdateAlphaRadioBtn);
this.tabGeneral.Controls.Add(this.UpdateBetaRadioBtn);
this.tabGeneral.Controls.Add(this.UpdateStableRadioBtn);
this.tabGeneral.Controls.Add(this.checkFloatChildWindows);
this.tabGeneral.Controls.Add(this.checkScrollDownProcessTree);
this.tabGeneral.Controls.Add(this.checkAllowOnlyOneInstance);
@@ -994,37 +995,60 @@
this.buttonApply.UseVisualStyleBackColor = true;
this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click);
//
// UpdateStableRadioBtn
// tabUpdates
//
this.UpdateStableRadioBtn.AutoSize = true;
this.UpdateStableRadioBtn.Checked = true;
this.UpdateStableRadioBtn.Location = new System.Drawing.Point(168, 261);
this.UpdateStableRadioBtn.Name = "UpdateStableRadioBtn";
this.UpdateStableRadioBtn.Size = new System.Drawing.Size(102, 17);
this.UpdateStableRadioBtn.TabIndex = 18;
this.UpdateStableRadioBtn.TabStop = true;
this.UpdateStableRadioBtn.Text = "Stable Releases";
this.UpdateStableRadioBtn.UseVisualStyleBackColor = true;
this.tabUpdates.Controls.Add(this.label5);
this.tabUpdates.Controls.Add(this.optUpdateAlpha);
this.tabUpdates.Controls.Add(this.optUpdateBeta);
this.tabUpdates.Controls.Add(this.optUpdateStable);
this.tabUpdates.Location = new System.Drawing.Point(4, 22);
this.tabUpdates.Name = "tabUpdates";
this.tabUpdates.Padding = new System.Windows.Forms.Padding(3);
this.tabUpdates.Size = new System.Drawing.Size(481, 289);
this.tabUpdates.TabIndex = 5;
this.tabUpdates.Text = "Updates";
this.tabUpdates.UseVisualStyleBackColor = true;
//
// UpdateBetaRadioBtn
// optUpdateAlpha
//
this.UpdateBetaRadioBtn.AutoSize = true;
this.UpdateBetaRadioBtn.Location = new System.Drawing.Point(276, 261);
this.UpdateBetaRadioBtn.Name = "UpdateBetaRadioBtn";
this.UpdateBetaRadioBtn.Size = new System.Drawing.Size(94, 17);
this.UpdateBetaRadioBtn.TabIndex = 19;
this.UpdateBetaRadioBtn.Text = "Beta Releases";
this.UpdateBetaRadioBtn.UseVisualStyleBackColor = true;
this.optUpdateAlpha.AutoSize = true;
this.optUpdateAlpha.Location = new System.Drawing.Point(68, 52);
this.optUpdateAlpha.Name = "optUpdateAlpha";
this.optUpdateAlpha.Size = new System.Drawing.Size(99, 17);
this.optUpdateAlpha.TabIndex = 23;
this.optUpdateAlpha.Text = "Alpha Releases";
this.optUpdateAlpha.UseVisualStyleBackColor = true;
//
// UpdateAlphaRadioBtn
// optUpdateBeta
//
this.UpdateAlphaRadioBtn.AutoSize = true;
this.UpdateAlphaRadioBtn.Location = new System.Drawing.Point(376, 261);
this.UpdateAlphaRadioBtn.Name = "UpdateAlphaRadioBtn";
this.UpdateAlphaRadioBtn.Size = new System.Drawing.Size(99, 17);
this.UpdateAlphaRadioBtn.TabIndex = 20;
this.UpdateAlphaRadioBtn.Text = "Alpha Releases";
this.UpdateAlphaRadioBtn.UseVisualStyleBackColor = true;
this.optUpdateBeta.AutoSize = true;
this.optUpdateBeta.Location = new System.Drawing.Point(68, 29);
this.optUpdateBeta.Name = "optUpdateBeta";
this.optUpdateBeta.Size = new System.Drawing.Size(94, 17);
this.optUpdateBeta.TabIndex = 22;
this.optUpdateBeta.Text = "Beta Releases";
this.optUpdateBeta.UseVisualStyleBackColor = true;
//
// optUpdateStable
//
this.optUpdateStable.AutoSize = true;
this.optUpdateStable.Checked = true;
this.optUpdateStable.Location = new System.Drawing.Point(68, 6);
this.optUpdateStable.Name = "optUpdateStable";
this.optUpdateStable.Size = new System.Drawing.Size(102, 17);
this.optUpdateStable.TabIndex = 21;
this.optUpdateStable.TabStop = true;
this.optUpdateStable.Text = "Stable Releases";
this.optUpdateStable.UseVisualStyleBackColor = true;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(6, 8);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(56, 13);
this.label5.TabIndex = 24;
this.label5.Text = "Check for:";
//
// OptionsWindow
//
@@ -1062,6 +1086,8 @@
((System.ComponentModel.ISupportInitialize)(this.textStep)).EndInit();
this.tabSymbols.ResumeLayout(false);
this.tabSymbols.PerformLayout();
this.tabUpdates.ResumeLayout(false);
this.tabUpdates.PerformLayout();
this.ResumeLayout(false);
}
@@ -1138,8 +1164,10 @@
private System.Windows.Forms.Label label11;
private System.Windows.Forms.CheckBox checkScrollDownProcessTree;
private System.Windows.Forms.CheckBox checkFloatChildWindows;
private System.Windows.Forms.RadioButton UpdateAlphaRadioBtn;
private System.Windows.Forms.RadioButton UpdateBetaRadioBtn;
private System.Windows.Forms.RadioButton UpdateStableRadioBtn;
private System.Windows.Forms.TabPage tabUpdates;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.RadioButton optUpdateAlpha;
private System.Windows.Forms.RadioButton optUpdateBeta;
private System.Windows.Forms.RadioButton optUpdateStable;
}
}
+9 -8
View File
@@ -2,6 +2,7 @@
* Process Hacker -
* options window
*
* Copyright (C) 2009 dmex
* Copyright (C) 2008 Dean
* Copyright (C) 2008-2009 wj32
*
@@ -340,15 +341,15 @@ namespace ProcessHacker
if (Properties.Settings.Default.AppUpdateStable)
{
this.UpdateStableRadioBtn.Checked = true;
optUpdateStable.Checked = true;
}
else if (Properties.Settings.Default.AppUpdateBeta )
else if (Properties.Settings.Default.AppUpdateBeta)
{
this.UpdateBetaRadioBtn.Checked = true;
optUpdateBeta.Checked = true;
}
else if (Properties.Settings.Default.AppUpdateAlpha )
else if (Properties.Settings.Default.AppUpdateAlpha)
{
this.UpdateAlphaRadioBtn.Checked = true;
optUpdateAlpha.Checked = true;
}
}
@@ -400,19 +401,19 @@ namespace ProcessHacker
Properties.Settings.Default.DbgHelpSearchPath = textSearchPath.Text;
Properties.Settings.Default.DbgHelpUndecorate = checkUndecorate.Checked;
if (this.UpdateStableRadioBtn.Checked)
if (optUpdateStable.Checked)
{
Properties.Settings.Default.AppUpdateStable = true;
Properties.Settings.Default.AppUpdateBeta = false;
Properties.Settings.Default.AppUpdateAlpha = false;
}
else if (this.UpdateBetaRadioBtn.Checked)
else if (optUpdateBeta.Checked)
{
Properties.Settings.Default.AppUpdateStable = false;
Properties.Settings.Default.AppUpdateBeta = true;
Properties.Settings.Default.AppUpdateAlpha = false;
}
else if (this.UpdateAlphaRadioBtn.Checked)
else if (optUpdateAlpha.Checked)
{
Properties.Settings.Default.AppUpdateStable = false;
Properties.Settings.Default.AppUpdateBeta = false;
+1 -1
View File
@@ -410,7 +410,6 @@
<Compile Include="Components\TargetWindowButton.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Common\IWin32ForegroundWindow.cs" />
<Compile Include="Components\TimerProperties.cs">
<SubType>UserControl</SubType>
</Compile>
@@ -478,6 +477,7 @@
<DependentUpon>SessionInformationWindow.cs</DependentUpon>
</Compile>
<Compile Include="Program\Settings.cs" />
<Compile Include="Program\Updater.cs" />
<Compile Include="UI\Actions\SessionActions.cs" />
<Compile Include="UI\GenericViewMenu.cs" />
<Compile Include="UI\Icons\CommitHistoryIcon.cs" />
+167
View File
@@ -0,0 +1,167 @@
using System;
using System.Windows.Forms;
using System.Xml;
using ProcessHacker.Common;
using ProcessHacker.Components;
using ProcessHacker.Native;
namespace ProcessHacker
{
public static class Updater
{
public static void Update()
{
XmlDocument xDoc = new XmlDocument();
try
{
xDoc.Load("http://processhacker.sourceforge.net/AppUpdate.xml");
}
catch (Exception ex)
{
Logging.Log(ex);
return;
}
XmlNodeList items = xDoc.SelectNodes("//update");
string appUpdateMessage = null;
string appUpdateUrl = null;
string appUpdateVersion = null;
foreach (XmlNode xn in items)
{
if (
DateTime.Parse(xn["released"].InnerText) > GetAssemblyBuildDate() &&
new Version(xn["version"].InnerText) > new Version(Application.ProductVersion) &&
xn["type"].InnerText == "release"
)
{
Program.HackerWindow.QueueMessage("Found New Release Version: " + xn["version"].InnerText +
" - Current Version: " + Application.ProductVersion.ToString());
appUpdateVersion = xn["version"].InnerText;
appUpdateMessage = xn["description"].InnerText;
appUpdateUrl = xn["updateurl"].InnerText;
}
else if (Properties.Settings.Default.AppUpdateBeta)
{
if (
DateTime.Parse(xn["released"].InnerText) > GetAssemblyBuildDate() &&
new Version(xn["version"].InnerText) > new Version(Application.ProductVersion) &&
xn["type"].InnerText == "release" || xn["type"].InnerText == "beta"
)
{
Program.HackerWindow.QueueMessage("Found New Beta Version: " + xn["version"].InnerText +
" - Current Version: " + Application.ProductVersion.ToString());
appUpdateVersion = xn["version"].InnerText;
appUpdateMessage = xn["description"].InnerText;
appUpdateUrl = xn["updateurl"].InnerText;
}
}
else if (Properties.Settings.Default.AppUpdateAlpha)
{
if (
DateTime.Parse(xn["released"].InnerText) > GetAssemblyBuildDate() &&
new Version(xn["version"].InnerText) > new Version(Application.ProductVersion) &&
xn["type"].InnerText == "release" || xn["type"].InnerText == "beta" || xn["type"].InnerText == "alpha"
)
{
Program.HackerWindow.QueueMessage("Found New Alpha Version: " + xn["version"].InnerText + " - Current Version: " + Application.ProductVersion.ToString());
appUpdateVersion = xn["version"].InnerText;
appUpdateMessage = xn["description"].InnerText;
appUpdateUrl = xn["updateurl"].InnerText;
}
}
}
if (appUpdateVersion != null && appUpdateMessage != null)
{
DialogResult dialogResult;
if (OSVersion.HasTaskDialogs)
{
TaskDialog td = new TaskDialog();
td.PositionRelativeToWindow = true;
td.Content = "Your Version: " + Application.ProductVersion + Environment.NewLine +
"Server Version: " + appUpdateVersion + Environment.NewLine + Environment.NewLine +
appUpdateMessage;
td.MainInstruction = "Process Hacker Update Available";
td.WindowTitle = "Update Available";
td.MainIcon = TaskDialogIcon.SecurityWarning;
td.Buttons = new TaskDialogButton[]
{
new TaskDialogButton((int)DialogResult.Yes, "Download"),
new TaskDialogButton((int)DialogResult.No, "Cancel"),
};
dialogResult = (DialogResult)td.Show(Form.ActiveForm);
}
else
{
dialogResult = MessageBox.Show(
Form.ActiveForm,
"Your Version: " + Application.ProductVersion + Environment.NewLine +
"Server Version: " + appUpdateVersion + Environment.NewLine + Environment.NewLine +
appUpdateMessage + Environment.NewLine + Environment.NewLine +
"Do you want to download the update now?",
"Update Available", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation
);
}
if (dialogResult == DialogResult.Yes)
Program.TryStart(appUpdateUrl);
}
else
{
if (OSVersion.HasTaskDialogs)
{
TaskDialog td = new TaskDialog();
td.PositionRelativeToWindow = true;
td.Content = "Your Version: " + Application.ProductVersion + Environment.NewLine + Environment.NewLine +
"Server Version: " + appUpdateVersion;
td.MainInstruction = "Process Hacker is up-to-date";
td.WindowTitle = "No Updates Available";
td.MainIcon = TaskDialogIcon.SecuritySuccess;
td.CommonButtons = TaskDialogCommonButtons.Ok;
td.Show(Form.ActiveForm);
}
else
{
MessageBox.Show(Form.ActiveForm, "Process Hacker is up-to-date",
"No Updates Available", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
private static DateTime GetAssemblyBuildDate()
{
const int PeHeaderOffset = 60;
const int LinkerTimestampOffset = 8;
byte[] b = new byte[2048];
System.IO.Stream s = default(System.IO.Stream);
try
{
s = new System.IO.FileStream(System.Reflection.Assembly.GetExecutingAssembly().Location, System.IO.FileMode.Open, System.IO.FileAccess.Read);
s.Read(b, 0, 2048);
}
finally
{
if ((s != null))
s.Close();
}
int i = BitConverter.ToInt32(b, PeHeaderOffset);
int SecondsSince1970 = BitConverter.ToInt32(b, i + LinkerTimestampOffset);
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0);
dt = dt.AddSeconds(SecondsSince1970);
dt = dt.AddHours(TimeZone.CurrentTimeZone.GetUtcOffset(dt).Hours);
return dt;
}
}
}
+1
View File
@@ -32,6 +32,7 @@ Hacker > Help).
Process Hacker is brought to you by the Process Hacker team:
* wj32 (Project Manager)
* dmex (Developer)
* XhmikosR (Installer Developer, Tester)
Inactive:
* Dean (Developer)
+6 -6
View File
@@ -7,13 +7,13 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("XMLUpdateEditor")]
[assembly: AssemblyDescription("XMLUpdateEditor")]
[assembly: AssemblyTitle("XML Update Editor")]
[assembly: AssemblyDescription("XML Update Editor")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("ProcessHacker")]
[assembly: AssemblyProduct("XMLUpdateEditor")]
[assembly: AssemblyCopyright("dmex ProcessHacker")]
[assembly: AssemblyTrademark("ProcessHacker")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Process Hacker")]
[assembly: AssemblyCopyright("Licensed under the GNU GPL, v3.")]
[assembly: AssemblyTrademark("Process Hacker")]
[assembly: AssemblyCulture("")]
//
File diff suppressed because it is too large Load Diff
@@ -1,120 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+9 -7
View File
@@ -24,7 +24,7 @@
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>0.0</OldToolsVersion>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<UpgradeBackupLocation />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
@@ -41,6 +41,8 @@
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
@@ -86,9 +88,6 @@
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
</Reference>
@@ -106,14 +105,14 @@
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Form1.cs">
<Compile Include="EditorWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SyntaxRichTextBox.cs">
<SubType>Component</SubType>
</Compile>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
<EmbeddedResource Include="EditorWindow.resx">
<DependentUpon>EditorWindow.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
@@ -128,6 +127,9 @@
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent />
@@ -1,52 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastOpenVersion>7.10.3077</LastOpenVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ReferencePath />
<CopyProjectDestinationFolder />
<CopyProjectUncPath />
<CopyProjectOption>0</CopyProjectOption>
<ProjectView>ProjectFiles</ProjectView>
<ProjectTrust>0</ProjectTrust>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>en-US</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<EnableASPDebugging>false</EnableASPDebugging>
<EnableASPXDebugging>false</EnableASPXDebugging>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<EnableSQLServerDebugging>false</EnableSQLServerDebugging>
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<RemoteDebugMachine />
<StartAction>Project</StartAction>
<StartArguments />
<StartPage />
<StartProgram />
<StartURL />
<StartWorkingDirectory />
<StartWithIE>false</StartWithIE>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<EnableASPDebugging>false</EnableASPDebugging>
<EnableASPXDebugging>false</EnableASPXDebugging>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<EnableSQLServerDebugging>false</EnableSQLServerDebugging>
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<RemoteDebugMachine />
<StartAction>Project</StartAction>
<StartArguments />
<StartPage />
<StartProgram />
<StartURL />
<StartWorkingDirectory />
<StartWithIE>false</StartWithIE>
</PropertyGroup>
</Project>
Binary file not shown.