Skip to content

Commit 7e568eb

Browse files
author
Casper
committed
Added TrayIcon
Program will now minimize to Tray bar
1 parent 319a118 commit 7e568eb

11 files changed

Lines changed: 302 additions & 27 deletions

HourBoostr/HourBoostr.csproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
<PropertyGroup>
3535
<ApplicationIcon>Fasticon-Hand-Draw-Iphone-Clock.ico</ApplicationIcon>
3636
</PropertyGroup>
37+
<PropertyGroup>
38+
<StartupObject />
39+
</PropertyGroup>
3740
<ItemGroup>
3841
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
3942
<SpecificVersion>False</SpecificVersion>
@@ -47,6 +50,7 @@
4750
</Reference>
4851
<Reference Include="System" />
4952
<Reference Include="System.Core" />
53+
<Reference Include="System.Drawing" />
5054
<Reference Include="System.Windows.Forms" />
5155
<Reference Include="System.Xml.Linq" />
5256
<Reference Include="System.Data.DataSetExtensions" />
@@ -59,13 +63,25 @@
5963
<Compile Include="Config.cs" />
6064
<Compile Include="Program.cs" />
6165
<Compile Include="Properties\AssemblyInfo.cs" />
66+
<Compile Include="Properties\Resources.Designer.cs">
67+
<AutoGen>True</AutoGen>
68+
<DesignTime>True</DesignTime>
69+
<DependentUpon>Resources.resx</DependentUpon>
70+
</Compile>
6271
</ItemGroup>
6372
<ItemGroup>
6473
<None Include="App.config" />
6574
</ItemGroup>
6675
<ItemGroup>
6776
<Content Include="Ampeross-Qetto-2-Timer.ico" />
6877
<Content Include="Fasticon-Hand-Draw-Iphone-Clock.ico" />
78+
<None Include="Resources\icon.ico" />
79+
</ItemGroup>
80+
<ItemGroup>
81+
<EmbeddedResource Include="Properties\Resources.resx">
82+
<Generator>ResXFileCodeGenerator</Generator>
83+
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
84+
</EmbeddedResource>
6985
</ItemGroup>
7086
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
7187
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

HourBoostr/Program.cs

Lines changed: 89 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,31 @@ namespace HourBoostr
1616
{
1717
class Program
1818
{
19+
/// <summary>
20+
/// DllImports for hiding/showing window
21+
/// </summary>
22+
/// <returns></returns>
23+
[DllImport("kernel32.dll")]
24+
static extern IntPtr GetConsoleWindow();
25+
[DllImport("user32.dll")]
26+
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
27+
28+
1929
/// <summary>
2030
/// Global variables
2131
/// </summary>
2232
static private List<BotClass> _ActiveBots = new List<BotClass>();
33+
static private DateTime _InitializedTime;
34+
static private string _Title = "HourBoostr by Ezzy";
35+
static private NotifyIcon _TrayIcon = new NotifyIcon();
36+
static private bool _IsHidden;
37+
38+
39+
/// <summary>
40+
/// Thread variables
41+
/// </summary>
2342
static private Thread _StatusThread;
24-
static private DateTime _InitializedTime;
25-
static private string _Title = "HourBoostr by Ezzy";
43+
static private Thread _TrayThread;
2644

2745

2846
/// <summary>
@@ -87,7 +105,7 @@ static private void Initialize()
87105
if(User.Username.Length > 0 && User.Games != null)
88106
{
89107
/*Let user type in password to account*/
90-
Console.WriteLine("Type the password for the account '{0}'.", User.Username);
108+
Console.WriteLine("Enter the password for the account '{0}'.", User.Username);
91109
User.Password = Config.Password.ReadPassword();
92110

93111
/*Run a new bot with the information*/
@@ -140,6 +158,54 @@ static private void CheckStatus()
140158
}
141159

142160

161+
/// <summary>
162+
/// HACK HACK!
163+
/// Initialize the tray icon thread
164+
/// Keep it running
165+
/// </summary>
166+
static private void ToTray()
167+
{
168+
_TrayIcon.Text = String.Format("HourBoostr | {0} Bots", _ActiveBots.Count);
169+
_TrayIcon.Icon = Properties.Resources.icon;
170+
_TrayIcon.Click += new EventHandler(_TrayIcon_Click);
171+
_TrayIcon.Visible = true;
172+
Application.Run();
173+
174+
while (true) { Thread.Sleep(100); }
175+
}
176+
177+
178+
/// <summary>
179+
/// TrayIcon click event
180+
/// Show/Hide the window depending on its' state
181+
/// </summary>
182+
/// <param name="sender"></param>
183+
/// <param name="e"></param>
184+
static private void _TrayIcon_Click(object sender, EventArgs e)
185+
{
186+
ShowConsole(!_IsHidden);
187+
}
188+
189+
190+
/// <summary>
191+
/// Show/Hide the console window
192+
/// </summary>
193+
/// <param name="b"></param>
194+
static private void ShowConsole(bool b)
195+
{
196+
if(b)
197+
{
198+
ShowWindow(GetConsoleWindow(), 5);
199+
_IsHidden = true;
200+
}
201+
else
202+
{
203+
ShowWindow(GetConsoleWindow(), 0);
204+
_IsHidden = false;
205+
}
206+
}
207+
208+
143209
/// <summary>
144210
/// Main function
145211
/// Too many comments
@@ -154,6 +220,26 @@ static void Main(string[] args)
154220
_StatusThread = new Thread(CheckStatus);
155221
_StatusThread.Start();
156222

223+
/*Initialize trayicon thread*/
224+
_TrayThread = new Thread(ToTray);
225+
_TrayThread.Start();
226+
227+
/*Hide console*/
228+
if (_ActiveBots.Count > 0)
229+
{
230+
Console.WriteLine(" Hiding console to Tray in 3s...\n\n");
231+
Thread.Sleep(3000);
232+
ShowConsole(false);
233+
_TrayIcon.ShowBalloonTip(1000, "HourBoostr", "I'm still running! Click me to show/hide the window.", ToolTipIcon.Info);
234+
}
235+
else
236+
{
237+
/*No accounts loaded... Killed the bot*/
238+
Console.WriteLine(" No accounts loaded. Exiting in 2s...");
239+
Thread.Sleep(2000);
240+
Environment.Exit(1);
241+
}
242+
157243
/*Keep it alive*/
158244
while(true)
159245
{

HourBoostr/Properties/Resources.Designer.cs

Lines changed: 73 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<root>
3+
<!--
4+
Microsoft ResX Schema
5+
6+
Version 2.0
7+
8+
The primary goals of this format is to allow a simple XML format
9+
that is mostly human readable. The generation and parsing of the
10+
various data types are done through the TypeConverter classes
11+
associated with the data types.
12+
13+
Example:
14+
15+
... ado.net/XML headers & schema ...
16+
<resheader name="resmimetype">text/microsoft-resx</resheader>
17+
<resheader name="version">2.0</resheader>
18+
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19+
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20+
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21+
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22+
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23+
<value>[base64 mime encoded serialized .NET Framework object]</value>
24+
</data>
25+
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26+
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27+
<comment>This is a comment</comment>
28+
</data>
29+
30+
There are any number of "resheader" rows that contain simple
31+
name/value pairs.
32+
33+
Each data row contains a name, and value. The row also contains a
34+
type or mimetype. Type corresponds to a .NET class that support
35+
text/value conversion through the TypeConverter architecture.
36+
Classes that don't support this are serialized and stored with the
37+
mimetype set.
38+
39+
The mimetype is used for serialized objects, and tells the
40+
ResXResourceReader how to depersist the object. This is currently not
41+
extensible. For a given mimetype the value must be set accordingly:
42+
43+
Note - application/x-microsoft.net.object.binary.base64 is the format
44+
that the ResXResourceWriter will generate, however the reader can
45+
read any of the formats listed below.
46+
47+
mimetype: application/x-microsoft.net.object.binary.base64
48+
value : The object must be serialized with
49+
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50+
: and then encoded with base64 encoding.
51+
52+
mimetype: application/x-microsoft.net.object.soap.base64
53+
value : The object must be serialized with
54+
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55+
: and then encoded with base64 encoding.
56+
57+
mimetype: application/x-microsoft.net.object.bytearray.base64
58+
value : The object must be serialized into a byte array
59+
: using a System.ComponentModel.TypeConverter
60+
: and then encoded with base64 encoding.
61+
-->
62+
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63+
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64+
<xsd:element name="root" msdata:IsDataSet="true">
65+
<xsd:complexType>
66+
<xsd:choice maxOccurs="unbounded">
67+
<xsd:element name="metadata">
68+
<xsd:complexType>
69+
<xsd:sequence>
70+
<xsd:element name="value" type="xsd:string" minOccurs="0" />
71+
</xsd:sequence>
72+
<xsd:attribute name="name" use="required" type="xsd:string" />
73+
<xsd:attribute name="type" type="xsd:string" />
74+
<xsd:attribute name="mimetype" type="xsd:string" />
75+
<xsd:attribute ref="xml:space" />
76+
</xsd:complexType>
77+
</xsd:element>
78+
<xsd:element name="assembly">
79+
<xsd:complexType>
80+
<xsd:attribute name="alias" type="xsd:string" />
81+
<xsd:attribute name="name" type="xsd:string" />
82+
</xsd:complexType>
83+
</xsd:element>
84+
<xsd:element name="data">
85+
<xsd:complexType>
86+
<xsd:sequence>
87+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88+
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89+
</xsd:sequence>
90+
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91+
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92+
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93+
<xsd:attribute ref="xml:space" />
94+
</xsd:complexType>
95+
</xsd:element>
96+
<xsd:element name="resheader">
97+
<xsd:complexType>
98+
<xsd:sequence>
99+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100+
</xsd:sequence>
101+
<xsd:attribute name="name" type="xsd:string" use="required" />
102+
</xsd:complexType>
103+
</xsd:element>
104+
</xsd:choice>
105+
</xsd:complexType>
106+
</xsd:element>
107+
</xsd:schema>
108+
<resheader name="resmimetype">
109+
<value>text/microsoft-resx</value>
110+
</resheader>
111+
<resheader name="version">
112+
<value>2.0</value>
113+
</resheader>
114+
<resheader name="reader">
115+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116+
</resheader>
117+
<resheader name="writer">
118+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119+
</resheader>
120+
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
121+
<data name="icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
122+
<value>..\Resources\icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123+
</data>
124+
</root>

HourBoostr/bin/Release/HourBoostr.exe.config

Lines changed: 0 additions & 6 deletions
This file was deleted.

HourBoostr/bin/Release/HourBoostr.vshost.exe.config

Lines changed: 0 additions & 6 deletions
This file was deleted.

HourBoostr/bin/Release/HourBoostr.vshost.exe.manifest

Lines changed: 0 additions & 11 deletions
This file was deleted.

HourBoostr/Fasticon-Hand-Draw-Iphone-Clock.ico renamed to HourBoostr/icon.ico

File renamed without changes.

HourBoostr/obj/Release/HourBoostr.csproj.FileListAbsolute.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)