Skip to content

Instantly share code, notes, and snippets.

@distagon
Forked from syctseng/Account.cs
Created August 8, 2017 13:37
Show Gist options
  • Save distagon/10ee9087003ee30fe19f8407812e7fcd to your computer and use it in GitHub Desktop.
Save distagon/10ee9087003ee30fe19f8407812e7fcd to your computer and use it in GitHub Desktop.
帳戶監視器_KGI
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Watcher
{
public class Account
{
private string broker = "";
private string accountNO = "";
private string id = "";
private string password = "";
public string Broker = "";
public string NO = "";
public string ID = "";
public string Password = "";
public string getInfomation(string AccountIni = @"account.ini")
{
string[] iniContent;
if (!File.Exists(AccountIni))
{
return "-1";
}
else
{
string acountInfo = "";
acountInfo = System.IO.File.ReadAllText(AccountIni);
if (string.IsNullOrEmpty(acountInfo))
{
return "0";
}
else
{
acountInfo = acountInfo.Trim();
iniContent = acountInfo.Split(',');
broker = iniContent[0];
accountNO = iniContent[1];
id = iniContent[2];
password = iniContent[3];
Broker = broker;
NO = accountNO;
ID = id;
Password = password;
return "1";
}
}
}
}
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
using Intelligence;
using Package;
using Smart;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Forms;
namespace Watcher
{
internal delegate void SetAddInfoCallBack(string text);
public partial class Form1 : Form
{
private TaiFexCom tfcom;
private UTF8Encoding encoding = new System.Text.UTF8Encoding();
private string Equity;
private static System.Timers.Timer aTimer;
public Account account = new Account();
public string AccountIni = @"account.ini";
public Form1()
{
InitializeComponent();
tfcom = new TaiFexCom("itrade.kgi.com.tw", 443, "API", false);
tfcom.ConnectTimeout = 5000;
tfcom.OnRcvMessage += OnRcvMessage; //資料接收事件
tfcom.OnGetStatus += OnGetStatus; //狀態通知事件
tfcom.OnRcvServerTime += OnRcvServerTime; //接收主機時間
account.getInfomation(AccountIni);
}
#region TaiFexCom API 事件
private void OnGetStatus(object sender, COM_STATUS staus, byte[] msg)
{
TaiFexCom com = (TaiFexCom)sender;
if (this.InvokeRequired)
{
Smart.OnGetStatus_EventHandler d = new Smart.OnGetStatus_EventHandler(OnGetStatus);
this.Invoke(d, new object[] { sender, staus, msg });
return;
}
OnGetStatusUpdateUI(sender, staus, msg);
}
private void OnRcvServerTime(Object sender, DateTime serverTime, int ConnQuality)
{
if (this.InvokeRequired)
{
Smart.OnRcvServerTime_EventHandler d = new Smart.OnRcvServerTime_EventHandler(OnRcvServerTime);
this.Invoke(d, new object[] { sender, serverTime, ConnQuality });
return;
}
}
private void OnRcvMessage(object sender, PackageBase package)
{
if (this.InvokeRequired)
{
OnRcvMessage_EventHandler d = new OnRcvMessage_EventHandler(OnRcvMessage);
this.Invoke(d, new object[] { sender, package });
return;
}
switch ((DT)package.DT)
{
case DT.LOGIN:
P001503 p1503 = (P001503)package;
if (p1503.Code != 0)
AddInfo("登入失敗 CODE = " + p1503.Code + " " + tfcom.GetMessageMap(p1503.Code));
else
{
AddInfo("登入成功 ");
}
break;
#region 帳務查詢
case DT.FINANCIAL_COVER_TRADER: //1614
P001614 p1614 = (P001614)package;
AddInfo("RCV 1614 [" + p1614.Rows + "]");
break;
case DT.INVENTORY_TRADER: //1616
P001616 p1616 = (P001616)package;
AddInfo("RCV 1616 [" + p1616.Rows + "]");
break;
case DT.INVENTORY_DETAIL_TRADER: //1618
P001618 p1618 = (P001618)package;
AddInfo("RCV 1618 [" + p1618.Rows + "]");
break;
case DT.FINANCIAL_COVER_TRADER_Detail: //1624
P001624 p1624 = (P001624)package;
AddInfo("RCV 1624 [" + p1624.Rows + "]");
break;
case DT.FINANCIAL_TRADERN: //1626
P001626 p1626 = (P001626)package;
if (p1626.Count > 0)
{
foreach (P001626_2 p1626b in p1626.p001626_2)
{
Equity = p1626b.ActMarketValue;
}
AddInfo("權益回報:NT$ " + Equity);
string outputPath = @textBox_輸出路徑.Text + "xxxx" + account.NO.Remove(0, 4) + ".txt";
System.IO.File.WriteAllText(outputPath, Equity);
}
//AddInfo("RCV 1626 [" + p1626.Count + "]" );
break;
case DT.FINANCIAL_CURRENCY: //1628
P001628 p1628 = (P001628)package;
AddInfo("RCV 1628 CODE= " + p1628.Code + " MSG=" + p1628.ErrorMsg);
break;
#endregion 帳務查詢
}
}
private void OnGetStatusUpdateUI(object sender, COM_STATUS staus, byte[] msg)
{
TaiFexCom com = (TaiFexCom)sender;
string smsg = null;
switch (staus)
{
case COM_STATUS.LOGIN_READY: //登入成功
// DoShowLogin();
AddInfo("凱基下單登入成功:" + Environment.NewLine + com.Accounts);
break;
case COM_STATUS.LOGIN_FAIL: //登入失敗
AddInfo(String.Format("凱基下單登入失敗:[{0}]", encoding.GetString(msg)));
break;
case COM_STATUS.LOGIN_UNKNOW: //登入狀態不明
AddInfo(String.Format("凱基下單登入狀態不明:[{0}]", encoding.GetString(msg)));
break;
case COM_STATUS.CONNECT_READY: //連線成功
smsg = "凱基下單伺服器" + tfcom.ServerHost + ":" + tfcom.ServerPort + Environment.NewLine +
"伺服器回應: [" + encoding.GetString(msg) + "]" + Environment.NewLine;
AddInfo(smsg);
break;
case COM_STATUS.CONNECT_FAIL: //連線失敗
smsg = encoding.GetString(msg);
AddInfo("凱基下單連線失敗:" + smsg + " " + tfcom.ServerHost + ":" + tfcom.ServerPort);
break;
case COM_STATUS.DISCONNECTED: //斷線
// DoShowLogout();
smsg = encoding.GetString(msg);
AddInfo("凱基下單斷線:" + smsg);
break;
case COM_STATUS.SUBSCRIBE:
smsg = encoding.GetString(msg);
break;
case COM_STATUS.UNSUBSCRIBE:
smsg = encoding.GetString(msg);
break;
case COM_STATUS.ACK_REQUESTID: //下單或改單第一次回覆
long RequestId = BitConverter.ToInt64(msg, 0);
byte status = msg[8];
break;
}
}
#endregion TaiFexCom API 事件
private void AddInfo(string msg)
{
if (this.msgBox.InvokeRequired)
{
SetAddInfoCallBack d = new SetAddInfoCallBack(AddInfo);
this.Invoke(d, new object[] { msg });
}
else
{
string fMsg = String.Format("[{0}] {1} {2}", DateTime.Now.ToString("HH:mm:ss:ffff"), msg, Environment.NewLine);
try
{
if (msgBox.TextLength > 50000) msgBox.ResetText();
msgBox.AppendText(fMsg);
}
catch { };
}
}
private void GetEquity()
{
long rtn = tfcom.RetriveFMargin("I", account.Broker, account.NO, "", "");
if (rtn == -1)
MessageBox.Show("無查詢權限:請確認 分公司代號 與 帳戶號碼");
else
this.Text = "帳戶監視器:監視中";
}
private void SetTimer()
{
aTimer = new System.Timers.Timer(10000);
aTimer.Elapsed += OnTimedEvent;
aTimer.AutoReset = true;
aTimer.Enabled = true;
}
private void OnTimedEvent(object sender, ElapsedEventArgs e)
{
if (this.Text == "帳戶監視器:監視中")
GetEquity();
else
aTimer.Stop();
}
private void button_監視_Click(object sender, EventArgs e)
{
if (button_監視.Text == "監視中")
{
button_監視.Text = "開始監視";
this.Text = "帳戶監視器:已登入";
}
else if (this.Text == "帳戶監視器:已登入")
{
button_監視.Text = "監視中";
GetEquity();
SetTimer();
}
}
private void button_登入登出_Click(object sender, EventArgs e)
{
//WatcherInitialized();
if (button_登入登出.Text == "登出")
{
tfcom.Logout();
button_登入登出.Text = "登入";
this.Text = "帳戶監視器:未登入";
}
else
{
tfcom.LoginDirect(tfcom.ServerHost, tfcom.ServerPort, account.ID, account.Password, ' ');
button_登入登出.Text = "登出";
this.Text = "帳戶監視器:已登入";
}
}
}
}
namespace Watcher
{
partial class Form1
{
/// <summary>
/// 設計工具所需的變數。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清除任何使用中的資源。
/// </summary>
/// <param name="disposing">如果應該處置 Managed 資源則為 true,否則為 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form 設計工具產生的程式碼
/// <summary>
/// 此為設計工具支援所需的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
{
this.button_登入登出 = new System.Windows.Forms.Button();
this.button_監視 = new System.Windows.Forms.Button();
this.textBox_輸出路徑 = new System.Windows.Forms.TextBox();
this.msgBox = new System.Windows.Forms.TextBox();
this.label_輸出路徑 = new System.Windows.Forms.Label();
this.label_帳戶資料 = new System.Windows.Forms.Label();
this.textBox_帳戶資料檔 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// button_登入登出
//
this.button_登入登出.Font = new System.Drawing.Font("微軟正黑體", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
this.button_登入登出.Location = new System.Drawing.Point(305, 12);
this.button_登入登出.Name = "button_登入登出";
this.button_登入登出.Size = new System.Drawing.Size(85, 29);
this.button_登入登出.TabIndex = 0;
this.button_登入登出.Text = "登入";
this.button_登入登出.UseVisualStyleBackColor = true;
this.button_登入登出.Click += new System.EventHandler(this.button_登入登出_Click);
//
// button_監視
//
this.button_監視.Font = new System.Drawing.Font("微軟正黑體", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
this.button_監視.Location = new System.Drawing.Point(305, 47);
this.button_監視.Name = "button_監視";
this.button_監視.Size = new System.Drawing.Size(85, 32);
this.button_監視.TabIndex = 1;
this.button_監視.Text = "開始監視";
this.button_監視.UseVisualStyleBackColor = true;
this.button_監視.Click += new System.EventHandler(this.button_監視_Click);
//
// textBox_輸出路徑
//
this.textBox_輸出路徑.Font = new System.Drawing.Font("微軟正黑體", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
this.textBox_輸出路徑.Location = new System.Drawing.Point(77, 13);
this.textBox_輸出路徑.Name = "textBox_輸出路徑";
this.textBox_輸出路徑.Size = new System.Drawing.Size(222, 29);
this.textBox_輸出路徑.TabIndex = 2;
this.textBox_輸出路徑.Text = "F:\\TEMP\\";
//
// msgBox
//
this.msgBox.Font = new System.Drawing.Font("新細明體", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
this.msgBox.Location = new System.Drawing.Point(12, 92);
this.msgBox.Multiline = true;
this.msgBox.Name = "msgBox";
this.msgBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.msgBox.Size = new System.Drawing.Size(378, 158);
this.msgBox.TabIndex = 3;
//
// label_輸出路徑
//
this.label_輸出路徑.AutoSize = true;
this.label_輸出路徑.Font = new System.Drawing.Font("新細明體", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
this.label_輸出路徑.Location = new System.Drawing.Point(4, 20);
this.label_輸出路徑.Name = "label_輸出路徑";
this.label_輸出路徑.Size = new System.Drawing.Size(67, 15);
this.label_輸出路徑.TabIndex = 4;
this.label_輸出路徑.Text = "輸出路徑";
//
// label_帳戶資料
//
this.label_帳戶資料.AutoSize = true;
this.label_帳戶資料.Font = new System.Drawing.Font("新細明體", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
this.label_帳戶資料.Location = new System.Drawing.Point(4, 55);
this.label_帳戶資料.Name = "label_帳戶資料";
this.label_帳戶資料.Size = new System.Drawing.Size(67, 15);
this.label_帳戶資料.TabIndex = 6;
this.label_帳戶資料.Text = "帳戶資料";
//
// textBox_帳戶資料檔
//
this.textBox_帳戶資料檔.Font = new System.Drawing.Font("微軟正黑體", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(136)));
this.textBox_帳戶資料檔.Location = new System.Drawing.Point(77, 48);
this.textBox_帳戶資料檔.Name = "textBox_帳戶資料檔";
this.textBox_帳戶資料檔.Size = new System.Drawing.Size(222, 29);
this.textBox_帳戶資料檔.TabIndex = 5;
this.textBox_帳戶資料檔.Text = "account.ini";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(401, 262);
this.Controls.Add(this.label_帳戶資料);
this.Controls.Add(this.textBox_帳戶資料檔);
this.Controls.Add(this.label_輸出路徑);
this.Controls.Add(this.msgBox);
this.Controls.Add(this.textBox_輸出路徑);
this.Controls.Add(this.button_監視);
this.Controls.Add(this.button_登入登出);
this.Name = "Form1";
this.Text = "帳戶監視器";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button_登入登出;
private System.Windows.Forms.Button button_監視;
private System.Windows.Forms.TextBox textBox_輸出路徑;
private System.Windows.Forms.TextBox msgBox;
private System.Windows.Forms.Label label_輸出路徑;
private System.Windows.Forms.Label label_帳戶資料;
private System.Windows.Forms.TextBox textBox_帳戶資料檔;
}
}
<?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>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Watcher
{
public class Program
{
/// <summary>
/// 應用程式的主要進入點。
/// </summary>
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D3D9E694-7D10-4C25-B4BF-540B1F0A8837}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Watcher</RootNamespace>
<AssemblyName>Watcher</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Package">
<HintPath>C:\Users\YCTseng\Desktop\TradeCom-API-20150729\bin\Release\Package.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="TradeCom">
<HintPath>C:\Users\YCTseng\Desktop\TradeCom-API-20150729\bin\Debug\TradeCom.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Account.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="ClassDiagram1.cd" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.23107.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Watcher", "Watcher\Watcher.csproj", "{D3D9E694-7D10-4C25-B4BF-540B1F0A8837}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{D3D9E694-7D10-4C25-B4BF-540B1F0A8837}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3D9E694-7D10-4C25-B4BF-540B1F0A8837}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3D9E694-7D10-4C25-B4BF-540B1F0A8837}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3D9E694-7D10-4C25-B4BF-540B1F0A8837}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment