Browse Source

Update

master
ocsnetworks 3 years ago
commit
8031ffa5eb
  1. 24
      Snow.sln
  2. BIN
      Snow.suo
  3. 151
      Snow/AboutForm.Designer.cs
  4. 75
      Snow/AboutForm.cs
  5. 131
      Snow/AboutForm.resx
  6. 133
      Snow/BitmapRegion.cs
  7. BIN
      Snow/Flake.ico
  8. 61
      Snow/FlakeDlg.Designer.cs
  9. 76
      Snow/FlakeDlg.cs
  10. 123
      Snow/FlakeDlg.resx
  11. 68
      Snow/MainForm.Designer.cs
  12. 72
      Snow/MainForm.cs
  13. 450
      Snow/MainForm.resx
  14. 29
      Snow/Program.cs
  15. 33
      Snow/Properties/AssemblyInfo.cs
  16. 83
      Snow/Properties/Resources.Designer.cs
  17. 128
      Snow/Properties/Resources.resx
  18. 26
      Snow/Properties/Settings.Designer.cs
  19. 7
      Snow/Properties/Settings.settings
  20. 118
      Snow/Snow.csproj
  21. BIN
      Snow/Snow.ico
  22. BIN
      Snow/bin/Debug/Snow.exe
  23. BIN
      Snow/bin/Debug/Snow.pdb
  24. BIN
      Snow/bin/Debug/Snow.vshost.exe
  25. 11
      Snow/bin/Debug/Snow.vshost.exe.manifest
  26. 5
      Snow/bin/Release/OBriens Computer Service.url
  27. BIN
      Snow/bin/Release/Snow.exe
  28. BIN
      Snow/bin/Release/Snow.pdb
  29. BIN
      Snow/bin/Release/Snow.vshost.exe
  30. 11
      Snow/bin/Release/Snow.vshost.exe.manifest
  31. BIN
      Snow/flake.bmp
  32. 14
      Snow/links.txt
  33. BIN
      Snow/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  34. BIN
      Snow/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  35. BIN
      Snow/obj/Debug/Snow.AboutForm.resources
  36. BIN
      Snow/obj/Debug/Snow.FlakeDlg.resources
  37. BIN
      Snow/obj/Debug/Snow.MainForm.resources
  38. BIN
      Snow/obj/Debug/Snow.Properties.Resources.resources
  39. 18
      Snow/obj/Debug/Snow.csproj.FileListAbsolute.txt
  40. BIN
      Snow/obj/Debug/Snow.csproj.GenerateResource.Cache
  41. BIN
      Snow/obj/Debug/Snow.exe
  42. BIN
      Snow/obj/Debug/Snow.pdb
  43. BIN
      Snow/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
  44. BIN
      Snow/obj/Release/DesignTimeResolveAssemblyReferences.cache
  45. BIN
      Snow/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
  46. BIN
      Snow/obj/Release/Snow.AboutForm.resources
  47. BIN
      Snow/obj/Release/Snow.FlakeDlg.resources
  48. BIN
      Snow/obj/Release/Snow.MainForm.resources
  49. BIN
      Snow/obj/Release/Snow.Properties.Resources.resources
  50. 20
      Snow/obj/Release/Snow.csproj.FileListAbsolute.txt
  51. BIN
      Snow/obj/Release/Snow.csproj.GenerateResource.Cache
  52. BIN
      Snow/obj/Release/Snow.csprojResolveAssemblyReference.cache
  53. BIN
      Snow/obj/Release/Snow.exe
  54. BIN
      Snow/obj/Release/Snow.pdb
  55. BIN
      Snow/obj/Release/TempPE/Properties.Resources.Designer.cs.dll
  56. BIN
      Snow/snow.png
  57. BIN
      WinSnowInstaller/Release/WinSnowInstaller.msi
  58. BIN
      WinSnowInstaller/Release/setup.exe
  59. 791
      WinSnowInstaller/WinSnowInstaller.vdproj

24
Snow.sln

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Snow", "Snow\Snow.csproj", "{9C1B0040-5CDF-459E-A829-C75EE35E720B}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "WinSnowInstaller", "WinSnowInstaller\WinSnowInstaller.vdproj", "{2DDE9503-1DEA-4DDA-BF88-9383E54383FB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9C1B0040-5CDF-459E-A829-C75EE35E720B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C1B0040-5CDF-459E-A829-C75EE35E720B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C1B0040-5CDF-459E-A829-C75EE35E720B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C1B0040-5CDF-459E-A829-C75EE35E720B}.Release|Any CPU.Build.0 = Release|Any CPU
{2DDE9503-1DEA-4DDA-BF88-9383E54383FB}.Debug|Any CPU.ActiveCfg = Debug
{2DDE9503-1DEA-4DDA-BF88-9383E54383FB}.Release|Any CPU.ActiveCfg = Release
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

BIN
Snow.suo

Binary file not shown.

151
Snow/AboutForm.Designer.cs generated

@ -0,0 +1,151 @@ @@ -0,0 +1,151 @@
namespace Snow
{
partial class AboutForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
this.buttonOK = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.label2 = new System.Windows.Forms.Label();
this.ExitApp = new System.Windows.Forms.Button();
this.pictureBoxAbout = new System.Windows.Forms.PictureBox();
this.AutoStart = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAbout)).BeginInit();
this.SuspendLayout();
//
// buttonOK
//
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonOK.Location = new System.Drawing.Point(243, 121);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(90, 25);
this.buttonOK.TabIndex = 0;
this.buttonOK.Text = "OK";
this.buttonOK.UseVisualStyleBackColor = true;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(77, 15);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(71, 13);
this.label1.TabIndex = 2;
this.label1.Text = "WinSnow 3.0";
//
// linkLabel1
//
this.linkLabel1.AutoSize = true;
this.linkLabel1.Location = new System.Drawing.Point(76, 35);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(151, 13);
this.linkLabel1.TabIndex = 3;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = "http://www.ocs-networks.com";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnHome);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(76, 58);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(217, 13);
this.label2.TabIndex = 4;
this.label2.Text = "Copyright © 2014 OBriens Computer Service";
//
// ExitApp
//
this.ExitApp.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.ExitApp.Location = new System.Drawing.Point(12, 121);
this.ExitApp.Name = "ExitApp";
this.ExitApp.Size = new System.Drawing.Size(90, 25);
this.ExitApp.TabIndex = 5;
this.ExitApp.Text = "Exit";
this.ExitApp.UseVisualStyleBackColor = true;
this.ExitApp.Click += new System.EventHandler(this.ExitApp_Click);
//
// pictureBoxAbout
//
this.pictureBoxAbout.Image = global::Snow.Properties.Resources.flake;
this.pictureBoxAbout.InitialImage = null;
this.pictureBoxAbout.Location = new System.Drawing.Point(15, 16);
this.pictureBoxAbout.Name = "pictureBoxAbout";
this.pictureBoxAbout.Size = new System.Drawing.Size(56, 55);
this.pictureBoxAbout.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBoxAbout.TabIndex = 1;
this.pictureBoxAbout.TabStop = false;
//
// AutoStart
//
this.AutoStart.AutoSize = true;
this.AutoStart.Location = new System.Drawing.Point(15, 89);
this.AutoStart.Name = "AutoStart";
this.AutoStart.Size = new System.Drawing.Size(117, 17);
this.AutoStart.TabIndex = 6;
this.AutoStart.Text = "Start with Windows";
this.AutoStart.UseVisualStyleBackColor = true;
this.AutoStart.CheckedChanged += new System.EventHandler(this.AutoStart_CheckedChanged);
//
// AboutForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.buttonOK;
this.ClientSize = new System.Drawing.Size(345, 158);
this.Controls.Add(this.AutoStart);
this.Controls.Add(this.ExitApp);
this.Controls.Add(this.label2);
this.Controls.Add(this.linkLabel1);
this.Controls.Add(this.label1);
this.Controls.Add(this.pictureBoxAbout);
this.Controls.Add(this.buttonOK);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "AboutForm";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "About WinSnow";
this.TopMost = true;
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAbout)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.PictureBox pictureBoxAbout;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button ExitApp;
private System.Windows.Forms.CheckBox AutoStart;
}
}

75
Snow/AboutForm.cs

@ -0,0 +1,75 @@ @@ -0,0 +1,75 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
namespace Snow
{
public partial class AboutForm : Form
{
public AboutForm()
{
InitializeComponent();
RegistryKey Key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
try
{
if (Key.GetValue("WinSnow") == null)
{
AutoStart.Checked = false;
}
else
{
AutoStart.Checked = true;
}
}
catch (Exception ex)
{
}
}
private void OnHome(object sender, LinkLabelLinkClickedEventArgs e)
{
String strURL = "http://www.ocs-networks.com";
try
{
System.Diagnostics.Process.Start(strURL);
}
catch (System.ComponentModel.Win32Exception noBrowser)
{
if (noBrowser.ErrorCode == -2147467259) MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
MessageBox.Show(other.Message);
}
}
private void ExitApp_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void AutoStart_CheckedChanged(object sender, EventArgs e)
{
if (AutoStart.Checked == true)
{
RegistryKey myKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
myKey.SetValue("WinSnow", Application.StartupPath + "\\WinSnow.exe", RegistryValueKind.String);
}
else
{
RegistryKey myKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
myKey.DeleteValue("WinSnow");
}
}
}
}

131
Snow/AboutForm.resx

@ -0,0 +1,131 @@ @@ -0,0 +1,131 @@
<?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>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAAwAAAAAAAAMDAwAAAAAAADMwAAAAAwMAAwADAwAAMwADAAMwAAMwMAMAM
DMAAAADMzMAAAAAAAAzMAAAAAAAAzMzAAAAAzAwAwAwMwAAMwADAAMwAAMDAAMAAwMAAAADMzMAAAAAA
AMDAwAAAAAAAAMAAAAD//wAA/38AAP1fAAD+PwAA13UAAOdzAADLaQAA/B8AAP4/AAD8HwAAy2kAAOdz
AADXdQAA/B8AAP1fAAD/fwAA
</value>
</data>
</root>

133
Snow/BitmapRegion.cs

@ -0,0 +1,133 @@ @@ -0,0 +1,133 @@
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace Snow
{
/// <summary>
/// Summary description for BitmapRegion.
/// </summary>
public class BitmapRegion
{
public BitmapRegion()
{}
/// <summary>
/// Create and apply the region on the supplied control
/// </summary>
/// <param name="control">The Control object to apply the region to</param>
/// <param name="bitmap">The Bitmap object to create the region from</param>
public static void CreateControlRegion(Control control, Bitmap bitmap)
{
// Return if control and bitmap are null
if(control == null || bitmap == null)
return;
// Set our control's size to be the same as the bitmap
control.Width = bitmap.Width;
control.Height = bitmap.Height;
// Check if we are dealing with Form here
if(control is System.Windows.Forms.Form)
{
// Cast to a Form object
Form form = (Form)control;
// Set our form's size to be a little larger that the bitmap just
// in case the form's border style is not set to none in the first place
form.Width += 15;
form.Height += 35;
// No border
form.FormBorderStyle = FormBorderStyle.None;
// Set bitmap as the background image
form.BackgroundImage = bitmap;
// Calculate the graphics path based on the bitmap supplied
GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap);
// Apply new region
form.Region = new Region(graphicsPath);
}
// Check if we are dealing with Button here
else if(control is System.Windows.Forms.Button)
{
// Cast to a button object
Button button = (Button)control;
// Do not show button text
button.Text = "";
// Change cursor to hand when over button
button.Cursor = Cursors.Hand;
// Set background image of button
button.BackgroundImage = bitmap;
// Calculate the graphics path based on the bitmap supplied
GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap);
// Apply new region
button.Region = new Region(graphicsPath);
}
}
/// <summary>
/// Calculate the graphics path that representing the figure in the bitmap
/// excluding the transparent color which is the top left pixel.
/// </summary>
/// <param name="bitmap">The Bitmap object to calculate our graphics path from</param>
/// <returns>Calculated graphics path</returns>
private static GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap)
{
// Create GraphicsPath for our bitmap calculation
GraphicsPath graphicsPath = new GraphicsPath();
// Use the top left pixel as our transparent color
Color colorTransparent = bitmap.GetPixel(0, 0);
// This is to store the column value where an opaque pixel is first found.
// This value will determine where we start scanning for trailing opaque pixels.
int colOpaquePixel = 0;
// Go through all rows (Y axis)
for(int row = 0; row < bitmap.Height; row ++)
{
// Reset value
colOpaquePixel = 0;
// Go through all columns (X axis)
for(int col = 0; col < bitmap.Width; col ++)
{
// If this is an opaque pixel, mark it and search for anymore trailing behind
if(bitmap.GetPixel(col, row) != colorTransparent)
{
// Opaque pixel found, mark current position
colOpaquePixel = col;
// Create another variable to set the current pixel position
int colNext = col;
// Starting from current found opaque pixel, search for anymore opaque pixels
// trailing behind, until a transparent pixel is found or minimum width is reached
for(colNext = colOpaquePixel; colNext < bitmap.Width; colNext ++)
if(bitmap.GetPixel(colNext, row) == colorTransparent)
break;
// Form a rectangle for line of opaque pixels found and add it to our graphics path
graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, row, colNext - colOpaquePixel, 1));
// No need to scan the line of opaque pixels just found
col = colNext;
}
}
}
// Return calculated graphics path
return graphicsPath;
}
}
}

BIN
Snow/Flake.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

61
Snow/FlakeDlg.Designer.cs generated

@ -0,0 +1,61 @@ @@ -0,0 +1,61 @@
namespace Snow
{
partial class FlakeDlg
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timerMove = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// timerMove
//
this.timerMove.Tick += new System.EventHandler(this.OnTimer);
//
// FlakeDlg
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(17, 17);
this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximumSize = new System.Drawing.Size(17, 17);
this.Name = "FlakeDlg";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Load += new System.EventHandler(this.OnLoad);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Timer timerMove;
}
}

76
Snow/FlakeDlg.cs

@ -0,0 +1,76 @@ @@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Snow
{
public partial class FlakeDlg : Form
{
private int m_nTimer = 0;
private int m_nCurrentX = 0;
private int m_nCurrentY = 0;
private int m_nScreenHeight = 0;
private int m_nScreenWidth = 0;
private int m_nCounter = 0;
private int m_nIncrement = 1;
private Bitmap bmpFlake = new Bitmap(typeof(FlakeDlg), "flake.bmp");
public FlakeDlg(int nTimer, int nPosX)
{
m_nTimer = nTimer + 10;
m_nCurrentX = nPosX;
InitializeComponent();
BitmapRegion.CreateControlRegion(this, bmpFlake);
}
private void OnLoad(object sender, EventArgs e)
{
Rectangle rcWorkArea = Screen.PrimaryScreen.WorkingArea;
m_nScreenWidth = rcWorkArea.Width;
m_nScreenHeight = rcWorkArea.Height;
this.timerMove.Interval = m_nTimer;
this.Left = m_nCurrentX;
this.timerMove.Start();
}
private void OnTimer(object sender, EventArgs e)
{
this.timerMove.Stop();
m_nCurrentY += 5;
m_nCounter++;
Random r = new Random();
if (m_nCounter == 15)
{
if ((r.Next(10) - 5) > 0) m_nIncrement = 1;
else m_nIncrement = -1;
m_nCounter = 0;
}
m_nCurrentX += m_nIncrement;
if (m_nCurrentY > m_nScreenHeight)
{
m_nCurrentY = 0;
m_nCurrentX = r.Next(m_nScreenWidth);
m_nTimer = r.Next(50) + 10;
}
this.Left = m_nCurrentX;
this.Top = m_nCurrentY;
this.timerMove.Interval = m_nTimer;
this.timerMove.Start();
}
}
}

123
Snow/FlakeDlg.resx

@ -0,0 +1,123 @@ @@ -0,0 +1,123 @@
<?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>
<metadata name="timerMove.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

68
Snow/MainForm.Designer.cs generated

@ -0,0 +1,68 @@ @@ -0,0 +1,68 @@
namespace Snow
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.SuspendLayout();
//
// notifyIcon1
//
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "WinSnow";
this.notifyIcon1.Visible = true;
this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(244, 193);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MainForm";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.Text = "Snow";
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
this.Load += new System.EventHandler(this.OnLoad);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.NotifyIcon notifyIcon1;
}
}

72
Snow/MainForm.cs

@ -0,0 +1,72 @@ @@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Snow
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void OnLoad(object sender, EventArgs e)
{
Rectangle rcWorkArea = Screen.PrimaryScreen.WorkingArea;
int nScreenWidth = rcWorkArea.Width;
int nTimer = 5;
int nPosX = 0;
Random r = new Random();
for (int i = 0; i < 10; i++)
{
nTimer = r.Next(50);
nPosX = r.Next(nScreenWidth);
FlakeDlg fd = new FlakeDlg(nTimer, nPosX);
fd.Show();
}
}
private void OnExit(object sender, EventArgs e)
{
this.Close();
}
private void OnAbout(object sender, EventArgs e)
{
AboutForm formAbout = new AboutForm();
formAbout.ShowDialog();
}
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button.Equals(MouseButtons.Left))
{
AboutForm formAbout = new AboutForm();
formAbout.ShowDialog();
}
if (e.Button.Equals(MouseButtons.Right))
{
AboutForm formAbout = new AboutForm();
formAbout.ShowDialog();
}
}
}
}

450
Snow/MainForm.resx

@ -0,0 +1,450 @@ @@ -0,0 +1,450 @@
<?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>
<metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAQAAAAAAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAAwAAAAAAAAMDAwAAAAAAADMwAAAAAwMAAwADAwAAMwADAAMwAAMwMAMAM
DMAAAADMzMAAAAAAAAzMAAAAAAAAzMzAAAAAzAwAwAwMwAAMwADAAMwAAMDAAMAAwMAAAADMzMAAAAAA
AMDAwAAAAAAAAMAAAAD//wAA/38AAP1fAAD+PwAA13UAAOdzAADLaQAA/B8AAP4/AAD8HwAAy2kAAOdz
AADXdQAA/B8AAP1fAAD/fwAA
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAD///8AAAAAAAAAFA0MEwAAAAAAAAAAAAAAKTEwLiohAAAAAAAAAAAAKTU3NjUuKR4AAAAAAAAAADE3
Ojc3MCoiAAAAAAAAAAA1Ojo6NzUqIgAAAAAAAAAAIjk1Eg0rKh0AAAAAAAAAAAAuNTc1MCkAAAAAAAAA
BgAZNTcVFDUrEQ4CAAAAABABAQ46Ojo3BAMFAAAAAAAAABYoOjo6NS4XAAAAAAAAAAAAKSsYJSkiAAAA
AAAAAAAAABkuCCwiGQAAAAAAAAAAAAApNwcJLh8AAAAAAAAAAAAAKww6OgofAAAAAAAAAAAAACk3Ojou
IgAAAAAAAAAAAAAAJR4eHwAAAAAAAPw/AAD4HwAA8A8AAPAPAADwDwAA8A8AAPgfAADQAwAAwAcAAPAP
AAD4HwAA+B8AAPgfAAD4HwAA+B8AAPw/AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAOAAAAFgAAABoAAAAdAAAAHQAA
ABoAAAAWAAAADgAAAAcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAAABAAAAAdAAAAMQAAAEQAAABWAAAAZgAA
AGwAAABwAAAAcAAAAGwAAABmAAAAVgAAAEQAAAAxAAAAHQAAABAAAAAHAAAAAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAVAAAAJwAAAD0AAABZAAAAdAAA
AIczMzKpZWRkyIGAf9WmpaTlo6Ki5Ht6edRubWvLPDw7rAAAAIcAAAB0AAAAWQAAAD0AAAAnAAAAFQAA
AAkAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
/v/////////////////+/v7//f38//v6+v/5+Pj/9/b2//Ly8f/t7Ov/6urp/+zr6v/29fT/8PDv/9vY
1//Lycb/Pj49QAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI9PDxB3dza/+jn5f/y8e//9/X1//r6
+f/8/Pz//v7+/////////////////////////////v7+//z8/P/6+vn/+Pf3//Tz8v/v7u3/8PDv//Ly
8f/z8fD/6uno/9fU0f/Mycb/PT09QgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeHh4m2tnV/ejm
5f/y8vD/+ff3//v7+//9/f3///////////////////////////////////////39/f/7+/v/+Pf3//Tz
8v/w7+7/8fDv//Hw7//s6+r/5OHg/9TRzv/Oy8n+GBgYJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAUxsbF7+jn5//w8O7/+Pj3//z7+//9/f3///////////////////////7+/v/+/v7//v7+//z8
/P/7+/v/+Pj3//X08//w7+7/7ezr/+no5v/m5eP/3dza/9PRzv+xrq3uAAAAFAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAMl5WUv+bk4v/w7+7/9/b2//v7+//9/f3///////7+/v/+/v7//f39//39
/f/8/Pz//Pz8//r6+v/5+fn/+fj4//T08//v7u3/6+ro/+vq6f/i4OD/2tjW/9bT0f+HhYS8AAAADAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXFtaS+Ph4f7v7uz/9fT0//n5+P/8/Pz//f39//39
/f/19fX/7u7u/+vr6//m5ub/4uLi/+bm5v/n5+f/7+7u//Hw7//v7u7/6ujn/+fn5f/g3t3/29jX/9DM
y/5cW1pNAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD6Ghn8rr6ej/8/Hx//r6
+v/8/Pz/9PTz/+jo6P/g39//6eno/+3s6//v7u3/7u3s/+3s6//n5+b/393c/93d3P/i4eD/6Ofm/9/e
2//Y1tP/0M3K/4mHhMYAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1lZ
WDHMysnz7ezq//Hx8P/y8vL/6ejo/+fm5f/s6+n/8fHw//Hw7//x8fH/9PTz//Hw8P/x8O//7u3s/+jn
5v/d3Nv/1tXT/9fW1P/X1NP/ube09FBQTzAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAxmZmZW3Nra+dbW1P/v7u3/7+3s/+jn5v/s6+v/7Ovq/+vq6P8vLi7/Ly8v/6Wl
pf/p6Ob/6Ojn/+fn5f/m5OL/3NrX/83Myv/HxsP5Xl1cVQAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOW1paa9za2frz8vH/8fDv/+zr6v/s6+r/6efm/+rp
5/+sqqr/tLOz/9/f3//q6Of/5+bk/+Xj4//l5OL/5eTj/9XU1PtQT09pAAAADgAAAAAAAAAAAAAAAAAA
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
l/+5ubn/+/v7//X19f/n5+b/i4qJlQAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJPT0813t7e+/T09P/8/Pz/////////
///////////////////+/v7/+vr6//Hx8f/a2dn7TExLNAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOpKSjruvr
6//39/b//f39//7+/v////////////7+/v/7+/r/9fX1/+jo5v+op6ezAAAADgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAACGRkZHcrKyuLu7e3/+Pj2//v7+//8/Pz//Pz8//r6+v/29fX/6+vq/7+/vt0YGBgdAAAAAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAACC8vLx+1tbXF6urq//Ly8P/09PT/9fX0/+/v7//q6un/s7Oxxi4u
Lh8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
</value>
</data>
</root>

29
Snow/Program.cs

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Text;
using System.Threading;
namespace Snow
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
private static Mutex m_Mutex;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
m_Mutex = new Mutex(true, "SnowFallMutex");
if (m_Mutex.WaitOne(0, false))
Application.Run(new MainForm());
}
}
}

33
Snow/Properties/AssemblyInfo.cs

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WinSnow")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("OBriens Computer Service")]
[assembly: AssemblyProduct("WinSnow")]
[assembly: AssemblyCopyright("Copyright © 2014 OBriens Computer Service")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e90be6d8-ea46-4bf1-9c39-f7be509b7dd0")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("3.0.0.0")]
[assembly: AssemblyFileVersion("3.0.0.0")]

83
Snow/Properties/Resources.Designer.cs generated

@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18444
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Snow.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Snow.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap flake {
get {
object obj = ResourceManager.GetObject("flake", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap snow {
get {
object obj = ResourceManager.GetObject("snow", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

128
Snow/Properties/Resources.resx

@ -0,0 +1,128 @@ @@ -0,0 +1,128 @@
<?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