diff --git a/ISCamRecorder.sln b/ISCamRecorder.sln new file mode 100644 index 0000000..db2882b --- /dev/null +++ b/ISCamRecorder.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32210.238 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ISCamRecorder", "ISCamRecorder\ISCamRecorder.csproj", "{658721A6-6624-41BF-B195-60BCE3518241}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {658721A6-6624-41BF-B195-60BCE3518241}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {658721A6-6624-41BF-B195-60BCE3518241}.Debug|Any CPU.Build.0 = Debug|Any CPU + {658721A6-6624-41BF-B195-60BCE3518241}.Release|Any CPU.ActiveCfg = Release|Any CPU + {658721A6-6624-41BF-B195-60BCE3518241}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {86A29652-FB98-46FC-9918-C6A4E6FA5562} + EndGlobalSection +EndGlobal diff --git a/ISCamRecorder/App.config b/ISCamRecorder/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/ISCamRecorder/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ISCamRecorder/Form1.Designer.cs b/ISCamRecorder/Form1.Designer.cs new file mode 100644 index 0000000..da35692 --- /dev/null +++ b/ISCamRecorder/Form1.Designer.cs @@ -0,0 +1,137 @@ +namespace ISCamRecorder { + partial class Form1 { + /// + /// 必要なデザイナー変数です。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 使用中のリソースをすべてクリーンアップします。 + /// + /// マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。 + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows フォーム デザイナーで生成されたコード + + /// + /// デザイナー サポートに必要なメソッドです。このメソッドの内容を + /// コード エディターで変更しないでください。 + /// + private void InitializeComponent() { + this.icTop = new TIS.Imaging.ICImagingControl(); + this.button1 = new System.Windows.Forms.Button(); + this.icLeft = new TIS.Imaging.ICImagingControl(); + this.icFront = new TIS.Imaging.ICImagingControl(); + this.icRight = new TIS.Imaging.ICImagingControl(); + this.button2 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.icTop)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.icLeft)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.icFront)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.icRight)).BeginInit(); + this.SuspendLayout(); + // + // icTop + // + this.icTop.BackColor = System.Drawing.Color.White; + this.icTop.DeviceListChangedExecutionMode = TIS.Imaging.EventExecutionMode.Invoke; + this.icTop.DeviceLostExecutionMode = TIS.Imaging.EventExecutionMode.AsyncInvoke; + this.icTop.ImageAvailableExecutionMode = TIS.Imaging.EventExecutionMode.MultiThreaded; + this.icTop.LiveDisplayPosition = new System.Drawing.Point(0, 0); + this.icTop.Location = new System.Drawing.Point(293, 12); + this.icTop.Name = "icTop"; + this.icTop.Size = new System.Drawing.Size(262, 250); + this.icTop.TabIndex = 0; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(12, 12); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(102, 42); + this.button1.TabIndex = 1; + this.button1.Text = "Start Preview"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // icLeft + // + this.icLeft.BackColor = System.Drawing.Color.White; + this.icLeft.DeviceListChangedExecutionMode = TIS.Imaging.EventExecutionMode.Invoke; + this.icLeft.DeviceLostExecutionMode = TIS.Imaging.EventExecutionMode.AsyncInvoke; + this.icLeft.ImageAvailableExecutionMode = TIS.Imaging.EventExecutionMode.MultiThreaded; + this.icLeft.LiveDisplayPosition = new System.Drawing.Point(0, 0); + this.icLeft.Location = new System.Drawing.Point(12, 268); + this.icLeft.Name = "icLeft"; + this.icLeft.Size = new System.Drawing.Size(262, 250); + this.icLeft.TabIndex = 2; + // + // icFront + // + this.icFront.BackColor = System.Drawing.Color.White; + this.icFront.DeviceListChangedExecutionMode = TIS.Imaging.EventExecutionMode.Invoke; + this.icFront.DeviceLostExecutionMode = TIS.Imaging.EventExecutionMode.AsyncInvoke; + this.icFront.ImageAvailableExecutionMode = TIS.Imaging.EventExecutionMode.MultiThreaded; + this.icFront.LiveDisplayPosition = new System.Drawing.Point(0, 0); + this.icFront.Location = new System.Drawing.Point(293, 268); + this.icFront.Name = "icFront"; + this.icFront.Size = new System.Drawing.Size(262, 250); + this.icFront.TabIndex = 3; + // + // icRight + // + this.icRight.BackColor = System.Drawing.Color.White; + this.icRight.DeviceListChangedExecutionMode = TIS.Imaging.EventExecutionMode.Invoke; + this.icRight.DeviceLostExecutionMode = TIS.Imaging.EventExecutionMode.AsyncInvoke; + this.icRight.ImageAvailableExecutionMode = TIS.Imaging.EventExecutionMode.MultiThreaded; + this.icRight.LiveDisplayPosition = new System.Drawing.Point(0, 0); + this.icRight.Location = new System.Drawing.Point(573, 268); + this.icRight.Name = "icRight"; + this.icRight.Size = new System.Drawing.Size(262, 250); + this.icRight.TabIndex = 4; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(131, 12); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(102, 42); + this.button2.TabIndex = 5; + this.button2.Text = "Property"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(849, 531); + this.Controls.Add(this.button2); + this.Controls.Add(this.icRight); + this.Controls.Add(this.icFront); + this.Controls.Add(this.icLeft); + this.Controls.Add(this.button1); + this.Controls.Add(this.icTop); + this.Name = "Form1"; + this.Text = "Form1"; + ((System.ComponentModel.ISupportInitialize)(this.icTop)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.icLeft)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.icFront)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.icRight)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private TIS.Imaging.ICImagingControl icTop; + private System.Windows.Forms.Button button1; + private TIS.Imaging.ICImagingControl icLeft; + private TIS.Imaging.ICImagingControl icFront; + private TIS.Imaging.ICImagingControl icRight; + private System.Windows.Forms.Button button2; + } +} + diff --git a/ISCamRecorder/Form1.cs b/ISCamRecorder/Form1.cs new file mode 100644 index 0000000..5fc9473 --- /dev/null +++ b/ISCamRecorder/Form1.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Diagnostics; + +namespace ISCamRecorder { + public partial class Form1 : Form { + + //readonly int NUM_CAMS = 4; + //readonly string[] SERIALNO = new string[] { "9220016", "9220018", "9220021", "9220025" }; + readonly string CAMERA_FORMAT = "RGB24 (640x480)"; + readonly float FRAME_RATE = 30F; + List _iccs; + + public Form1() { + InitializeComponent(); + //icTop.Tag = "9220016"; + //icLeft.Tag = "9220018"; + //icFront.Tag = "9220021"; + //icRight.Tag = "9220025"; + icTop.Tag = "50020749"; + icLeft.Tag = "50020036"; + _iccs = new List { + // icTop, icLeft, icFront, icRight + icTop, icLeft + }; + } + + private void button1_Click(object sender, EventArgs e) { + + try { + var devs = _iccs[0].Devices; + //for (int id = 0; id < _iccs.Count; id++) { + // if (!_iccs[id].DeviceValid) { + // // カメラ接続 + // _iccs[id].Device = devs.FirstOrDefault( + // c => c.GetSerialNumber().Equals(_iccs[id].Tag)); + // } + + // if (_iccs[id].DeviceValid) { + // if (_iccs[id].LiveVideoRunning) _iccs[id].LiveStop(); + + // // 撮影条件設定 + // _iccs[id].DeviceFrameRate = _iccs[id].DeviceFrameRates.FirstOrDefault( + // c => (c > FRAME_RATE - 0.1F && c < FRAME_RATE + 0.1F)); + // _iccs[id].VideoFormat = _iccs[id].VideoFormats.FirstOrDefault( + // c => c.Name.Equals(CAMERA_FORMAT)); + // // カメラ設定読み込み + // _iccs[id].LoadDeviceStateFromFile($"config.xml", false); + + // // プレビュー設定 + // _iccs[id].LiveDisplayDefault = false; + // _iccs[id].LiveDisplayHeight = icTop.Height; + // _iccs[id].LiveDisplayWidth = icTop.Width; + // _iccs[id].LiveStart(); + // } + //} + _iccs.ForEach(ic => { + if (!ic.DeviceValid) { + // カメラ接続 + ic.Device = devs.FirstOrDefault( + c => c.GetSerialNumber().Equals(ic.Tag)); + } + + if (ic.DeviceValid) { + if (ic.LiveVideoRunning) ic.LiveStop(); + + // 撮影条件設定 + //ic.VideoFormat = ic.VideoFormats.FirstOrDefault( + // c => c.Name.Equals(CAMERA_FORMAT)); + //ic.DeviceFrameRate = ic.DeviceFrameRates.FirstOrDefault( + // c => (c > FRAME_RATE - 0.1F && c < FRAME_RATE + 0.1F)); + // カメラ設定読み込み + ic.LoadDeviceState(ICCFImport.ICCFImport.Import( + $"dfk42buc03.iccf"), false); + + // プレビュー設定 + ic.LiveDisplayDefault = false; + ic.LiveDisplayHeight = icTop.Height; + ic.LiveDisplayWidth = icTop.Width; + ic.LiveStart(); + } + }); + } catch (TIS.Imaging.ICException iex) { + MessageBox.Show("Import of ICCF file failed:\n" + iex.Message, + "Import IC Capture File", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + + private void button2_Click(object sender, EventArgs e) { + _iccs.ForEach(ic => ic.LiveStop()); + _iccs[0].ShowPropertyDialog(); + var setting = _iccs[0].SaveDeviceState(); + _iccs.Skip(1).ToList().ForEach(ic => { + ic.LoadDeviceState(setting, false); + }); + _iccs.ForEach(ic => ic.LiveStart()); + } + } +} diff --git a/ISCamRecorder/Form1.resx b/ISCamRecorder/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ISCamRecorder/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ISCamRecorder/ICCFImport.cs b/ISCamRecorder/ICCFImport.cs new file mode 100644 index 0000000..bdd5587 --- /dev/null +++ b/ISCamRecorder/ICCFImport.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml; +using TIS.Imaging; + +namespace ICCFImport +{ + class ICCFImport + { + private static void AddXmlAttribute(XmlDocument xmldoc, XmlNode xmlnode, string Name, string Value) + { + XmlAttribute newAttribute = xmldoc.CreateAttribute(Name); + newAttribute.Value = Value; + xmlnode.Attributes.Append(newAttribute); + } + + public static string Import(string ICCFFileName) + { + return Import(ICCFFileName, ""); + } + + public static string Import(string ICCFFileName, string UniqueDevice) + { + bool deviceimported = false; + + XmlDocument xmldoc = new XmlDocument(); + XmlNodeList xmlnode; + + XmlDocument device_xml = new XmlDocument(); + XmlNode deviceroot = device_xml.CreateElement("device_state"); + + string AllowedNames = "videoformat fps vcdproperties"; + + xmldoc.Load(ICCFFileName); + xmlnode = xmldoc.GetElementsByTagName("devices"); + + AddXmlAttribute(device_xml, deviceroot, "libver", "3.4"); + AddXmlAttribute(device_xml, deviceroot, "filemajor", "1"); + AddXmlAttribute(device_xml, deviceroot, "fileminor", "0"); + + device_xml.AppendChild(deviceroot); + + for (int i = 0; i < xmlnode.Count; i++) + { + for (int d = 0; d < xmlnode[i].ChildNodes.Count && !deviceimported; d++) + { + if (xmlnode[i].ChildNodes[d].Name == "device") + { + + if (CheckForDeviceName(UniqueDevice, xmlnode, i, d)) + { + XmlNode newdevicenode = device_xml.CreateElement("device"); + AddXmlAttribute(device_xml, newdevicenode, "name", xmlnode[i].ChildNodes[d].Attributes["name"].Value.ToString()); + deviceroot.AppendChild(newdevicenode); + + for (int o = 0; o < xmlnode[i].ChildNodes[d].ChildNodes.Count; o++) + { + if (xmlnode[i].ChildNodes[d].ChildNodes[o].Name == "unique") + { + AddXmlAttribute(device_xml, newdevicenode, "unique_name", xmlnode[i].ChildNodes[d].ChildNodes[o].InnerText); + } + else + { + if (AllowedNames.Contains(xmlnode[i].ChildNodes[d].ChildNodes[o].Name)) + { + if (xmlnode[i].ChildNodes[d].ChildNodes[o].Name == "vcdproperties") + newdevicenode.AppendChild(device_xml.ImportNode(xmlnode[i].ChildNodes[d].ChildNodes[o].ChildNodes[0], true)); + else + newdevicenode.AppendChild(device_xml.ImportNode(xmlnode[i].ChildNodes[d].ChildNodes[o], true)); + } + } + } + + deviceimported = true; + } + } + } + } + if (deviceimported) + return device_xml.InnerXml; + + return ""; + } + + + private static bool CheckForDeviceName(string UniqueDevice, XmlNodeList xmlnode, int i, int d) + { + bool ImportDevice = true; + + if (UniqueDevice != "") + { + ImportDevice = false; + for (int o = 0; o < xmlnode[i].ChildNodes[d].ChildNodes.Count; o++) + { + if (xmlnode[i].ChildNodes[d].ChildNodes[o].Name == "unique") + { + if (UniqueDevice == xmlnode[i].ChildNodes[d].ChildNodes[o].InnerText) + { + ImportDevice = true; + } + } + } + } + + return ImportDevice; + } + + public static List GetDeviceList(string ICCFFileName) + { + List Devlist = new List(); + + XmlDocument xmldoc = new XmlDocument(); + XmlNodeList xmlnode; + + xmldoc.Load(ICCFFileName); + xmlnode = xmldoc.GetElementsByTagName("devices"); + + for (int i = 0; i < xmlnode.Count; i++) + { + for (int d = 0; d < xmlnode[i].ChildNodes.Count; d++) + { + if (xmlnode[i].ChildNodes[d].Name == "device") + { + for (int o = 0; o < xmlnode[i].ChildNodes[d].ChildNodes.Count; o++) + { + if (xmlnode[i].ChildNodes[d].ChildNodes[o].Name == "unique") + { + Devlist.Add(xmlnode[i].ChildNodes[d].ChildNodes[o].InnerText); + } + } + } + } + } + return Devlist; + } + + } +} diff --git a/ISCamRecorder/ISCamRecorder.csproj b/ISCamRecorder/ISCamRecorder.csproj new file mode 100644 index 0000000..f510c1d --- /dev/null +++ b/ISCamRecorder/ISCamRecorder.csproj @@ -0,0 +1,88 @@ + + + + + Debug + AnyCPU + {658721A6-6624-41BF-B195-60BCE3518241} + WinExe + ISCamRecorder + ISCamRecorder + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + False + C:\Program Files (x86)\The Imaging Source Europe GmbH\IC Imaging Control 3.5 .NET Library\bin\x64\TIS.Imaging.ICImagingControl35.dll + + + + + Form + + + Form1.cs + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/ISCamRecorder/Program.cs b/ISCamRecorder/Program.cs new file mode 100644 index 0000000..95909ca --- /dev/null +++ b/ISCamRecorder/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ISCamRecorder { + internal static class Program { + /// + /// アプリケーションのメイン エントリ ポイントです。 + /// + [STAThread] + static void Main() { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/ISCamRecorder/Properties/AssemblyInfo.cs b/ISCamRecorder/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0087a0c --- /dev/null +++ b/ISCamRecorder/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 +// 制御されます。アセンブリに関連付けられている情報を変更するには、 +// これらの属性値を変更します。 +[assembly: AssemblyTitle("ISCamRecorder")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ISCamRecorder")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントから +// 参照できなくなります。COM からこのアセンブリ内の型にアクセスする必要がある場合は、 +// その型の ComVisible 属性を true に設定してください。 +[assembly: ComVisible(false)] + +// このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります +[assembly: Guid("658721a6-6624-41bf-b195-60bce3518241")] + +// アセンブリのバージョン情報は、以下の 4 つの値で構成されています: +// +// メジャー バージョン +// マイナー バージョン +// ビルド番号 +// リビジョン +// +// すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます +// 既定値にすることができます: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ISCamRecorder/Properties/Resources.Designer.cs b/ISCamRecorder/Properties/Resources.Designer.cs new file mode 100644 index 0000000..881d722 --- /dev/null +++ b/ISCamRecorder/Properties/Resources.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// このコードはツールによって生成されました。 +// ランタイム バージョン:4.0.30319.42000 +// +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 +// コードが再生成されるときに損失したりします +// +//------------------------------------------------------------------------------ + +namespace ISCamRecorder.Properties { + + + /// + /// ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。 + /// + // このクラスは StronglyTypedResourceBuilder クラスが ResGen + // または Visual Studio のようなツールを使用して自動生成されました。 + // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に + // ResGen を実行し直すか、または VS プロジェクトをリビルドします。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// このクラスで使用されるキャッシュされた ResourceManager インスタンスを返します。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if ((resourceMan == null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ISCamRecorder.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// すべてについて、現在のスレッドの CurrentUICulture プロパティをオーバーライドします + /// 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/ISCamRecorder/Properties/Resources.resx b/ISCamRecorder/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/ISCamRecorder/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ISCamRecorder/Properties/Settings.Designer.cs b/ISCamRecorder/Properties/Settings.Designer.cs new file mode 100644 index 0000000..8b279f8 --- /dev/null +++ b/ISCamRecorder/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ISCamRecorder.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/ISCamRecorder/Properties/Settings.settings b/ISCamRecorder/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/ISCamRecorder/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +