Decompile and Rebuild v0.1.2

begin work: base version 0993

move original program for orgnization

golang work

snapshot decompiled code

it builds! (but doesnt run)

source code bump

library stash

decompile 0.1.2, make it build
This commit is contained in:
Merith-TK 2024-12-28 13:07:51 -08:00 committed by Merith
commit 3e31aa0363
45 changed files with 7996 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
.vs
bin/
obj/
vendor/
*.exe

BIN
App.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,48 @@
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Resources;
using System.Runtime.CompilerServices;
namespace ControlApp.Properties;
[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[DebuggerNonUserCode]
[CompilerGenerated]
internal class Resources
{
private static ResourceManager resourceMan;
private static CultureInfo resourceCulture;
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static ResourceManager ResourceManager
{
get
{
if (resourceMan == null)
{
resourceMan = new ResourceManager("ControlApp.Properties.Resources", typeof(Resources).Assembly);
}
return resourceMan;
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
internal Resources()
{
}
}

55
ControlApp.csproj Normal file
View file

@ -0,0 +1,55 @@
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<AssemblyName>ControlApp</AssemblyName>
<GenerateAssemblyInfo>False</GenerateAssemblyInfo>
<OutputType>WinExe</OutputType>
<UseWindowsForms>True</UseWindowsForms>
<TargetFramework>net8.0-windows</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<LangVersion>12.0</LangVersion>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup>
<RootNamespace />
<ApplicationIcon>App.ico</ApplicationIcon>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="HtmlAgilityPack">
<HintPath>C:\ControlApp\HtmlAgilityPack.dll</HintPath>
</Reference>
<Reference Include="AxInterop.WMPLib">
<HintPath>C:\ControlApp\AxInterop.WMPLib.dll</HintPath>
</Reference>
<Reference Include="Vlc.DotNet.Forms">
<HintPath>C:\ControlApp\Vlc.DotNet.Forms.dll</HintPath>
</Reference>
<Reference Include="Vlc.DotNet.Core">
<HintPath>C:\ControlApp\Vlc.DotNet.Core.dll</HintPath>
</Reference>
<Reference Include="Interop.WMPLib">
<HintPath>C:\ControlApp\Interop.WMPLib.dll</HintPath>
</Reference>
<Reference Include="System.Speech">
<HintPath>C:\ControlApp\System.Speech.dll</HintPath>
</Reference>
<Reference Include="Emgu.CV">
<HintPath>C:\ControlApp\Emgu.CV.dll</HintPath>
</Reference>
<Reference Include="Emgu.CV.Bitmap">
<HintPath>C:\ControlApp\Emgu.CV.Bitmap.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<None Update="App.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Readme.md">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

51
ControlApp.csproj.user Normal file
View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
<ItemGroup>
<Compile Update="ControlApp\Audiopop.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\Blank.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\ComForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\ConfigSettingsForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\ControlApp.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\CustomMessage.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\Options.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\Other.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\PopUp.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\sendcmd.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\SendOrDelete.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\Subliminal.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\WatchForMe.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\Webform.cs">
<SubType>Form</SubType>
</Compile>
<Compile Update="ControlApp\WriteForMe.cs">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
</Project>

View file

@ -0,0 +1,15 @@
using System.Runtime.CompilerServices;
using System.Windows.Forms;
namespace ControlApp;
[CompilerGenerated]
internal static class ApplicationConfiguration
{
public static void Initialize()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(defaultValue: false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
}
}

59
ControlApp/Audiopop.cs Normal file
View file

@ -0,0 +1,59 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Media;
using System.Windows.Forms;
using WMPLib;
namespace ControlApp;
public class Audiopop : Form
{
private string whatlocal;
private IContainer components;
public Audiopop(string what)
{
whatlocal = what;
InitializeComponent();
}
private void Audiopop_Load(object sender, EventArgs e)
{
if (whatlocal.Substring(whatlocal.Length - 3, 3) == "wav")
{
new SoundPlayer(whatlocal).Play();
Close();
return;
}
WindowsMediaPlayerClass windowsMediaPlayerClass = new WindowsMediaPlayerClass();
((IWMPPlayer4)windowsMediaPlayerClass).URL = whatlocal;
((IWMPPlayer4)windowsMediaPlayerClass).controls.play();
Close();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
base.SuspendLayout();
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 450);
base.Name = "Audiopop";
base.Opacity = 0.0;
base.ShowIcon = false;
base.ShowInTaskbar = false;
this.Text = "Audiopop";
base.Load += new System.EventHandler(Audiopop_Load);
base.ResumeLayout(false);
}
}

120
ControlApp/Audiopop.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

108
ControlApp/Blank.cs Normal file
View file

@ -0,0 +1,108 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace ControlApp;
public class Blank : Form
{
private int count;
private int whatlock;
private Timer tmr;
private LockMouse lockMouse;
private LockKeyboard LockKeyboard;
private IContainer components;
public Blank(int what)
{
tmr = new Timer();
tmr.Interval = (int)TimeSpan.FromSeconds(10.0).TotalMilliseconds;
tmr.Tick += closewindow;
lockMouse = new LockMouse();
LockKeyboard = new LockKeyboard();
whatlock = what;
InitializeComponent();
count = 1;
}
public void closewindow(object sender, EventArgs e)
{
count--;
if (count == 0)
{
if (whatlock == 1)
{
lockMouse.Unlock();
}
else if (whatlock == 2)
{
lockMouse.Unlock();
LockKeyboard.Unlock();
}
Close();
}
}
public void add_time(int what)
{
if (whatlock < what)
{
whatlock = what;
}
count++;
}
private void Blank_Load(object sender, EventArgs e)
{
base.Opacity = 0.001;
base.StartPosition = FormStartPosition.CenterScreen;
Screen[] my = Screen.AllScreens;
base.Size = my[0].Bounds.Size;
base.FormBorderStyle = FormBorderStyle.None;
base.TopMost = true;
base.Visible = true;
if (whatlock == 1)
{
lockMouse.Lock();
}
else if (whatlock == 2)
{
lockMouse.Lock();
LockKeyboard.Lock();
}
tmr.Start();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
base.SuspendLayout();
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 450);
base.ControlBox = false;
this.Cursor = System.Windows.Forms.Cursors.No;
base.Name = "Blank";
base.Opacity = 0.001;
base.ShowInTaskbar = false;
this.Text = "Blank";
base.TopMost = true;
base.WindowState = System.Windows.Forms.FormWindowState.Maximized;
base.Load += new System.EventHandler(Blank_Load);
base.ResumeLayout(false);
}
}

120
ControlApp/Blank.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

84
ControlApp/ComForm.cs Normal file
View file

@ -0,0 +1,84 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using HtmlAgilityPack;
namespace ControlApp;
public class ComForm : Form
{
private string formtype;
private IContainer components;
public string[] ReturnedData { get; private set; }
public ComForm(string Url, string type)
{
formtype = type;
ReturnedData = new string[3] { "", "", "" };
WebBrowser wb = new WebBrowser();
wb.Name = "TheWebBrowser";
wb.Navigate(Url);
wb.Dock = DockStyle.Fill;
wb.DocumentCompleted += TheWebBrowser_DocumentCompleted;
base.Controls.Add(wb);
InitializeComponent();
}
private void ComForm_Load(object sender, EventArgs e)
{
}
private void TheWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (base.Controls["TheWebBrowser"] != null)
{
string htmlContent = ((WebBrowser)base.Controls["TheWebBrowser"]).DocumentText;
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlContent);
HtmlNode labelNode = doc.GetElementbyId("result");
if (labelNode != null)
{
ReturnedData[0] = labelNode.InnerText;
}
if (formtype == "CheckNext")
{
labelNode = doc.GetElementbyId("next");
if (labelNode != null)
{
ReturnedData[1] = labelNode.InnerText;
}
labelNode = doc.GetElementbyId("vari");
if (labelNode != null)
{
ReturnedData[2] = labelNode.InnerText;
}
}
}
Close();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
base.SuspendLayout();
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 450);
base.Name = "ComForm";
base.Opacity = 0.0;
this.Text = "ComForm";
base.Load += new System.EventHandler(ComForm_Load);
base.ResumeLayout(false);
}
}

120
ControlApp/ComForm.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,319 @@
using System;
using System.ComponentModel;
using System.Configuration;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Win32;
namespace ControlApp;
public class ConfigSettingsForm : Form
{
private IContainer components;
private CheckBox checkBox1;
private TextBox textBox1;
private Label label1;
private Button button1;
private TextBox textBox2;
private Label label2;
private Label label3;
private TextBox textBox3;
private CheckBox checkBox2;
private Button button2;
private Button button3;
private Panel panel1;
private Button button4;
private Label label4;
private ComboBox delaycmb;
private Label label5;
public ConfigSettingsForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection apps = configuration.AppSettings.Settings;
apps.Remove("LocalDrive");
apps.Remove("AutoRun");
apps.Remove("UserName");
apps.Remove("Password");
apps.Remove("Delay");
apps.Remove("RunAll");
apps.Add("LocalDrive", textBox1.Text);
if (checkBox1.Checked)
{
apps.Add("AutoRun", "True");
}
else
{
apps.Add("AutoRun", "False");
}
apps.Add("UserName", textBox2.Text);
apps.Add("Password", textBox3.Text);
if (checkBox2.Checked)
{
apps.Add("RunAll", "True");
}
else
{
apps.Add("RunAll", "False");
}
if (delaycmb.SelectedIndex == 0)
{
apps.Add("Delay", "30");
}
else if (delaycmb.SelectedIndex == 1)
{
apps.Add("Delay", "60");
}
else if (delaycmb.SelectedIndex == 2)
{
apps.Add("Delay", "120");
}
configuration.Save(ConfigurationSaveMode.Full);
ConfigurationManager.RefreshSection(configuration.AppSettings.SectionInformation.Name);
Close();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
textBox1.Text = ConfigurationManager.AppSettings["LocalDrive"];
textBox2.Text = ConfigurationManager.AppSettings["UserName"];
textBox3.Text = ConfigurationManager.AppSettings["Password"];
if (ConfigurationManager.AppSettings["AutoRun"] == "True")
{
checkBox1.Checked = true;
}
else
{
checkBox1.Checked = false;
}
if (ConfigurationManager.AppSettings["RunAll"] == "True")
{
checkBox2.Checked = true;
}
else
{
checkBox2.Checked = false;
}
switch (ConfigurationManager.AppSettings["Delay"])
{
case "30":
delaycmb.SelectedIndex = 0;
break;
case "60":
delaycmb.SelectedIndex = 1;
break;
case "120":
delaycmb.SelectedIndex = 2;
break;
}
}
private void ConfigSettingsForm_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
string Password = ConfigurationManager.AppSettings["Password"];
if (Password != null || Password == "")
{
Password = textBox3.Text;
}
string user = ConfigurationManager.AppSettings["UserName"];
if (user != null || user == "")
{
user = textBox2.Text;
}
Process.Start(new ProcessStartInfo
{
FileName = "https://www.thecontrolapp.co.uk/Pages/Sub/SubSettings.aspx?user=" + user + "&password=" + Password,
UseShellExecute = true
});
}
private void button3_Click(object sender, EventArgs e)
{
using RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", writable: true);
key.SetValue("ControlApp", "\"" + Application.ExecutablePath + "\"");
}
private void button4_Click(object sender, EventArgs e)
{
using RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", writable: true);
key.DeleteValue("My Program", throwOnMissingValue: false);
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.textBox2 = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.textBox3 = new System.Windows.Forms.TextBox();
this.checkBox2 = new System.Windows.Forms.CheckBox();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.button4 = new System.Windows.Forms.Button();
this.label4 = new System.Windows.Forms.Label();
this.delaycmb = new System.Windows.Forms.ComboBox();
this.label5 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
base.SuspendLayout();
this.checkBox1.AutoSize = true;
this.checkBox1.Location = new System.Drawing.Point(12, 22);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(119, 19);
this.checkBox1.TabIndex = 0;
this.checkBox1.Text = "Auto run sent exe";
this.checkBox1.UseVisualStyleBackColor = true;
this.textBox1.Location = new System.Drawing.Point(6, 47);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(103, 23);
this.textBox1.TabIndex = 1;
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(115, 50);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(74, 15);
this.label1.TabIndex = 2;
this.label1.Text = "File Location";
this.button1.Location = new System.Drawing.Point(114, 351);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 3;
this.button1.Text = "Ok";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(button1_Click);
this.textBox2.Location = new System.Drawing.Point(6, 76);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(100, 23);
this.textBox2.TabIndex = 4;
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(115, 79);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(65, 15);
this.label2.TabIndex = 5;
this.label2.Text = "User Name";
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(115, 108);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(57, 15);
this.label3.TabIndex = 7;
this.label3.Text = "Password";
this.textBox3.Location = new System.Drawing.Point(6, 105);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(100, 23);
this.textBox3.TabIndex = 6;
this.checkBox2.AutoSize = true;
this.checkBox2.Location = new System.Drawing.Point(12, 138);
this.checkBox2.Name = "checkBox2";
this.checkBox2.Size = new System.Drawing.Size(133, 19);
this.checkBox2.TabIndex = 12;
this.checkBox2.Text = "Run All Outstanding";
this.checkBox2.UseVisualStyleBackColor = true;
this.button2.Location = new System.Drawing.Point(6, 321);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(183, 23);
this.button2.TabIndex = 13;
this.button2.Text = "Change Server Settings";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(button2_Click);
this.button3.Location = new System.Drawing.Point(14, 27);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(54, 23);
this.button3.TabIndex = 17;
this.button3.Text = "Add";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(button3_Click);
this.panel1.Controls.Add(this.button4);
this.panel1.Controls.Add(this.label4);
this.panel1.Controls.Add(this.button3);
this.panel1.Location = new System.Drawing.Point(9, 248);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(175, 63);
this.panel1.TabIndex = 18;
this.button4.Location = new System.Drawing.Point(88, 27);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(65, 23);
this.button4.TabIndex = 18;
this.button4.Text = "Remove";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(button4_Click);
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(39, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(97, 15);
this.label4.TabIndex = 0;
this.label4.Text = "Windows Startup";
this.delaycmb.FormattingEnabled = true;
this.delaycmb.Items.AddRange(new object[3] { "30s", "60s", "120s" });
this.delaycmb.Location = new System.Drawing.Point(12, 163);
this.delaycmb.Name = "delaycmb";
this.delaycmb.Size = new System.Drawing.Size(94, 23);
this.delaycmb.TabIndex = 19;
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(115, 166);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(36, 15);
this.label5.TabIndex = 20;
this.label5.Text = "Delay";
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(196, 382);
base.Controls.Add(this.label5);
base.Controls.Add(this.delaycmb);
base.Controls.Add(this.panel1);
base.Controls.Add(this.button2);
base.Controls.Add(this.checkBox2);
base.Controls.Add(this.label3);
base.Controls.Add(this.textBox3);
base.Controls.Add(this.label2);
base.Controls.Add(this.textBox2);
base.Controls.Add(this.button1);
base.Controls.Add(this.label1);
base.Controls.Add(this.textBox1);
base.Controls.Add(this.checkBox1);
base.Name = "ConfigSettingsForm";
this.Text = "ConfigSettingsForm";
base.Load += new System.EventHandler(ConfigSettingsForm_Load);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
base.ResumeLayout(false);
base.PerformLayout();
}
}

View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

1711
ControlApp/ControlApp.cs Normal file

File diff suppressed because it is too large Load diff

120
ControlApp/ControlApp.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

122
ControlApp/CustomMessage.cs Normal file
View file

@ -0,0 +1,122 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Speech.Synthesis;
using System.Windows.Forms;
namespace ControlApp;
public class CustomMessage : Form
{
private string msg;
private string btn;
private int time;
private bool ttspeech;
private Timer tmr;
private IContainer components;
private Label label1;
private Button button1;
public CustomMessage(string message, string button, int timeopen, bool tts)
{
InitializeComponent();
msg = message;
btn = button;
ttspeech = tts;
time = timeopen;
}
private void button1_Click(object sender, EventArgs e)
{
Close();
}
private void CustomMessage_Load(object sender, EventArgs e)
{
if (ttspeech)
{
base.Opacity = 0.0;
SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer();
speechSynthesizer.SetOutputToDefaultAudioDevice();
speechSynthesizer.Speak(msg);
speechSynthesizer.Dispose();
try
{
Close();
return;
}
catch
{
return;
}
}
label1.Text = msg;
if (btn != "")
{
button1.Text = btn;
}
if (time != 0)
{
tmr = new Timer();
tmr.Tick += delegate
{
Close();
};
tmr.Interval = (int)TimeSpan.FromSeconds(time).TotalMilliseconds;
tmr.Start();
}
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
base.SuspendLayout();
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Segoe UI", 25f, System.Drawing.FontStyle.Bold);
this.label1.Location = new System.Drawing.Point(32, 79);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(117, 46);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
this.button1.AutoSize = true;
this.button1.Location = new System.Drawing.Point(251, 177);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 25);
this.button1.TabIndex = 1;
this.button1.Text = "Close";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(button1_Click);
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSize = true;
base.ClientSize = new System.Drawing.Size(563, 214);
base.ControlBox = false;
base.Controls.Add(this.button1);
base.Controls.Add(this.label1);
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
base.Name = "CustomMessage";
this.Text = "CustomMessage";
base.TopMost = true;
base.Load += new System.EventHandler(CustomMessage_Load);
base.ResumeLayout(false);
base.PerformLayout();
}
}

View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,55 @@
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ControlApp;
internal class LockKeyboard
{
private delegate nint LowLevelKeyboardProc(int nCode, nint wParam, nint lParam);
private const int WH_KEYBOARD_LL = 13;
private static LowLevelKeyboardProc _proc = HookCallback;
private static nint _hookID = IntPtr.Zero;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern nint SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, nint hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool UnhookWindowsHookEx(nint hhk);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern nint CallNextHookEx(nint hhk, int nCode, nint wParam, nint lParam);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern nint GetModuleHandle(string lpModuleName);
private static nint SetHook(LowLevelKeyboardProc proc)
{
using Process curProcess = Process.GetCurrentProcess();
using ProcessModule curModule = curProcess.MainModule;
return SetWindowsHookEx(13, proc, GetModuleHandle(curModule.ModuleName), 0u);
}
private static nint HookCallback(int nCode, nint wParam, nint lParam)
{
if (nCode >= 0)
{
return 1;
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
public void Lock()
{
_hookID = SetHook(_proc);
}
public void Unlock()
{
UnhookWindowsHookEx(_hookID);
}
}

55
ControlApp/LockMouse.cs Normal file
View file

@ -0,0 +1,55 @@
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace ControlApp;
internal class LockMouse
{
private delegate nint LowLevelMouseProc(int nCode, nint wParam, nint lParam);
private const int WH_MOUSE_LL = 14;
private static LowLevelMouseProc _mouseProc = MouseHookCallback;
private static nint _mouseHookID = IntPtr.Zero;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern nint SetWindowsHookEx(int idHook, LowLevelMouseProc lpfn, nint hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool UnhookWindowsHookEx(nint hhk);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern nint CallNextHookEx(nint hhk, int nCode, nint wParam, nint lParam);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern nint GetModuleHandle(string lpModuleName);
private static nint SetMouseHook(LowLevelMouseProc proc)
{
using Process curProcess = Process.GetCurrentProcess();
using ProcessModule curModule = curProcess.MainModule;
return SetWindowsHookEx(14, proc, GetModuleHandle(curModule.ModuleName), 0u);
}
private static nint MouseHookCallback(int nCode, nint wParam, nint lParam)
{
if (nCode >= 0)
{
return 1;
}
return CallNextHookEx(_mouseHookID, nCode, wParam, lParam);
}
public void Lock()
{
_mouseHookID = SetMouseHook(_mouseProc);
}
public void Unlock()
{
UnhookWindowsHookEx(_mouseHookID);
}
}

View file

@ -0,0 +1,41 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace ControlApp;
public class MyCustomApplicationContext : ApplicationContext
{
private NotifyIcon trayIcon;
public MyCustomApplicationContext()
{
trayIcon = new NotifyIcon();
trayIcon.Icon = new Icon("App.ico");
trayIcon.ContextMenuStrip = new ContextMenuStrip();
trayIcon.ContextMenuStrip.Items.Add("Exit", null, Exit);
trayIcon.ContextMenuStrip.Items.Add("Open", null, Open);
trayIcon.ContextMenuStrip.Items.Add("Panic", null, Panic);
trayIcon.Visible = true;
}
private void Exit(object sender, EventArgs e)
{
trayIcon.Visible = false;
Application.Exit();
}
private void Open(object sender, EventArgs e)
{
using ControlApp myform = new ControlApp();
myform.ShowDialog();
}
private void Panic(object sender, EventArgs e)
{
foreach (Form openForm in Application.OpenForms)
{
openForm.Close();
}
}
}

1310
ControlApp/Options.cs Normal file

File diff suppressed because it is too large Load diff

120
ControlApp/Options.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

123
ControlApp/Other.cs Normal file
View file

@ -0,0 +1,123 @@
using System;
using System.ComponentModel;
using System.Configuration;
using System.Drawing;
using System.Windows.Forms;
namespace ControlApp;
public class Other : Form
{
private IContainer components;
private Button svncls;
private Label label1;
private TextBox textBox1;
private TextBox textBox2;
private Label label2;
public Other()
{
InitializeComponent();
}
private void svncls_Click(object sender, EventArgs e)
{
Configuration myconfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection apps = myconfig.AppSettings.Settings;
apps.Remove("CommonUsers");
string userlist = "";
string[] lines = textBox1.Lines;
foreach (string line in lines)
{
userlist = ((!(userlist == "")) ? (userlist + ",[" + line + "]") : (userlist + "[" + line + "]"));
}
apps.Add("CommonUsers", userlist);
apps.Remove("BlackList");
string blist = "";
lines = textBox2.Lines;
foreach (string line2 in lines)
{
blist = ((!(blist == "")) ? (blist + ",[" + line2 + "]") : (blist + "[" + line2 + "]"));
}
apps.Add("BlackList", blist);
myconfig.Save(ConfigurationSaveMode.Full);
ConfigurationManager.RefreshSection(myconfig.AppSettings.SectionInformation.Name);
Close();
}
private void Other_Load(object sender, EventArgs e)
{
string userlist = ConfigurationManager.AppSettings["CommonUsers"];
if (userlist != null)
{
string[] users = new Utils().seperate_string(userlist);
textBox1.Lines = users;
}
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.svncls = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
base.SuspendLayout();
this.svncls.Location = new System.Drawing.Point(277, 246);
this.svncls.Name = "svncls";
this.svncls.Size = new System.Drawing.Size(84, 23);
this.svncls.TabIndex = 0;
this.svncls.Text = "Save & Close";
this.svncls.UseVisualStyleBackColor = true;
this.svncls.Click += new System.EventHandler(svncls_Click);
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(22, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(89, 15);
this.label1.TabIndex = 1;
this.label1.Text = "Common Users";
this.textBox1.Location = new System.Drawing.Point(11, 27);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(123, 189);
this.textBox1.TabIndex = 2;
this.textBox2.Location = new System.Drawing.Point(154, 27);
this.textBox2.Multiline = true;
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(123, 189);
this.textBox2.TabIndex = 4;
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(165, 9);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(77, 15);
this.label2.TabIndex = 3;
this.label2.Text = "Web blacklist";
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(373, 281);
base.Controls.Add(this.textBox2);
base.Controls.Add(this.label2);
base.Controls.Add(this.textBox1);
base.Controls.Add(this.label1);
base.Controls.Add(this.svncls);
base.Name = "Other";
this.Text = "Other";
base.Load += new System.EventHandler(Other_Load);
base.ResumeLayout(false);
base.PerformLayout();
}
}

120
ControlApp/Other.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

153
ControlApp/PopUp.cs Normal file
View file

@ -0,0 +1,153 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Diagnostics;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using AxWMPLib;
namespace ControlApp;
public class PopUp : Form
{
public string run_url;
private Timer tmr;
private const int GWL_STYLE = -20;
private const uint WS_POPUP = 2147483648u;
private const uint WS_CHILD = 536870912u;
private List<string> urls;
private IContainer components;
private AxWindowsMediaPlayer axWindowsMediaPlayer1;
[DllImport("user32.dll", SetLastError = true)]
private static extern uint GetWindowLong(nint hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(nint hWnd, int nIndex, uint dwNewLong);
public PopUp(string url)
{
urls = new List<string>();
InitializeComponent();
if (ConfigurationManager.AppSettings["Clickthroughpop"] == "True")
{
base.Opacity = 0.5;
uint initialStyle = GetWindowLong(base.Handle, -20);
SetWindowLong(base.Handle, -20, initialStyle | 0x80000 | 0x20);
}
run_url = url;
switch (run_url.Substring(run_url.Length - 3, 3))
{
case "com":
case ".uk":
case "org":
Process.Start(new ProcessStartInfo
{
FileName = url,
UseShellExecute = true
});
Close();
break;
}
tmr = new Timer();
tmr.Tick += popup_tick;
Random rand = new Random();
if (ConfigurationManager.AppSettings["PopSet"] != null && "Long" == ConfigurationManager.AppSettings["PopSet"].ToString())
{
int mins = rand.Next(11);
tmr.Interval = (int)TimeSpan.FromMinutes(mins).TotalMilliseconds;
}
else
{
int mins2 = rand.Next(55) + 5;
tmr.Interval = (int)TimeSpan.FromSeconds(mins2).TotalMilliseconds;
}
}
public void add_url(string url)
{
urls.Add(url);
}
public void popup_tick(object sender, EventArgs e)
{
if (urls.Count > 0)
{
run_url = urls[0];
urls.RemoveAt(0);
axWindowsMediaPlayer1.URL = run_url;
axWindowsMediaPlayer1.Ctlenabled = false;
axWindowsMediaPlayer1.uiMode = "None";
axWindowsMediaPlayer1.settings.autoStart = true;
axWindowsMediaPlayer1.settings.setMode("loop", varfMode: true);
}
else
{
Close();
}
}
private void PopUp_Load(object sender, EventArgs e)
{
Random random = new Random();
int screenWidth = Screen.PrimaryScreen.Bounds.Width;
int screenHeight = Screen.PrimaryScreen.Bounds.Height;
int randomX = random.Next(0, screenWidth - base.Width);
int randomY = random.Next(0, screenHeight - base.Height);
base.StartPosition = FormStartPosition.Manual;
base.Location = new Point(randomX, randomY);
axWindowsMediaPlayer1.URL = run_url;
axWindowsMediaPlayer1.Ctlenabled = false;
axWindowsMediaPlayer1.uiMode = "None";
axWindowsMediaPlayer1.settings.autoStart = true;
axWindowsMediaPlayer1.settings.setMode("loop", varfMode: true);
tmr.Start();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PopUp));
this.axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer();
((System.ComponentModel.ISupportInitialize)this.axWindowsMediaPlayer1).BeginInit();
base.SuspendLayout();
this.axWindowsMediaPlayer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.axWindowsMediaPlayer1.Enabled = true;
this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 0);
this.axWindowsMediaPlayer1.Name = "axWindowsMediaPlayer1";
this.axWindowsMediaPlayer1.OcxState = (System.Windows.Forms.AxHost.State)resources.GetObject("axWindowsMediaPlayer1.OcxState");
this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(800, 450);
this.axWindowsMediaPlayer1.TabIndex = 0;
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 450);
base.ControlBox = false;
base.Controls.Add(this.axWindowsMediaPlayer1);
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
base.Name = "PopUp";
base.ShowIcon = false;
base.ShowInTaskbar = false;
this.Text = "PopUp";
base.TopMost = true;
base.Load += new System.EventHandler(PopUp_Load);
((System.ComponentModel.ISupportInitialize)this.axWindowsMediaPlayer1).EndInit();
base.ResumeLayout(false);
}
}

120
ControlApp/PopUp.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

16
ControlApp/Program.cs Normal file
View file

@ -0,0 +1,16 @@
using System;
using System.Windows.Forms;
namespace ControlApp;
internal static class Program
{
[STAThread]
private static void Main()
{
ApplicationConfiguration.Initialize();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(defaultValue: false);
Application.Run(new MyCustomApplicationContext());
}
}

144
ControlApp/SendOrDelete.cs Normal file
View file

@ -0,0 +1,144 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using AxWMPLib;
namespace ControlApp;
public class SendOrDelete : Form
{
private string thefile;
private string senderstr;
private IContainer components;
private AxWindowsMediaPlayer axWindowsMediaPlayer1;
private Button Sendbtn;
private Button Deletebtn;
public SendOrDelete(string senderid)
{
InitializeComponent();
string location = ConfigurationManager.AppSettings["LocalDrive"];
string[] filetypes = new string[9] { ".jpg", ".jpeg", ".gif", ".mov", ".mpg", ".mpeg", ".avi", ".png", ".mp4" };
List<string> acceptablefiles = new List<string>();
if (location != null)
{
string[] files = Directory.GetFiles(location);
foreach (string file in files)
{
FileInfo info = new FileInfo(file);
if (filetypes.Contains(info.Extension) && info.Length < 1000000)
{
acceptablefiles.Add(file);
}
}
}
int max = acceptablefiles.Count();
if (max > 0)
{
Random rnd = new Random();
thefile = acceptablefiles[rnd.Next(max)];
senderstr = senderid;
}
}
private void Deletebtn_Click(object sender, EventArgs e)
{
if (thefile != null)
{
File.Delete(thefile);
}
Utils utils = new Utils();
string usrnm = ConfigurationManager.AppSettings["UserName"].ToString();
string line1 = "M=" + usrnm + " chose to delete.";
utils.sendcmd(senderstr, utils.Ecrypt(line1), all: false);
Close();
}
private void SendOrDelete_Load(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = thefile;
axWindowsMediaPlayer1.Ctlenabled = false;
axWindowsMediaPlayer1.uiMode = "None";
axWindowsMediaPlayer1.settings.autoStart = true;
axWindowsMediaPlayer1.settings.setMode("loop", varfMode: true);
}
private void Sendbtn_Click(object sender, EventArgs e)
{
Utils utils = new Utils();
if (utils.sendftpfile(thefile))
{
string usrnm = ConfigurationManager.AppSettings["UserName"].ToString();
string line1 = "M=" + usrnm + " chose to send.";
string line2 = "U=FTP" + Path.GetFileName(thefile);
utils.sendcmd(senderstr, utils.Ecrypt(line1) + "|||" + utils.Ecrypt(line2), all: false);
}
Close();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SendOrDelete));
this.axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer();
this.Sendbtn = new System.Windows.Forms.Button();
this.Deletebtn = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)this.axWindowsMediaPlayer1).BeginInit();
base.SuspendLayout();
this.axWindowsMediaPlayer1.Dock = System.Windows.Forms.DockStyle.Top;
this.axWindowsMediaPlayer1.Enabled = true;
this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 0);
this.axWindowsMediaPlayer1.Name = "axWindowsMediaPlayer1";
this.axWindowsMediaPlayer1.OcxState = (System.Windows.Forms.AxHost.State)resources.GetObject("axWindowsMediaPlayer1.OcxState");
this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(800, 450);
this.axWindowsMediaPlayer1.TabIndex = 1;
this.Sendbtn.Location = new System.Drawing.Point(279, 468);
this.Sendbtn.Name = "Sendbtn";
this.Sendbtn.Size = new System.Drawing.Size(75, 23);
this.Sendbtn.TabIndex = 2;
this.Sendbtn.Text = "Send";
this.Sendbtn.UseVisualStyleBackColor = true;
this.Sendbtn.Click += new System.EventHandler(Sendbtn_Click);
this.Deletebtn.Location = new System.Drawing.Point(384, 468);
this.Deletebtn.Name = "Deletebtn";
this.Deletebtn.Size = new System.Drawing.Size(75, 23);
this.Deletebtn.TabIndex = 3;
this.Deletebtn.Text = "Delete";
this.Deletebtn.UseVisualStyleBackColor = true;
this.Deletebtn.Click += new System.EventHandler(Deletebtn_Click);
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 503);
base.ControlBox = false;
base.Controls.Add(this.Deletebtn);
base.Controls.Add(this.Sendbtn);
base.Controls.Add(this.axWindowsMediaPlayer1);
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
base.Name = "SendOrDelete";
base.ShowIcon = false;
base.ShowInTaskbar = false;
this.Text = "SendOrDelete";
base.TopMost = true;
base.Load += new System.EventHandler(SendOrDelete_Load);
((System.ComponentModel.ISupportInitialize)this.axWindowsMediaPlayer1).EndInit();
base.ResumeLayout(false);
}
}

View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

123
ControlApp/Subliminal.cs Normal file
View file

@ -0,0 +1,123 @@
using System;
using System.ComponentModel;
using System.Configuration;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using AxWMPLib;
namespace ControlApp;
public class Subliminal : Form
{
private Timer tmr;
private const int GWL_STYLE = -20;
private const uint WS_POPUP = 2147483648u;
private const uint WS_CHILD = 536870912u;
private IContainer components;
private AxWindowsMediaPlayer axWindowsMediaPlayer1;
private Label label1;
[DllImport("user32.dll", SetLastError = true)]
private static extern uint GetWindowLong(nint hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(nint hWnd, int nIndex, uint dwNewLong);
public Subliminal(string what, bool message)
{
InitializeComponent();
base.StartPosition = FormStartPosition.CenterScreen;
Screen[] my = Screen.AllScreens;
base.Size = my[0].Bounds.Size;
base.FormBorderStyle = FormBorderStyle.None;
base.TopMost = true;
base.Visible = true;
uint initialStyle = GetWindowLong(base.Handle, -20);
SetWindowLong(base.Handle, -20, initialStyle | 0x80000 | 0x20);
tmr = new Timer();
tmr.Tick += delegate
{
Close();
};
Random rand = new Random();
if (ConfigurationManager.AppSettings["PopSet"] != null && "Long" == ConfigurationManager.AppSettings["PopSet"].ToString())
{
int mins = rand.Next(11);
tmr.Interval = (int)TimeSpan.FromMinutes(mins).TotalMilliseconds;
}
else
{
int mins2 = rand.Next(55) + 5;
tmr.Interval = (int)TimeSpan.FromSeconds(mins2).TotalMilliseconds;
}
tmr.Start();
if (message)
{
label1.Text = what;
axWindowsMediaPlayer1.Visible = false;
return;
}
label1.Visible = false;
axWindowsMediaPlayer1.URL = what;
axWindowsMediaPlayer1.Ctlenabled = false;
axWindowsMediaPlayer1.uiMode = "None";
axWindowsMediaPlayer1.settings.autoStart = true;
axWindowsMediaPlayer1.settings.setMode("loop", varfMode: true);
}
private void Subliminal_Load(object sender, EventArgs e)
{
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PopUp));
this.axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer();
((System.ComponentModel.ISupportInitialize)this.axWindowsMediaPlayer1).BeginInit();
base.SuspendLayout();
this.axWindowsMediaPlayer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.axWindowsMediaPlayer1.Enabled = true;
this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 0);
this.axWindowsMediaPlayer1.Name = "axWindowsMediaPlayer1";
this.axWindowsMediaPlayer1.OcxState = (System.Windows.Forms.AxHost.State)resources.GetObject("axWindowsMediaPlayer1.OcxState");
this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(800, 450);
this.axWindowsMediaPlayer1.TabIndex = 0;
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.label1.Font = new System.Drawing.Font("Showcard Gothic", 50f);
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(800, 450);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 450);
base.Controls.Add(this.label1);
base.Controls.Add(this.axWindowsMediaPlayer1);
base.Name = "Subliminal";
base.ShowIcon = false;
base.ShowInTaskbar = false;
base.Opacity = 0.05;
this.Text = "Subliminal";
base.Load += new System.EventHandler(Subliminal_Load);
base.ResumeLayout(false);
}
}

120
ControlApp/Subliminal.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

949
ControlApp/Utils.cs Normal file
View file

@ -0,0 +1,949 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Media;
using System.Net;
using System.Net.Http;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using HtmlAgilityPack;
using Microsoft.Win32;
namespace ControlApp;
internal class Utils
{
private const int SPI_SETDESKWALLPAPER = 20;
private const int SPIF_UPDATEINIFILE = 1;
private const int SPIF_SENDWININICHANGE = 2;
private string[] bannedlist = new string[6] { "booru.allthefallen.moe", "mega.nz", "thecontrolapp.co.uk/Pages/ControlPC", "paradroid-gamma.vercel", "imagekit.io/tools/asset-public-link", "paradroid-gamma.web.app" };
private string[] bannedref = new string[2] { "money", "pay" };
public string[] blist = new string[1] { "" };
public void writetolog(string shortvr, string longvr)
{
if (ConfigurationManager.AppSettings["Logging"] == "On")
{
if (ConfigurationManager.AppSettings["Logging"] == "On")
{
File.AppendAllText("log.txt", shortvr);
}
else
{
File.AppendAllText("log.txt", longvr);
}
}
}
public string[] GetLatestItem()
{
try
{
string[] ret = new string[2] { "", "" };
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
string vrs = "012";
string result = getcmd(user, pwd, vrs, "Content");
ret = seperate_string(result);
string[] runcode = ret[1].Split("|||");
try
{
run_process(runcode, ret[0]);
}
catch (Exception ex)
{
writetolog("Error running process \n\r", ex.Message);
}
return ret;
}
catch
{
return new string[1] { "" };
}
}
public string[] GetRelations()
{
_ = new string[2] { "", "" };
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
string vrs = "012";
string result = getcmd(user, pwd, vrs, "Relations");
return seperate_string(result);
}
public void AcceptInvite(string dom)
{
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
string vrs = "012";
getcmd(user, pwd, vrs, "Accept" + dom);
}
public void ThumbsUp(string dom)
{
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
string vrs = "012";
getcmd(user, pwd, vrs, "Thumbs" + dom);
}
public void RejectInvite(string dom)
{
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
string vrs = "012";
getcmd(user, pwd, vrs, "Reject" + dom);
}
public string[] GetInvites()
{
string[] ret = new string[2] { "", "" };
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
string vrs = "012";
string result = getcmd(user, pwd, vrs, "Invite");
int start = result.IndexOf("\"result\">");
if (start > 0)
{
int end = result.IndexOf("</span>", start);
if (end - (start + 9) >= 0)
{
string fullres = result.Substring(start + 9, end - (start + 9));
if (fullres.Length > 3)
{
ret = seperate_string(fullres);
}
}
}
return ret;
}
public string[] seperate_string(string seperate)
{
if (seperate != "")
{
string[] strings = new string[1] { "" };
if (seperate[0] == '[' && seperate[seperate.Length - 1] == ']')
{
strings = seperate.Split("],[");
if (strings.Length > 1)
{
int count = 0;
string[] array = strings;
foreach (string s in array)
{
if (count == 0)
{
strings[count] = s.Substring(1, s.Length - 1);
}
else if (count == strings.Length - 1)
{
strings[count] = s.Substring(0, s.Length - 1);
}
count++;
}
}
else
{
strings = new string[1] { seperate.Substring(1, seperate.Length - 2) };
}
return strings;
}
return strings;
}
return new string[1] { "" };
}
public string getcmd(string UserNm, string Pwd, string version, string what)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
string downloadString = "";
try
{
using ComForm wf = new ComForm("https://www.thecontrolapp.co.uk/AppCommand.aspx?UserNm=" + UserNm + "&Pwd=" + Ecrypt(Pwd) + "&vrs=" + version + "&cmd=" + what, "Normal");
wf.ShowDialog();
downloadString = wf.ReturnedData[0];
}
catch (Exception ex)
{
writetolog("Error getting command", ex.Message.ToString());
}
return downloadString;
}
public bool sendftpfile(string FileName)
{
bool ret = true;
try
{
new CustomMessage("Sending file to server", "", 4, tts: false).Show();
string justfilename = Path.GetFileName(FileName);
string ftpUsername = "acc929431981";
string ftpPassword = "6scM67YJ+Ezzz0RKCeIxbT9TAfSbRE++1T";
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://home240474283.1and1-data.host/" + justfilename);
request.Method = "STOR";
request.Credentials = new NetworkCredential(ftpUsername, Decrypt(ftpPassword));
byte[] fileContents;
using (StreamReader sourceStream = new StreamReader(FileName))
{
fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
}
request.ContentLength = fileContents.Length;
using Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
}
catch (Exception ex)
{
ret = false;
new CustomMessage("Sending file to server failed", "", 4, tts: false).ShowDialog();
writetolog("Error sending ftp process \n\r", ex.Message);
}
return ret;
}
public void deleteoutstanding(string UserNm, string Pwd, string version)
{
try
{
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
string vrs = "012";
getcmd(user, pwd, vrs, "Delete");
}
catch
{
}
}
public string[] getoutstanding(string UserNm, string Pwd, string version)
{
string[] returned = new string[3] { "", "", "" };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
string downloadString = "";
try
{
using HttpClient client = new HttpClient();
string geturl = "https://www.thecontrolapp.co.uk/GetCount.aspx?UserNm=" + UserNm + "&Pwd=" + Ecrypt(Pwd) + "&vrs=" + version;
downloadString = client.GetStringAsync(geturl).Result;
HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument();
htmlDocument.LoadHtml(downloadString);
HtmlNode labelNode = htmlDocument.GetElementbyId("result");
if (labelNode != null)
{
returned[0] = labelNode.InnerText;
}
labelNode = htmlDocument.GetElementbyId("next");
if (labelNode != null)
{
returned[1] = labelNode.InnerText;
}
labelNode = htmlDocument.GetElementbyId("vari");
if (labelNode != null)
{
returned[2] = labelNode.InnerText;
}
}
catch (Exception ex)
{
writetolog("Error getting outstanding \n\r", ex.Message);
}
return returned;
}
public void sendcmd(string UserNm, string comm, bool all)
{
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = ConfigurationManager.AppSettings["Password"].ToString();
if (user == null || pwd == null)
{
user = "";
pwd = "";
}
int allint = 0;
if (all)
{
allint = 1;
}
using sendcmd sendc = new sendcmd("https://www.thecontrolapp.co.uk/AppSendContent.aspx?UserNm=" + UserNm + "&comm=" + comm.Replace("G0", "PPP") + "&all=" + allint + "&fromuser=" + user + "&frompword=" + Ecrypt(pwd).Replace("G0", "PPP"));
sendc.ShowDialog();
}
public void SendBlockReport(string senderid, string command, string report)
{
string user = ConfigurationManager.AppSettings["UserName"].ToString();
string pwd = Ecrypt(ConfigurationManager.AppSettings["Password"].ToString());
string what = "https://www.thecontrolapp.co.uk/BlockReport.aspx?usernm=" + user + "&pwd=" + pwd + "&vrs=012&sender=" + senderid + "&report=" + report + "&content=" + command;
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
}
public string Ecrypt(string Line)
{
string ToReturn = "";
try
{
string publickey = "santhosh";
string secretkey = "engineer";
byte[] secretkeyByte = Encoding.UTF8.GetBytes(secretkey);
byte[] publickeybyte = Encoding.UTF8.GetBytes(publickey);
byte[] inputbyteArray = Encoding.UTF8.GetBytes(Line);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(publickeybyte, secretkeyByte), CryptoStreamMode.Write);
cryptoStream.Write(inputbyteArray, 0, inputbyteArray.Length);
cryptoStream.FlushFinalBlock();
ToReturn = Convert.ToBase64String(memoryStream.ToArray());
}
ToReturn = ToReturn.Replace("\\", "xxx");
ToReturn = ToReturn.Replace("&", "yyy");
ToReturn = ToReturn.Replace("/", "zzz");
ToReturn = ToReturn.Replace("]", "aaa");
}
catch (Exception ex)
{
writetolog("Error enrypt " + Line + "\n\r", ex.Message);
}
return ToReturn;
}
public string Decrypt(string Line)
{
string ToReturn = "";
try
{
Line = Line.Replace("xxx", "\\");
Line = Line.Replace("yyy", "&");
Line = Line.Replace("zzz", "/");
Line = Line.Replace("aaa", "]");
string publickey = "santhosh";
string privatekey = "engineer";
byte[] privatekeyByte = Encoding.UTF8.GetBytes(privatekey);
byte[] publickeybyte = Encoding.UTF8.GetBytes(publickey);
MemoryStream ms = null;
byte[] inputbyteArray = new byte[Line.Replace(" ", "+").Length];
inputbyteArray = Convert.FromBase64String(Line.Replace(" ", "+"));
using DESCryptoServiceProvider des = new DESCryptoServiceProvider();
ms = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(ms, des.CreateDecryptor(publickeybyte, privatekeyByte), CryptoStreamMode.Write);
cryptoStream.Write(inputbyteArray, 0, inputbyteArray.Length);
cryptoStream.FlushFinalBlock();
ToReturn = Encoding.UTF8.GetString(ms.ToArray());
}
catch (Exception ex)
{
writetolog("Decrypt error for : " + Line + "\n\r", ex.Message);
}
return ToReturn;
}
public string Get_File(string url)
{
string filename = "";
url.Substring(0, url.LastIndexOf('/'));
Uri trueuri = new Uri(url);
filename = url.Substring(url.LastIndexOf("/") + 1, url.Length - url.LastIndexOf("/") - 1);
filename = ConfigurationManager.AppSettings["LocalDrive"] + filename;
filename.Replace(".webp", "");
try
{
using CustomMessage cm = new CustomMessage("Downloading Image please wait", "", 0, tts: false);
cm.Show();
using HttpClient client = new HttpClient();
using Task<Stream> s = client.GetStreamAsync(trueuri);
s.Wait();
using (FileStream fs = new FileStream(filename, FileMode.Create))
{
s.Result.CopyTo(fs);
}
s.Dispose();
}
catch (Exception ex)
{
filename = "FAILED";
writetolog("Error getting file for : " + url + "\n\r", ex.Message);
}
return filename;
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
public void Change_Wallpaper(string filename)
{
string style = ConfigurationManager.AppSettings["PaperStyle"];
RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", writable: true);
if (key != null)
{
if (style == "Stretch")
{
key.SetValue("WallpaperStyle", 2.ToString());
key.SetValue("TileWallpaper", 0.ToString());
}
if (style == "Fit")
{
key.SetValue("WallpaperStyle", 1.ToString());
key.SetValue("TileWallpaper", 0.ToString());
}
SystemParametersInfo(20, 0, filename, 3);
}
}
public string[] remove_notneeded(string[] lines)
{
List<string> ret = new List<string>();
foreach (string line in lines)
{
if (line == "")
{
break;
}
string decrip = Decrypt(line);
string which = decrip.Substring(0, 2);
string what = decrip.Substring(2, decrip.Length - 2).Trim();
if (which == "D=" && (ConfigurationManager.AppSettings["Downloads"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Downloads"].ToString())))
{
ret.Add(line);
}
if (which == "P=" && (ConfigurationManager.AppSettings["Wallpapers"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Wallpapers"].ToString())))
{
ret.Add(line);
}
if (which == "R=" && (ConfigurationManager.AppSettings["Runables"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Runables"].ToString())))
{
ret.Add(line);
}
if (which == "W=" && (ConfigurationManager.AppSettings["OpenWeb"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["OpenWeb"].ToString())))
{
ret.Add(line);
}
if ((which == "U=" || (which == "O=" && what.IndexOf("static") > 0)) && (ConfigurationManager.AppSettings["PopUps"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["PopUps"].ToString())))
{
ret.Add(line);
}
if (which == "O=" && what.IndexOf("static") == -1 && (ConfigurationManager.AppSettings["PopUps"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["PopUps"].ToString())))
{
ret.Add(line);
}
if (which == "M=" && (ConfigurationManager.AppSettings["Messages"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Messages"].ToString())))
{
bool found = false;
string[] array = bannedref;
foreach (string bref in array)
{
if (what.Contains(bref))
{
found = true;
}
}
if (!found)
{
ret.Add(line);
}
}
if (which == "S=" && (ConfigurationManager.AppSettings["Subliminals"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Subliminals"].ToString())))
{
ret.Add(line);
}
if (which == "V=" && (ConfigurationManager.AppSettings["Subliminals"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Subliminals"].ToString())))
{
ret.Add(line);
}
if (which == "A=" && (ConfigurationManager.AppSettings["Audios"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Audios"].ToString())))
{
ret.Add(line);
}
if (which == "F=" && (ConfigurationManager.AppSettings["Writeformes"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Writeformes"].ToString())))
{
ret.Add(line);
}
if (which == "1=" && (ConfigurationManager.AppSettings["ScreenShots"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["ScreenShots"].ToString())))
{
ret.Add(line);
}
if (which == "2=" && (ConfigurationManager.AppSettings["Watch4me"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Watch4me"].ToString())))
{
ret.Add(line);
}
if (which == "3=" && (ConfigurationManager.AppSettings["twitter"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["twitter"].ToString())))
{
bool found2 = false;
string[] array = bannedref;
foreach (string bref2 in array)
{
if (what.Contains(bref2))
{
found2 = true;
}
}
array = blist;
foreach (string bref3 in array)
{
if (what.Contains(bref3))
{
found2 = true;
}
}
if (!found2)
{
ret.Add(line);
}
}
if (which == "4=" && (ConfigurationManager.AppSettings["SendDelete"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["SendDelete"].ToString())))
{
ret.Add(line);
}
if (which == "5=" && (ConfigurationManager.AppSettings["TTS"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["TTS"].ToString())))
{
bool found3 = false;
string[] array = bannedref;
foreach (string bref4 in array)
{
if (what.Contains(bref4))
{
found3 = true;
}
}
array = blist;
foreach (string bref5 in array)
{
if (what.Contains(bref5))
{
found3 = true;
}
}
if (!found3)
{
ret.Add(line);
}
}
if (which == "6=" && (ConfigurationManager.AppSettings["Webcam"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["Webcam"].ToString())))
{
ret.Add(line);
}
if (which == "7=" && (ConfigurationManager.AppSettings["DisM"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["DisM"].ToString())))
{
ret.Add(line);
}
if (which == "8=" && (ConfigurationManager.AppSettings["DisM"] == null || !Convert.ToBoolean(ConfigurationManager.AppSettings["DisM"].ToString())))
{
ret.Add(line);
}
}
return ret.ToArray();
}
public void run_process(string[] lines, string from)
{
lines = remove_notneeded(lines);
if (lines.Length != 0)
{
SystemSounds.Beep.Play();
}
string[] array = lines;
foreach (string line in array)
{
if (line == "")
{
break;
}
string decrip = Decrypt(line);
writetolog(line + "\n", line + "\n");
if (decrip.Length <= 2)
{
continue;
}
try
{
string which = decrip.Substring(0, 2);
string what = decrip.Substring(2, decrip.Length - 2).Trim();
bool inbanned = false;
string[] array2 = bannedlist;
foreach (string banned in array2)
{
if (what.Contains(banned))
{
inbanned = true;
}
}
if (inbanned)
{
new CustomMessage("Message contains potential bad stuff closing", "", 4, tts: false).ShowDialog();
break;
}
if (what.Substring(0, 3) == "FTP")
{
what = (what = "https://www.thecontrolapp.co.uk/storage/" + what.Substring(3, what.Length - 3));
}
string type = "";
try
{
type = Path.GetExtension(what);
}
catch
{
}
bool isfile = false;
if (type != "")
{
isfile = true;
}
switch (which)
{
case "D=":
{
string thefile2 = "";
if (!isfile)
{
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
}
else
{
thefile2 = Get_File(what);
}
if (thefile2 != "FAILED")
{
new CustomMessage("File downloaded! Find it here : " + thefile2, "", 4, tts: false).ShowDialog();
}
goto end_IL_0064;
}
case "P=":
{
if (!isfile)
{
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
continue;
}
string thefile3 = "";
thefile3 = Get_File(what);
if (thefile3 != "FAILED")
{
Change_Wallpaper(thefile3);
}
goto end_IL_0064;
}
case "R=":
{
if (!isfile)
{
continue;
}
string thefile4 = "";
thefile4 = Get_File(what);
if (thefile4 != "FAILED")
{
if (ConfigurationManager.AppSettings["AutoRun"] == "True")
{
Process.Start(thefile4);
}
else
{
new CustomMessage("Exe downloaded! Find it here : " + thefile4, "", 4, tts: false).ShowDialog();
}
}
goto end_IL_0064;
}
case "W=":
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
goto end_IL_0064;
case "O=":
if (what.IndexOf("static") <= 0)
{
break;
}
goto case "U=";
case "U=":
{
if (!isfile)
{
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
continue;
}
string thefile = "";
thefile = Get_File(what);
if (!(thefile != "FAILED"))
{
continue;
}
string popstyle = "Serial";
if (ConfigurationManager.AppSettings["PopStyle"] != null)
{
popstyle = ConfigurationManager.AppSettings["PopStyle"].ToString();
}
if (popstyle == "Serial")
{
bool done = false;
foreach (Form fm in Application.OpenForms)
{
if (fm.GetType() == typeof(PopUp))
{
((PopUp)fm).add_url(thefile);
done = true;
}
}
if (!done)
{
new PopUp(thefile).Show();
}
}
else
{
new PopUp(thefile).Show();
}
goto end_IL_0064;
}
}
if (which == "O=" && what.IndexOf("static") == -1)
{
if (!isfile)
{
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
continue;
}
string popstyle2 = "Serial";
if (ConfigurationManager.AppSettings["PopStyle"] != null)
{
popstyle2 = ConfigurationManager.AppSettings["PopStyle"].ToString();
}
if (popstyle2 == "Serial")
{
bool done2 = false;
foreach (Form fm2 in Application.OpenForms)
{
if (fm2.GetType() == typeof(PopUp))
{
((PopUp)fm2).add_url(what);
done2 = true;
}
}
if (!done2)
{
new PopUp(what).Show();
}
}
else
{
new PopUp(what).Show();
}
continue;
}
switch (which)
{
case "M=":
{
string[] split = what.Split("&&&");
CustomMessage cm = ((split.Length <= 1) ? new CustomMessage(split[0], "", 0, tts: false) : new CustomMessage(split[0], split[1], 0, tts: false));
cm.ShowDialog();
goto end_IL_0064;
}
case "S=":
{
if (!isfile)
{
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
continue;
}
string thefile5 = "";
thefile5 = Get_File(what);
if (thefile5 != "FAILED")
{
new Subliminal(thefile5, message: false);
}
goto end_IL_0064;
}
case "V=":
new Subliminal(what, message: true);
goto end_IL_0064;
case "A=":
{
if (!isfile)
{
Process.Start(new ProcessStartInfo
{
FileName = what,
UseShellExecute = true
});
continue;
}
string thefile6 = "";
thefile6 = Get_File(what);
if (thefile6 != "FAILED")
{
new Audiopop(thefile6).ShowDialog();
}
goto end_IL_0064;
}
case "F=":
{
bool found = false;
array2 = bannedref;
foreach (string bref in array2)
{
if (what.Contains(bref))
{
found = true;
}
}
if (!found)
{
string[] split2 = what.Split("&&&");
new WriteForMe(split2[0], split2[1], from).ShowDialog();
}
goto end_IL_0064;
}
case "1=":
{
if (!(what == "Yes"))
{
break;
}
string filename = "scr" + ConfigurationManager.AppSettings["UserName"].ToString() + from + DateTime.Now.Date.ToString().Replace("/", "").Replace(" ", "")
.Replace(":", "") + ".jpg";
string filePath = ConfigurationManager.AppSettings["LocalDrive"] + filename;
using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height))
{
using (Graphics g = Graphics.FromImage(bmpScreenCapture))
{
g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, bmpScreenCapture.Size, CopyPixelOperation.SourceCopy);
}
new Bitmap(bmpScreenCapture, new Size(bmpScreenCapture.Width / 2, bmpScreenCapture.Height / 2)).Save(filePath, ImageFormat.Jpeg);
}
if (sendftpfile(filePath))
{
sendcmd(from, Ecrypt("U=FTP" + filename) + "|||", all: false);
MessageBox.Show("Screen shot taken :D");
}
goto end_IL_0064;
}
}
switch (which)
{
case "2=":
new WatchForMe(what, from).Show();
goto end_IL_0064;
case "3=":
what = what.Replace(" ", "%20");
Process.Start(new ProcessStartInfo
{
FileName = "https://twitter.com/intent/tweet?text=" + what + " [Posted by :]&url=www.thecontrolapp.co.uk",
UseShellExecute = true
});
goto end_IL_0064;
case "4=":
if (!(what == "Yes"))
{
break;
}
new SendOrDelete(from).Show();
goto end_IL_0064;
}
switch (which)
{
case "5=":
new CustomMessage(what, "", 4, tts: true).ShowDialog();
break;
case "6=":
try
{
Bitmap image = new VideoCapture(0, VideoCapture.API.Any).QueryFrame().ToBitmap();
string filename2 = "web" + ConfigurationManager.AppSettings["UserName"].ToString() + from + DateTime.Now.Date.ToString().Replace("/", "").Replace(" ", "")
.Replace(":", "") + ".jpg";
string filePath2 = ConfigurationManager.AppSettings["LocalDrive"] + filename2;
new Bitmap(image, new Size(image.Width / 2, image.Height / 2)).Save(filePath2);
if (sendftpfile(filePath2))
{
sendcmd(from, Ecrypt("U=FTP" + filename2) + "|||", all: false);
}
}
catch (Exception ex)
{
writetolog("Error getting webcam \n\r", ex.Message);
}
break;
case "7=":
{
bool found3 = false;
foreach (Form fm4 in Application.OpenForms)
{
if (fm4.GetType() == typeof(Blank))
{
((Blank)fm4).add_time(1);
found3 = true;
}
}
if (!found3)
{
new Blank(1).Show();
Cursor.Show();
}
break;
}
case "8=":
{
bool found2 = false;
foreach (Form fm3 in Application.OpenForms)
{
if (fm3.GetType() == typeof(Blank))
{
((Blank)fm3).add_time(1);
found2 = true;
}
}
if (!found2)
{
new Blank(2).Show();
Cursor.Show();
}
break;
}
}
end_IL_0064:;
}
catch (Exception ex2)
{
writetolog("Error proccessing for : " + line + "\n\r", ex2.Message);
}
}
}
}

256
ControlApp/WatchForMe.cs Normal file
View file

@ -0,0 +1,256 @@
using System;
using System.ComponentModel;
using System.Configuration;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Vlc.DotNet.Core;
using Vlc.DotNet.Forms;
namespace ControlApp;
public class WatchForMe : Form
{
private string senderstr;
private string pub_Url;
private Utils u;
private int timewatched;
private int timecensored;
private bool isdeactive;
private int losefocus;
private bool censored;
private IContainer components;
private Timer WatchTime;
private Timer CensorTime;
private VlcControl vlcControl1;
private static bool IsWebPage(string input)
{
if (Uri.TryCreate(input, UriKind.Absolute, out Uri uriResult))
{
if (!(uriResult.Scheme == Uri.UriSchemeHttp))
{
return uriResult.Scheme == Uri.UriSchemeHttps;
}
return true;
}
return false;
}
public WatchForMe(string Url, string senderid)
{
u = new Utils();
senderstr = senderid;
InitializeComponent();
switch (Path.GetExtension(Url))
{
case ".mp4":
case ".webm":
case ".webp":
case ".gif":
{
pub_Url = Url;
string[] mediaOptions = new string[1] { "input-repeat=50" };
if (IsWebPage(Url))
{
if (u.Get_File(Url) != "FAILED")
{
FileInfo fileInfo = new FileInfo(Url);
vlcControl1.SetMedia(fileInfo, mediaOptions);
}
else
{
vlcControl1.SetMedia(new Uri(Url), mediaOptions);
}
}
else
{
FileInfo fileInfo2 = new FileInfo(Url);
vlcControl1.SetMedia(fileInfo2, mediaOptions);
}
vlcControl1.Play();
break;
}
case ".png":
case ".jpg":
case ".jepg":
{
string file = "";
file = u.Get_File(Url);
if (file == "FAILED")
{
Close();
break;
}
Image i = Image.FromFile(file);
Screen my = Screen.AllScreens[0];
if (i.Width > my.Bounds.Width)
{
base.Width = my.Bounds.Width;
}
else
{
base.Width = i.Width;
}
if (i.Height > my.Bounds.Height)
{
base.Height = my.Bounds.Height;
}
else
{
base.Height = i.Height;
}
vlcControl1.Visible = false;
PictureBox pictureBox = new PictureBox
{
Dock = DockStyle.Fill,
Image = i
};
base.Controls.Add(pictureBox);
break;
}
default:
{
vlcControl1.Visible = false;
WebBrowser wb = new WebBrowser();
wb.Navigate(Url);
wb.Dock = DockStyle.Fill;
wb.ScriptErrorsSuppressed = true;
base.Controls.Add(wb);
break;
}
}
AutoSize = true;
timewatched = 0;
timecensored = 0;
losefocus = 0;
WatchTime.Interval = 1000;
WatchTime.Tick += Timer1_Tick;
WatchTime.Start();
CensorTime.Interval = 1000;
CensorTime.Tick += Censored_Tick;
isdeactive = false;
base.Deactivate += Form1_Deactivate;
base.Activated += Form1_Reactivate;
base.FormClosing += Form1_FormClosing;
}
private void WatchForMe_Load(object sender, EventArgs e)
{
censored = false;
}
private void Censored_Tick(object sender, EventArgs e)
{
timecensored++;
}
private void Timer1_Tick(object sender, EventArgs e)
{
if (!isdeactive)
{
timewatched++;
Text = "Watch for me Time=" + timewatched + ": Censored for=" + timecensored + ": Lost focus=" + losefocus;
}
}
private void Form1_Deactivate(object sender, EventArgs e)
{
losefocus++;
isdeactive = true;
}
private void Form1_Reactivate(object sender, EventArgs e)
{
if (isdeactive)
{
isdeactive = false;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
string usrnm = ConfigurationManager.AppSettings["UserName"].ToString();
Utils utils = new Utils();
utils.sendcmd(senderstr, utils.Ecrypt("M=User : " + usrnm + " Watched for : " + timewatched + " seconds. Censored for : " + timecensored + ". Form lost focus :" + losefocus + " times"), all: false);
}
}
private void WFM_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
if (censored)
{
base.Opacity = 1.0;
censored = false;
CensorTime.Stop();
}
else
{
base.Opacity = 0.0;
censored = true;
CensorTime.Start();
}
}
}
private void Replay(object sender, VlcMediaPlayerEndReachedEventArgs e)
{
vlcControl1.Position = 0f;
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.WatchTime = new System.Windows.Forms.Timer(this.components);
this.CensorTime = new System.Windows.Forms.Timer(this.components);
this.vlcControl1 = new Vlc.DotNet.Forms.VlcControl();
((System.ComponentModel.ISupportInitialize)this.vlcControl1).BeginInit();
base.SuspendLayout();
this.vlcControl1.BackColor = System.Drawing.Color.Black;
this.vlcControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.vlcControl1.Location = new System.Drawing.Point(0, 0);
this.vlcControl1.Name = "vlcControl1";
this.vlcControl1.Size = new System.Drawing.Size(1044, 647);
this.vlcControl1.Spu = -1;
this.vlcControl1.TabIndex = 0;
this.vlcControl1.Visible = true;
this.vlcControl1.Text = "vlcControl1";
this.vlcControl1.VlcLibDirectory = new System.IO.DirectoryInfo("C:\\Program Files\\VideoLAN\\VLC");
this.vlcControl1.EndReached += new System.EventHandler<Vlc.DotNet.Core.VlcMediaPlayerEndReachedEventArgs>(Replay);
this.vlcControl1.KeyDown += new System.Windows.Forms.KeyEventHandler(WFM_KeyDown);
((System.ComponentModel.ISupportInitialize)this.vlcControl1).EndInit();
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(1044, 647);
base.Controls.Add(this.vlcControl1);
base.Name = "WatchForMe";
this.Text = "WatchForMe";
base.Load += new System.EventHandler(WatchForMe_Load);
base.KeyDown += new System.Windows.Forms.KeyEventHandler(WFM_KeyDown);
base.ResumeLayout(false);
}
}

120
ControlApp/WatchForMe.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

43
ControlApp/Webform.cs Normal file
View file

@ -0,0 +1,43 @@
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace ControlApp;
public class Webform : Form
{
private IContainer components;
public Webform(string Url)
{
WebBrowser wb = new WebBrowser();
wb.Navigate(Url);
wb.Dock = DockStyle.Fill;
base.Controls.Add(wb);
InitializeComponent();
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
base.SuspendLayout();
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 450);
base.Name = "Webform";
base.ResumeLayout(false);
}
}

120
ControlApp/Webform.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

212
ControlApp/WriteForMe.cs Normal file
View file

@ -0,0 +1,212 @@
using System;
using System.ComponentModel;
using System.Configuration;
using System.Drawing;
using System.Windows.Forms;
namespace ControlApp;
public class WriteForMe : Form
{
private int seconds;
private int mistakes;
private int count;
private string senderstr;
private IContainer components;
private Button button1;
private Label label1;
private Label writelbl;
private TextBox wfmtextb;
private Label timelbl;
private Label label3;
private Label label4;
private Label mistakelbl;
private Label label6;
private Label countlbl;
private Timer timer1;
public WriteForMe(string message, string times, string senderid)
{
InitializeComponent();
writelbl.Text = message;
count = Convert.ToInt16(times);
countlbl.Text = times;
senderstr = senderid;
}
private void WriteForMe_Load(object sender, EventArgs e)
{
seconds = 0;
mistakes = 0;
mistakelbl.Text = mistakes.ToString();
timelbl.Text = seconds.ToString();
timer1.Interval = 1000;
timer1.Tick += MyTimer_Tick;
timer1.Start();
}
private void MyTimer_Tick(object sender, EventArgs e)
{
seconds++;
}
private void input_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Return)
{
if (wfmtextb.Text == writelbl.Text)
{
count--;
countlbl.Text = count.ToString();
timelbl.Text = seconds.ToString();
}
else
{
mistakes++;
mistakelbl.Text = mistakes.ToString();
timelbl.Text = seconds.ToString();
}
wfmtextb.Text = "";
if (count == 0)
{
Utils ut = new Utils();
string usrnm = ConfigurationManager.AppSettings["UserName"].ToString();
ut.sendcmd(senderstr, ut.Ecrypt("M=" + usrnm + " completed your command in " + timelbl.Text + " seconds with " + mistakelbl.Text + " mistakes.&&&Please Reward"), all: false);
Close();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Utils ut = new Utils();
string usrnm = ConfigurationManager.AppSettings["UserName"].ToString();
ut.sendcmd(senderstr, ut.Ecrypt("M=" + usrnm + " failed your command after " + timelbl.Text + " seconds with " + mistakelbl.Text + " mistakes.&&&Please Punish"), all: false);
Close();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.writelbl = new System.Windows.Forms.Label();
this.wfmtextb = new System.Windows.Forms.TextBox();
this.timelbl = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.mistakelbl = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.countlbl = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
base.SuspendLayout();
this.button1.Location = new System.Drawing.Point(398, 136);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 0;
this.button1.Text = "Fail";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(button1_Click);
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Segoe UI", 14f, System.Drawing.FontStyle.Bold);
this.label1.Location = new System.Drawing.Point(21, 19);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(125, 25);
this.label1.TabIndex = 1;
this.label1.Text = "Write for me";
this.writelbl.AutoSize = true;
this.writelbl.Location = new System.Drawing.Point(21, 59);
this.writelbl.Name = "writelbl";
this.writelbl.Size = new System.Drawing.Size(38, 15);
this.writelbl.TabIndex = 2;
this.writelbl.Text = "label2";
this.wfmtextb.Location = new System.Drawing.Point(21, 95);
this.wfmtextb.Name = "wfmtextb";
this.wfmtextb.Size = new System.Drawing.Size(452, 23);
this.wfmtextb.TabIndex = 3;
this.wfmtextb.KeyDown += new System.Windows.Forms.KeyEventHandler(input_KeyDown);
this.timelbl.AutoSize = true;
this.timelbl.Location = new System.Drawing.Point(420, 19);
this.timelbl.Name = "timelbl";
this.timelbl.Size = new System.Drawing.Size(38, 15);
this.timelbl.TabIndex = 4;
this.timelbl.Text = "label2";
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(366, 19);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(33, 15);
this.label3.TabIndex = 5;
this.label3.Text = "Time";
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(366, 34);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(53, 15);
this.label4.TabIndex = 6;
this.label4.Text = "Mistakes";
this.mistakelbl.AutoSize = true;
this.mistakelbl.Location = new System.Drawing.Point(420, 34);
this.mistakelbl.Name = "mistakelbl";
this.mistakelbl.Size = new System.Drawing.Size(38, 15);
this.mistakelbl.TabIndex = 7;
this.mistakelbl.Text = "label5";
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(366, 49);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(27, 15);
this.label6.TabIndex = 8;
this.label6.Text = "Left";
this.countlbl.AutoSize = true;
this.countlbl.Location = new System.Drawing.Point(420, 49);
this.countlbl.Name = "countlbl";
this.countlbl.Size = new System.Drawing.Size(38, 15);
this.countlbl.TabIndex = 9;
this.countlbl.Text = "label7";
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(492, 173);
base.ControlBox = false;
base.Controls.Add(this.countlbl);
base.Controls.Add(this.label6);
base.Controls.Add(this.mistakelbl);
base.Controls.Add(this.label4);
base.Controls.Add(this.label3);
base.Controls.Add(this.timelbl);
base.Controls.Add(this.wfmtextb);
base.Controls.Add(this.writelbl);
base.Controls.Add(this.label1);
base.Controls.Add(this.button1);
base.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
base.Name = "WriteForMe";
base.ShowIcon = false;
base.ShowInTaskbar = false;
this.Text = "WriteForMe";
base.TopMost = true;
base.Load += new System.EventHandler(WriteForMe_Load);
base.ResumeLayout(false);
base.PerformLayout();
}
}

120
ControlApp/WriteForMe.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

49
ControlApp/sendcmd.cs Normal file
View file

@ -0,0 +1,49 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ControlApp;
public class sendcmd : Form
{
private IContainer components;
public sendcmd(string Url)
{
WebBrowser wb = new WebBrowser();
wb.Navigate(Url);
wb.Dock = DockStyle.Fill;
base.Controls.Add(wb);
InitializeComponent();
}
private async void sendcmd_Load(object sender, EventArgs e)
{
SendToBack();
await Task.Delay(3000);
Close();
}
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
base.SuspendLayout();
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 15f);
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
base.ClientSize = new System.Drawing.Size(800, 450);
base.Name = "sendcmd";
this.Text = "sendcmd";
base.Load += new System.EventHandler(sendcmd_Load);
base.ResumeLayout(false);
}
}

120
ControlApp/sendcmd.resx Normal file
View file

@ -0,0 +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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

24
ControlAppDecompile.sln Normal file
View file

@ -0,0 +1,24 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControlApp", "ControlApp.csproj", "{6AE5ADEB-26FF-95F6-EDB2-48A49EBE4352}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6AE5ADEB-26FF-95F6-EDB2-48A49EBE4352}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6AE5ADEB-26FF-95F6-EDB2-48A49EBE4352}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6AE5ADEB-26FF-95F6-EDB2-48A49EBE4352}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6AE5ADEB-26FF-95F6-EDB2-48A49EBE4352}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4F317106-6E0C-4E08-96A3-A093625C9743}
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,15 @@
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
[assembly: AssemblyCompany("ControlApp")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ControlApp")]
[assembly: AssemblyTitle("ControlApp")]
[assembly: TargetPlatform("Windows7.0")]
[assembly: SupportedOSPlatform("Windows7.0")]
[assembly: AssemblyVersion("1.0.0.0")]
// [module: RefSafetyRules(11)]

1
Readme.md Normal file
View file

@ -0,0 +1 @@
Reverse engineered client of https://www.thecontrolapp.co.uk/

50
app.config Normal file
View file

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="">
<clear />
<add key="Logging" value="On" />
<add key="LogLvl" value="1" />
<add key="Showblocked" value="False" />
<add key="Clickthroughpop" value="True" />
<add key="OutstandRemind" value="True" />
<add key="Popstyle" value="Serial" />
<add key="PaperStyle" value="Fit" />
<add key="SendDelete" value="True" />
<add key="twitter" value="False" />
<add key="Watch4me" value="False" />
<add key="Screenshots" value="True" />
<add key="Audios" value="False" />
<add key="Writeformes" value="True" />
<add key="Downloads" value="False" />
<add key="Wallpapers" value="False" />
<add key="Runables" value="False" />
<add key="OpenWeb" value="False" />
<add key="PopUps" value="False" />
<add key="Messages" value="False" />
<add key="Subliminals" value="False" />
<add key="Webcam" value="True" />
<add key="TTS" value="False" />
<add key="DisM" value="True" />
<add key="PopSet" value="Short" />
<add key="DClickthroughpop" value="False" />
<add key="DPopstyle" value="Serial" />
<add key="DPaperStyle" value="Fit" />
<add key="DSendDelete" value="False" />
<add key="Dtwitter" value="False" />
<add key="DWatch4me" value="False" />
<add key="DScreenshots" value="False" />
<add key="DAudios" value="False" />
<add key="DWriteformes" value="False" />
<add key="DDownloads" value="False" />
<add key="DWallpapers" value="False" />
<add key="DRunables" value="False" />
<add key="DOpenWeb" value="False" />
<add key="DPopUps" value="False" />
<add key="DMessages" value="False" />
<add key="DSubliminals" value="False" />
<add key="DWebcam" value="False" />
<add key="DTTS" value="False" />
<add key="DDisM" value="False" />
<add key="DPopSet" value="Short" />
</appSettings>
</configuration>