diff --git a/.vs/EasyHCI/v14/.suo b/.vs/EasyHCI/v14/.suo
new file mode 100644
index 0000000..5b5ae66
Binary files /dev/null and b/.vs/EasyHCI/v14/.suo differ
diff --git a/.vs/EasyHCI/v16/.suo b/.vs/EasyHCI/v16/.suo
new file mode 100644
index 0000000..8b57284
Binary files /dev/null and b/.vs/EasyHCI/v16/.suo differ
diff --git a/App.config b/App.config
new file mode 100644
index 0000000..bae5d6d
--- /dev/null
+++ b/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/EasyHCI.csproj b/EasyHCI.csproj
new file mode 100644
index 0000000..636e567
--- /dev/null
+++ b/EasyHCI.csproj
@@ -0,0 +1,162 @@
+
+
+
+
+
+ Debug
+ AnyCPU
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}
+ WinExe
+ Properties
+ EasyHCI
+ EasyHCI
+ v4.6.1
+ 512
+ true
+
+
+
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+ bin\x64\Debug\
+ DEBUG;TRACE
+ full
+ x64
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ bin\x64\Release\
+ TRACE
+ true
+ pdbonly
+ x64
+ prompt
+ MinimumRecommendedRules.ruleset
+ true
+
+
+ hangeul.ico
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ true
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ true
+
+
+ app.manifest
+
+
+
+ packages\Costura.Fody.4.1.0\lib\net40\Costura.dll
+ False
+
+
+ .\MaterialSkin.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ MainForm.cs
+
+
+
+
+ MainForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+ 이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EasyHCI.sln b/EasyHCI.sln
new file mode 100644
index 0000000..27f9222
--- /dev/null
+++ b/EasyHCI.sln
@@ -0,0 +1,37 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30709.132
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyHCI", "EasyHCI.csproj", "{F3EDD19B-1622-4C20-84AA-54C9C6596780}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Debug|x64.ActiveCfg = Debug|x64
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Debug|x64.Build.0 = Debug|x64
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Debug|x86.ActiveCfg = Debug|x86
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Debug|x86.Build.0 = Debug|x86
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Release|x64.ActiveCfg = Release|x64
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Release|x64.Build.0 = Release|x64
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Release|x86.ActiveCfg = Release|x86
+ {F3EDD19B-1622-4C20-84AA-54C9C6596780}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {3B48D44E-FC91-467E-A9F8-F58F9089D49B}
+ EndGlobalSection
+EndGlobal
diff --git a/FodyWeavers.xml b/FodyWeavers.xml
new file mode 100644
index 0000000..5029e70
--- /dev/null
+++ b/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/FodyWeavers.xsd b/FodyWeavers.xsd
new file mode 100644
index 0000000..44a5374
--- /dev/null
+++ b/FodyWeavers.xsd
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ The order of preloaded assemblies, delimited with line breaks.
+
+
+
+
+
+ This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
+
+
+
+
+ Controls if .pdbs for reference assemblies are also embedded.
+
+
+
+
+ Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
+
+
+
+
+ As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
+
+
+
+
+ Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
+
+
+
+
+ Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with |.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with |.
+
+
+
+
+ The order of preloaded assemblies, delimited with |.
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
new file mode 100644
index 0000000..0c83017
--- /dev/null
+++ b/MainForm.Designer.cs
@@ -0,0 +1,1003 @@
+namespace EasyHCI
+{
+ partial class MainForm
+ {
+ ///
+ /// 필수 디자이너 변수입니다.
+ ///
+ 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 Form 디자이너에서 생성한 코드
+
+ ///
+ /// 디자이너 지원에 필요한 메서드입니다.
+ /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+ this.Tip1 = new System.Windows.Forms.ToolTip(this.components);
+ this.goblog = new System.Windows.Forms.LinkLabel();
+ this.mtHide = new MaterialSkin.Controls.MaterialCheckBox();
+ this.lb2 = new System.Windows.Forms.Label();
+ this.pbUse = new MaterialSkin.Controls.MaterialProgressBar();
+ this.TabSelector = new MaterialSkin.Controls.MaterialTabSelector();
+ this.TabMain = new MaterialSkin.Controls.MaterialTabControl();
+ this.Tab1 = new System.Windows.Forms.TabPage();
+ this.memGap = new System.Windows.Forms.Label();
+ this.elTime = new System.Windows.Forms.Label();
+ this.tmemText = new System.Windows.Forms.TextBox();
+ this.stopTest = new MaterialSkin.Controls.MaterialRaisedButton();
+ this.passRate = new System.Windows.Forms.Label();
+ this.LView1 = new System.Windows.Forms.ListView();
+ this.ColumnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.ColumnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+ this.LB1 = new System.Windows.Forms.Label();
+ this.goTest = new MaterialSkin.Controls.MaterialRaisedButton();
+ this.Tab3 = new System.Windows.Forms.TabPage();
+ this.Panel1 = new System.Windows.Forms.Panel();
+ this.AutoHCIM = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.yLLB = new System.Windows.Forms.Label();
+ this.lvlb = new System.Windows.Forms.Label();
+ this.transparent = new System.Windows.Forms.HScrollBar();
+ this.label1 = new System.Windows.Forms.Label();
+ this.instant = new MaterialSkin.Controls.MaterialCheckBox();
+ this.YAuto = new MaterialSkin.Controls.MaterialRadioButton();
+ this.notAuto = new MaterialSkin.Controls.MaterialRadioButton();
+ this.pdL2 = new System.Windows.Forms.Label();
+ this.pdL1 = new System.Windows.Forms.Label();
+ this.BatchY = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.BatchX = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.yLB1 = new System.Windows.Forms.Label();
+ this.XLB1 = new System.Windows.Forms.Label();
+ this.LB31 = new System.Windows.Forms.Label();
+ this.closePC = new MaterialSkin.Controls.MaterialCheckBox();
+ this.closeMem = new MaterialSkin.Controls.MaterialCheckBox();
+ this.mdLB3 = new System.Windows.Forms.Label();
+ this.OpenEM = new MaterialSkin.Controls.MaterialRaisedButton();
+ this.OpenPM = new MaterialSkin.Controls.MaterialRaisedButton();
+ this.musicRepeat = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.dsLB1 = new System.Windows.Forms.Label();
+ this.LB123 = new System.Windows.Forms.Label();
+ this.capTime = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.HCINText = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.HCIMemory = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.HCIMax = new MaterialSkin.Controls.MaterialSingleLineTextField();
+ this.lb15 = new System.Windows.Forms.Label();
+ this.deLB0 = new System.Windows.Forms.Label();
+ this.OpenSCAP = new MaterialSkin.Controls.MaterialRaisedButton();
+ this.tLB1 = new System.Windows.Forms.Label();
+ this.capbyTime = new MaterialSkin.Controls.MaterialCheckBox();
+ this.capAfter = new MaterialSkin.Controls.MaterialCheckBox();
+ this.sLB2 = new System.Windows.Forms.Label();
+ this.sLB1 = new System.Windows.Forms.Label();
+ this.dLB2 = new System.Windows.Forms.Label();
+ this.dLB1 = new System.Windows.Forms.Label();
+ this.OpenFolder = new System.Windows.Forms.FolderBrowserDialog();
+ this.OpenFile = new System.Windows.Forms.OpenFileDialog();
+ this.tTimer = new System.Windows.Forms.Timer(this.components);
+ this.TabMain.SuspendLayout();
+ this.Tab1.SuspendLayout();
+ this.Tab3.SuspendLayout();
+ this.Panel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // goblog
+ //
+ this.goblog.ActiveLinkColor = System.Drawing.Color.White;
+ this.goblog.AutoSize = true;
+ this.goblog.BackColor = System.Drawing.Color.Transparent;
+ this.goblog.DisabledLinkColor = System.Drawing.Color.White;
+ this.goblog.LinkColor = System.Drawing.Color.White;
+ this.goblog.Location = new System.Drawing.Point(135, 38);
+ this.goblog.Name = "goblog";
+ this.goblog.Size = new System.Drawing.Size(96, 12);
+ this.goblog.TabIndex = 6;
+ this.goblog.TabStop = true;
+ this.goblog.Text = "Github: bumju08";
+ this.Tip1.SetToolTip(this.goblog, "제작자: debugprov@naver.com");
+ this.goblog.VisitedLinkColor = System.Drawing.Color.White;
+ this.goblog.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.goblog_LinkClicked);
+ this.goblog.MouseMove += new System.Windows.Forms.MouseEventHandler(this.goblog_MouseMove);
+ //
+ // mtHide
+ //
+ this.mtHide.AutoSize = true;
+ this.mtHide.Checked = true;
+ this.mtHide.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.mtHide.Depth = 0;
+ this.mtHide.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.mtHide.Location = new System.Drawing.Point(22, 58);
+ this.mtHide.Margin = new System.Windows.Forms.Padding(0);
+ this.mtHide.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.mtHide.MouseState = MaterialSkin.MouseState.HOVER;
+ this.mtHide.Name = "mtHide";
+ this.mtHide.Ripple = true;
+ this.mtHide.Size = new System.Drawing.Size(120, 30);
+ this.mtHide.TabIndex = 29;
+ this.mtHide.Text = "백그라운드 실행";
+ this.mtHide.UseVisualStyleBackColor = true;
+ //
+ // lb2
+ //
+ this.lb2.AutoSize = true;
+ this.lb2.Location = new System.Drawing.Point(277, 70);
+ this.lb2.Name = "lb2";
+ this.lb2.Size = new System.Drawing.Size(37, 12);
+ this.lb2.TabIndex = 58;
+ this.lb2.Text = "98.9%";
+ //
+ // pbUse
+ //
+ this.pbUse.Depth = 0;
+ this.pbUse.Location = new System.Drawing.Point(109, 74);
+ this.pbUse.MouseState = MaterialSkin.MouseState.HOVER;
+ this.pbUse.Name = "pbUse";
+ this.pbUse.Size = new System.Drawing.Size(157, 5);
+ this.pbUse.TabIndex = 57;
+ this.pbUse.Value = 30;
+ //
+ // TabSelector
+ //
+ this.TabSelector.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.TabSelector.BaseTabControl = this.TabMain;
+ this.TabSelector.Depth = 0;
+ this.TabSelector.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.TabSelector.Location = new System.Drawing.Point(-13, 61);
+ this.TabSelector.MouseState = MaterialSkin.MouseState.HOVER;
+ this.TabSelector.Name = "TabSelector";
+ this.TabSelector.Size = new System.Drawing.Size(348, 28);
+ this.TabSelector.TabIndex = 19;
+ this.TabSelector.Text = "materialTabSelector2";
+ //
+ // TabMain
+ //
+ this.TabMain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.TabMain.Controls.Add(this.Tab1);
+ this.TabMain.Controls.Add(this.Tab3);
+ this.TabMain.Depth = 0;
+ this.TabMain.Location = new System.Drawing.Point(2, 95);
+ this.TabMain.MouseState = MaterialSkin.MouseState.HOVER;
+ this.TabMain.Multiline = true;
+ this.TabMain.Name = "TabMain";
+ this.TabMain.SelectedIndex = 0;
+ this.TabMain.Size = new System.Drawing.Size(318, 524);
+ this.TabMain.TabIndex = 20;
+ //
+ // Tab1
+ //
+ this.Tab1.Controls.Add(this.memGap);
+ this.Tab1.Controls.Add(this.elTime);
+ this.Tab1.Controls.Add(this.tmemText);
+ this.Tab1.Controls.Add(this.stopTest);
+ this.Tab1.Controls.Add(this.passRate);
+ this.Tab1.Controls.Add(this.LView1);
+ this.Tab1.Controls.Add(this.lb2);
+ this.Tab1.Controls.Add(this.pbUse);
+ this.Tab1.Controls.Add(this.LB1);
+ this.Tab1.Controls.Add(this.goTest);
+ this.Tab1.Location = new System.Drawing.Point(4, 22);
+ this.Tab1.Name = "Tab1";
+ this.Tab1.Padding = new System.Windows.Forms.Padding(3);
+ this.Tab1.Size = new System.Drawing.Size(310, 498);
+ this.Tab1.TabIndex = 5;
+ this.Tab1.Text = "테스트";
+ this.Tab1.UseVisualStyleBackColor = true;
+ //
+ // memGap
+ //
+ this.memGap.AutoSize = true;
+ this.memGap.Location = new System.Drawing.Point(95, 325);
+ this.memGap.Name = "memGap";
+ this.memGap.Size = new System.Drawing.Size(53, 12);
+ this.memGap.TabIndex = 64;
+ this.memGap.Text = "편차: 0%";
+ //
+ // elTime
+ //
+ this.elTime.AutoSize = true;
+ this.elTime.Location = new System.Drawing.Point(175, 325);
+ this.elTime.Name = "elTime";
+ this.elTime.Size = new System.Drawing.Size(129, 12);
+ this.elTime.TabIndex = 63;
+ this.elTime.Text = "경과: 00시간 00분 00초";
+ //
+ // tmemText
+ //
+ this.tmemText.Location = new System.Drawing.Point(140, 19);
+ this.tmemText.Name = "tmemText";
+ this.tmemText.Size = new System.Drawing.Size(41, 21);
+ this.tmemText.TabIndex = 61;
+ this.tmemText.Text = "3500";
+ //
+ // stopTest
+ //
+ this.stopTest.AutoSize = true;
+ this.stopTest.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.stopTest.BackColor = System.Drawing.Color.Transparent;
+ this.stopTest.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.stopTest.Depth = 0;
+ this.stopTest.Enabled = false;
+ this.stopTest.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.stopTest.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.stopTest.Icon = null;
+ this.stopTest.Location = new System.Drawing.Point(184, 6);
+ this.stopTest.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.stopTest.MouseState = MaterialSkin.MouseState.HOVER;
+ this.stopTest.Name = "stopTest";
+ this.stopTest.Primary = true;
+ this.stopTest.Size = new System.Drawing.Size(128, 36);
+ this.stopTest.TabIndex = 60;
+ this.stopTest.Text = "테스트 중단";
+ this.stopTest.UseVisualStyleBackColor = false;
+ this.stopTest.Click += new System.EventHandler(this.stopTest_Click);
+ //
+ // passRate
+ //
+ this.passRate.AutoSize = true;
+ this.passRate.Location = new System.Drawing.Point(6, 325);
+ this.passRate.Name = "passRate";
+ this.passRate.Size = new System.Drawing.Size(65, 12);
+ this.passRate.TabIndex = 62;
+ this.passRate.Text = "통과율: 0%";
+ //
+ // LView1
+ //
+ this.LView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+ this.ColumnHeader3,
+ this.ColumnHeader4});
+ this.LView1.Font = new System.Drawing.Font("맑은 고딕", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.LView1.FullRowSelect = true;
+ this.LView1.GridLines = true;
+ this.LView1.HideSelection = false;
+ this.LView1.Location = new System.Drawing.Point(3, 93);
+ this.LView1.Name = "LView1";
+ this.LView1.Size = new System.Drawing.Size(313, 229);
+ this.LView1.TabIndex = 59;
+ this.LView1.UseCompatibleStateImageBehavior = false;
+ this.LView1.View = System.Windows.Forms.View.Details;
+ //
+ // ColumnHeader3
+ //
+ this.ColumnHeader3.Text = "통과율";
+ this.ColumnHeader3.Width = 180;
+ //
+ // ColumnHeader4
+ //
+ this.ColumnHeader4.Text = "오류";
+ this.ColumnHeader4.Width = 65;
+ //
+ // LB1
+ //
+ this.LB1.AutoSize = true;
+ this.LB1.Location = new System.Drawing.Point(6, 70);
+ this.LB1.Name = "LB1";
+ this.LB1.Size = new System.Drawing.Size(97, 12);
+ this.LB1.TabIndex = 56;
+ this.LB1.Text = "사용중인 메모리:";
+ //
+ // goTest
+ //
+ this.goTest.AutoSize = true;
+ this.goTest.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.goTest.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.goTest.Depth = 0;
+ this.goTest.Font = new System.Drawing.Font("맑은 고딕", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.goTest.Icon = null;
+ this.goTest.Location = new System.Drawing.Point(6, 6);
+ this.goTest.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.goTest.MouseState = MaterialSkin.MouseState.HOVER;
+ this.goTest.Name = "goTest";
+ this.goTest.Primary = true;
+ this.goTest.Size = new System.Drawing.Size(128, 36);
+ this.goTest.TabIndex = 9;
+ this.goTest.Text = "테스트 시작";
+ this.goTest.UseVisualStyleBackColor = true;
+ this.goTest.Click += new System.EventHandler(this.goTest_Click);
+ //
+ // Tab3
+ //
+ this.Tab3.Controls.Add(this.Panel1);
+ this.Tab3.Location = new System.Drawing.Point(4, 22);
+ this.Tab3.Name = "Tab3";
+ this.Tab3.Padding = new System.Windows.Forms.Padding(3);
+ this.Tab3.Size = new System.Drawing.Size(310, 498);
+ this.Tab3.TabIndex = 7;
+ this.Tab3.Text = "설정";
+ this.Tab3.UseVisualStyleBackColor = true;
+ //
+ // Panel1
+ //
+ this.Panel1.AutoScroll = true;
+ this.Panel1.BackColor = System.Drawing.Color.White;
+ this.Panel1.Controls.Add(this.AutoHCIM);
+ this.Panel1.Controls.Add(this.yLLB);
+ this.Panel1.Controls.Add(this.lvlb);
+ this.Panel1.Controls.Add(this.transparent);
+ this.Panel1.Controls.Add(this.label1);
+ this.Panel1.Controls.Add(this.instant);
+ this.Panel1.Controls.Add(this.YAuto);
+ this.Panel1.Controls.Add(this.notAuto);
+ this.Panel1.Controls.Add(this.pdL2);
+ this.Panel1.Controls.Add(this.pdL1);
+ this.Panel1.Controls.Add(this.BatchY);
+ this.Panel1.Controls.Add(this.BatchX);
+ this.Panel1.Controls.Add(this.yLB1);
+ this.Panel1.Controls.Add(this.XLB1);
+ this.Panel1.Controls.Add(this.LB31);
+ this.Panel1.Controls.Add(this.closePC);
+ this.Panel1.Controls.Add(this.closeMem);
+ this.Panel1.Controls.Add(this.mdLB3);
+ this.Panel1.Controls.Add(this.OpenEM);
+ this.Panel1.Controls.Add(this.OpenPM);
+ this.Panel1.Controls.Add(this.musicRepeat);
+ this.Panel1.Controls.Add(this.dsLB1);
+ this.Panel1.Controls.Add(this.LB123);
+ this.Panel1.Controls.Add(this.capTime);
+ this.Panel1.Controls.Add(this.HCINText);
+ this.Panel1.Controls.Add(this.HCIMemory);
+ this.Panel1.Controls.Add(this.HCIMax);
+ this.Panel1.Controls.Add(this.lb15);
+ this.Panel1.Controls.Add(this.deLB0);
+ this.Panel1.Controls.Add(this.mtHide);
+ this.Panel1.Controls.Add(this.OpenSCAP);
+ this.Panel1.Controls.Add(this.tLB1);
+ this.Panel1.Controls.Add(this.capbyTime);
+ this.Panel1.Controls.Add(this.capAfter);
+ this.Panel1.Controls.Add(this.sLB2);
+ this.Panel1.Controls.Add(this.sLB1);
+ this.Panel1.Controls.Add(this.dLB2);
+ this.Panel1.Controls.Add(this.dLB1);
+ this.Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.Panel1.Location = new System.Drawing.Point(3, 3);
+ this.Panel1.Name = "Panel1";
+ this.Panel1.Size = new System.Drawing.Size(304, 492);
+ this.Panel1.TabIndex = 13;
+ //
+ // AutoHCIM
+ //
+ this.AutoHCIM.Depth = 0;
+ this.AutoHCIM.Hint = "";
+ this.AutoHCIM.Location = new System.Drawing.Point(143, 121);
+ this.AutoHCIM.MaxLength = 6;
+ this.AutoHCIM.MouseState = MaterialSkin.MouseState.HOVER;
+ this.AutoHCIM.Name = "AutoHCIM";
+ this.AutoHCIM.PasswordChar = '\0';
+ this.AutoHCIM.SelectedText = "";
+ this.AutoHCIM.SelectionLength = 0;
+ this.AutoHCIM.SelectionStart = 0;
+ this.AutoHCIM.Size = new System.Drawing.Size(38, 19);
+ this.AutoHCIM.TabIndex = 60;
+ this.AutoHCIM.TabStop = false;
+ this.AutoHCIM.Text = "275";
+ this.AutoHCIM.UseSystemPasswordChar = false;
+ this.AutoHCIM.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.AutoHCIM_KeyPress);
+ //
+ // yLLB
+ //
+ this.yLLB.AutoSize = true;
+ this.yLLB.Location = new System.Drawing.Point(187, 122);
+ this.yLLB.Name = "yLLB";
+ this.yLLB.Size = new System.Drawing.Size(64, 12);
+ this.yLLB.TabIndex = 59;
+ this.yLLB.Text = "MB 남기기";
+ //
+ // lvlb
+ //
+ this.lvlb.AutoSize = true;
+ this.lvlb.Location = new System.Drawing.Point(12, 841);
+ this.lvlb.Name = "lvlb";
+ this.lvlb.Size = new System.Drawing.Size(65, 12);
+ this.lvlb.TabIndex = 58;
+ this.lvlb.Text = "크기조절용";
+ this.lvlb.Visible = false;
+ //
+ // transparent
+ //
+ this.transparent.Location = new System.Drawing.Point(123, 803);
+ this.transparent.Maximum = 109;
+ this.transparent.Minimum = 30;
+ this.transparent.Name = "transparent";
+ this.transparent.Size = new System.Drawing.Size(140, 17);
+ this.transparent.TabIndex = 57;
+ this.transparent.Value = 90;
+ this.transparent.ValueChanged += new System.EventHandler(this.transparent_ValueChanged);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(40, 805);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(73, 12);
+ this.label1.TabIndex = 55;
+ this.label1.Text = "투명도 조절:";
+ //
+ // instant
+ //
+ this.instant.AutoSize = true;
+ this.instant.Checked = true;
+ this.instant.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.instant.Depth = 0;
+ this.instant.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.instant.Location = new System.Drawing.Point(37, 747);
+ this.instant.Margin = new System.Windows.Forms.Padding(0);
+ this.instant.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.instant.MouseState = MaterialSkin.MouseState.HOVER;
+ this.instant.Name = "instant";
+ this.instant.Ripple = true;
+ this.instant.Size = new System.Drawing.Size(207, 30);
+ this.instant.TabIndex = 54;
+ this.instant.Text = "프로그램이 켜질 때 즉시 테스트";
+ this.instant.UseVisualStyleBackColor = true;
+ //
+ // YAuto
+ //
+ this.YAuto.AutoSize = true;
+ this.YAuto.Checked = true;
+ this.YAuto.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.YAuto.Depth = 0;
+ this.YAuto.Font = new System.Drawing.Font("Roboto", 10F);
+ this.YAuto.Location = new System.Drawing.Point(127, 88);
+ this.YAuto.Margin = new System.Windows.Forms.Padding(0);
+ this.YAuto.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.YAuto.MouseState = MaterialSkin.MouseState.HOVER;
+ this.YAuto.Name = "YAuto";
+ this.YAuto.Ripple = true;
+ this.YAuto.Size = new System.Drawing.Size(59, 30);
+ this.YAuto.TabIndex = 52;
+ this.YAuto.TabStop = true;
+ this.YAuto.Text = "자동";
+ this.YAuto.UseVisualStyleBackColor = true;
+ this.YAuto.Click += new System.EventHandler(this.YAuto_Click);
+ //
+ // notAuto
+ //
+ this.notAuto.AutoSize = true;
+ this.notAuto.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.notAuto.Depth = 0;
+ this.notAuto.Font = new System.Drawing.Font("Roboto", 10F);
+ this.notAuto.Location = new System.Drawing.Point(22, 88);
+ this.notAuto.Margin = new System.Windows.Forms.Padding(0);
+ this.notAuto.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.notAuto.MouseState = MaterialSkin.MouseState.HOVER;
+ this.notAuto.Name = "notAuto";
+ this.notAuto.Ripple = true;
+ this.notAuto.Size = new System.Drawing.Size(59, 30);
+ this.notAuto.TabIndex = 51;
+ this.notAuto.Text = "수동";
+ this.notAuto.UseVisualStyleBackColor = true;
+ this.notAuto.Click += new System.EventHandler(this.notAuto_Click);
+ //
+ // pdL2
+ //
+ this.pdL2.AutoSize = true;
+ this.pdL2.Location = new System.Drawing.Point(172, 725);
+ this.pdL2.Name = "pdL2";
+ this.pdL2.Size = new System.Drawing.Size(29, 12);
+ this.pdL2.TabIndex = 50;
+ this.pdL2.Text = "픽셀";
+ //
+ // pdL1
+ //
+ this.pdL1.AutoSize = true;
+ this.pdL1.Location = new System.Drawing.Point(172, 700);
+ this.pdL1.Name = "pdL1";
+ this.pdL1.Size = new System.Drawing.Size(29, 12);
+ this.pdL1.TabIndex = 49;
+ this.pdL1.Text = "픽셀";
+ //
+ // BatchY
+ //
+ this.BatchY.Depth = 0;
+ this.BatchY.Hint = "";
+ this.BatchY.Location = new System.Drawing.Point(147, 725);
+ this.BatchY.MaxLength = 3;
+ this.BatchY.MouseState = MaterialSkin.MouseState.HOVER;
+ this.BatchY.Name = "BatchY";
+ this.BatchY.PasswordChar = '\0';
+ this.BatchY.SelectedText = "";
+ this.BatchY.SelectionLength = 0;
+ this.BatchY.SelectionStart = 0;
+ this.BatchY.Size = new System.Drawing.Size(23, 19);
+ this.BatchY.TabIndex = 48;
+ this.BatchY.TabStop = false;
+ this.BatchY.Text = "230";
+ this.BatchY.UseSystemPasswordChar = false;
+ this.BatchY.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.BatchY_KeyPress);
+ //
+ // BatchX
+ //
+ this.BatchX.Depth = 0;
+ this.BatchX.Hint = "";
+ this.BatchX.Location = new System.Drawing.Point(147, 700);
+ this.BatchX.MaxLength = 3;
+ this.BatchX.MouseState = MaterialSkin.MouseState.HOVER;
+ this.BatchX.Name = "BatchX";
+ this.BatchX.PasswordChar = '\0';
+ this.BatchX.SelectedText = "";
+ this.BatchX.SelectionLength = 0;
+ this.BatchX.SelectionStart = 0;
+ this.BatchX.Size = new System.Drawing.Size(23, 19);
+ this.BatchX.TabIndex = 47;
+ this.BatchX.TabStop = false;
+ this.BatchX.Text = "240";
+ this.BatchX.UseSystemPasswordChar = false;
+ this.BatchX.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.BatchX_KeyPress);
+ //
+ // yLB1
+ //
+ this.yLB1.AutoSize = true;
+ this.yLB1.Location = new System.Drawing.Point(40, 725);
+ this.yLB1.Name = "yLB1";
+ this.yLB1.Size = new System.Drawing.Size(101, 12);
+ this.yLB1.TabIndex = 46;
+ this.yLB1.Text = "창 Y축 배치 간격:";
+ //
+ // XLB1
+ //
+ this.XLB1.AutoSize = true;
+ this.XLB1.Location = new System.Drawing.Point(40, 700);
+ this.XLB1.Name = "XLB1";
+ this.XLB1.Size = new System.Drawing.Size(101, 12);
+ this.XLB1.TabIndex = 45;
+ this.XLB1.Text = "창 X축 배치 간격:";
+ //
+ // LB31
+ //
+ this.LB31.AutoSize = true;
+ this.LB31.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.LB31.ForeColor = System.Drawing.Color.Blue;
+ this.LB31.Location = new System.Drawing.Point(15, 670);
+ this.LB31.Name = "LB31";
+ this.LB31.Size = new System.Drawing.Size(42, 21);
+ this.LB31.TabIndex = 44;
+ this.LB31.Text = "기타";
+ //
+ // closePC
+ //
+ this.closePC.AutoSize = true;
+ this.closePC.Depth = 0;
+ this.closePC.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.closePC.Location = new System.Drawing.Point(32, 600);
+ this.closePC.Margin = new System.Windows.Forms.Padding(0);
+ this.closePC.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.closePC.MouseState = MaterialSkin.MouseState.HOVER;
+ this.closePC.Name = "closePC";
+ this.closePC.Ripple = true;
+ this.closePC.Size = new System.Drawing.Size(75, 30);
+ this.closePC.TabIndex = 43;
+ this.closePC.Text = "PC 종료";
+ this.closePC.UseVisualStyleBackColor = true;
+ this.closePC.Click += new System.EventHandler(this.closePC_Click);
+ //
+ // closeMem
+ //
+ this.closeMem.AutoSize = true;
+ this.closeMem.Checked = true;
+ this.closeMem.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.closeMem.Depth = 0;
+ this.closeMem.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.closeMem.Location = new System.Drawing.Point(32, 570);
+ this.closeMem.Margin = new System.Windows.Forms.Padding(0);
+ this.closeMem.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.closeMem.MouseState = MaterialSkin.MouseState.HOVER;
+ this.closeMem.Name = "closeMem";
+ this.closeMem.Ripple = true;
+ this.closeMem.Size = new System.Drawing.Size(108, 30);
+ this.closeMem.TabIndex = 42;
+ this.closeMem.Text = "멤테스트 종료";
+ this.closeMem.UseVisualStyleBackColor = true;
+ this.closeMem.Click += new System.EventHandler(this.closeMem_Click);
+ //
+ // mdLB3
+ //
+ this.mdLB3.AutoSize = true;
+ this.mdLB3.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.mdLB3.ForeColor = System.Drawing.Color.Blue;
+ this.mdLB3.Location = new System.Drawing.Point(10, 545);
+ this.mdLB3.Name = "mdLB3";
+ this.mdLB3.Size = new System.Drawing.Size(94, 21);
+ this.mdLB3.TabIndex = 41;
+ this.mdLB3.Text = "마지막 행동";
+ //
+ // OpenEM
+ //
+ this.OpenEM.AutoSize = true;
+ this.OpenEM.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.OpenEM.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.OpenEM.Depth = 0;
+ this.OpenEM.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.OpenEM.Icon = null;
+ this.OpenEM.Location = new System.Drawing.Point(37, 474);
+ this.OpenEM.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.OpenEM.MouseState = MaterialSkin.MouseState.HOVER;
+ this.OpenEM.Name = "OpenEM";
+ this.OpenEM.Primary = true;
+ this.OpenEM.Size = new System.Drawing.Size(152, 36);
+ this.OpenEM.TabIndex = 40;
+ this.OpenEM.Text = "오류 음악파일 경로설정";
+ this.OpenEM.UseVisualStyleBackColor = true;
+ this.OpenEM.Click += new System.EventHandler(this.OpenEM_Click);
+ //
+ // OpenPM
+ //
+ this.OpenPM.AutoSize = true;
+ this.OpenPM.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.OpenPM.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.OpenPM.Depth = 0;
+ this.OpenPM.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.OpenPM.Icon = null;
+ this.OpenPM.Location = new System.Drawing.Point(37, 435);
+ this.OpenPM.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.OpenPM.MouseState = MaterialSkin.MouseState.HOVER;
+ this.OpenPM.Name = "OpenPM";
+ this.OpenPM.Primary = true;
+ this.OpenPM.Size = new System.Drawing.Size(152, 36);
+ this.OpenPM.TabIndex = 39;
+ this.OpenPM.Text = "통과 음악파일 경로설정";
+ this.OpenPM.UseVisualStyleBackColor = true;
+ this.OpenPM.Click += new System.EventHandler(this.OpenPM_Click);
+ //
+ // musicRepeat
+ //
+ this.musicRepeat.Depth = 0;
+ this.musicRepeat.Hint = "";
+ this.musicRepeat.Location = new System.Drawing.Point(37, 407);
+ this.musicRepeat.MaxLength = 3;
+ this.musicRepeat.MouseState = MaterialSkin.MouseState.HOVER;
+ this.musicRepeat.Name = "musicRepeat";
+ this.musicRepeat.PasswordChar = '\0';
+ this.musicRepeat.SelectedText = "";
+ this.musicRepeat.SelectionLength = 0;
+ this.musicRepeat.SelectionStart = 0;
+ this.musicRepeat.Size = new System.Drawing.Size(23, 19);
+ this.musicRepeat.TabIndex = 38;
+ this.musicRepeat.TabStop = false;
+ this.musicRepeat.Text = "3";
+ this.musicRepeat.UseSystemPasswordChar = false;
+ this.musicRepeat.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.musicRepeat_KeyPress);
+ //
+ // dsLB1
+ //
+ this.dsLB1.AutoSize = true;
+ this.dsLB1.Location = new System.Drawing.Point(64, 407);
+ this.dsLB1.Name = "dsLB1";
+ this.dsLB1.Size = new System.Drawing.Size(92, 12);
+ this.dsLB1.TabIndex = 37;
+ this.dsLB1.Text = "회 재생 (0~999)";
+ //
+ // LB123
+ //
+ this.LB123.AutoSize = true;
+ this.LB123.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.LB123.ForeColor = System.Drawing.Color.Blue;
+ this.LB123.Location = new System.Drawing.Point(10, 376);
+ this.LB123.Name = "LB123";
+ this.LB123.Size = new System.Drawing.Size(78, 21);
+ this.LB123.TabIndex = 36;
+ this.LB123.Text = "소리 알림";
+ //
+ // capTime
+ //
+ this.capTime.Depth = 0;
+ this.capTime.Enabled = false;
+ this.capTime.Hint = "";
+ this.capTime.Location = new System.Drawing.Point(143, 267);
+ this.capTime.MaxLength = 3;
+ this.capTime.MouseState = MaterialSkin.MouseState.HOVER;
+ this.capTime.Name = "capTime";
+ this.capTime.PasswordChar = '\0';
+ this.capTime.SelectedText = "";
+ this.capTime.SelectionLength = 0;
+ this.capTime.SelectionStart = 0;
+ this.capTime.Size = new System.Drawing.Size(25, 19);
+ this.capTime.TabIndex = 35;
+ this.capTime.TabStop = false;
+ this.capTime.Text = "60";
+ this.capTime.UseSystemPasswordChar = false;
+ this.capTime.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.capTime_KeyPress);
+ //
+ // HCINText
+ //
+ this.HCINText.Depth = 0;
+ this.HCINText.Enabled = false;
+ this.HCINText.Hint = "";
+ this.HCINText.Location = new System.Drawing.Point(37, 143);
+ this.HCINText.MaxLength = 3;
+ this.HCINText.MouseState = MaterialSkin.MouseState.HOVER;
+ this.HCINText.Name = "HCINText";
+ this.HCINText.PasswordChar = '\0';
+ this.HCINText.SelectedText = "";
+ this.HCINText.SelectionLength = 0;
+ this.HCINText.SelectionStart = 0;
+ this.HCINText.Size = new System.Drawing.Size(38, 19);
+ this.HCINText.TabIndex = 34;
+ this.HCINText.TabStop = false;
+ this.HCINText.Text = "8";
+ this.HCINText.UseSystemPasswordChar = false;
+ this.HCINText.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HCINText_KeyPress);
+ //
+ // HCIMemory
+ //
+ this.HCIMemory.Depth = 0;
+ this.HCIMemory.Enabled = false;
+ this.HCIMemory.Hint = "";
+ this.HCIMemory.Location = new System.Drawing.Point(36, 122);
+ this.HCIMemory.MaxLength = 4;
+ this.HCIMemory.MouseState = MaterialSkin.MouseState.HOVER;
+ this.HCIMemory.Name = "HCIMemory";
+ this.HCIMemory.PasswordChar = '\0';
+ this.HCIMemory.SelectedText = "";
+ this.HCIMemory.SelectionLength = 0;
+ this.HCIMemory.SelectionStart = 0;
+ this.HCIMemory.Size = new System.Drawing.Size(38, 19);
+ this.HCIMemory.TabIndex = 33;
+ this.HCIMemory.TabStop = false;
+ this.HCIMemory.Text = "1750";
+ this.HCIMemory.UseSystemPasswordChar = false;
+ this.HCIMemory.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HCIMemory_KeyPress);
+ //
+ // HCIMax
+ //
+ this.HCIMax.Depth = 0;
+ this.HCIMax.Hint = "";
+ this.HCIMax.Location = new System.Drawing.Point(71, 36);
+ this.HCIMax.MaxLength = 4;
+ this.HCIMax.MouseState = MaterialSkin.MouseState.HOVER;
+ this.HCIMax.Name = "HCIMax";
+ this.HCIMax.PasswordChar = '\0';
+ this.HCIMax.SelectedText = "";
+ this.HCIMax.SelectionLength = 0;
+ this.HCIMax.SelectionStart = 0;
+ this.HCIMax.Size = new System.Drawing.Size(30, 19);
+ this.HCIMax.TabIndex = 32;
+ this.HCIMax.TabStop = false;
+ this.HCIMax.Text = "400";
+ this.HCIMax.UseSystemPasswordChar = false;
+ this.HCIMax.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.HCIMax_KeyPress);
+ //
+ // lb15
+ //
+ this.lb15.AutoSize = true;
+ this.lb15.Location = new System.Drawing.Point(102, 36);
+ this.lb15.Name = "lb15";
+ this.lb15.Size = new System.Drawing.Size(15, 12);
+ this.lb15.TabIndex = 31;
+ this.lb15.Text = "%";
+ //
+ // deLB0
+ //
+ this.deLB0.AutoSize = true;
+ this.deLB0.Location = new System.Drawing.Point(20, 36);
+ this.deLB0.Name = "deLB0";
+ this.deLB0.Size = new System.Drawing.Size(45, 12);
+ this.deLB0.TabIndex = 30;
+ this.deLB0.Text = "목표치:";
+ //
+ // OpenSCAP
+ //
+ this.OpenSCAP.AutoSize = true;
+ this.OpenSCAP.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.OpenSCAP.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.OpenSCAP.Depth = 0;
+ this.OpenSCAP.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.OpenSCAP.Icon = null;
+ this.OpenSCAP.Location = new System.Drawing.Point(27, 297);
+ this.OpenSCAP.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
+ this.OpenSCAP.MouseState = MaterialSkin.MouseState.HOVER;
+ this.OpenSCAP.Name = "OpenSCAP";
+ this.OpenSCAP.Primary = true;
+ this.OpenSCAP.Size = new System.Drawing.Size(123, 36);
+ this.OpenSCAP.TabIndex = 28;
+ this.OpenSCAP.Text = "저장폴더 경로설정";
+ this.OpenSCAP.UseVisualStyleBackColor = true;
+ this.OpenSCAP.Click += new System.EventHandler(this.OpenSCAP_Click);
+ //
+ // tLB1
+ //
+ this.tLB1.AutoSize = true;
+ this.tLB1.Enabled = false;
+ this.tLB1.Location = new System.Drawing.Point(169, 267);
+ this.tLB1.Name = "tLB1";
+ this.tLB1.Size = new System.Drawing.Size(17, 12);
+ this.tLB1.TabIndex = 27;
+ this.tLB1.Text = "분";
+ //
+ // capbyTime
+ //
+ this.capbyTime.AutoSize = true;
+ this.capbyTime.Depth = 0;
+ this.capbyTime.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.capbyTime.Location = new System.Drawing.Point(22, 261);
+ this.capbyTime.Margin = new System.Windows.Forms.Padding(0);
+ this.capbyTime.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.capbyTime.MouseState = MaterialSkin.MouseState.HOVER;
+ this.capbyTime.Name = "capbyTime";
+ this.capbyTime.Ripple = true;
+ this.capbyTime.Size = new System.Drawing.Size(91, 30);
+ this.capbyTime.TabIndex = 25;
+ this.capbyTime.Text = "주기적으로";
+ this.capbyTime.UseVisualStyleBackColor = true;
+ this.capbyTime.Click += new System.EventHandler(this.capbyTime_Click);
+ //
+ // capAfter
+ //
+ this.capAfter.AutoSize = true;
+ this.capAfter.Checked = true;
+ this.capAfter.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.capAfter.Depth = 0;
+ this.capAfter.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.capAfter.Location = new System.Drawing.Point(22, 231);
+ this.capAfter.Margin = new System.Windows.Forms.Padding(0);
+ this.capAfter.MouseLocation = new System.Drawing.Point(-1, -1);
+ this.capAfter.MouseState = MaterialSkin.MouseState.HOVER;
+ this.capAfter.Name = "capAfter";
+ this.capAfter.Ripple = true;
+ this.capAfter.Size = new System.Drawing.Size(71, 30);
+ this.capAfter.TabIndex = 23;
+ this.capAfter.Text = "끝날 때";
+ this.capAfter.UseVisualStyleBackColor = true;
+ //
+ // sLB2
+ //
+ this.sLB2.AutoSize = true;
+ this.sLB2.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.sLB2.ForeColor = System.Drawing.Color.Blue;
+ this.sLB2.Location = new System.Drawing.Point(14, 200);
+ this.sLB2.Name = "sLB2";
+ this.sLB2.Size = new System.Drawing.Size(74, 21);
+ this.sLB2.TabIndex = 22;
+ this.sLB2.Text = "스크린샷";
+ //
+ // sLB1
+ //
+ this.sLB1.AutoSize = true;
+ this.sLB1.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.sLB1.ForeColor = System.Drawing.Color.Blue;
+ this.sLB1.Location = new System.Drawing.Point(6, 6);
+ this.sLB1.Name = "sLB1";
+ this.sLB1.Size = new System.Drawing.Size(58, 21);
+ this.sLB1.TabIndex = 21;
+ this.sLB1.Text = "테스트";
+ //
+ // dLB2
+ //
+ this.dLB2.AutoSize = true;
+ this.dLB2.Enabled = false;
+ this.dLB2.Location = new System.Drawing.Point(75, 143);
+ this.dLB2.Name = "dLB2";
+ this.dLB2.Size = new System.Drawing.Size(17, 12);
+ this.dLB2.TabIndex = 20;
+ this.dLB2.Text = "개";
+ //
+ // dLB1
+ //
+ this.dLB1.AutoSize = true;
+ this.dLB1.Enabled = false;
+ this.dLB1.Location = new System.Drawing.Point(75, 122);
+ this.dLB1.Name = "dLB1";
+ this.dLB1.Size = new System.Drawing.Size(24, 12);
+ this.dLB1.TabIndex = 19;
+ this.dLB1.Text = "MB";
+ //
+ // OpenFile
+ //
+ this.OpenFile.FileName = "OpenFile";
+ this.OpenFile.Title = "알림에 사용할 음악파일 선택";
+ //
+ // tTimer
+ //
+ this.tTimer.Interval = 1000;
+ this.tTimer.Tick += new System.EventHandler(this.tTimer_Tick);
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.SystemColors.Control;
+ this.ClientSize = new System.Drawing.Size(322, 625);
+ this.Controls.Add(this.goblog);
+ this.Controls.Add(this.TabSelector);
+ this.Controls.Add(this.TabMain);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MaximumSize = new System.Drawing.Size(1300, 1300);
+ this.MinimumSize = new System.Drawing.Size(322, 250);
+ this.Name = "MainForm";
+ this.Opacity = 0.9D;
+ this.Text = "EasyHCI 1.0.7";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
+ this.Load += new System.EventHandler(this.MainForm_Load);
+ this.Resize += new System.EventHandler(this.MainForm_Resize);
+ this.TabMain.ResumeLayout(false);
+ this.Tab1.ResumeLayout(false);
+ this.Tab1.PerformLayout();
+ this.Tab3.ResumeLayout(false);
+ this.Panel1.ResumeLayout(false);
+ this.Panel1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.ToolTip Tip1;
+ private MaterialSkin.Controls.MaterialTabSelector TabSelector;
+ private MaterialSkin.Controls.MaterialTabControl TabMain;
+ private System.Windows.Forms.TabPage Tab1;
+ private System.Windows.Forms.TabPage Tab3;
+ private System.Windows.Forms.LinkLabel goblog;
+ private MaterialSkin.Controls.MaterialRaisedButton goTest;
+ internal System.Windows.Forms.ListView LView1;
+ internal System.Windows.Forms.ColumnHeader ColumnHeader3;
+ internal System.Windows.Forms.ColumnHeader ColumnHeader4;
+ private System.Windows.Forms.Label lb2;
+ private MaterialSkin.Controls.MaterialProgressBar pbUse;
+ private System.Windows.Forms.Label LB1;
+ private MaterialSkin.Controls.MaterialRaisedButton stopTest;
+ private System.Windows.Forms.TextBox tmemText;
+ private System.Windows.Forms.Label passRate;
+ private System.Windows.Forms.Label elTime;
+ private System.Windows.Forms.Panel Panel1;
+ private MaterialSkin.Controls.MaterialRaisedButton OpenSCAP;
+ private System.Windows.Forms.Label tLB1;
+ private MaterialSkin.Controls.MaterialCheckBox capbyTime;
+ private MaterialSkin.Controls.MaterialCheckBox capAfter;
+ private System.Windows.Forms.Label sLB2;
+ private System.Windows.Forms.Label sLB1;
+ private System.Windows.Forms.Label dLB2;
+ private System.Windows.Forms.Label dLB1;
+ private MaterialSkin.Controls.MaterialCheckBox mtHide;
+ private System.Windows.Forms.Label deLB0;
+ private System.Windows.Forms.Label lb15;
+ private MaterialSkin.Controls.MaterialSingleLineTextField HCIMax;
+ private MaterialSkin.Controls.MaterialSingleLineTextField HCIMemory;
+ private MaterialSkin.Controls.MaterialSingleLineTextField HCINText;
+ private MaterialSkin.Controls.MaterialSingleLineTextField capTime;
+ internal System.Windows.Forms.FolderBrowserDialog OpenFolder;
+ internal System.Windows.Forms.OpenFileDialog OpenFile;
+ private System.Windows.Forms.Label LB123;
+ private MaterialSkin.Controls.MaterialSingleLineTextField musicRepeat;
+ private System.Windows.Forms.Label dsLB1;
+ private MaterialSkin.Controls.MaterialRaisedButton OpenEM;
+ private MaterialSkin.Controls.MaterialRaisedButton OpenPM;
+ private System.Windows.Forms.Label pdL2;
+ private System.Windows.Forms.Label pdL1;
+ private MaterialSkin.Controls.MaterialSingleLineTextField BatchY;
+ private MaterialSkin.Controls.MaterialSingleLineTextField BatchX;
+ private System.Windows.Forms.Label yLB1;
+ private System.Windows.Forms.Label XLB1;
+ private System.Windows.Forms.Label LB31;
+ private MaterialSkin.Controls.MaterialCheckBox closePC;
+ private MaterialSkin.Controls.MaterialCheckBox closeMem;
+ private System.Windows.Forms.Label mdLB3;
+ private MaterialSkin.Controls.MaterialRadioButton notAuto;
+ private MaterialSkin.Controls.MaterialRadioButton YAuto;
+ private System.Windows.Forms.Timer tTimer;
+ private System.Windows.Forms.Label memGap;
+ private MaterialSkin.Controls.MaterialCheckBox instant;
+ private System.Windows.Forms.HScrollBar transparent;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label lvlb;
+ private MaterialSkin.Controls.MaterialSingleLineTextField AutoHCIM;
+ private System.Windows.Forms.Label yLLB;
+ }
+}
+
diff --git a/MainForm.cs b/MainForm.cs
new file mode 100644
index 0000000..1a6a552
--- /dev/null
+++ b/MainForm.cs
@@ -0,0 +1,1381 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Windows.Forms;
+using System.Diagnostics;
+using System.IO;
+using Microsoft.Win32;
+
+using System.Management;
+using MaterialSkin;
+using System.Runtime.InteropServices;
+using System.Drawing.Imaging;
+
+
+
+
+
+namespace EasyHCI
+{
+ public partial class MainForm : MaterialSkin.Controls.MaterialForm
+ {
+
+ //Win32 API
+ [DllImport("user32")]
+ public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
+ [DllImport("user32.dll")]
+ public static extern IntPtr FindWindowEx(IntPtr parentHWnd, IntPtr childAfterHWnd, string className, string windowTitle);
+ [DllImport("user32")]
+ public static extern Int32 SendMessage(IntPtr hWnd, Int32 uMsg, IntPtr WParam, IntPtr LParam);
+ [DllImport("user32")]
+ public static extern Int32 PostMessage(IntPtr hWnd, Int32 uMsg, IntPtr WParam, IntPtr LParam);
+ [DllImport("user32")]
+ public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
+ [DllImport("user32")]
+ public static extern int MoveWindow(IntPtr hwnd, int x, int y, int nWidth, int nHeight, bool bRepaint);
+ [DllImport("user32")]
+ public static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);
+ [DllImport("User32.dll")]
+ public static extern Int32 SetForegroundWindow(int hWnd);
+ [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
+ public static extern IntPtr GetDesktopWindow();
+ [DllImport("gdi32.dll")]
+ private static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
+
+
+ //API에 사용될 상수
+ private const int CLICK = 0x00F5;
+ private const int WM_GetText = 0x000D;
+ private const int WM_SetText = 0X000C;
+ private const int Sw_Hide = 0;
+ private const int Sw_Show = 5;
+
+
+
+
+ //공용 변수들
+ private byte Gc1 = 0, hour, minute, second;
+ private ushort CPUThreads = 0, ScreenX = 0, ScreenY = 0, hcinum = 0, hcimem = 0, errNum = 0;
+ private uint totalMemMB = 0, freeMemMB = 0;
+ private string capPath, sucPath, errPath, musicURL;
+ private readonly string[] memExcept = new string[] { "csrss", "dasHost", "dllHost", "dwm", "explorer", "fontdrvhost", "audiodg", "lsass", "MsMpEng", "NisSrv", "Registry", "ntoskrnl", "RuntimeBroker", "SecurityHealthService", "services", "SgrmBroker", "sihost", "svchost", "smss", "spoolsv", "System", "taskhostw", "winlogon", "wininit", "Taskmgr", "Idle" };
+ private bool endProgram = false, endMonitoring = false, activateTimer = false, errorIncreased = false;
+ private IntPtr[] hci, hcicoverage, startbtn, exitbtn;
+ public Process[] hciProcess;
+
+ private Thread StartTestThread, MemStatusThread, musicThread;
+
+ StringBuilder NewText1 = new StringBuilder(null, 40), NewText2 = new StringBuilder(null, 40), ErrMsg = new StringBuilder(null), finalRecord = new StringBuilder(null), tSetting = new StringBuilder(null);
+ double minValue = 0, maxValue = 0;
+ byte capHour = (byte)DateTime.Now.Hour, capMinute = (byte)DateTime.Now.Minute;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ // //
+ // //
+ // 프로젝트 시작 //
+ // //
+ // //
+ public MainForm()
+ {
+ InitializeComponent();
+
+ var materialSkinManager = MaterialSkinManager.Instance;
+ materialSkinManager.AddFormToManage(this);
+ materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;
+ materialSkinManager.ColorScheme = new ColorScheme(Primary.Indigo500, Primary.Indigo700, Primary.Indigo100, Accent.Pink200, TextShade.WHITE);
+ } //스킨!
+
+
+
+ protected override CreateParams CreateParams
+ { //그림자 생성!
+ get
+ {
+ CreateParams crp = base.CreateParams;
+ crp.ClassStyle = 0x00020000;
+ return crp;
+ }
+ }
+
+
+
+
+
+
+
+
+ // //
+ // 테스트 시작 함수 //
+ // //
+ private void StartTest()
+ {
+ ushort WindowX = 1, WindowY = 1, tmem = 0;
+ bool findMem = false;
+ IntPtr Hwnd1 = IntPtr.Zero, Hwnd2 = IntPtr.Zero;
+ StringBuilder canAllocate = new StringBuilder(null, 20);
+ IntPtr[] hci = new IntPtr[1], hcicoverage = new IntPtr[1], startbtn = new IntPtr[1], exitbtn = new IntPtr[1];
+ Process[] hciProcess = new Process[1];
+ Process tempProcess = Process.GetCurrentProcess();
+
+
+
+ // //
+ // 자동 설정 //
+ // //
+ if (!notAuto.Checked)
+ {
+ // 시작하기 전에 메모리 값에 따라 임시최대값 줄여서 작업량 줄이기
+ if ((freeMemMB / CPUThreads) <= 2000)
+ { tmem = 2030; }
+ else if ((freeMemMB / CPUThreads) > 2000 && (freeMemMB / CPUThreads) < 2501)
+ { tmem = 2530; }
+ else if ((freeMemMB / CPUThreads) > 2500 && (freeMemMB / CPUThreads) < 3001)
+ { tmem = 3030; }
+ else
+ { tmem = 3530; }
+
+ while (!findMem) //최대 메모리값을 찾기 전까지 무한루프
+ {
+ Hwnd1 = IntPtr.Zero; Hwnd2 = IntPtr.Zero; hci[0] = IntPtr.Zero;
+ tmem -= 25; //최대메모리가 몇인지 25MB씩 감소시켜가며 테스트
+
+ //멤테스트 실행
+ tempProcess = Process.Start(Application.StartupPath + "\\Resources\\memtest.exe");
+
+ while (Hwnd1 == IntPtr.Zero)
+ { //첫 알림 나올 때까지 탐색
+ Hwnd1 = FindWindow("#32770", "어서오세요!");
+ Thread.Sleep(3);
+ }
+
+ //첫 알림창 나오면 버튼 찾아서 클릭
+ Hwnd2 = FindWindowEx(Hwnd1, IntPtr.Zero, "Button", "확인");
+ SendMessage(Hwnd2, CLICK, 0, 0);
+
+ //메인 화면 및 필요한 모든 윈도우(창)의 핸들값 탐색
+ while (hci[0] == IntPtr.Zero)
+ {
+ hci[0] = tempProcess.MainWindowHandle;
+ ShowWindow(hci[0], Sw_Hide); //안 지저분하게 메인창은 숨기기
+ Thread.Sleep(3);
+ }
+
+ startbtn[0] = FindWindowEx(hci[0], IntPtr.Zero, "Button", "테스트 시작");
+ exitbtn[0] = FindWindowEx(hci[0], IntPtr.Zero, "Button", "테스트 중단");
+ hcicoverage[0] = FindWindowEx(hci[0], IntPtr.Zero, "Static", "무료 버전");
+ IntPtr hTextBox = FindWindowEx(hci[0], IntPtr.Zero, "Edit", null);
+
+ //텍스트에 숫자 입력하고 테스트 시작
+ tmemText.Invoke((MethodInvoker)delegate ()
+ { tmemText.Text = tmem.ToString(); });
+ IntPtr textPtr = Marshal.AllocHGlobal(8);
+ tmemText.Invoke((MethodInvoker)delegate ()
+ { SendMessage(tmemText.Handle, WM_GetText, new IntPtr(8), textPtr); });
+ String text1 = Marshal.PtrToStringUni(textPtr, 8);
+ SendMessage(hTextBox, WM_SetText, IntPtr.Zero, textPtr);
+ Marshal.FreeHGlobal(textPtr);
+
+
+ PostMessage(startbtn[0], CLICK, IntPtr.Zero, IntPtr.Zero); // 테스트 시작
+ canAllocate.Clear();
+ canAllocate.Append("무료 버전");
+
+
+ // 할당불가 하단 바 찾기
+ while (canAllocate.ToString() == "무료 버전")
+ {
+ GetWindowText(hcicoverage[0], canAllocate, 20);
+ Thread.Sleep(3);
+ }
+
+
+ if (canAllocate.ToString() == "테스트 준비 중...") // 값 찾기 성공 시
+ { findMem = true; }
+ else if (canAllocate.ToString() == tmem + " MB 할당 불가!") //할당불가 시
+ { findMem = false; }
+
+ tempProcess.Kill();
+ tempProcess.Dispose();
+ }
+
+
+ // //
+ // 자동설정- 최대메모리 탐색완료. tmem 변수에 저장됨. //
+ //
+
+ // //
+ // 실행 정보 계산 시작 //
+ // //
+ hcimem = (ushort)((freeMemMB - Convert.ToUInt32(AutoHCIM.Text)) / CPUThreads);
+ hcinum = CPUThreads;
+ while (hcimem > tmem)
+ {
+ hcinum++;
+ hcimem = (ushort)((freeMemMB - Convert.ToUInt32(AutoHCIM.Text)) / hcinum);
+ }
+ }
+
+ else
+ { // 수동설정: 값 그대로 복사 //
+ hcinum = Convert.ToUInt16(HCINText.Text);
+ hcimem = Convert.ToUInt16(HCIMemory.Text);
+ }
+
+
+
+
+
+ // 배열변수들 실행할 멤테 개수만큼 초기화 //
+ hci = new IntPtr[hcinum]; hcicoverage = new IntPtr[hcinum]; startbtn = new IntPtr[hcinum]; exitbtn = new IntPtr[hcinum];
+ hciProcess = new Process[hcinum];
+
+ //휴식
+ Thread.Sleep(100);
+
+ for (int i1=0; i1 ScreenX) //멤테 창이 화면 오른쪽 끝에서 가릴 것 같으면
+ {
+ WindowX = 1; //X값 1로 초기화
+ WindowY = (ushort)(WindowY + Convert.ToUInt16(BatchY.Text)); //Y값 다음줄로 넘기기
+ }
+
+ if (WindowY + 235 > ScreenY) //Y축조차 다 써서 더이상 화면에 남은 공간이 없다면
+ {
+ WindowX = 1; WindowY = 1; //값 초기화하고 첫 위치부터 다시 깔기
+ }
+
+
+ // 메모리값 멤테 텍스트칸에 옮겨적기//
+ tmemText.Invoke((MethodInvoker)delegate ()
+ { tmemText.Text = hcimem.ToString(); });
+ IntPtr textPtr = Marshal.AllocHGlobal(8);
+ tmemText.Invoke((MethodInvoker)delegate ()
+ {SendMessage(tmemText.Handle, WM_GetText, new IntPtr(8), textPtr); });
+ String text1 = Marshal.PtrToStringUni(textPtr, 8);
+ SendMessage(hTextBox, WM_SetText, IntPtr.Zero, textPtr);
+ Marshal.FreeHGlobal(textPtr);
+
+ // 테스트 시작하기 //
+ PostMessage(startbtn[i1], CLICK, IntPtr.Zero, IntPtr.Zero);
+ }
+
+
+ ushort remAlarmCount = 0; //알림창제거 횟수 초기화
+ while (remAlarmCount < hcinum)
+ { //멤테 개수만큼 알림창제거 무한반복.
+ Hwnd1 = IntPtr.Zero; //변수 재활용
+ Hwnd1 = FindWindow("#32770", "테스트 시작합니다.");
+
+ if (Hwnd1 != IntPtr.Zero) //알림창 발견 시
+ {
+ Hwnd2 = FindWindowEx(Hwnd1, IntPtr.Zero, "Button", "확인");
+ SendMessage(Hwnd2, CLICK, 0, 0);
+ remAlarmCount++;
+ Thread.Sleep(3);
+ }
+ Thread.Sleep(20);
+ }
+
+ //프로그램을 맨 앞으로 가져오기
+ this.Invoke((MethodInvoker)delegate () {SetForegroundWindow((int)this.Handle);});
+
+
+
+
+
+ // 2초 휴식 후 혹시나 남아있을 알림창 1개 있으면 제거 //
+ Thread.Sleep(2000);
+ Hwnd1 = FindWindow("#32770", "테스트 시작합니다.");
+ Hwnd2 = FindWindowEx(Hwnd1, IntPtr.Zero, "Button", "확인");
+ SendMessage(Hwnd2, CLICK, 0, 0);
+
+ goblog.Text = "Github: bumju08";
+
+
+
+
+
+
+
+
+
+
+
+
+ // ////////////// //
+ // //
+ // 모니터링 시작 //
+ // //
+ // ////////////// //
+
+
+
+ errorIncreased = false;
+ errNum = 0; minValue = 0; maxValue = 0;
+ capHour = (byte)DateTime.Now.Hour; capMinute = (byte)DateTime.Now.Minute;
+
+
+ //타이머 시작
+ activateTimer = true;
+
+
+
+ // //
+ // 모니터링 //
+ // //
+ while (true)
+ {
+ errorIncreased = false;
+ LView1.Invoke((MethodInvoker)delegate ()
+ {LView1.BeginUpdate(); //리스트뷰를 잠시 멈춤
+ });
+ for (int i1 = 0; i1 < hcinum; i1++)
+ { //멤테 개수만큼 반복
+ NewText1.Clear(); NewText2.Clear(); //문자열 초기화
+
+ GetWindowText(hcicoverage[i1], NewText1, 40); //하단 바 읽어서 변수1에 저장(통과율/에러)
+ if (NewText1.ToString() == "메모리 할당됨" || NewText1.ToString() == null) { i1++; } //만약 읽어왔는데 아직 시작 안됐거나 창 꺼졌으면 다음멤테로 패스
+ else
+ {//아니라면 읽어서 리스트뷰에 작성
+ NewText1.Remove(0, 7); //변수1 앞부분 제거
+ NewText2.Append(NewText1.ToString()); //변수2에 읽은 값의 뒷부분 복사
+
+ NewText2.Remove(NewText2.ToString().IndexOf("개") + 1, 6); //변수2 에러수치 뒷부분 삭제
+ NewText2.Remove(0, NewText2.ToString().IndexOf(",") + 2); // 변수2 앞부분 삭제
+
+ NewText1.Remove(NewText1.ToString().IndexOf("%"), 14); //변수1 숫자만 남기고 뒷부분 다 삭제
+ LView1.Invoke((MethodInvoker)delegate () {
+ LView1.Items.RemoveAt(i1);
+ LView1.Items.Insert(i1, new ListViewItem(new string[] { NewText1.ToString() + "%", NewText2.ToString() })); //원하는 순번에 통과율 추가
+ });
+
+ if (NewText2.ToString() != "0개")
+ { //오류가 발생한 경우
+ errorIncreased = true; errNum = (ushort)(i1 + 1); // 오류 발생한 멤테 순번 기록
+ }
+
+ if (i1 == 0) { minValue = Convert.ToDouble(NewText1.ToString()); } // 첫항목이면 값 옮겨놓고 비교 (최솟값 찾기 때문에)
+ if (minValue > Convert.ToDouble(NewText1.ToString())) //최솟값 찾기
+ { minValue = Convert.ToDouble(NewText1.ToString()); }
+ if (maxValue < Convert.ToDouble(NewText1.ToString())) //최댓값 구하기
+ { maxValue = Convert.ToDouble(NewText1.ToString()); }
+ }
+ } //통과율,에러 스캔 종료
+
+ LView1.Invoke((MethodInvoker)delegate () {
+ LView1.EndUpdate(); //리스트뷰 재개
+
+ // 통과율, 편차 표시 //
+ passRate.Text = "통과율: " + minValue + "%";
+ memGap.Text = "편차: " + Math.Round(maxValue - minValue, 1) + "%";
+
+
+
+ // 테스트 정상시작했으므로 이제 유저가 중단가능 //
+ stopTest.Enabled = true;
+ stopTest.Text = "테스트 중단";
+ });
+
+
+
+
+
+
+
+
+ // //
+ // 테스트 통과 시 //
+ // //
+
+ if (minValue > Convert.ToUInt16(HCIMax.Text))
+ {
+ // 로그 작성
+ WriteLog();
+
+ // 끝날 때 스크린샷
+ if (capAfter.Checked)
+ { Screenshot(); }
+
+
+ // 만약 설정이 멤테 종료라면 //
+ if (closeMem.Checked)
+ {
+ KillMemtest();
+
+ if (Convert.ToUInt16(musicRepeat.Text) > 0)
+ { PlayMusic(); }
+ //음악 재생
+
+ stopTest.Invoke((MethodInvoker)delegate () {
+ stopTest.Enabled = false;
+ mtHide.Enabled = true;
+ goTest.Enabled = true;
+ goTest.Text = "테스트 시작";
+ });
+ tTimer.Enabled = false;
+
+
+ MessageBox.Show("테스트 " + minValue + "%까지 통과하였습니다.", "통과", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ goto abortTest; //종료
+ }
+
+
+ // 만약 설정이 PC 종료라면 //
+ else if (closePC.Checked)
+ {
+ var psi = new ProcessStartInfo("shutdown", "/s /t 0");
+ psi.CreateNoWindow = true;
+ psi.UseShellExecute = false;
+ Process.Start(psi);
+ }
+
+ }
+
+
+
+ // //
+ // 에러 발생 시 //
+ // //
+
+ else if (errorIncreased)
+ {
+ // 로그 작성
+ WriteLog();
+
+ // 끝날 때 스크린샷
+ if (capAfter.Checked)
+ { Screenshot(); }
+
+ // 만약 설정이 멤테 종료라면 //
+ if (closeMem.Checked)
+ {
+ KillMemtest();
+
+ if (Convert.ToUInt16(musicRepeat.Text) > 0)
+ { PlayMusic(); }
+ //음악 재생
+
+ stopTest.Invoke((MethodInvoker)delegate () {
+ stopTest.Enabled = false;
+ mtHide.Enabled = true;
+ goTest.Enabled = true;
+ goTest.Text = "테스트 시작";
+ });
+ tTimer.Enabled = false;
+
+ goto abortTest; //종료
+ }
+
+
+ // 만약 설정이 PC 종료라면 //
+ else if (closePC.Checked)
+ {
+ var psi = new ProcessStartInfo("shutdown", "/s /t 0");
+ psi.CreateNoWindow = true;
+ psi.UseShellExecute = false;
+ Process.Start(psi);
+ }
+ }
+
+
+
+
+
+ // //
+ // 만약 중도포기라면 로그작성과 프로그램 설정저장만 //
+ // //
+
+ else if (endMonitoring)
+ {
+ WriteLog();
+
+ KillMemtest();
+
+ stopTest.Invoke((MethodInvoker)delegate () {
+ stopTest.Enabled = false;
+ mtHide.Enabled = true;
+ goTest.Enabled = true;
+ goTest.Text = "테스트 시작";
+ });
+ tTimer.Enabled = false;
+
+
+
+ if (endProgram)
+ {
+ SaveSettings();
+
+ Environment.Exit(0);
+ }
+
+
+
+ goto abortTest;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+ // //
+ // 주기적인 스크린샷 //
+ // //
+ if (capbyTime.Checked)
+ {
+ ushort nowTime = (ushort)((DateTime.Now.Hour * 60) + DateTime.Now.Minute);
+ ushort lastTime = (ushort)((capHour * 60) + capMinute);
+
+ if (lastTime + Convert.ToUInt16(capTime.Text) <= nowTime ) {
+ capHour = (byte)DateTime.Now.Hour;
+ capMinute = (byte)DateTime.Now.Minute; //시간정보 초기화 후 스크린샷
+ Screenshot();
+ }
+ }
+
+
+
+
+
+
+ Thread.Sleep(1250);
+ } //모니터링 반복문 while 종료
+
+ abortTest:
+ StartTestThread.Abort();
+ } //StartTest 쓰레드 종료
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ private void SaveSettings()
+ {//프로그램 설정 저장 함수
+ tSetting.Clear();
+
+ tSetting.Append("목표치: " + HCIMax.Text + "\r\n백그라운드 실행: " + mtHide.Checked + "\r\n테스트 유형: ");
+
+ if (notAuto.Checked)
+ { tSetting.Append("Manual"); }
+ else { tSetting.Append("Auto"); }
+
+ tSetting.Append("\r\n\r\n끝날 때 스크린샷: " + capAfter.Checked);
+ tSetting.Append("\r\n주기적인 스크린샷: " + capbyTime.Checked);
+ tSetting.Append("\r\n주기적인 스크린샷 값(분): " + capTime.Text);
+ tSetting.Append("\r\n스크린샷 저장폴더: " + capPath);
+
+ tSetting.Append("\r\n\r\n소리알림 반복 횟수: " + musicRepeat.Text);
+ tSetting.Append("\r\n통과 알림파일 경로: " + sucPath);
+ tSetting.Append("\r\n오류 알림파일 경로: " + errPath);
+
+ tSetting.Append("\r\n\r\n마지막에 끌 항목: ");
+ if (closeMem.Checked) { tSetting.Append("Memtest"); }
+ else { tSetting.Append("PC"); }
+
+ tSetting.Append("\r\n\r\n창 배치 간격(x축): " + BatchX.Text);
+ tSetting.Append("\r\n창 배치 간격(y축): " + BatchY.Text);
+ tSetting.Append("\r\n프로그램이 켜질 때 즉시 테스트: " + instant.Checked);
+ File.WriteAllText(Application.StartupPath + "\\Resources\\Settings.txt", tSetting.ToString(), Encoding.Default);
+ }
+
+
+
+
+
+
+ private void cleanMemory()
+ {
+ bool ifsigProcess;
+
+ Process[] processCollection = Process.GetProcesses();
+
+ foreach (Process p in processCollection)
+ {
+ ifsigProcess = false;
+
+ // 윈도우 구동에 필요한 프로세스인지 확인
+ for (int i1 = 0; i1 < memExcept.Length; i1++)
+ {
+ if (memExcept[i1] == p.ProcessName) { ifsigProcess = true; break; }
+ }
+
+ // 나 자신인지 확인
+ if (Process.GetCurrentProcess().ProcessName == p.ProcessName) { ifsigProcess = true; }
+
+ // 사용자가 따로 예외처리한 프로세스인지 확인
+ if (File.Exists(Application.StartupPath + "\\Resources\\mcExcept.txt"))
+ {
+ string[] eFile = File.ReadAllLines(Application.StartupPath + "\\Resources\\mcExcept.txt", Encoding.Default);
+
+ for (int i2 = 0; i2 < eFile.Length; i2++)
+ {
+ //예외처리 확인
+ if (eFile[i2].Length > 0 && eFile[i2].Substring(0, 1) != "#" && eFile[i2].ToLower() == p.ProcessName.ToLower())
+ {
+ ifsigProcess = true;
+ break;
+ }
+ }
+ }
+
+ // 3가지 유형에 포함되지 않는 프로세스는 종료
+ if (!ifsigProcess)
+ {
+ try{ p.Kill(); p.Dispose(); }
+ catch (Exception) { }
+ }
+ }
+ }
+
+
+
+
+
+ private void PlayMusic()
+ {
+ if (errorIncreased) { musicURL = errPath; }
+ else { musicURL = sucPath; }
+ musicThread = new Thread(musicFunction);
+ musicThread.Start(); //음악 재생
+ }
+
+
+
+
+ private void KillMemtest()
+ {
+ Process[] proc1 = Process.GetProcessesByName("memtest");
+
+ for (int i1 = 0; i1 < proc1.Length; i1++)
+ {
+ try { proc1[i1].Kill(); proc1[i1].Dispose(); }
+ catch (Exception) { }
+ }
+ }
+
+
+
+
+
+
+
+ private void WriteLog()
+ {
+ // //
+ // 로그 작성 //
+ // //
+
+ IntPtr ErrMsgHwnd = IntPtr.Zero, ErrChildHwnd;
+ ErrMsg.Clear(); finalRecord.Clear();
+
+
+ if (errorIncreased)
+ {
+
+ while (ErrMsgHwnd == IntPtr.Zero)
+ { //오류메세지 내용 찾을 때까지
+ ErrMsgHwnd = FindWindow("#32770", "멤테스트 오류");
+ Thread.Sleep(10);
+ }
+ Thread.Sleep(20);
+ ErrChildHwnd = FindWindowEx(ErrMsgHwnd, IntPtr.Zero, "Static", null);
+ GetWindowText(ErrChildHwnd, ErrMsg, 250);
+ finalRecord.Append("!!! 오류 발생 !!!");
+ } //오류발생 if문 끝
+
+ else if (endMonitoring) { finalRecord.Append("◆ 중도 포기 ◆"); }
+ else { finalRecord.Append("★ 통과 ★"); }
+
+ //통과율, 편차, 경과시간 가져와서 로그 작성
+ finalRecord.Append("\r\n종료 시각: " + DateTime.Now.ToString("yyyy년 MM월 dd일 --- H시 mm분 ss초") + "\r\n" + elTime.Text + "\r\n테스트한 메모리: " + hcimem + "MB * " + hcinum + " = " + (hcimem * hcinum) + "MB |총 메모리의 " + lb2.Text + "|\r\n\r\n전체 통과율: " + minValue + "%\r\n" + memGap.Text);
+
+ //오류났을 경우에만 오류정보 추가기록
+ if (errorIncreased) { finalRecord.Append("\r\n\r\n[오류 정보]\r\n" + errNum + "번째 멤테스트에서 오류 발생\r\n" + ErrMsgHwnd.ToString()); }
+ finalRecord.Append("\r\n---------------------------------\r\n\r\n\r\n");
+
+ //로그 작성 끝//
+ if (File.Exists(Application.StartupPath + "\\EasyHCI Log.txt"))
+ {
+ string origLog = File.ReadAllText(Application.StartupPath + "\\EasyHCI Log.txt", Encoding.Default);
+ File.WriteAllText(Application.StartupPath + "\\EasyHCI Log.txt", origLog + finalRecord.ToString(), Encoding.Default);
+ }
+ else { File.WriteAllText(Application.StartupPath + "\\EasyHCI Log.txt", finalRecord.ToString(), Encoding.Default); }
+
+ }
+
+
+
+ private void tTimer_Tick(object sender, EventArgs e)
+ { //테스트 모니터링 때 작동할 타이머
+ if (activateTimer) // second 변수가 0이 아니어야 작동
+ {
+ second++; //1초 증가
+ if (second >= 60) //만약 60초가 되면
+ {
+ second = 0; minute++; //0초로 초기화 후 1분 증가
+ if (minute >= 60) //만약 60분이 되면
+ {
+ minute = 0; hour++; //0분으로 초기화 후 1시간 증가
+ }
+ }
+
+ elTime.Text = "경과: " + hour + "시간 " + minute + "분 " + second + "초";
+ }
+ }
+
+
+
+ private void Screenshot()
+ { //스크린샷 함수
+
+ Bitmap ScreenBitmap;
+ IntPtr DesktopHwnd = GetDesktopWindow();
+ using (Graphics DesktopGr = Graphics.FromHwnd(DesktopHwnd))
+ {
+ IntPtr DesktopHdc = DesktopGr.GetHdc();
+ int XRes = GetDeviceCaps(DesktopHdc, 118); // 118 = horizontal size
+ int YRes = GetDeviceCaps(DesktopHdc, 117); // 117 = vertical size
+
+ ScreenBitmap = new Bitmap(XRes, YRes, PixelFormat.Format16bppRgb555);
+
+ using (Graphics ScreenBitmapGr = Graphics.FromImage(ScreenBitmap))
+ {
+ ScreenBitmapGr.CopyFromScreen(0, 0, 0, 0, new Size(XRes, YRes));
+ }
+ }
+
+ try { ScreenBitmap.Save(capPath + "\\" + DateTime.Now.ToString("(yyyy년 MM월 dd일) hh시 mm분 ss초") + ".png", ImageFormat.Png);}
+ catch (DirectoryNotFoundException) { }
+ }
+
+
+
+
+
+
+ private void showUsedMemory()
+ {// 메모리 사용량 표시
+ while (true)
+ {
+ ManagementClass cls = new ManagementClass("Win32_OperatingSystem");
+ ManagementObjectCollection instances = cls.GetInstances();
+
+ foreach (ManagementObject info in instances)
+ {
+ freeMemMB = uint.Parse(info["FreePhysicalMemory"].ToString()) / 1024;
+
+ lb2.Invoke((MethodInvoker)delegate () { //크로스스레드 오류 해결
+ lb2.Text = Math.Round(((double)totalMemMB - freeMemMB) / totalMemMB, 3) * 100 + "%"; // 옆 라벨 %값
+ pbUse.Value = Convert.ToInt32(totalMemMB - freeMemMB); //프로그래스바 값
+ });
+ }
+ cls.Dispose(); instances.Dispose();
+
+ Gc1++;
+ if (Gc1 >= 100) { Gc1 = 0; GC.Collect(); } //2분마다 가비지컬렉터 실행
+
+ Thread.Sleep(1250);
+ }
+ }
+
+
+
+
+
+
+ //소리알림(음악 재생) 함수
+ private void musicFunction()
+ {
+ try
+ {
+ System.Media.SoundPlayer music1 = new System.Media.SoundPlayer(musicURL);
+ for (int i1=0; i1 (freeMemMB - 50)) {
+ //여유 메모리보다 크게 입력했는지 확인.
+ goTest.Enabled = false;
+ MessageBox.Show("테스트할 양을 여유 메모리보다 크게 입력하셨습니다.\r\n\r\n" + ((Convert.ToInt16(HCINText.Text) * Convert.ToInt16(HCIMemory.Text)) - (freeMemMB - 50)).ToString() + "MB만큼 줄여서 입력해주세요." , "오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ goTest.Enabled = true;
+ return;
+ }
+ }
+
+
+
+
+ //값 초기화
+ hour = 0; minute = 0; second = 0;
+ activateTimer = false; endMonitoring = false;
+
+ mtHide.Enabled = false;
+ tTimer.Enabled = true;
+ goTest.Enabled = false;
+
+ StartTestThread = new Thread(StartTest);
+ StartTestThread.Start();
+ }
+
+
+
+ private void stopTest_Click(object sender, EventArgs e)
+ {
+ // 스레드 종료 신호 보냄
+ endMonitoring = true;
+ if (musicThread.IsAlive) { musicThread.Abort(); }
+
+
+ //다시 활성화
+ stopTest.Enabled = false;
+ mtHide.Enabled = true;
+ goTest.Enabled = true;
+ tTimer.Enabled = false;
+ goTest.Text = "테스트 시작";
+ }
+
+
+
+ private void notAuto_Click(object sender, EventArgs e)
+ { //수동설정 라디오버튼
+ HCIMemory.Enabled = true; HCINText.Enabled = true; dLB1.Enabled = true; dLB2.Enabled = true; AutoHCIM.Enabled = false; yLLB.Enabled = false;
+ }
+
+
+
+ private void YAuto_Click(object sender, EventArgs e)
+ { //자동설정 라디오버튼
+ HCIMemory.Enabled = false; HCINText.Enabled = false; dLB1.Enabled = false; dLB2.Enabled = false; AutoHCIM.Enabled = true; yLLB.Enabled = true;
+ }
+
+
+
+
+
+
+
+ private void capbyTime_Click(object sender, EventArgs e)
+ {//스크린샷-주기적으로 체크박스
+ if (capbyTime.Checked)
+ {
+ capTime.Enabled = true;
+ tLB1.Enabled = true;
+
+ } else {
+ capTime.Enabled = false;
+ tLB1.Enabled = false;
+ }
+
+ }
+
+
+
+
+
+
+
+
+
+ //멤테 종료, PC 종료 체크박스
+ private void closeMem_Click(object sender, EventArgs e)
+ {
+ closeMem.Checked = true; closePC.Checked = false;
+ }
+
+ private void closePC_Click(object sender, EventArgs e)
+ {
+ closePC.Checked = true; closeMem.Checked = false;
+ }
+
+
+
+
+
+
+ //각 텍스트박스 모두 숫자만 입력 가능하도록
+ private void HCIMax_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+
+ }
+
+ private void HCIMemory_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+ }
+
+
+
+ private void musicRepeat_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+ }
+
+
+ private void HCINText_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+ }
+
+ private void BatchY_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+ }
+
+ private void BatchX_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+ }
+
+ private void capTime_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+ }
+
+ private void AutoHCIM_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ if (!(char.IsNumber(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))
+ {
+ e.Handled = true;
+ }
+ }
+
+
+
+
+
+
+
+
+ //폴더,파일 선택창 열기
+ private void OpenSCAP_Click(object sender, EventArgs e)
+ {
+ OpenFolder.Description = "스크린샷을 저장할 폴더를 선택해주세요.";
+ OpenFolder.ShowDialog();
+
+ if (!Directory.Exists(OpenFolder.SelectedPath))
+ {
+ MessageBox.Show("폴더를 선택하지 않으셨습니다.\r\n\r\n스크린샷 기능을 사용할 경우 오류가 발생하거나 기능이 정상작동하지 않을 수 있습니다.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
+ }else {
+ capPath = OpenFolder.SelectedPath;
+ }
+ }
+
+
+
+ private void OpenPM_Click(object sender, EventArgs e)
+ {
+ OpenFile.FileName = sucPath;
+ OpenFile.ShowDialog();
+
+ if (!File.Exists(OpenFile.FileName)) {
+ MessageBox.Show("파일을 선택하지 않으셨습니다.\r\n\r\n소리알림 기능을 사용할 경우 오류가 발생하거나 기능이 정상작동하지 않을 수 있습니다.","알림", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
+ } else {
+ sucPath = OpenFile.FileName; }
+ }
+
+
+
+ private void OpenEM_Click(object sender, EventArgs e)
+ {
+ OpenFile.FileName = errPath;
+ OpenFile.ShowDialog();
+
+ if (!File.Exists(OpenFile.FileName))
+ {
+ MessageBox.Show("파일을 선택하지 않으셨습니다.\r\n\r\n소리알림 기능을 사용할 경우 오류가 발생하거나 기능이 정상작동하지 않을 수 있습니다.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
+ }
+ else
+ {
+ errPath = OpenFile.FileName;
+ }
+ }
+
+
+
+
+ private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
+ {//프로그램 종료신호 보내기 (기록 작성)
+ e.Cancel = true;
+
+ if (StartTestThread.IsAlive)
+ { //테스트 도중이라면 기록을 위해 종료신호 보내고 기다리기
+ endMonitoring = true;
+ endProgram = true;
+ }
+ else
+ { //아니라면 설정 저장 후 종료
+ SaveSettings();
+
+ Environment.Exit(0);
+ }
+ }
+
+
+
+
+ private void MainForm_Load(object sender, EventArgs e)
+ { //프로그램 시작 시 모든 작업 완료 전까지 잠시 숨김
+ this.Hide();
+
+ //중복실행 시 기존 프로그램을 앞으로 보이고 종료
+ Process[] proc1 = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
+ if (proc1.Length > 1)
+ {
+ for (int i1=0; i1 2048)
+ {
+ tempN++;
+ hciMem = (ushort)((freeMemMB - 280) / tempN);
+ }
+ HCIMemory.Text = hciMem.ToString();
+ HCINText.Text = tempN.ToString();
+
+
+
+ //경로 설정
+ OpenFolder.SelectedPath = Application.StartupPath + "\\HCI Screenshots";
+ capPath = Application.StartupPath + "\\HCI Screenshots";
+
+ OpenFile.InitialDirectory = Application.StartupPath + "\\Resources";
+ errPath = Application.StartupPath + "\\Resources\\error.wav";
+ sucPath = Application.StartupPath + "\\Resources\\success.wav";
+
+
+
+ //설정 불러오기
+ if (File.Exists(Application.StartupPath + "\\Resources\\Settings.txt"))
+ {
+ string[] tfile1 = File.ReadAllLines(Application.StartupPath + "\\Resources\\Settings.txt", Encoding.Default);
+
+ HCIMax.Text = tfile1[0].Remove(0, tfile1[0].IndexOf(":") + 2);
+ mtHide.Checked = Convert.ToBoolean(tfile1[1].Remove(0, tfile1[1].IndexOf(":") + 2));
+
+ if (tfile1[2].Remove(0, tfile1[2].IndexOf(":") + 2) == "Manual") { notAuto.Checked = true; HCIMemory.Enabled = true; HCINText.Enabled = true; dLB1.Enabled = true; dLB2.Enabled = true; AutoHCIM.Enabled = false; yLLB.Enabled = false; }
+
+ capAfter.Checked = Convert.ToBoolean(tfile1[4].Remove(0, tfile1[4].IndexOf(":") + 2));
+ capbyTime.Checked = Convert.ToBoolean(tfile1[5].Remove(0, tfile1[5].IndexOf(":") + 2));
+ capTime.Text = tfile1[6].Remove(0, tfile1[6].IndexOf(":") + 2);
+
+ if (Directory.Exists(tfile1[7].Remove(0, tfile1[7].IndexOf(":") + 2)))
+ {
+ OpenFolder.SelectedPath = tfile1[7].Remove(0, tfile1[7].IndexOf(":") + 2);
+ capPath = tfile1[7].Remove(0, tfile1[7].IndexOf(":") + 2);
+ }
+
+ musicRepeat.Text = tfile1[9].Remove(0, tfile1[9].IndexOf(":") + 2);
+
+ if (File.Exists(tfile1[10].Remove(0, tfile1[10].IndexOf(":") + 2)))
+ sucPath = tfile1[10].Remove(0, tfile1[10].IndexOf(":") + 2);
+
+ if (File.Exists(tfile1[11].Remove(0, tfile1[11].IndexOf(":") + 2)))
+ errPath = tfile1[11].Remove(0, tfile1[11].IndexOf(":") + 2);
+
+ if (tfile1[13].Remove(0, tfile1[13].IndexOf(":") + 2) == "Memtest")
+ { closeMem.Checked = true; closePC.Checked = false; }
+ else { closeMem.Checked = false; closePC.Checked = true; }
+
+ BatchX.Text = tfile1[15].Remove(0, tfile1[15].IndexOf(":") + 2);
+ BatchY.Text = tfile1[16].Remove(0, tfile1[16].IndexOf(":") + 2);
+ instant.Checked = Convert.ToBoolean(tfile1[17].Remove(0, tfile1[17].IndexOf(":") + 2));
+ }
+
+ //즉시 테스트
+ if (instant.Checked)
+ { goTest_Click(new object(), new EventArgs()); }
+
+ }
+
+
+
+ private void MainForm_Resize(object sender, EventArgs e)
+ { //폼 아래로 당기면 일부 항목 같이 커지기
+ TabMain.Size = new Size(this.Size.Width - 4, this.Size.Height - 99);
+ LView1.Size = new Size(this.Size.Width - 9, this.Size.Height - 213);
+ pbUse.Size = new Size(this.Size.Width - 165, 5);
+
+ tmemText.Location = new Point(this.Size.Width + 100, 100);
+ passRate.Location = new Point(4, this.Size.Height - 115);
+ memGap.Location = new Point(this.Size.Width / 3 - 15, this.Size.Height - 115);
+ elTime.Location = new Point(this.Size.Width - 145, this.Size.Height - 115);
+ lb2.Location = new Point(this.Size.Width - 48, 70);
+ stopTest.Location = new Point(this.Size.Width - 138, 6);
+ }
+
+
+
+ private void transparent_ValueChanged(object sender, EventArgs e)
+ { //투명도 조절
+ this.Opacity = (double)transparent.Value/100;
+ }
+
+ }
+}
diff --git a/MainForm.resx b/MainForm.resx
new file mode 100644
index 0000000..3e25e42
--- /dev/null
+++ b/MainForm.resx
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ 14, 14
+
+
+ 92, 14
+
+
+ 209, 14
+
+
+ 310, 14
+
+
+
+
+ AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAA
+ AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wL///8c////cv///6T///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8C////GP///0X///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A/wAAAv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wb///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP79/QCbwcFlS29vwMS/vxn///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP/8/AB6t7fAAI2N/zRwcM7X19cKzs7OFpyYmGX+/v4A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8ApoqKWaV3dyD46uoja7S0/wCJif9BbGz/PTk5/w8P
+ D/6Ojo5s////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wDI1dUdJH186UVsbP/p4eH/9/r6/2+p
+ qf8wT0//GhgY/xwbG/86OjrLlpaWWv///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP77+wAAdlkCSrOvyQB2
+ dv9UfHz/xsTE/3Vubv92c3P/NDQ0/zMzM/9xcXH/PDw8zpSUlHb///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD+/v4ApsazInZ/
+ f4H/AAAG8P//BErAvtIFcXH/SlFR/3Z0dP95eXn/MDAw/zAwMP97e3v/dnZ2/zs7O8+WlpZ4////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wAAAAADYaqnxAB2dv9wdHTM1CoqBq7b2xpRZGT/b3Fx/3Z2dv8xMTH/RERE/0NDQ/82Njb/fHx8/3Jy
+ cv85OTnTnZ2dX////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AJRlYyZFEg8Mj7WuKzOhof8AdHT/cImJiIBxeYlzcHD/fHt7/zQ0NP84ODj/c3Nz/3Jy
+ cv85OTn/NDQ0/3h4eP9wcHD/QEBAwLOzszf///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8Aia6nJk18fMp9jYrC//b2Q9jp6f88oaH/IkxM/3BsbP98fHz/QEBA/zQ0
+ NP9zc3P/jY2N/4+Pj/91dXX/MjIy/z09Pf+AgID/bW1t/z8/P8S0tLQy////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AlbexWCKcnP8AZGT/jpub/+fj4/9+eXn/bm5u/319
+ ff86Ojr/Ly8v/3V1df+Hh4f/hYWF/4SEhP+Li4v/dXV1/ywsLP8/Pz//fn5+/2hoaP9AQEDDwsLCJP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8D////D6F7dCybjImg////acDU1P8fpKT/CW1t/2Nm
+ Zv9qaGj/hYWF/z09Pf8vLy//b29v/5aWlv+xsbH/wcHB/8HBwf/Dw8P/xcXF/7e3t/+Xl5f/nZ2d/8HB
+ wf+xsbH/s7Oz2vX19XP///8g////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///yD///9f////f////43///+o/fz8v7PR0fKJs7P+0NDQ////
+ ///b6en/m7Ky/5mcnP+RkJD/QUFB/zU1Nf9paWn/jIyM/7Ozs/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP////9A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///18AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+Kior/Kysr/2dnZ/+JiYn/hISE/8LCwv8AAAD/AAAA/+/v
+ 7//CwsL/wcHB/8HBwf/Hx8f/srKy/5aWlv+qqqr/p6en/9bW1pn///8g////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///38AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP94eHj/Z2dn/4qKiv+EhIT/hISE/8LC
+ wv8AAAD/AAAA/+/v7//CwsL/wsLC/8LCwv/CwsL/xcXF/7W1tf+VlZX/jY2N/9nZ2Zb///8g////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /38AAAD/AAAA//b5+fGGxsb/ja6u/+Lh4f/6+fn/vcPD/6ywsP/Q0ND/5+fn/8rKyv+Pj4//iYmJ/4iI
+ iP+FhYX/hYWF/7Ozs/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP////9f////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///38AAAD/AAAA/////3+HvLz/Ao6O/yhwcP+Ih4f/ZGFh/4iHh/+Pj4//AAAA/wAA
+ AP+1trX/jIiM/4eBh/+FhIX/g4OD/5WVlf+zs7P/wsLC/8LCwv/CwsL/wsLC/8LCwv/BwcH/w8PD/7q6
+ uv/t7e32AAAA/wAAAP////9/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///38AAAD/AAAA//n5+f//////wuPj/46zs/+SlJT/k5OT/1ZW
+ Vv+Wlpb/AAAA/wAAAP/CwML/W3Fb/0l2Sf9vdm//jImM/5WVlf+ysrL/wsLC/8LCwv/CwsL/wsLC/8LC
+ wv/Gxsb/u7u7/6ysrOD19fXzAAAA/wAAAP////9/////AP///wD///8A////AP///wD///8A////AP//
+ /wT///8A////AP///wD///8A////AP///wD///8A////IP/+/sAAAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/v7+//0BAQP+tra3/AAAA/wAAAP+2u7b/H48f/wCjAP9AgkD/fXp9/6SipP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP////9f////AP///wD///8A////AP//
+ /wD///8A////Bv///yr///8A////AP///wD///8A////AP///wD/a2sCxcPDwwAAAP8AAAD/AAAA/7/h
+ 4f+fsLD/2NfX/wAAAP8AAAD/AAAA/5aWlv/CwsL/AAAA/wAAAP+PxI//CNcI/wDvAP8Puw//NHU0/4aF
+ hv+ysbL/wsLC/8LCwv/CwsL/w8PD/729vf+srKzg1NTUvPn5+YL///9/////f////1////8g////AP//
+ /wD///8A////AP///wD///8A////Af///y////8A////AP///wD///8A////AP///wCsw8M/iL6+/gAA
+ AP8AAAD//////4urq/9CVFT/oaCg//7+/v8AAAD/AAAA/8LCwv/Ixsj/AAAA/wAAAP/e+N7/X/xf/yD/
+ IP8g8iD/YM1g/5q5mv++vb7/xcTF/8HBwf/ExMT/wMDA/66urt7KyMrT////f////3////9/////f///
+ /3////9/////X////yD///8A////AP///wD///8A////AP///wn///8A////AP///wD///8A////AP//
+ /wAA//8Bkc/P4QAAAP8AAAD/AAAA/9nX1//BwMD/19fX/wAAAP8AAAD/AAAA/7a0tv+1uLX/AAAA/wAA
+ AP8AAAD/AAAA/1//X/9f/1//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/////1////8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////ILLe3v0AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/09LT/32D
+ ff+QvpD/AAAA/wAAAP8AAAD/AAAA/1//X/9f/1//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/////1////8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8g+/v7aL3AwO3m6Oj///////7+/v/+/v7//v7+////
+ ///w7/D/zMzM/3muef+f6J//AAAA/wAAAP/e/97/X/9f/yD/IP8g/yD/X/9f/3//f/9/9H//gdiB/4uj
+ i/+9t73e9vX2hP///3////9/////f////3/////eAAAA/wAAAP/////e////X////yD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///9fAAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/e/t7/AAAA/wAAAP9//3//AP8A/wD/AP8A/wD/AP8A/wD/
+ AP8A/wD/AOYA/wuVC/+bv5t6AAAAAP///wD///8A////AP///wD///9/AAAA/wAAAP////9/////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///9fAAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP/e/97/AAAA/wAAAP9//3//AP8A/wD/
+ AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wDkAP8Zohn0u8O7Uf///wD///8A////AP///wD///9/AAAA/wAA
+ AP////9/////AP///wD///8A////AP///wD///8A////AP///wD///8A////Av///wL///8B////AP//
+ /wD///8gsrOyvJ+fn/+2trb/5ubm//7+/v///////////+/v7/+64br/f/l//1//X/+f/5//AAAA/wAA
+ AP9//3//AP8A/wD/AP8A/wD/AP8A/yD/IP9f/1//f/9//3//f/9/73//ks+S9vP185n///9/////f///
+ /3/////eAAAA/wAAAP////9/////AP///wD///8A////AP///wD///8A////AP///wD///8A////Av//
+ /wD///8A////AP///wD///8AYGFhmh0dHf+NjY3/AAAA/wAAAP8AAAD/AAAA/wAAAP+N0Y3/AP8A/wD/
+ AP9f/1//AAAA/wAAAP9//3//Af4B/wL+Av8B/wH/AP8A/1//X/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP////9/////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AxcrHF0BAQMCLi4v/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP+N0Y3/AP8A/wD/AP8g/yD/n/+f/wAAAP9o9mj/R7lH/2OgY/8qyir/APYA/1//X/8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP////9f////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AKampjBra2u7mZmZ/8LC
+ wv/BwcH/wsHC/7Kysv9hvmH/AP8A/wD/AP8A/wD/IP8g/0r1Sv9cxFz/gn6C/3JDcv9Ibkj/G60b/yD6
+ IP9f/1//f/9//3//f/9//3//f/9//3//f/9/6n//nNCc7fv4+47///9/////f////1////8g////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wCkpKRAQ0NDvV9fX/+IiIj/iYeJ/4OFg/9KtUr/AP8A/wD/AP8A/wD/C/ML/0m7Sf+GgYb/aFJo/0A6
+ QOOxhrFHtcO1NyTJJOYA9QD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/gD/ANMA/y+ZL9fLn8sc////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8An5+fU0NDQ71mZmb/jIqM/4mJif9Ktkr/AP8A/wD/AP8I9wj/P8A//4WF
+ hf9qYmr/Ozo725KUkmv///8A////ALzLvCwfuB/tAPUA/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP4A/wDQ
+ AP81mDXVw5LDIP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AJycnGFAQEDAZmRm/42Pjf9QsVD/B/gH/wf4
+ B/9Av0D/fIh8/2xVbP85ODnck5aTcf///wD///8A////AP/+/wCgqaBsHMYc8AD+AP8A/wD/AP8A/wD/
+ AP8A/wD/AP8A/wD+AP8AvAD/apdqk////wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCZmZlyQUBBwGdo
+ Z/9yn3L/P8A//z/AP/99lX3/clly/zo5OtiUlJR4////AP///wD///8A////AP///wD//v8ArM2sPxbF
+ FvYA+gD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A2AD/Z6Rnkv///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8Al5eXekJBQsBqbmr/g5OD/4OTg/9qb2r/PT09zpaWln3///8A////AP///wD///8A////AP//
+ /wD///8A//z/AJCtkJwRwRH7AP0A/wD/AP8A/wD/AP8A/wD/AP8A1wD/aKVokv///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AJOTk4Y2NTbYc3Bz/3Nxc/87OzvHoqKiS////wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP/7/wCKtoq6DNUM/wD+AP8A/wD/AP8A/wD/AP8A1wD/aKVokv//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP7+/gCQkJCTKioq6SoqKumPj4+Z/f39AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/+f8AiLiIxwrHCv8A/AD/AP8A/wD/
+ AP8A1wD/aKVokv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD8/PwAlJSUXJOT
+ k1z8/PwA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A1ADUAIWy
+ heEK0Ar/AP8A/wD/AP8A1wD/aKVokv///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A+vr6APr6+gD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////ANRx1BKBwYHuB9gH/wD/AP8A2QD/aKVokv///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wCxFLELfLN89gPXA/8A2gD/aKVokv///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AmSKZD3W4dYEAqQD/YKBgmv//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AGE8
+ YRWJromdqq2qQ////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8C////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///80////Bf///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8m////KP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///////AAAP//////+AAA////v//+
+ AAD///8f//8AAP///wP//wAA///8Af//AAD///gA//8AAP//+AB//wAA///gAD//AAD//8AAH/8AAP//
+ gAAP/wAA//8AAAf/AAD//wAAA/8AAP/wAAAA/wAA/wAAAAD/AAD/AAAAAP8AAP8AAAAA/wAA/wAAAAD/
+ AAD/AAAAAP8AAP8AAAAA/gAA/gAAAAD8AAD8AAAAAPwAAPwAAAAAPgAA/AAAAAA/AAD+AAAAAD8AAPwA
+ AAAAPwAA/AAAAfD/AAD8AAAA8P8AAIwAAAAA/wAAvgAAAAD/AAD+AAAAAP8AAP8AAAAA/wAA/4AAAAf/
+ AAD/wADAA/8AAP/gAeAD/wAA//AD8AP/AAD/+Af4A/8AAP/8D/wD/wAA//4f/gP/AAD//z//A/8AAP//
+ //8D/wAA/////4P/AAD/////w/8AAP/////j/wAA////////AAB///////8AAD///////wAAP///////
+ AAA=
+
+
+
\ No newline at end of file
diff --git a/MaterialSkin.dll b/MaterialSkin.dll
new file mode 100644
index 0000000..57c12a8
Binary files /dev/null and b/MaterialSkin.dll differ
diff --git a/Program.cs b/Program.cs
new file mode 100644
index 0000000..d5ec30f
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace EasyHCI
+{
+ static class Program
+ {
+ ///
+ /// 해당 응용 프로그램의 주 진입점입니다.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+ }
+}
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..71a8362
--- /dev/null
+++ b/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
+// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
+// 이러한 특성 값을 변경하세요.
+[assembly: AssemblyTitle("EasyHCI")]
+[assembly: AssemblyDescription("HCI Memtest Helper")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("debugprov@naver.com")]
+[assembly: AssemblyProduct("EasyHCI")]
+[assembly: AssemblyCopyright("debugprov@naver.com")]
+[assembly: AssemblyTrademark("EasyHCI")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
+// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
+// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
+[assembly: ComVisible(false)]
+
+// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
+[assembly: Guid("f3edd19b-1622-4c20-84aa-54c9c6596780")]
+
+// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
+//
+// 주 버전
+// 부 버전
+// 빌드 번호
+// 수정 버전
+//
+// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로
+// 지정되도록 할 수 있습니다.
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.7.0")]
+[assembly: AssemblyFileVersion("1.0.7.0")]
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..971e220
--- /dev/null
+++ b/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 도구를 사용하여 생성되었습니다.
+// 런타임 버전:4.0.30319.42000
+//
+// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+// 이러한 변경 내용이 손실됩니다.
+//
+//------------------------------------------------------------------------------
+
+namespace EasyHCI.Properties {
+ using System;
+
+
+ ///
+ /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
+ ///
+ // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
+ // 클래스에서 자동으로 생성되었습니다.
+ // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
+ // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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 (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EasyHCI.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 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/Properties/Resources.resx b/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/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/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..4e9a148
--- /dev/null
+++ b/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// 이 코드는 도구를 사용하여 생성되었습니다.
+// 런타임 버전:4.0.30319.42000
+//
+// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+// 이러한 변경 내용이 손실됩니다.
+//
+//------------------------------------------------------------------------------
+
+namespace EasyHCI.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.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/Properties/Settings.settings b/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/app.manifest b/app.manifest
new file mode 100644
index 0000000..2ec808f
--- /dev/null
+++ b/app.manifest
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bin/x86/Release/EasyHCI.exe b/bin/x86/Release/EasyHCI.exe
new file mode 100644
index 0000000..88c30ae
Binary files /dev/null and b/bin/x86/Release/EasyHCI.exe differ
diff --git a/bin/x86/Release/EasyHCI.exe.config b/bin/x86/Release/EasyHCI.exe.config
new file mode 100644
index 0000000..bae5d6d
--- /dev/null
+++ b/bin/x86/Release/EasyHCI.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/bin/x86/Release/EasyHCI.pdb b/bin/x86/Release/EasyHCI.pdb
new file mode 100644
index 0000000..6a7a4a6
Binary files /dev/null and b/bin/x86/Release/EasyHCI.pdb differ
diff --git a/bin/x86/Release/Resources/Settings.txt b/bin/x86/Release/Resources/Settings.txt
new file mode 100644
index 0000000..c7cf2e8
--- /dev/null
+++ b/bin/x86/Release/Resources/Settings.txt
@@ -0,0 +1,18 @@
+ǥġ: 800
+ : True
+Ʈ : Auto
+
+ ũ: True
+ֱ ũ: False
+ֱ ũ (): 60
+ũ : C:\Users\Administrator\Desktop\Programs\Computer Information\HCI Memtest\HCI Screenshots
+
+Ҹ˸ ݺ Ƚ: 3
+ ˸ : C:\Users\Administrator\Desktop\Programs\Computer Information\HCI Memtest\Resources\success.wav
+ ˸ : C:\Users\Administrator\Desktop\Programs\Computer Information\HCI Memtest\Resources\error.wav
+
+ : Memtest
+
+â ġ (x): 240
+â ġ (y): 230
+α Ʈ: True
\ No newline at end of file
diff --git a/bin/x86/Release/Resources/error.wav b/bin/x86/Release/Resources/error.wav
new file mode 100644
index 0000000..8155496
Binary files /dev/null and b/bin/x86/Release/Resources/error.wav differ
diff --git a/bin/x86/Release/Resources/mcExcept.txt b/bin/x86/Release/Resources/mcExcept.txt
new file mode 100644
index 0000000..3e8aa78
--- /dev/null
+++ b/bin/x86/Release/Resources/mcExcept.txt
@@ -0,0 +1,13 @@
+# 예외처리할 항목을 한 줄에 하나씩 써주세요.
+# 확장자를 제외하고 이름만 써주셔야 합니다.
+# KakaoTalk.exe의 경우 KakaoTalk만 입력하세요.
+# 대소문자를 구별하지 않으셔도 됩니다. (KakaoTalk이나 kakaotalk이나 동일)
+# 윈도우 구동에 필요한 기본 프로세스들은 적지 않으셔도 예외처리됩니다.
+# 가장 앞에 #을 붙인 줄은 주석처리 되어 무시됩니다.
+
+# -------------------
+# ---이 밑에 입력---
+# -------------------
+
+hwinfo32
+hwinfo64
\ No newline at end of file
diff --git a/bin/x86/Release/Resources/memtest.exe b/bin/x86/Release/Resources/memtest.exe
new file mode 100644
index 0000000..3a385c6
Binary files /dev/null and b/bin/x86/Release/Resources/memtest.exe differ
diff --git a/bin/x86/Release/Resources/success.wav b/bin/x86/Release/Resources/success.wav
new file mode 100644
index 0000000..0dc6fe8
Binary files /dev/null and b/bin/x86/Release/Resources/success.wav differ
diff --git a/hangeul.ico b/hangeul.ico
new file mode 100644
index 0000000..b4f8a1d
Binary files /dev/null and b/hangeul.ico differ
diff --git a/packages.config b/packages.config
new file mode 100644
index 0000000..ee77082
--- /dev/null
+++ b/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/Costura.Fody.4.1.0/.signature.p7s b/packages/Costura.Fody.4.1.0/.signature.p7s
new file mode 100644
index 0000000..c9950d4
Binary files /dev/null and b/packages/Costura.Fody.4.1.0/.signature.p7s differ
diff --git a/packages/Costura.Fody.4.1.0/Costura.Fody.4.1.0.nupkg b/packages/Costura.Fody.4.1.0/Costura.Fody.4.1.0.nupkg
new file mode 100644
index 0000000..175f3c3
Binary files /dev/null and b/packages/Costura.Fody.4.1.0/Costura.Fody.4.1.0.nupkg differ
diff --git a/packages/Costura.Fody.4.1.0/build/Costura.Fody.props b/packages/Costura.Fody.4.1.0/build/Costura.Fody.props
new file mode 100644
index 0000000..a189a9a
--- /dev/null
+++ b/packages/Costura.Fody.4.1.0/build/Costura.Fody.props
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/Costura.Fody.4.1.0/lib/net40/Costura.dll b/packages/Costura.Fody.4.1.0/lib/net40/Costura.dll
new file mode 100644
index 0000000..27d80be
Binary files /dev/null and b/packages/Costura.Fody.4.1.0/lib/net40/Costura.dll differ
diff --git a/packages/Costura.Fody.4.1.0/lib/net40/Costura.xml b/packages/Costura.Fody.4.1.0/lib/net40/Costura.xml
new file mode 100644
index 0000000..7e9ca15
--- /dev/null
+++ b/packages/Costura.Fody.4.1.0/lib/net40/Costura.xml
@@ -0,0 +1,18 @@
+
+
+
+ Costura
+
+
+
+
+ Contains methods for interacting with the Costura system.
+
+
+
+
+ Call this to Initialize the Costura system.
+
+
+
+
diff --git a/packages/Costura.Fody.4.1.0/weaver/Costura.Fody.dll b/packages/Costura.Fody.4.1.0/weaver/Costura.Fody.dll
new file mode 100644
index 0000000..d74ccba
Binary files /dev/null and b/packages/Costura.Fody.4.1.0/weaver/Costura.Fody.dll differ
diff --git a/packages/Costura.Fody.4.1.0/weaver/Costura.Fody.xcf b/packages/Costura.Fody.4.1.0/weaver/Costura.Fody.xcf
new file mode 100644
index 0000000..0f0424e
--- /dev/null
+++ b/packages/Costura.Fody.4.1.0/weaver/Costura.Fody.xcf
@@ -0,0 +1,85 @@
+
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with line breaks.
+
+
+
+
+ The order of preloaded assemblies, delimited with line breaks.
+
+
+
+
+
+ This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.
+
+
+
+
+ Controls if .pdbs for reference assemblies are also embedded.
+
+
+
+
+ Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.
+
+
+
+
+ As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.
+
+
+
+
+ Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.
+
+
+
+
+ Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.
+
+
+
+
+ A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |
+
+
+
+
+ A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.
+
+
+
+
+ A list of unmanaged 32 bit assembly names to include, delimited with |.
+
+
+
+
+ A list of unmanaged 64 bit assembly names to include, delimited with |.
+
+
+
+
+ The order of preloaded assemblies, delimited with |.
+
+
+
\ No newline at end of file
diff --git a/packages/Fody.6.0.0/.signature.p7s b/packages/Fody.6.0.0/.signature.p7s
new file mode 100644
index 0000000..4d9aadd
Binary files /dev/null and b/packages/Fody.6.0.0/.signature.p7s differ
diff --git a/packages/Fody.6.0.0/Fody.6.0.0.nupkg b/packages/Fody.6.0.0/Fody.6.0.0.nupkg
new file mode 100644
index 0000000..b355281
Binary files /dev/null and b/packages/Fody.6.0.0/Fody.6.0.0.nupkg differ
diff --git a/packages/Fody.6.0.0/build/Fody.targets b/packages/Fody.6.0.0/build/Fody.targets
new file mode 100644
index 0000000..167a11a
--- /dev/null
+++ b/packages/Fody.6.0.0/build/Fody.targets
@@ -0,0 +1,110 @@
+
+
+
+ $(ProjectDir)FodyWeavers.xml
+ $(MSBuildThisFileDirectory)..\
+ $(FodyPath)netstandardtask
+ $(FodyPath)netclassictask
+ $(FodyAssemblyDirectory)\Fody.dll
+ $(DefaultItemExcludes);FodyWeavers.xsd
+ true
+ 15
+ $([System.Version]::Parse($(MSBuildVersion)).Major)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/Fody.6.0.0/netclassictask/Fody.dll b/packages/Fody.6.0.0/netclassictask/Fody.dll
new file mode 100644
index 0000000..2ca8d38
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/Fody.dll differ
diff --git a/packages/Fody.6.0.0/netclassictask/FodyCommon.dll b/packages/Fody.6.0.0/netclassictask/FodyCommon.dll
new file mode 100644
index 0000000..8cd5941
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/FodyCommon.dll differ
diff --git a/packages/Fody.6.0.0/netclassictask/FodyHelpers.dll b/packages/Fody.6.0.0/netclassictask/FodyHelpers.dll
new file mode 100644
index 0000000..d04ebd9
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/FodyHelpers.dll differ
diff --git a/packages/Fody.6.0.0/netclassictask/FodyIsolated.dll b/packages/Fody.6.0.0/netclassictask/FodyIsolated.dll
new file mode 100644
index 0000000..fbf1279
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/FodyIsolated.dll differ
diff --git a/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Pdb.dll b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Pdb.dll
new file mode 100644
index 0000000..980d4da
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Pdb.dll differ
diff --git a/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Pdb.pdb b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Pdb.pdb
new file mode 100644
index 0000000..c3a88f3
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Pdb.pdb differ
diff --git a/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Rocks.dll b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Rocks.dll
new file mode 100644
index 0000000..1355bb7
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Rocks.dll differ
diff --git a/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Rocks.pdb b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Rocks.pdb
new file mode 100644
index 0000000..864cdbd
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.Rocks.pdb differ
diff --git a/packages/Fody.6.0.0/netclassictask/Mono.Cecil.dll b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.dll
new file mode 100644
index 0000000..099fba4
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.dll differ
diff --git a/packages/Fody.6.0.0/netclassictask/Mono.Cecil.pdb b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.pdb
new file mode 100644
index 0000000..ad888f4
Binary files /dev/null and b/packages/Fody.6.0.0/netclassictask/Mono.Cecil.pdb differ
diff --git a/packages/Fody.6.0.0/netstandardtask/Fody.dll b/packages/Fody.6.0.0/netstandardtask/Fody.dll
new file mode 100644
index 0000000..cbc88c1
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/Fody.dll differ
diff --git a/packages/Fody.6.0.0/netstandardtask/FodyCommon.dll b/packages/Fody.6.0.0/netstandardtask/FodyCommon.dll
new file mode 100644
index 0000000..909c960
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/FodyCommon.dll differ
diff --git a/packages/Fody.6.0.0/netstandardtask/FodyHelpers.dll b/packages/Fody.6.0.0/netstandardtask/FodyHelpers.dll
new file mode 100644
index 0000000..d04ebd9
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/FodyHelpers.dll differ
diff --git a/packages/Fody.6.0.0/netstandardtask/FodyIsolated.dll b/packages/Fody.6.0.0/netstandardtask/FodyIsolated.dll
new file mode 100644
index 0000000..c938719
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/FodyIsolated.dll differ
diff --git a/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Pdb.dll b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Pdb.dll
new file mode 100644
index 0000000..e81b2f8
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Pdb.dll differ
diff --git a/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Pdb.pdb b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Pdb.pdb
new file mode 100644
index 0000000..8347861
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Pdb.pdb differ
diff --git a/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Rocks.dll b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Rocks.dll
new file mode 100644
index 0000000..2b2652b
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Rocks.dll differ
diff --git a/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Rocks.pdb b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Rocks.pdb
new file mode 100644
index 0000000..61af54c
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.Rocks.pdb differ
diff --git a/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.dll b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.dll
new file mode 100644
index 0000000..f1a5119
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.dll differ
diff --git a/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.pdb b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.pdb
new file mode 100644
index 0000000..b506a34
Binary files /dev/null and b/packages/Fody.6.0.0/netstandardtask/Mono.Cecil.pdb differ