--- KHModbus.sln
+++ KHModbus.sln
... | ... | @@ -9,6 +9,8 @@ |
9 | 9 |
EndProject |
10 | 10 |
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SignusKH", "SignusKH\SignusKH.csproj", "{7F1050F6-B03B-45C2-9F29-6632066E4B5C}" |
11 | 11 |
EndProject |
12 |
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SignusKHSVR", "SignusKHSVR\SignusKHSVR.csproj", "{7F1050F6-B03B-46C2-9F29-6632066E4B5C}" |
|
13 |
+EndProject |
|
12 | 14 |
Global |
13 | 15 |
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
14 | 16 |
Debug|Any CPU = Debug|Any CPU |
... | ... | @@ -27,6 +29,10 @@ |
27 | 29 |
{7F1050F6-B03B-45C2-9F29-6632066E4B5C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
28 | 30 |
{7F1050F6-B03B-45C2-9F29-6632066E4B5C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
29 | 31 |
{7F1050F6-B03B-45C2-9F29-6632066E4B5C}.Release|Any CPU.Build.0 = Release|Any CPU |
32 |
+ {7F1050F6-B03B-46C2-9F29-6632066E4B5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
|
33 |
+ {7F1050F6-B03B-46C2-9F29-6632066E4B5C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
|
34 |
+ {7F1050F6-B03B-46C2-9F29-6632066E4B5C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
|
35 |
+ {7F1050F6-B03B-46C2-9F29-6632066E4B5C}.Release|Any CPU.Build.0 = Release|Any CPU |
|
30 | 36 |
EndGlobalSection |
31 | 37 |
GlobalSection(SolutionProperties) = preSolution |
32 | 38 |
HideSolutionNode = FALSE |
--- ModbusTest/FormModbus.cs
+++ ModbusTest/FormModbus.cs
... | ... | @@ -1229,12 +1229,54 @@ |
1229 | 1229 |
*/ |
1230 | 1230 |
} |
1231 | 1231 |
|
1232 |
+ private Dictionary<string, float> m_dicPV = new Dictionary<string, float>(); |
|
1233 |
+ |
|
1234 |
+ |
|
1232 | 1235 |
private void UpdateBaseoilSwitch() |
1233 | 1236 |
{ |
1234 | 1237 |
U3Util.ErrorLog("UpdateBaseoilSwitch"); |
1235 | 1238 |
U3Database db = new U3Database(); |
1236 | 1239 |
|
1237 | 1240 |
string strSQL = ""; |
1241 |
+ |
|
1242 |
+ strSQL = " SELECT *, (a.REAL_DATA * b.VALUE_RATIO) as PV_VAL FROM T_HT_REAL_DATA a "; |
|
1243 |
+ strSQL += " left join T_STD_MACH b on a.MACH_CD = b.MACH_CD where b.REMARK04 is not null"; |
|
1244 |
+ DataTable dtCurPV = db.OpenSQL(strSQL); |
|
1245 |
+ foreach (DataRow drCurPV in dtCurPV.Rows) |
|
1246 |
+ { |
|
1247 |
+ string strBaseoil = U3Util.toStr(drCurPV["REMARK04"]); |
|
1248 |
+ string strMachCD = U3Util.toStr(drCurPV["MACH_CD"]); |
|
1249 |
+ string strMachNM = U3Util.toStr(drCurPV["MACH_NM"]); |
|
1250 |
+ float fPV = U3Util.toFloat(drCurPV["PV_VAL"]); |
|
1251 |
+ |
|
1252 |
+ if (m_dicPV.ContainsKey(strMachCD) == false) |
|
1253 |
+ { |
|
1254 |
+ m_dicPV.Add(strMachCD, fPV); |
|
1255 |
+ } |
|
1256 |
+ else |
|
1257 |
+ { |
|
1258 |
+ float fPrev = m_dicPV[strMachCD]; |
|
1259 |
+ if (fPV < (fPrev * 0.1)) |
|
1260 |
+ { |
|
1261 |
+ U3Util.ErrorLog("### " + strBaseoil + " = 이전: " + fPrev.ToString() + " / 현재: " + fPV.ToString()); |
|
1262 |
+ |
|
1263 |
+ string sql3 = ""; |
|
1264 |
+ sql3 += " insert into T_HT_HIST_BASEOIL (COMP_CD,BASEOIL_CD,HBT_CD,ONOFF_YN,PV_VAL,MACH_NM,REG_DT) values ("; |
|
1265 |
+ sql3 += " '0001', "; |
|
1266 |
+ sql3 += " '" + strBaseoil + "', "; |
|
1267 |
+ sql3 += " '', "; |
|
1268 |
+ sql3 += " 'X', "; |
|
1269 |
+ sql3 += " " + fPrev.ToString() + ", "; |
|
1270 |
+ sql3 += " '" + strMachNM + "', "; |
|
1271 |
+ sql3 += " getdate() "; |
|
1272 |
+ sql3 += " )"; |
|
1273 |
+ sql3 += " "; |
|
1274 |
+ |
|
1275 |
+ db.ExcuteSql(sql3); |
|
1276 |
+ } |
|
1277 |
+ m_dicPV[strMachCD] = fPV; |
|
1278 |
+ } |
|
1279 |
+ } |
|
1238 | 1280 |
|
1239 | 1281 |
Dictionary<string, string> oldDic = new Dictionary<string, string>(); |
1240 | 1282 |
strSQL = "select * from T_HT_REAL_BASEOIL"; |
... | ... | @@ -1248,6 +1290,7 @@ |
1248 | 1290 |
} |
1249 | 1291 |
|
1250 | 1292 |
Dictionary<string, float> pvDic = new Dictionary<string, float>(); |
1293 |
+ Dictionary<string, string> machNmDic = new Dictionary<string, string>(); |
|
1251 | 1294 |
strSQL = ""; |
1252 | 1295 |
strSQL += " SELECT a.MACH_CD, (REAL_DATA * VALUE_RATIO) as PV_VAL, MACH_NM, REMARK04"; |
1253 | 1296 |
strSQL += " FROM T_HT_REAL_DATA a"; |
... | ... | @@ -1258,8 +1301,11 @@ |
1258 | 1301 |
{ |
1259 | 1302 |
string strKey = U3Util.toStr(drPv["REMARK04"]); |
1260 | 1303 |
float fVal = U3Util.toFloat(drPv["PV_VAL"]); |
1304 |
+ string strMachNm = U3Util.toStr(drPv["MACH_NM"]); |
|
1261 | 1305 |
if (pvDic.ContainsKey(strKey) == false) |
1262 | 1306 |
pvDic.Add(strKey, fVal); |
1307 |
+ if (machNmDic.ContainsKey(strKey) == false) |
|
1308 |
+ machNmDic.Add(strKey, strMachNm); |
|
1263 | 1309 |
} |
1264 | 1310 |
|
1265 | 1311 |
Dictionary<string, string> myDictionary = new Dictionary<string, string>(); |
... | ... | @@ -1304,16 +1350,23 @@ |
1304 | 1350 |
pvVal = pvDic[item.Key]; |
1305 | 1351 |
} |
1306 | 1352 |
|
1353 |
+ string mach_nm = ""; |
|
1354 |
+ if (machNmDic.ContainsKey(item.Key)) |
|
1355 |
+ { |
|
1356 |
+ mach_nm = machNmDic[item.Key]; |
|
1357 |
+ } |
|
1358 |
+ |
|
1307 | 1359 |
string oldValue = oldDic[item.Key]; |
1308 | 1360 |
if (item.Value != oldValue) |
1309 | 1361 |
{ |
1310 | 1362 |
string sql3 = ""; |
1311 |
- sql3 += " insert into T_HT_HIST_BASEOIL (COMP_CD,BASEOIL_CD,HBT_CD,ONOFF_YN,PV_VAL,REG_DT) values ("; |
|
1363 |
+ sql3 += " insert into T_HT_HIST_BASEOIL (COMP_CD,BASEOIL_CD,HBT_CD,ONOFF_YN,PV_VAL,MACH_NM,REG_DT) values ("; |
|
1312 | 1364 |
sql3 += " '0001', "; |
1313 | 1365 |
sql3 += " '" + item.Key + "', "; |
1314 | 1366 |
sql3 += " '" + ((item.Value.Length > 0) ? item.Value : oldValue) + "', "; |
1315 | 1367 |
sql3 += " '" + ((item.Value.Length > 0) ? "Y" : "N") + "', "; |
1316 | 1368 |
sql3 += " " + pvVal.ToString() + ", "; |
1369 |
+ sql3 += " '" + mach_nm + "', "; |
|
1317 | 1370 |
sql3 += " getdate() "; |
1318 | 1371 |
sql3 += " )"; |
1319 | 1372 |
sql3 += " "; |
--- SignusKH/Form1.cs
+++ SignusKH/Form1.cs
... | ... | @@ -119,7 +119,7 @@ |
119 | 119 |
m_ps[index].StartInfo.FileName = AppExe; |
120 | 120 |
m_ps[index].StartInfo.WorkingDirectory = AppPath; |
121 | 121 |
m_ps[index].StartInfo.Arguments = " -kiosk -fullscreen " + m_strUrl; |
122 |
- m_ps[index].StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; |
|
122 |
+ m_ps[index].StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; |
|
123 | 123 |
m_ps[index].Start(); |
124 | 124 |
return; |
125 | 125 |
} |
+++ SignusKHSVR/App.config
... | ... | @@ -0,0 +1,6 @@ |
1 | +<?xml version="1.0" encoding="utf-8" ?> | |
2 | +<configuration> | |
3 | + <startup> | |
4 | + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> | |
5 | + </startup> | |
6 | +</configuration>(No newline at end of file) |
+++ SignusKHSVR/Form1.Designer.cs
... | ... | @@ -0,0 +1,95 @@ |
1 | +namespace SignusKHSVR | |
2 | +{ | |
3 | + partial class Form1 | |
4 | + { | |
5 | + /// <summary> | |
6 | + /// 필수 디자이너 변수입니다. | |
7 | + /// </summary> | |
8 | + private System.ComponentModel.IContainer components = null; | |
9 | + | |
10 | + /// <summary> | |
11 | + /// 사용 중인 모든 리소스를 정리합니다. | |
12 | + /// </summary> | |
13 | + /// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param> | |
14 | + protected override void Dispose(bool disposing) | |
15 | + { | |
16 | + if (disposing && (components != null)) | |
17 | + { | |
18 | + components.Dispose(); | |
19 | + } | |
20 | + base.Dispose(disposing); | |
21 | + } | |
22 | + | |
23 | + #region Windows Form 디자이너에서 생성한 코드 | |
24 | + | |
25 | + /// <summary> | |
26 | + /// 디자이너 지원에 필요한 메서드입니다. | |
27 | + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. | |
28 | + /// </summary> | |
29 | + private void InitializeComponent() | |
30 | + { | |
31 | + this.components = new System.ComponentModel.Container(); | |
32 | + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); | |
33 | + this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); | |
34 | + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); | |
35 | + this.ToolStripMenuItem_Close = new System.Windows.Forms.ToolStripMenuItem(); | |
36 | + this.timer1 = new System.Windows.Forms.Timer(this.components); | |
37 | + this.timer_LogApi = new System.Windows.Forms.Timer(this.components); | |
38 | + this.contextMenuStrip1.SuspendLayout(); | |
39 | + this.SuspendLayout(); | |
40 | + // | |
41 | + // notifyIcon1 | |
42 | + // | |
43 | + this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1; | |
44 | + this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); | |
45 | + this.notifyIcon1.Text = "시그너스 프로그램 관리자"; | |
46 | + this.notifyIcon1.Visible = true; | |
47 | + // | |
48 | + // contextMenuStrip1 | |
49 | + // | |
50 | + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | |
51 | + this.ToolStripMenuItem_Close}); | |
52 | + this.contextMenuStrip1.Name = "contextMenuStrip1"; | |
53 | + this.contextMenuStrip1.Size = new System.Drawing.Size(151, 26); | |
54 | + // | |
55 | + // ToolStripMenuItem_Close | |
56 | + // | |
57 | + this.ToolStripMenuItem_Close.Name = "ToolStripMenuItem_Close"; | |
58 | + this.ToolStripMenuItem_Close.Size = new System.Drawing.Size(150, 22); | |
59 | + this.ToolStripMenuItem_Close.Text = "프로그램 종료"; | |
60 | + this.ToolStripMenuItem_Close.Click += new System.EventHandler(this.ToolStripMenuItem_Close_Click); | |
61 | + // | |
62 | + // timer1 | |
63 | + // | |
64 | + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); | |
65 | + // | |
66 | + // timer_LogApi | |
67 | + // | |
68 | + this.timer_LogApi.Tick += new System.EventHandler(this.timer_LogApi_Tick); | |
69 | + // | |
70 | + // Form1 | |
71 | + // | |
72 | + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); | |
73 | + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |
74 | + this.ClientSize = new System.Drawing.Size(544, 226); | |
75 | + this.Name = "Form1"; | |
76 | + this.Text = "SIGNUS"; | |
77 | + this.WindowState = System.Windows.Forms.FormWindowState.Minimized; | |
78 | + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed); | |
79 | + this.Load += new System.EventHandler(this.Form1_Load); | |
80 | + this.Resize += new System.EventHandler(this.Form1_Resize); | |
81 | + this.contextMenuStrip1.ResumeLayout(false); | |
82 | + this.ResumeLayout(false); | |
83 | + | |
84 | + } | |
85 | + | |
86 | + #endregion | |
87 | + | |
88 | + private System.Windows.Forms.NotifyIcon notifyIcon1; | |
89 | + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; | |
90 | + private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem_Close; | |
91 | + private System.Windows.Forms.Timer timer1; | |
92 | + private System.Windows.Forms.Timer timer_LogApi; | |
93 | + } | |
94 | +} | |
95 | + |
+++ SignusKHSVR/Form1.cs
... | ... | @@ -0,0 +1,164 @@ |
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.ComponentModel; | |
4 | +using System.Data; | |
5 | +using System.Drawing; | |
6 | +using System.Linq; | |
7 | +using System.Text; | |
8 | +using System.Threading.Tasks; | |
9 | +using System.Windows.Forms; | |
10 | +using System.Diagnostics; | |
11 | + | |
12 | +namespace SignusKHSVR | |
13 | +{ | |
14 | + public partial class Form1 : Form | |
15 | + { | |
16 | + const int MAX_PROCESS = 10; | |
17 | + private Process[] m_ps = new Process[MAX_PROCESS]; | |
18 | + private List<string> m_lstExe = new List<string>(); | |
19 | + | |
20 | + public Form1() | |
21 | + { | |
22 | + InitializeComponent(); | |
23 | + } | |
24 | + | |
25 | + private void ToolStripMenuItem_Close_Click(object sender, EventArgs e) | |
26 | + { | |
27 | + Program.PostMessage((IntPtr)0xffff, Program.messageQuit, 0, 0); | |
28 | + | |
29 | + for (int i = 0; i < MAX_PROCESS; i++) | |
30 | + { | |
31 | + if (m_ps[i] != null) | |
32 | + { | |
33 | + m_ps[i].Kill(); | |
34 | + m_ps[i] = null; | |
35 | + } | |
36 | + } | |
37 | + this.Close(); | |
38 | + } | |
39 | + | |
40 | + private string m_strUrl = "http://192.168.1.17:8080"; | |
41 | + | |
42 | + private void Form1_Load(object sender, EventArgs e) | |
43 | + { | |
44 | + string AppPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")); | |
45 | + | |
46 | + //string strChrome1 = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"; | |
47 | + //string strChrome2 = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"; | |
48 | + //string strChrome3 = "C:\\Users\\CUPC\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"; | |
49 | + | |
50 | + //if (System.IO.File.Exists(strChrome1)) | |
51 | + // this.m_lstExe.Add(strChrome1); | |
52 | + //else if (System.IO.File.Exists(strChrome2)) | |
53 | + // this.m_lstExe.Add(strChrome2); | |
54 | + //else if (System.IO.File.Exists(strChrome3)) | |
55 | + // this.m_lstExe.Add(strChrome3); | |
56 | + | |
57 | + //this.m_lstExe.Add(AppPath + string.Format("\\KHSCALE.exe")); | |
58 | + | |
59 | + timer1.Enabled = true; | |
60 | + timer1.Interval = 500; | |
61 | + | |
62 | + timer_LogApi.Enabled = true; | |
63 | + timer_LogApi.Interval = 30 * 60 * 1000; | |
64 | + | |
65 | + this.Visible = false; //창을 보이지 않게 한다. | |
66 | + this.ShowIcon = false; //작업표시줄에서 제거. | |
67 | + } | |
68 | + | |
69 | + private int m_nPrevSec = -1; | |
70 | + | |
71 | + private void timer1_Tick(object sender, EventArgs e) | |
72 | + { | |
73 | + DateTime dtNow = DateTime.Now; | |
74 | + if (m_nPrevSec == dtNow.Second) return; | |
75 | + m_nPrevSec = dtNow.Second; | |
76 | + | |
77 | + UpdateProgram(m_nPrevSec % 10); | |
78 | + | |
79 | + //Program.MoveFiles("C:\\EDIM\\Edge Advance 16P\\CSV", "C:\\EDIM\\Edge Advance 16P\\CSV1"); | |
80 | + } | |
81 | + | |
82 | + public void UpdateProgram(int index) | |
83 | + { | |
84 | + if (index < 0) return; | |
85 | + if (index >= this.m_lstExe.Count()) return; | |
86 | + | |
87 | + string AppExe = this.m_lstExe[index]; | |
88 | + if (System.IO.File.Exists(AppExe) == false) | |
89 | + return; | |
90 | + | |
91 | + string AppPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")); | |
92 | + | |
93 | + if (m_ps[index] == null) | |
94 | + { | |
95 | + m_ps[index] = new Process(); | |
96 | + } | |
97 | + else | |
98 | + { | |
99 | + try | |
100 | + { | |
101 | + if (m_ps[index].HasExited) | |
102 | + { | |
103 | + m_ps[index].Close(); | |
104 | + m_ps[index] = new System.Diagnostics.Process(); | |
105 | + } | |
106 | + else | |
107 | + { | |
108 | + return; | |
109 | + } | |
110 | + } | |
111 | + catch | |
112 | + { | |
113 | + return; | |
114 | + } | |
115 | + } | |
116 | + | |
117 | + if (AppExe.IndexOf("chrome") > 0) | |
118 | + { | |
119 | + m_ps[index].StartInfo.FileName = AppExe; | |
120 | + m_ps[index].StartInfo.WorkingDirectory = AppPath; | |
121 | + m_ps[index].StartInfo.Arguments = " -kiosk -fullscreen " + m_strUrl; | |
122 | + m_ps[index].StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; | |
123 | + m_ps[index].Start(); | |
124 | + return; | |
125 | + } | |
126 | + | |
127 | + m_ps[index].StartInfo.FileName = AppExe; | |
128 | + m_ps[index].StartInfo.WorkingDirectory = AppPath; | |
129 | + m_ps[index].StartInfo.Arguments = ""; | |
130 | + m_ps[index].StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; | |
131 | + m_ps[index].Start(); | |
132 | + } | |
133 | + | |
134 | + private void Form1_FormClosed(object sender, FormClosedEventArgs e) | |
135 | + { | |
136 | + Program.PostMessage((IntPtr)0xffff, Program.messageQuit, 0, 0); | |
137 | + | |
138 | + for (int i = 0; i < MAX_PROCESS; i++) | |
139 | + { | |
140 | + if (m_ps[i] != null) | |
141 | + { | |
142 | + m_ps[i].Kill(); | |
143 | + m_ps[i] = null; | |
144 | + } | |
145 | + } | |
146 | + } | |
147 | + | |
148 | + private void Form1_Resize(object sender, EventArgs e) | |
149 | + { | |
150 | + if (this.WindowState == FormWindowState.Minimized) | |
151 | + { | |
152 | + this.Visible = false; //창을 보이지 않게 한다. | |
153 | + this.ShowIcon = false; //작업표시줄에서 제거. | |
154 | + //m_notify.Visible = true; //트레이 아이콘을 표시한다. | |
155 | + } | |
156 | + } | |
157 | + | |
158 | + private void timer_LogApi_Tick(object sender, EventArgs e) | |
159 | + { | |
160 | + SFLogApi log = new SFLogApi(); | |
161 | + log.Run(); | |
162 | + } | |
163 | + } | |
164 | +} |
+++ SignusKHSVR/Form1.resx
... | ... | @@ -0,0 +1,420 @@ |
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<root> | |
3 | + <!-- | |
4 | + Microsoft ResX Schema | |
5 | + | |
6 | + Version 2.0 | |
7 | + | |
8 | + The primary goals of this format is to allow a simple XML format | |
9 | + that is mostly human readable. The generation and parsing of the | |
10 | + various data types are done through the TypeConverter classes | |
11 | + associated with the data types. | |
12 | + | |
13 | + Example: | |
14 | + | |
15 | + ... ado.net/XML headers & schema ... | |
16 | + <resheader name="resmimetype">text/microsoft-resx</resheader> | |
17 | + <resheader name="version">2.0</resheader> | |
18 | + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |
19 | + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |
20 | + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |
21 | + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |
22 | + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |
23 | + <value>[base64 mime encoded serialized .NET Framework object]</value> | |
24 | + </data> | |
25 | + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |
26 | + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |
27 | + <comment>This is a comment</comment> | |
28 | + </data> | |
29 | + | |
30 | + There are any number of "resheader" rows that contain simple | |
31 | + name/value pairs. | |
32 | + | |
33 | + Each data row contains a name, and value. The row also contains a | |
34 | + type or mimetype. Type corresponds to a .NET class that support | |
35 | + text/value conversion through the TypeConverter architecture. | |
36 | + Classes that don't support this are serialized and stored with the | |
37 | + mimetype set. | |
38 | + | |
39 | + The mimetype is used for serialized objects, and tells the | |
40 | + ResXResourceReader how to depersist the object. This is currently not | |
41 | + extensible. For a given mimetype the value must be set accordingly: | |
42 | + | |
43 | + Note - application/x-microsoft.net.object.binary.base64 is the format | |
44 | + that the ResXResourceWriter will generate, however the reader can | |
45 | + read any of the formats listed below. | |
46 | + | |
47 | + mimetype: application/x-microsoft.net.object.binary.base64 | |
48 | + value : The object must be serialized with | |
49 | + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |
50 | + : and then encoded with base64 encoding. | |
51 | + | |
52 | + mimetype: application/x-microsoft.net.object.soap.base64 | |
53 | + value : The object must be serialized with | |
54 | + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |
55 | + : and then encoded with base64 encoding. | |
56 | + | |
57 | + mimetype: application/x-microsoft.net.object.bytearray.base64 | |
58 | + value : The object must be serialized into a byte array | |
59 | + : using a System.ComponentModel.TypeConverter | |
60 | + : and then encoded with base64 encoding. | |
61 | + --> | |
62 | + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |
63 | + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |
64 | + <xsd:element name="root" msdata:IsDataSet="true"> | |
65 | + <xsd:complexType> | |
66 | + <xsd:choice maxOccurs="unbounded"> | |
67 | + <xsd:element name="metadata"> | |
68 | + <xsd:complexType> | |
69 | + <xsd:sequence> | |
70 | + <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |
71 | + </xsd:sequence> | |
72 | + <xsd:attribute name="name" use="required" type="xsd:string" /> | |
73 | + <xsd:attribute name="type" type="xsd:string" /> | |
74 | + <xsd:attribute name="mimetype" type="xsd:string" /> | |
75 | + <xsd:attribute ref="xml:space" /> | |
76 | + </xsd:complexType> | |
77 | + </xsd:element> | |
78 | + <xsd:element name="assembly"> | |
79 | + <xsd:complexType> | |
80 | + <xsd:attribute name="alias" type="xsd:string" /> | |
81 | + <xsd:attribute name="name" type="xsd:string" /> | |
82 | + </xsd:complexType> | |
83 | + </xsd:element> | |
84 | + <xsd:element name="data"> | |
85 | + <xsd:complexType> | |
86 | + <xsd:sequence> | |
87 | + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |
88 | + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |
89 | + </xsd:sequence> | |
90 | + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |
91 | + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |
92 | + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |
93 | + <xsd:attribute ref="xml:space" /> | |
94 | + </xsd:complexType> | |
95 | + </xsd:element> | |
96 | + <xsd:element name="resheader"> | |
97 | + <xsd:complexType> | |
98 | + <xsd:sequence> | |
99 | + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |
100 | + </xsd:sequence> | |
101 | + <xsd:attribute name="name" type="xsd:string" use="required" /> | |
102 | + </xsd:complexType> | |
103 | + </xsd:element> | |
104 | + </xsd:choice> | |
105 | + </xsd:complexType> | |
106 | + </xsd:element> | |
107 | + </xsd:schema> | |
108 | + <resheader name="resmimetype"> | |
109 | + <value>text/microsoft-resx</value> | |
110 | + </resheader> | |
111 | + <resheader name="version"> | |
112 | + <value>2.0</value> | |
113 | + </resheader> | |
114 | + <resheader name="reader"> | |
115 | + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |
116 | + </resheader> | |
117 | + <resheader name="writer"> | |
118 | + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |
119 | + </resheader> | |
120 | + <metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |
121 | + <value>35, 21</value> | |
122 | + </metadata> | |
123 | + <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |
124 | + <value>149, 21</value> | |
125 | + </metadata> | |
126 | + <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> | |
127 | + <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |
128 | + <value> | |
129 | + AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAMMOAADDDgAAAAAAAAAA | |
130 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
131 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByX0wncV1Pb3NcT4ZyXU6+cl1OvnNc | |
132 | + Tt5zXU//c11P/3NdT/9zXU//clxP5nJdTr5yXU6+c1xOjnJdTnd0Wk8vAAAAAAAAAAAAAAAAAAAAAAAA | |
133 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
134 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
135 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFpPL3NcT4ZzXE/Wc11P/3Nd | |
136 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nc | |
137 | + Tt5zXE6Oc1tPPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
138 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
139 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9eTw9zXE6OclxP5nNd | |
140 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
141 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXE7uc11OnnRfSRcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
142 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
143 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfl49B3Nd | |
144 | + T39zXE7uc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
145 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9yXE/2c1xOjm9e | |
146 | + Tw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
147 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
148 | + AAAAAAAAc11OZ3JcT+ZzXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
149 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
150 | + T/9zXU//c11P/3NdT/9zXE7ucl1Od35ePQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
151 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
152 | + AAAAAAAAAAAAAAAAAAB0Wk8vc1xP1nNdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
153 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
154 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9yXE/mc1tPPwAAAAAAAAAAAAAAAAAA | |
155 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
156 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByXE9Pc1xO7nNdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
157 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
158 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Jc | |
159 | + T/ZzXU5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
160 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxXU9vc11P/3NdT/9zXU//c11P/3Nd | |
161 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
162 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
163 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NcTo4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
164 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5ePQdzXU6ec11P/3Nd | |
165 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
166 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
167 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11Ptm9eTw8AAAAAAAAAAAAA | |
168 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5e | |
169 | + PQdzXU+2c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
170 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
171 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
172 | + T/9yXU7Ob15PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
173 | + AAAAAAAAAAAAAAAAAABzXE6Oc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
174 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
175 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
176 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT7YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
177 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzXU5nc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
178 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
179 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
180 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c1xOjgAAAAAAAAAAAAAAAAAA | |
181 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzW08/clxP9nNdT/9zXU//c11P/3Nd | |
182 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//clxP/2pWSf9oVUn/aFVJ/2hV | |
183 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
184 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/bVhL/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
185 | + T/9zXU5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvX08fclxP5nNd | |
186 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/29a | |
187 | + Tf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
188 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9zXU//c11P/3Nd | |
189 | + T/9zXU//c11P/3NdT/9zXU//clxP9nNbTz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
190 | + AAAAAAAAc11OrnNdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
191 | + T/9zXU//c11P/3NdT/+Acmn/yNXU/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
192 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
193 | + 4P+wuLb/c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9yXE/mfl49BwAAAAAAAAAAAAAAAAAA | |
194 | + AAAAAAAAAAAAAAAAAAAAAAAAcVxNR3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
195 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//np+b/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
196 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
197 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Fd | |
198 | + T28AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJdTs5zXU//c11P/3NdT/9zXU//c11P/3Nd | |
199 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3hlWf+2vLv/0eDg/9Hg | |
200 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
201 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
202 | + T/9zXU//c11P/3NdT/9yXE/mfl49BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJcT19zXU//c11P/3Nd | |
203 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//clxP/2pWSf9oVUn/aFVJ/2hV | |
204 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
205 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/bVhL/3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3Nd | |
206 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NcTo4AAAAAAAAAAAAAAAAAAAAAAAAAAH5e | |
207 | + PQdyXE/mc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/29a | |
208 | + Tf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
209 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9zXU//c11P/9Hg | |
210 | + 4P/R4OD/0eDg/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9yXE/2dF9JFwAA | |
211 | + AAAAAAAAAAAAAAAAAABxXU9vc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
212 | + T/9zXU//c11P/3NdT/+Acmn/yNXU/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
213 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
214 | + 4P+wuLb/c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
215 | + T/9zXU//c11P/3NcTo4AAAAAAAAAAAAAAAAAAAAAcl1OvnNdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
216 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//np+b/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
217 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
218 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT/9zXU//c11P/3Nd | |
219 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXE7eAAAAAAAAAAAAAAAAdF9JF3NdT/9zXU//c11P/3Nd | |
220 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3hlWf+2vLv/0eDg/9Hg | |
221 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg | |
222 | + 4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P/R4OD/0eDg/9Hg4P9zXU//c11P/9Hg4P/R4OD/0eDg/3Nd | |
223 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3FbTTcAAAAAAAAAAHJc | |
224 | + T19zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/21YS/9oVUn/aFVJ/2hV | |
225 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
226 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9rV0r/clxP/3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3Nd | |
227 | + T//R4OD/0eDg/9Hg4P9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
228 | + T/9zXU9/AAAAAAAAAABzXU+2c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/21Y | |
229 | + S/9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
230 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2xYS/9zXU//c11P/9Hg | |
231 | + 4P/R4OD/0eDg/3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
232 | + T/9zXU//c11P/3NdT/9zXU//c1xP1gAAAAB+Xj0HclxP9nNdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
233 | + T/9zXU//c11P/3NdT/9zYlf/1tPS//////////////////////////////////////////////////// | |
234 | + /////////////////////////////////////////////////////////////////////////////+Hf | |
235 | + 3v96a2P/c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/9Hg4P/R4OD/0eDg/3NdT/9zXU//c11P/3Nd | |
236 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9vX08fclxPT3NdT/9zXU//c11P/3Nd | |
237 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//zsvJ//////////////////////////////////// | |
238 | + //////////////////////////////////////////////////////////////////////////////// | |
239 | + ////////////////////////2dfW/3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT//R4OD/0eDg/9Hg | |
240 | + 4P9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//cV1Pb3Nd | |
241 | + TmdzXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P//Lx8P////////////// | |
242 | + //////////////////////////////////////////////////////////////////////////////// | |
243 | + //////////////////////////////////////////////v7+/9zXU//c11P/9Hg4P/R4OD/0eDg/3Nd | |
244 | + T/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
245 | + T/9zXU//c11P/3NcT4ZzXU9/c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
246 | + T/////////////////9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
247 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//////////////////c11P/3Nd | |
248 | + T//R4OD/0eDg/9Hg4P9zXU//c11P/9Hg4P/R4OD/0eDg/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
249 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU6ec11OnnNdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
250 | + T/9zXU//c11P/3NdT/9zXU//////////////////c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
251 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P//// | |
252 | + /////////////3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/3Nd | |
253 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//cl1OvnNdT7ZzXU//c11P/3Nd | |
254 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/////////////////3NdT/9zXU//c11P/3Nd | |
255 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
256 | + T/9zXU//c11P/3NdT/////////////////9zXU//c11P/9Hg4P/R4OD/0eDg/3NdT/9zXU//0eDg/9Hg | |
257 | + 4P/R4OD/c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nc | |
258 | + T9ZyXU7Oc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/////////////// | |
259 | + //9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
260 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//////////////////c11P/3NdT//R4OD/0eDg/9Hg | |
261 | + 4P9zXU//c11P/9Hg4P/R4OD/0eDg/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
262 | + T/9zXU//c11P/3NdT/9zXE7uclxP5nNdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
263 | + T/9zXU//////////////////c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
264 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/////////////////3Nd | |
265 | + T/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
266 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NcTt5zXU//c11P/3NdT/9zXU//c11P/3Nd | |
267 | + T/9zXU//c11P/3NdT/9zXU//c11P/////////////////3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
268 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
269 | + T/////////////////9zXU//c11P/9Hg4P/R4OD/0eDg/3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3Nd | |
270 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU/Gc11P/3Nd | |
271 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/////////////////9zXU//c11P/3Nd | |
272 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
273 | + T/9zXU//c11P/3NdT/9zXU//////////////////c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/9Hg | |
274 | + 4P/R4OD/0eDg/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
275 | + T/9yXE/mc11OrnNdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU////////// | |
276 | + ////////c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
277 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/////////////////3NdT/9zXU//0eDg/9Hg | |
278 | + 4P/R4OD/c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
279 | + T/9zXU//c11P/3NdT/9zXU//cl1OznJcT5ZzXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
280 | + T/9zXU//c11P/////////////////3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
281 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/////////////// | |
282 | + //9zXU//c11P/9Hg4P/R4OD/0eDg/3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT/9zXU//c11P/3Nd | |
283 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT7ZzXU9/c11P/3NdT/9zXU//c11P/3Nd | |
284 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/////////////////9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
285 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
286 | + T/9zXU//////////////////c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/7rDwf/R4OD/xM/O/3Nd | |
287 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU6eclxPX3Nd | |
288 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//////////////////c11P/3Nd | |
289 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
290 | + T/9zXU//c11P/3NdT/9zXU//c11P/////////////////3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3Nd | |
291 | + T/9zXU//kY2H/3hlWf9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
292 | + T/9zXU//c11Pf3NbTz9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P//// | |
293 | + /////////////3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
294 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/////////////////9zXU//c11P/9Hg | |
295 | + 4P/R4OD/0eDg/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
296 | + T/9zXU//c11P/3NdT/9zXU//c11P/3JcT18AAAAAc1xO7nNdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
297 | + T/9zXU//c11P/3NdT/////////////////9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
298 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU////////// | |
299 | + ////////c11P/3NdT//R4OD/0eDg/9Hg4P9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
300 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9vXk8PAAAAAHNdTp5zXU//c11P/3Nd | |
301 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//////////////////c11P/3NdT/9zXU//c11P/3Nd | |
302 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
303 | + T/9zXU//c11P/////////////////3NdT/9zXU//0eDg/9Hg4P/R4OD/c11P/3NdT/9zXU//c11P/3Nd | |
304 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9yXU6+AAAAAAAA | |
305 | + AAByXE9Pc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/////////////////3Nd | |
306 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
307 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/////////////////9zXU//c11P/7rDwf/R4OD/xM/O/3Nd | |
308 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
309 | + T/9zXU//cV1PbwAAAAAAAAAAfl49B3JcT/ZzXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
310 | + T/////////////////9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
311 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//////////////////c11P/3Nd | |
312 | + T/9zXU//kY2H/3hlWf9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
313 | + T/9zXU//c11P/3NdT/9zXU//c11P/29fTx8AAAAAAAAAAAAAAABzXU6uc11P/3NdT/9zXU//c11P/3Nd | |
314 | + T/9zXU//c11P/3NdT/9zXU//////////////////aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
315 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ//// | |
316 | + /////////////3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
317 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3JdTs4AAAAAAAAAAAAAAAAAAAAAclxPT3Nd | |
318 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/////////////////2hVSf9oVUn/aFVJ/2hV | |
319 | + Sf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hVSf9oVUn/aFVJ/2hV | |
320 | + Sf9oVUn/aFVJ/2hVSf////////////////9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
321 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9xXU9vAAAAAAAA | |
322 | + AAAAAAAAAAAAAAAAAAByXU7Oc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT//s6ur///////// | |
323 | + //////////////////////////////////////////////////////////////////////////////// | |
324 | + ///////////////////////////////////////////////////4+Pf/c11P/3NdT/9zXU//c11P/3Nd | |
325 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
326 | + T/9yXE/mfl49BwAAAAAAAAAAAAAAAAAAAAAAAAAAcVtNN3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
327 | + T/9zXU//ubKu//////////////////////////////////////////////////////////////////// | |
328 | + ////////////////////////////////////////////////////////////////////////ycXC/3Nd | |
329 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
330 | + T/9zXU//c11P/3NdT/9zXU//c11OZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzXU6uc11P/3Nd | |
331 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/+5sq7/5ePi//////////////////////////////////// | |
332 | + //////////////////////////////////////////////////////////////////////////////// | |
333 | + ///l4+L/xcC+/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
334 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//cl1OzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
335 | + AAAAAAAAcl9MJ3JcT/ZzXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
336 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
337 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
338 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3JcT08AAAAAAAAAAAAA | |
339 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzXE6Oc11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
340 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
341 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
342 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
343 | + T8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfl49B3NdT8ZzXU//c11P/3Nd | |
344 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
345 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
346 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
347 | + T/9zXU//c11P/3JcT+ZvX08fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
348 | + AABvX08fclxP5nNdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
349 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
350 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
351 | + T/9zXU//c11P/3NdT/9zXU//c11P/3JcT/ZxW003AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
352 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFbTTdyXE/2c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
353 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
354 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
355 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXE5XAAAAAAAAAAAAAAAAAAAAAAAA | |
356 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAclxPX3NdT/9zXU//c11P/3Nd | |
357 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
358 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
359 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXE+GAAAAAAAA | |
360 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
361 | + AABzXU9/c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
362 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
363 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
364 | + T/9zXU6eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
365 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNcTldyXE/2c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
366 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
367 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
368 | + T/9zXU//c11P/3NdT/9xXU9vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
369 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcVtNN3JcT+ZzXU//c11P/3Nd | |
370 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
371 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
372 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NcTu5yXE9PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
373 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
374 | + AAB0X0kXc11PxnNdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
375 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
376 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NcT9ZyX0wnAAAAAAAAAAAAAAAAAAAAAAAA | |
377 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
378 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5ePQdzXE6OclxP9nNdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
379 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
380 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3JcT5ZvXk8PAAAAAAAA | |
381 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
382 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9fTx9yXU+mc11P/3Nd | |
383 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
384 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11PtnRa | |
385 | + Ty8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
386 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
387 | + AAAAAAAAAAAAAHFbTTdyXU6+c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
388 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
389 | + T/9yXU7Oc1tPPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
390 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
391 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJcT09yXU+mc1xO7nNdT/9zXU//c11P/3Nd | |
392 | + T/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
393 | + T/9zXU//clxP9nNdTq5yXE9fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
394 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
395 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
396 | + AABxXE1HclxPlnJcT+ZzXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3NdT/9zXU//c11P/3Nd | |
397 | + T/9zXU//c11P/3NcTu5zXU6eclxPT35ePQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
398 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
399 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
400 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdFpPL3FcTUdzXU9/c11Pf3NdTp5yXU6+cl1OvnJd | |
401 | + Tr5yXU6+cl1PpnNdT39zXU9/clxPT3FbTTcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
402 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
403 | + AAAAAAAA////AAD///////gAAB//////wAAAA/////8AAAAA/////gAAAAA////4AAAAAB////AAAAAA | |
404 | + D///4AAAAAAH//+AAAAAAAH//wAAAAAAAP//AAAAAAAA//4AAAAAAAB//AAAAAAAAD/4AAAAAAAAH/gA | |
405 | + AAAAAAAP8AAAAAAAAA/wAAAAAAAAB+AAAAAAAAAHwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADgAAAAAAA | |
406 | + AAGAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
407 | + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |
408 | + AAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAHAAAAAAAAAA8AA | |
409 | + AAAAAAAD4AAAAAAAAAPgAAAAAAAAB/AAAAAAAAAP8AAAAAAAAA/4AAAAAAAAH/gAAAAAAAAf/AAAAAAA | |
410 | + AD/+AAAAAAAAf/8AAAAAAAD//4AAAAAAAf//wAAAAAAD///gAAAAAAf///AAAAAAD///+AAAAAAf///+ | |
411 | + AAAAAH////+AAAAB/////+AAAAf//////AAAH///////gAH///8= | |
412 | +</value> | |
413 | + </data> | |
414 | + <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |
415 | + <value>307, 21</value> | |
416 | + </metadata> | |
417 | + <metadata name="timer_LogApi.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |
418 | + <value>394, 21</value> | |
419 | + </metadata> | |
420 | +</root>(No newline at end of file) |
+++ SignusKHSVR/Program.cs
... | ... | @@ -0,0 +1,86 @@ |
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Threading.Tasks; | |
5 | +using System.Windows.Forms; | |
6 | +using System.Runtime.InteropServices; | |
7 | +using System.IO; | |
8 | + | |
9 | +namespace SignusKHSVR | |
10 | +{ | |
11 | + static class Program | |
12 | + { | |
13 | + [DllImport("user32.dll")] | |
14 | + public static extern uint RegisterWindowMessage(string lpString); | |
15 | + [DllImport("user32.dll")] | |
16 | + public static extern bool PostMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam); | |
17 | + | |
18 | + public static uint messageQuit = 0; | |
19 | + | |
20 | + /// <summary> | |
21 | + /// 해당 응용 프로그램의 주 진입점입니다. | |
22 | + /// </summary> | |
23 | + [STAThread] | |
24 | + static void Main() | |
25 | + { | |
26 | + bool createNew = false; | |
27 | + //프로그램 중복실행 방지 | |
28 | + System.Threading.Mutex mutex = new System.Threading.Mutex(true, "__U3_SIGNUS_KHSVR_W__MUTEX__", out createNew); | |
29 | + | |
30 | + if (createNew == false) | |
31 | + { | |
32 | + MessageBox.Show("프로그램이 이미 실행중입니다.", "SIGNUS"); | |
33 | + return; | |
34 | + } | |
35 | + | |
36 | + U3Config config = new U3Config(); | |
37 | + | |
38 | + SFLogApi log = new SFLogApi(); | |
39 | + log.Run(); | |
40 | + | |
41 | + messageQuit = RegisterWindowMessage("MSG_SIGNUS_QUIT"); | |
42 | + | |
43 | + Application.EnableVisualStyles(); | |
44 | + Application.SetCompatibleTextRenderingDefault(false); | |
45 | + Application.Run(new Form1()); | |
46 | + } | |
47 | + | |
48 | + static public void DeleteOldFiles(string dirName, int nSec) | |
49 | + { | |
50 | + DateTime dt = DateTime.Now.AddSeconds(-nSec); | |
51 | + string[] files = Directory.GetFiles(dirName); | |
52 | + | |
53 | + foreach (string file in files) | |
54 | + { | |
55 | + try | |
56 | + { | |
57 | + FileInfo fi = new FileInfo(file); | |
58 | + if (fi.CreationTime < dt) | |
59 | + fi.Delete(); | |
60 | + } | |
61 | + catch | |
62 | + { | |
63 | + } | |
64 | + } | |
65 | + } | |
66 | + | |
67 | + static public void MoveFiles(string srcDir, string dstDir) | |
68 | + { | |
69 | + string[] files = Directory.GetFiles(srcDir); | |
70 | + foreach (string file in files) | |
71 | + { | |
72 | + try | |
73 | + { | |
74 | + FileInfo fi = new FileInfo(file); | |
75 | + if(fi.Length > 0) | |
76 | + { | |
77 | + File.Move(file, dstDir + "\\" + fi.Name); | |
78 | + } | |
79 | + } | |
80 | + catch | |
81 | + { | |
82 | + } | |
83 | + } | |
84 | + } | |
85 | + } | |
86 | +} |
+++ SignusKHSVR/Properties/AssemblyInfo.cs
... | ... | @@ -0,0 +1,36 @@ |
1 | +using System.Reflection; | |
2 | +using System.Runtime.CompilerServices; | |
3 | +using System.Runtime.InteropServices; | |
4 | + | |
5 | +// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해 | |
6 | +// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면 | |
7 | +// 이러한 특성 값을 변경하세요. | |
8 | +[assembly: AssemblyTitle("SignusKHSVR")] | |
9 | +[assembly: AssemblyDescription("")] | |
10 | +[assembly: AssemblyConfiguration("")] | |
11 | +[assembly: AssemblyCompany("")] | |
12 | +[assembly: AssemblyProduct("SignusKHSVR")] | |
13 | +[assembly: AssemblyCopyright("Copyright © 2021")] | |
14 | +[assembly: AssemblyTrademark("")] | |
15 | +[assembly: AssemblyCulture("")] | |
16 | + | |
17 | +// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에 | |
18 | +// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면 | |
19 | +// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요. | |
20 | +[assembly: ComVisible(false)] | |
21 | + | |
22 | +// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다. | |
23 | +[assembly: Guid("7f1050f6-b03b-45c2-9f19-6632066e4b5c")] | |
24 | + | |
25 | +// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다. | |
26 | +// | |
27 | +// 주 버전 | |
28 | +// 부 버전 | |
29 | +// 빌드 번호 | |
30 | +// 수정 버전 | |
31 | +// | |
32 | +// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호가 자동으로 | |
33 | +// 지정되도록 할 수 있습니다. | |
34 | +// [assembly: AssemblyVersion("1.0.*")] | |
35 | +[assembly: AssemblyVersion("1.0.0.0")] | |
36 | +[assembly: AssemblyFileVersion("1.0.0.0")] |
+++ SignusKHSVR/Properties/Resources.Designer.cs
... | ... | @@ -0,0 +1,71 @@ |
1 | +//------------------------------------------------------------------------------ | |
2 | +// <auto-generated> | |
3 | +// 이 코드는 도구를 사용하여 생성되었습니다. | |
4 | +// 런타임 버전:4.0.30319.42000 | |
5 | +// | |
6 | +// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면 | |
7 | +// 이러한 변경 내용이 손실됩니다. | |
8 | +// </auto-generated> | |
9 | +//------------------------------------------------------------------------------ | |
10 | + | |
11 | +namespace SignusKHSVR.Properties | |
12 | +{ | |
13 | + | |
14 | + | |
15 | + /// <summary> | |
16 | + /// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다. | |
17 | + /// </summary> | |
18 | + // 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder | |
19 | + // 클래스에서 자동으로 생성되었습니다. | |
20 | + // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 | |
21 | + // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오. | |
22 | + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] | |
23 | + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |
24 | + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |
25 | + internal class Resources | |
26 | + { | |
27 | + | |
28 | + private static global::System.Resources.ResourceManager resourceMan; | |
29 | + | |
30 | + private static global::System.Globalization.CultureInfo resourceCulture; | |
31 | + | |
32 | + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |
33 | + internal Resources() | |
34 | + { | |
35 | + } | |
36 | + | |
37 | + /// <summary> | |
38 | + /// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다. | |
39 | + /// </summary> | |
40 | + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |
41 | + internal static global::System.Resources.ResourceManager ResourceManager | |
42 | + { | |
43 | + get | |
44 | + { | |
45 | + if ((resourceMan == null)) | |
46 | + { | |
47 | + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SignusKHSVR.Properties.Resources", typeof(Resources).Assembly); | |
48 | + resourceMan = temp; | |
49 | + } | |
50 | + return resourceMan; | |
51 | + } | |
52 | + } | |
53 | + | |
54 | + /// <summary> | |
55 | + /// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을 | |
56 | + /// 재정의합니다. | |
57 | + /// </summary> | |
58 | + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |
59 | + internal static global::System.Globalization.CultureInfo Culture | |
60 | + { | |
61 | + get | |
62 | + { | |
63 | + return resourceCulture; | |
64 | + } | |
65 | + set | |
66 | + { | |
67 | + resourceCulture = value; | |
68 | + } | |
69 | + } | |
70 | + } | |
71 | +} |
+++ SignusKHSVR/Properties/Resources.resx
... | ... | @@ -0,0 +1,117 @@ |
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<root> | |
3 | + <!-- | |
4 | + Microsoft ResX Schema | |
5 | + | |
6 | + Version 2.0 | |
7 | + | |
8 | + The primary goals of this format is to allow a simple XML format | |
9 | + that is mostly human readable. The generation and parsing of the | |
10 | + various data types are done through the TypeConverter classes | |
11 | + associated with the data types. | |
12 | + | |
13 | + Example: | |
14 | + | |
15 | + ... ado.net/XML headers & schema ... | |
16 | + <resheader name="resmimetype">text/microsoft-resx</resheader> | |
17 | + <resheader name="version">2.0</resheader> | |
18 | + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |
19 | + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |
20 | + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |
21 | + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |
22 | + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |
23 | + <value>[base64 mime encoded serialized .NET Framework object]</value> | |
24 | + </data> | |
25 | + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |
26 | + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |
27 | + <comment>This is a comment</comment> | |
28 | + </data> | |
29 | + | |
30 | + There are any number of "resheader" rows that contain simple | |
31 | + name/value pairs. | |
32 | + | |
33 | + Each data row contains a name, and value. The row also contains a | |
34 | + type or mimetype. Type corresponds to a .NET class that support | |
35 | + text/value conversion through the TypeConverter architecture. | |
36 | + Classes that don't support this are serialized and stored with the | |
37 | + mimetype set. | |
38 | + | |
39 | + The mimetype is used for serialized objects, and tells the | |
40 | + ResXResourceReader how to depersist the object. This is currently not | |
41 | + extensible. For a given mimetype the value must be set accordingly: | |
42 | + | |
43 | + Note - application/x-microsoft.net.object.binary.base64 is the format | |
44 | + that the ResXResourceWriter will generate, however the reader can | |
45 | + read any of the formats listed below. | |
46 | + | |
47 | + mimetype: application/x-microsoft.net.object.binary.base64 | |
48 | + value : The object must be serialized with | |
49 | + : System.Serialization.Formatters.Binary.BinaryFormatter | |
50 | + : and then encoded with base64 encoding. | |
51 | + | |
52 | + mimetype: application/x-microsoft.net.object.soap.base64 | |
53 | + value : The object must be serialized with | |
54 | + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |
55 | + : and then encoded with base64 encoding. | |
56 | + | |
57 | + mimetype: application/x-microsoft.net.object.bytearray.base64 | |
58 | + value : The object must be serialized into a byte array | |
59 | + : using a System.ComponentModel.TypeConverter | |
60 | + : and then encoded with base64 encoding. | |
61 | + --> | |
62 | + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |
63 | + <xsd:element name="root" msdata:IsDataSet="true"> | |
64 | + <xsd:complexType> | |
65 | + <xsd:choice maxOccurs="unbounded"> | |
66 | + <xsd:element name="metadata"> | |
67 | + <xsd:complexType> | |
68 | + <xsd:sequence> | |
69 | + <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |
70 | + </xsd:sequence> | |
71 | + <xsd:attribute name="name" type="xsd:string" /> | |
72 | + <xsd:attribute name="type" type="xsd:string" /> | |
73 | + <xsd:attribute name="mimetype" type="xsd:string" /> | |
74 | + </xsd:complexType> | |
75 | + </xsd:element> | |
76 | + <xsd:element name="assembly"> | |
77 | + <xsd:complexType> | |
78 | + <xsd:attribute name="alias" type="xsd:string" /> | |
79 | + <xsd:attribute name="name" type="xsd:string" /> | |
80 | + </xsd:complexType> | |
81 | + </xsd:element> | |
82 | + <xsd:element name="data"> | |
83 | + <xsd:complexType> | |
84 | + <xsd:sequence> | |
85 | + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |
86 | + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |
87 | + </xsd:sequence> | |
88 | + <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | |
89 | + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |
90 | + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |
91 | + </xsd:complexType> | |
92 | + </xsd:element> | |
93 | + <xsd:element name="resheader"> | |
94 | + <xsd:complexType> | |
95 | + <xsd:sequence> | |
96 | + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |
97 | + </xsd:sequence> | |
98 | + <xsd:attribute name="name" type="xsd:string" use="required" /> | |
99 | + </xsd:complexType> | |
100 | + </xsd:element> | |
101 | + </xsd:choice> | |
102 | + </xsd:complexType> | |
103 | + </xsd:element> | |
104 | + </xsd:schema> | |
105 | + <resheader name="resmimetype"> | |
106 | + <value>text/microsoft-resx</value> | |
107 | + </resheader> | |
108 | + <resheader name="version"> | |
109 | + <value>2.0</value> | |
110 | + </resheader> | |
111 | + <resheader name="reader"> | |
112 | + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |
113 | + </resheader> | |
114 | + <resheader name="writer"> | |
115 | + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |
116 | + </resheader> | |
117 | +</root>(No newline at end of file) |
+++ SignusKHSVR/Properties/Settings.Designer.cs
... | ... | @@ -0,0 +1,30 @@ |
1 | +//------------------------------------------------------------------------------ | |
2 | +// <auto-generated> | |
3 | +// This code was generated by a tool. | |
4 | +// Runtime Version:4.0.30319.42000 | |
5 | +// | |
6 | +// Changes to this file may cause incorrect behavior and will be lost if | |
7 | +// the code is regenerated. | |
8 | +// </auto-generated> | |
9 | +//------------------------------------------------------------------------------ | |
10 | + | |
11 | +namespace SignusKHSVR.Properties | |
12 | +{ | |
13 | + | |
14 | + | |
15 | + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |
16 | + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] | |
17 | + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase | |
18 | + { | |
19 | + | |
20 | + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | |
21 | + | |
22 | + public static Settings Default | |
23 | + { | |
24 | + get | |
25 | + { | |
26 | + return defaultInstance; | |
27 | + } | |
28 | + } | |
29 | + } | |
30 | +} |
+++ SignusKHSVR/Properties/Settings.settings
... | ... | @@ -0,0 +1,7 @@ |
1 | +<?xml version='1.0' encoding='utf-8'?> | |
2 | +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> | |
3 | + <Profiles> | |
4 | + <Profile Name="(Default)" /> | |
5 | + </Profiles> | |
6 | + <Settings /> | |
7 | +</SettingsFile> |
+++ SignusKHSVR/SFLogApi.cs
... | ... | @@ -0,0 +1,121 @@ |
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Text; | |
5 | +using System.Data; | |
6 | +using System.Web; | |
7 | +using System.Net; | |
8 | +using System.IO; | |
9 | +using System.Threading.Tasks; | |
10 | + | |
11 | +namespace SignusKHSVR | |
12 | +{ | |
13 | + public class SFLogApi | |
14 | + { | |
15 | + public void Run() | |
16 | + { | |
17 | + U3Database db = new U3Database(); | |
18 | + string strSQL = ""; | |
19 | + | |
20 | + strSQL = "select * from T_SYS_LOG_SF where SEND_YN = 'N' and logDt >= '2022-12-01 00:00:00' "; | |
21 | + DataTable dt = db.OpenSQL(strSQL); | |
22 | + | |
23 | + foreach(DataRow dr in dt.Rows) | |
24 | + { | |
25 | + string crtfcKey = "$5$API$1WbqYTUStuf.RwPb2dgv//OCyn//FDtEWyIAFQQhvE/"; | |
26 | + | |
27 | + string idx = U3Util.toStr(dr["IDX"]); | |
28 | + string logDt = U3Util.toStr(dr["logDt"]); | |
29 | + string useSe = U3Util.toStr(dr["useSe"]); | |
30 | + string sysUser = U3Util.toStr(dr["sysUser"]); | |
31 | + string conectIp = U3Util.toStr(dr["conectIp"]); | |
32 | + string dataUsgqty = U3Util.toStr(dr["dataUsgqty"]); | |
33 | + | |
34 | + if (sysUser.Length == 0) sysUser = "houghton"; | |
35 | + | |
36 | + string strJson = ""; | |
37 | + strJson += "{"; | |
38 | + strJson += "\"crtfcKey\":\"" + crtfcKey + "\","; | |
39 | + strJson += "\"logDt\":\"" + logDt + "\","; | |
40 | + strJson += "\"useSe\":\"" + useSe + "\","; | |
41 | + strJson += "\"sysUser\":\"" + sysUser + "\","; | |
42 | + strJson += "\"conectIp\":\"" + conectIp + "\","; | |
43 | + strJson += "\"dataUsgqty\":\"" + dataUsgqty + "\""; | |
44 | + strJson += "}"; | |
45 | + string strJsonEnc = HttpUtility.UrlEncode(strJson); | |
46 | + | |
47 | + string strUrl = "https://log.smart-factory.kr/apisvc/sendLogDataJSON.do?logData="; | |
48 | + string strSend = strUrl + strJsonEnc; | |
49 | + string strRecv = HttpGet(strSend); | |
50 | + | |
51 | + //string strUrl = "https://log.smart-factory.kr/apisvc/sendLogData.json"; | |
52 | + //string strSend = strJson; | |
53 | + //string strRecv = HttpPost(strUrl, strSend); | |
54 | + | |
55 | + string sql1 = ""; | |
56 | + sql1 += " update T_SYS_LOG_SF set SEND_YN = 'Y', "; | |
57 | + sql1 += " SEND_DATA = '" + strSend + "', "; | |
58 | + sql1 += " RECV_DATA = '" + strRecv + "' "; | |
59 | + sql1 += " where IDX = " + idx; | |
60 | + db.ExcuteSql(sql1); | |
61 | + } | |
62 | + } | |
63 | + | |
64 | + private string HttpGet(string strUrl) | |
65 | + { | |
66 | + try | |
67 | + { | |
68 | + HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(strUrl); | |
69 | + httpWebRequest.Method = "GET"; | |
70 | + httpWebRequest.Timeout = 5000; | |
71 | + | |
72 | + var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); | |
73 | + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) | |
74 | + { | |
75 | + string result = streamReader.ReadToEnd(); | |
76 | + return result; | |
77 | + } | |
78 | + } | |
79 | + catch (Exception ex) | |
80 | + { | |
81 | + U3Util.ErrorLog(ex.Message); | |
82 | + return ""; | |
83 | + } | |
84 | + } | |
85 | + | |
86 | + private string HttpPost(string strUrl, string strSend) | |
87 | + { | |
88 | + try | |
89 | + { | |
90 | + HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(strUrl); | |
91 | + httpWebRequest.Method = "POST"; | |
92 | + //httpWebRequest.ContentType = "application/json; charset=utf-8"; | |
93 | + httpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; | |
94 | + httpWebRequest.Timeout = 5000; | |
95 | + | |
96 | + using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) | |
97 | + { | |
98 | + byte[] byteArray = Encoding.UTF8.GetBytes(strSend); | |
99 | + char[] charArray = Encoding.Default.GetChars(byteArray); | |
100 | + streamWriter.Write(charArray, 0, charArray.Length); | |
101 | + | |
102 | + //streamWriter.Write(strSend); | |
103 | + streamWriter.Flush(); | |
104 | + streamWriter.Close(); | |
105 | + | |
106 | + var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); | |
107 | + using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) | |
108 | + { | |
109 | + string result = streamReader.ReadToEnd(); | |
110 | + return result; | |
111 | + } | |
112 | + } | |
113 | + } | |
114 | + catch (Exception ex) | |
115 | + { | |
116 | + U3Util.ErrorLog(ex.Message); | |
117 | + return ""; | |
118 | + } | |
119 | + } | |
120 | + } | |
121 | +} |
+++ SignusKHSVR/SignusKHSVR.csproj
... | ... | @@ -0,0 +1,99 @@ |
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |
3 | + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |
4 | + <PropertyGroup> | |
5 | + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |
6 | + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |
7 | + <ProjectGuid>{7F1050F6-B03B-46C2-9F29-6632066E4B5C}</ProjectGuid> | |
8 | + <OutputType>WinExe</OutputType> | |
9 | + <RootNamespace>SignusKHSVR</RootNamespace> | |
10 | + <AssemblyName>SignusKHSVR</AssemblyName> | |
11 | + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> | |
12 | + <FileAlignment>512</FileAlignment> | |
13 | + <Deterministic>true</Deterministic> | |
14 | + </PropertyGroup> | |
15 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |
16 | + <PlatformTarget>AnyCPU</PlatformTarget> | |
17 | + <DebugSymbols>true</DebugSymbols> | |
18 | + <DebugType>full</DebugType> | |
19 | + <Optimize>false</Optimize> | |
20 | + <OutputPath>..\bin\</OutputPath> | |
21 | + <DefineConstants>DEBUG;TRACE</DefineConstants> | |
22 | + <ErrorReport>prompt</ErrorReport> | |
23 | + <WarningLevel>4</WarningLevel> | |
24 | + </PropertyGroup> | |
25 | + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |
26 | + <PlatformTarget>AnyCPU</PlatformTarget> | |
27 | + <DebugType>pdbonly</DebugType> | |
28 | + <Optimize>true</Optimize> | |
29 | + <OutputPath>..\bin\</OutputPath> | |
30 | + <DefineConstants>TRACE</DefineConstants> | |
31 | + <ErrorReport>prompt</ErrorReport> | |
32 | + <WarningLevel>4</WarningLevel> | |
33 | + </PropertyGroup> | |
34 | + <PropertyGroup> | |
35 | + <ApplicationIcon>hyundai.ico</ApplicationIcon> | |
36 | + </PropertyGroup> | |
37 | + <ItemGroup> | |
38 | + <Reference Include="System" /> | |
39 | + <Reference Include="System.Core" /> | |
40 | + <Reference Include="System.Web" /> | |
41 | + <Reference Include="System.Xml.Linq" /> | |
42 | + <Reference Include="System.Data.DataSetExtensions" /> | |
43 | + <Reference Include="Microsoft.CSharp" /> | |
44 | + <Reference Include="System.Data" /> | |
45 | + <Reference Include="System.Deployment" /> | |
46 | + <Reference Include="System.Drawing" /> | |
47 | + <Reference Include="System.Net.Http" /> | |
48 | + <Reference Include="System.Windows.Forms" /> | |
49 | + <Reference Include="System.Xml" /> | |
50 | + </ItemGroup> | |
51 | + <ItemGroup> | |
52 | + <Compile Include="Form1.cs"> | |
53 | + <SubType>Form</SubType> | |
54 | + </Compile> | |
55 | + <Compile Include="Form1.Designer.cs"> | |
56 | + <DependentUpon>Form1.cs</DependentUpon> | |
57 | + </Compile> | |
58 | + <Compile Include="Program.cs" /> | |
59 | + <Compile Include="Properties\AssemblyInfo.cs" /> | |
60 | + <Compile Include="SFLogApi.cs" /> | |
61 | + <Compile Include="U3Config.cs" /> | |
62 | + <Compile Include="U3Database.cs" /> | |
63 | + <Compile Include="U3Util.cs" /> | |
64 | + <EmbeddedResource Include="Form1.resx"> | |
65 | + <DependentUpon>Form1.cs</DependentUpon> | |
66 | + </EmbeddedResource> | |
67 | + <EmbeddedResource Include="Properties\Resources.resx"> | |
68 | + <Generator>ResXFileCodeGenerator</Generator> | |
69 | + <LastGenOutput>Resources.Designer.cs</LastGenOutput> | |
70 | + <SubType>Designer</SubType> | |
71 | + </EmbeddedResource> | |
72 | + <Compile Include="Properties\Resources.Designer.cs"> | |
73 | + <AutoGen>True</AutoGen> | |
74 | + <DependentUpon>Resources.resx</DependentUpon> | |
75 | + </Compile> | |
76 | + <None Include="Properties\Settings.settings"> | |
77 | + <Generator>SettingsSingleFileGenerator</Generator> | |
78 | + <LastGenOutput>Settings.Designer.cs</LastGenOutput> | |
79 | + </None> | |
80 | + <Compile Include="Properties\Settings.Designer.cs"> | |
81 | + <AutoGen>True</AutoGen> | |
82 | + <DependentUpon>Settings.settings</DependentUpon> | |
83 | + <DesignTimeSharedInput>True</DesignTimeSharedInput> | |
84 | + </Compile> | |
85 | + </ItemGroup> | |
86 | + <ItemGroup> | |
87 | + <None Include="App.config" /> | |
88 | + </ItemGroup> | |
89 | + <ItemGroup> | |
90 | + <Content Include="hyundai.ico" /> | |
91 | + </ItemGroup> | |
92 | + <ItemGroup> | |
93 | + <ProjectReference Include="..\YdtechLib\YdtechLib.csproj"> | |
94 | + <Project>{1db7db22-f72f-4f63-b892-b099438fda25}</Project> | |
95 | + <Name>YdtechLib</Name> | |
96 | + </ProjectReference> | |
97 | + </ItemGroup> | |
98 | + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |
99 | +</Project>(No newline at end of file) |
+++ SignusKHSVR/U3Config.cs
... | ... | @@ -0,0 +1,68 @@ |
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Text; | |
5 | +using System.Threading.Tasks; | |
6 | +using System.Runtime.InteropServices; | |
7 | +using System.Windows.Forms; | |
8 | + | |
9 | +namespace SignusKHSVR | |
10 | +{ | |
11 | + public class U3Config | |
12 | + { | |
13 | + public const bool FLAG_TEST = true; | |
14 | + public const int MAX_DI = 4; | |
15 | + public const int MAX_DEV = 100; | |
16 | + static public string m_SqlConnStr = ""; | |
17 | + | |
18 | + [DllImport("kernel32")] | |
19 | + private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); | |
20 | + [DllImport("kernel32")] | |
21 | + private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); | |
22 | + | |
23 | + protected string GetIniFile() | |
24 | + { | |
25 | + string AppPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")); | |
26 | + return AppPath + "\\Config.ini"; | |
27 | + } | |
28 | + | |
29 | + protected string GetIniValue(string Section, string Key, string defvalue) | |
30 | + { | |
31 | + StringBuilder temp = new StringBuilder(255); | |
32 | + int i = GetPrivateProfileString(Section, Key, defvalue, temp, 255, GetIniFile()); | |
33 | + return temp.ToString(); | |
34 | + } | |
35 | + | |
36 | + protected void SetIniValue(string Section, string Key, string Value) | |
37 | + { | |
38 | + WritePrivateProfileString(Section, Key, Value, GetIniFile()); | |
39 | + } | |
40 | + | |
41 | + //public string m_StrMqttIP = ""; | |
42 | + public string m_StrSqlServerIP = ""; | |
43 | + | |
44 | + public U3Config() | |
45 | + { | |
46 | + Load(); | |
47 | + | |
48 | + // 테스트용 개발 서버 | |
49 | + //m_SqlConnStr = "Provider=SQLOLEDB.1;Password=tlrmsjtm~1@3;Persist Security Info=False;User ID=sa;Initial Catalog=U3SMES;Data Source=signus-sf1.koreacentral.cloudapp.azure.com,14443"; | |
50 | + | |
51 | + // 한국하우톤 현장 서버 | |
52 | + m_SqlConnStr = "Provider=SQLOLEDB.1;Password=signus1!;Persist Security Info=False;User ID=sa;Initial Catalog=U3SMES;Data Source=192.168.1.17,1433"; | |
53 | + } | |
54 | + | |
55 | + public void Save() | |
56 | + { | |
57 | + //SetIniValue("MQTT", "IPADDR", m_StrMqttIP); | |
58 | + SetIniValue("SQLSERVER", "IPADDR", m_StrSqlServerIP); | |
59 | + } | |
60 | + | |
61 | + public void Load() | |
62 | + { | |
63 | + m_StrSqlServerIP = GetIniValue("SQLSERVER", "IPADDR", "192.168.1.17"); | |
64 | + //m_StrMqttIP = GetIniValue("MQTT", "IPADDR", "192.168.0.200"); | |
65 | + //m_StrSqlServerIP = GetIniValue("SQLSERVER", "IPADDR", "192.168.0.240"); | |
66 | + } | |
67 | + } | |
68 | +} |
+++ SignusKHSVR/U3Database.cs
... | ... | @@ -0,0 +1,157 @@ |
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Text; | |
5 | +using System.Threading.Tasks; | |
6 | +using System.Data; | |
7 | +using System.Data.OleDb; | |
8 | + | |
9 | +namespace SignusKHSVR | |
10 | +{ | |
11 | + public class U3Database | |
12 | + { | |
13 | + private OleDbConnection mCN = null; | |
14 | + private OleDbCommand mCmd = null; | |
15 | + | |
16 | + public bool SetSqlServer() | |
17 | + { | |
18 | + try | |
19 | + { | |
20 | + mCN = new OleDbConnection(); | |
21 | + mCN.ConnectionString = U3Config.m_SqlConnStr; | |
22 | + mCN.Open(); | |
23 | + return true; | |
24 | + } | |
25 | + catch (Exception ex) | |
26 | + { | |
27 | + U3Util.ErrorLog("Can't connect to database." + Environment.NewLine + ex.Message); | |
28 | + return false; | |
29 | + } | |
30 | + } | |
31 | + | |
32 | + public DataTable OpenSQL(string strSQL) | |
33 | + { | |
34 | + DataTable retTable = new DataTable(); | |
35 | + | |
36 | + try | |
37 | + { | |
38 | + mCN = new OleDbConnection(); | |
39 | + mCN.ConnectionString = U3Config.m_SqlConnStr; | |
40 | + mCN.Open(); | |
41 | + | |
42 | + mCmd = new OleDbCommand(strSQL, mCN); | |
43 | + OleDbDataAdapter da = new OleDbDataAdapter(mCmd); | |
44 | + da.Fill(retTable); | |
45 | + } | |
46 | + catch (Exception ex) | |
47 | + { | |
48 | + U3Util.ErrorLog(strSQL); | |
49 | + U3Util.ErrorLog(ex.Message); | |
50 | + } | |
51 | + finally | |
52 | + { | |
53 | + if (mCN != null) mCN.Close(); | |
54 | + } | |
55 | + return retTable; | |
56 | + } | |
57 | + | |
58 | + | |
59 | + public DataSet OpenSQLSet(string strSQL) | |
60 | + { | |
61 | + DataSet retTable = new DataSet(); | |
62 | + | |
63 | + try | |
64 | + { | |
65 | + mCN = new OleDbConnection(); | |
66 | + mCN.ConnectionString = U3Config.m_SqlConnStr; | |
67 | + mCN.Open(); | |
68 | + | |
69 | + mCmd = new OleDbCommand(strSQL, mCN); | |
70 | + OleDbDataAdapter da = new OleDbDataAdapter(mCmd); | |
71 | + da.Fill(retTable); | |
72 | + } | |
73 | + catch (Exception ex) | |
74 | + { | |
75 | + U3Util.ErrorLog(strSQL); | |
76 | + U3Util.ErrorLog(ex.Message); | |
77 | + } | |
78 | + finally | |
79 | + { | |
80 | + if (mCN != null) mCN.Close(); | |
81 | + } | |
82 | + return retTable; | |
83 | + } | |
84 | + | |
85 | + public int ExcuteSql(string strSql) | |
86 | + { | |
87 | + try | |
88 | + { | |
89 | + mCN = new OleDbConnection(); | |
90 | + mCN.ConnectionString = U3Config.m_SqlConnStr; | |
91 | + mCN.Open(); | |
92 | + | |
93 | + mCmd = new OleDbCommand(strSql, mCN); | |
94 | + int iResult = mCmd.ExecuteNonQuery(); | |
95 | + | |
96 | + return iResult; | |
97 | + } | |
98 | + catch (Exception ex) | |
99 | + { | |
100 | + U3Util.ErrorLog(strSql); | |
101 | + U3Util.ErrorLog(ex.Message); | |
102 | + return 0; | |
103 | + } | |
104 | + finally | |
105 | + { | |
106 | + if (mCN != null) mCN.Close(); | |
107 | + } | |
108 | + } | |
109 | + | |
110 | + public bool ExcuteSqls(List<string> strSqls) | |
111 | + { | |
112 | + string strMsg = ""; | |
113 | + return ExcuteSqls(strSqls, out strMsg); | |
114 | + } | |
115 | + | |
116 | + public bool ExcuteSqls(List<string> strSqls, out string strMessage) | |
117 | + { | |
118 | + string strSQL = string.Empty; | |
119 | + try | |
120 | + { | |
121 | + mCN = new OleDbConnection(); | |
122 | + mCN.ConnectionString = U3Config.m_SqlConnStr; | |
123 | + mCN.Open(); | |
124 | + | |
125 | + mCmd = new OleDbCommand(); | |
126 | + mCmd.Connection = mCN; | |
127 | + } | |
128 | + catch (Exception ex) | |
129 | + { | |
130 | + U3Util.ErrorLog(ex.Message); | |
131 | + if (mCN != null) mCN.Close(); | |
132 | + strMessage = "DB접속 오류: " + ex.Message; | |
133 | + return false; | |
134 | + } | |
135 | + | |
136 | + int count = 0; | |
137 | + foreach (string strSql in strSqls) | |
138 | + { | |
139 | + strSQL = strSql; | |
140 | + try | |
141 | + { | |
142 | + mCmd.CommandText = strSql; | |
143 | + mCmd.ExecuteNonQuery(); | |
144 | + count++; | |
145 | + } | |
146 | + catch (Exception ex) | |
147 | + { | |
148 | + U3Util.ErrorLog(strSQL); | |
149 | + U3Util.ErrorLog(ex.Message); | |
150 | + } | |
151 | + } | |
152 | + if (mCN != null) mCN.Close(); | |
153 | + strMessage = string.Format("SQL 실행 완료({0}건 실행, {1}건 성공)", strSqls.Count, count); | |
154 | + return true; | |
155 | + } | |
156 | + } | |
157 | +} |
+++ SignusKHSVR/U3Util.cs
... | ... | @@ -0,0 +1,302 @@ |
1 | +using System; | |
2 | +using System.Collections.Generic; | |
3 | +using System.Linq; | |
4 | +using System.Text; | |
5 | +using System.Threading.Tasks; | |
6 | +using System.Windows.Forms; | |
7 | +using System.IO; | |
8 | +using System.Drawing; | |
9 | +using System.Drawing.Imaging; | |
10 | +using System.Drawing.Drawing2D; | |
11 | + | |
12 | +namespace SignusKHSVR | |
13 | +{ | |
14 | + public class U3Util | |
15 | + { | |
16 | + static public Random rnd = new Random(new System.DateTime().Millisecond); | |
17 | + | |
18 | + static public string GetErrorLogFile(bool bFullPath) | |
19 | + { | |
20 | + string AppPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")); | |
21 | + string AppName = Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf("\\") + 1); | |
22 | + string AppTitle = AppName.Substring(0, AppName.LastIndexOf(".")); | |
23 | + | |
24 | + if (bFullPath) | |
25 | + return AppPath + "\\" + AppTitle + "Error.txt"; | |
26 | + else | |
27 | + return AppTitle + "Error.txt"; | |
28 | + } | |
29 | + | |
30 | + static public string GetEventLogFile(bool bFullPath) | |
31 | + { | |
32 | + string AppPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")); | |
33 | + string AppName = Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf("\\") + 1); | |
34 | + string AppTitle = AppName.Substring(0, AppName.LastIndexOf(".")); | |
35 | + | |
36 | + if (bFullPath) | |
37 | + return AppPath + "\\" + AppTitle + "Event.txt"; | |
38 | + else | |
39 | + return AppTitle + "Event.txt"; | |
40 | + } | |
41 | + | |
42 | + static public string GetImagePath() | |
43 | + { | |
44 | + string AppPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")); | |
45 | + return AppPath + "\\" + "Images"; | |
46 | + } | |
47 | + | |
48 | + public static Bitmap ResizeImage(Image image, int width, int height) | |
49 | + { | |
50 | + var destRect = new Rectangle(0, 0, width, height); | |
51 | + var destImage = new Bitmap(width, height); | |
52 | + | |
53 | + destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); | |
54 | + | |
55 | + using (var graphics = Graphics.FromImage(destImage)) | |
56 | + { | |
57 | + graphics.CompositingMode = CompositingMode.SourceCopy; | |
58 | + graphics.CompositingQuality = CompositingQuality.HighQuality; | |
59 | + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; | |
60 | + graphics.SmoothingMode = SmoothingMode.HighQuality; | |
61 | + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; | |
62 | + | |
63 | + using (var wrapMode = new ImageAttributes()) | |
64 | + { | |
65 | + wrapMode.SetWrapMode(WrapMode.TileFlipXY); | |
66 | + graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode); | |
67 | + } | |
68 | + } | |
69 | + return destImage; | |
70 | + } | |
71 | + | |
72 | + public static void ErrorLog(string strLog) | |
73 | + { | |
74 | + try | |
75 | + { | |
76 | + FileLog(strLog, GetErrorLogFile(false)); | |
77 | + } | |
78 | + catch | |
79 | + { | |
80 | + } | |
81 | + } | |
82 | + | |
83 | + public static void EventLog(string strLog) | |
84 | + { | |
85 | + try | |
86 | + { | |
87 | + FileLog(strLog, GetEventLogFile(false)); | |
88 | + } | |
89 | + catch | |
90 | + { | |
91 | + } | |
92 | + } | |
93 | + | |
94 | + public static void FileLog(string strLog, string strFileName) | |
95 | + { | |
96 | + string str = ""; | |
97 | + | |
98 | + DateTime t = DateTime.Now; | |
99 | + str = t.ToString("(yyyy-MM-dd HH:mm:ss.fff) "); | |
100 | + str += strLog; | |
101 | + | |
102 | + try | |
103 | + { | |
104 | + string AppPath = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\\")); | |
105 | + string strLogFile = AppPath + "\\" + strFileName; | |
106 | + FileBackup(strLogFile); | |
107 | + FileWrite(strLogFile, str); | |
108 | + } | |
109 | + catch (Exception ex) | |
110 | + { | |
111 | + throw new Exception("FileLog->:" + ex.Message); | |
112 | + } | |
113 | + } | |
114 | + | |
115 | + public static void FileBackup(string strLogFile) | |
116 | + { | |
117 | + if (File.Exists(strLogFile)) | |
118 | + { | |
119 | + try | |
120 | + { | |
121 | + FileInfo f = new FileInfo(strLogFile); | |
122 | + if (f.Length >= (2 * 1024 * 1024)) | |
123 | + { | |
124 | + System.IO.File.Delete(strLogFile + ".bak"); | |
125 | + f.MoveTo(strLogFile + ".bak"); | |
126 | + } | |
127 | + } | |
128 | + catch (Exception ex) | |
129 | + { | |
130 | + throw new Exception("FileBackup->:" + ex.Message); | |
131 | + } | |
132 | + } | |
133 | + } | |
134 | + | |
135 | + public static void FileWrite(string strLogFile, string str) | |
136 | + { | |
137 | + try | |
138 | + { | |
139 | + FileStream fs = new FileStream(strLogFile, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); | |
140 | + fs.Seek(0, SeekOrigin.End); | |
141 | + StreamWriter swFromFile = new StreamWriter(fs); | |
142 | + swFromFile.WriteLine(str); | |
143 | + swFromFile.Close(); | |
144 | + fs.Close(); | |
145 | + } | |
146 | + catch (Exception ex) | |
147 | + { | |
148 | + ErrorLog("FileWrite->:" + ex.Message); | |
149 | + } | |
150 | + } | |
151 | + | |
152 | + public static string FileRead(string strFileName) | |
153 | + { | |
154 | + if (System.IO.File.Exists(strFileName) == false) return ""; | |
155 | + | |
156 | + string result = ""; | |
157 | + try | |
158 | + { | |
159 | + FileStream fs = new FileStream(strFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); | |
160 | + fs.Seek(0, SeekOrigin.Begin); | |
161 | + StreamReader srFile = new StreamReader(fs, Encoding.Default, true); | |
162 | + result = srFile.ReadToEnd(); | |
163 | + srFile.Close(); | |
164 | + fs.Close(); | |
165 | + } | |
166 | + catch (Exception ex) | |
167 | + { | |
168 | + ErrorLog("FileRead->:" + ex.Message); | |
169 | + } | |
170 | + return result; | |
171 | + } | |
172 | + | |
173 | + public static bool GetBit(byte b, int bitNumber) | |
174 | + { | |
175 | + return (b & (1 << bitNumber)) != 0; | |
176 | + } | |
177 | + | |
178 | + public static bool GetBit(short s, int bitNumber) | |
179 | + { | |
180 | + return (s & (1 << bitNumber)) != 0; | |
181 | + } | |
182 | + | |
183 | + static public DateTime FromUnixTime(long unixTime) | |
184 | + { | |
185 | + var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); | |
186 | + return epoch.AddSeconds(unixTime); | |
187 | + } | |
188 | + | |
189 | + static public Int32 ToUnixTime(DateTime dt) | |
190 | + { | |
191 | + return (Int32)(dt.Subtract(new DateTime(1970, 1, 1, 0, 0, 0))).TotalSeconds; | |
192 | + } | |
193 | + | |
194 | + static public void DeleteAllFile(string strPath) | |
195 | + { | |
196 | + try | |
197 | + { | |
198 | + System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(strPath); | |
199 | + FileInfo[] lst = di.GetFiles(); | |
200 | + foreach (FileInfo fi in lst) | |
201 | + { | |
202 | + System.IO.File.Delete(fi.FullName); | |
203 | + } | |
204 | + } | |
205 | + catch | |
206 | + { | |
207 | + } | |
208 | + } | |
209 | + | |
210 | + public static string toStr(object obj, string def = "") | |
211 | + { | |
212 | + if (obj == null) return def; | |
213 | + | |
214 | + try | |
215 | + { | |
216 | + return obj.ToString().Trim(); | |
217 | + } | |
218 | + catch | |
219 | + { | |
220 | + return def; | |
221 | + } | |
222 | + } | |
223 | + | |
224 | + public static bool toBoolean(object obj, bool def = false) | |
225 | + { | |
226 | + if (obj == null) return def; | |
227 | + | |
228 | + try | |
229 | + { | |
230 | + return (bool)obj; | |
231 | + } | |
232 | + catch | |
233 | + { | |
234 | + return def; | |
235 | + } | |
236 | + } | |
237 | + | |
238 | + public static DateTime toDateTime(object obj) | |
239 | + { | |
240 | + try | |
241 | + { | |
242 | + return Convert.ToDateTime(obj); | |
243 | + } | |
244 | + catch | |
245 | + { | |
246 | + return DateTime.MinValue; | |
247 | + } | |
248 | + } | |
249 | + | |
250 | + public static Decimal toDecimal(object obj, Decimal def = 0M) | |
251 | + { | |
252 | + if (obj == null) return def; | |
253 | + try | |
254 | + { | |
255 | + return Convert.ToDecimal(obj); | |
256 | + } | |
257 | + catch | |
258 | + { | |
259 | + return def; | |
260 | + } | |
261 | + } | |
262 | + | |
263 | + public static int toInt(object A, int def = 0) | |
264 | + { | |
265 | + if (A == null) return def; | |
266 | + try | |
267 | + { | |
268 | + return Convert.ToInt32(Math.Round(Convert.ToDouble(U3Util.toStr(A, "")), 0)); | |
269 | + } | |
270 | + catch | |
271 | + { | |
272 | + return def; | |
273 | + } | |
274 | + } | |
275 | + | |
276 | + public static double toDouble(object A, double def = 0.0) | |
277 | + { | |
278 | + if (A == null) return def; | |
279 | + try | |
280 | + { | |
281 | + return double.Parse(U3Util.toStr(A, "")); | |
282 | + } | |
283 | + catch | |
284 | + { | |
285 | + return def; | |
286 | + } | |
287 | + } | |
288 | + | |
289 | + public static float toFloat(object A, float def = 0.0f) | |
290 | + { | |
291 | + if (A == null) return def; | |
292 | + try | |
293 | + { | |
294 | + return float.Parse(U3Util.toStr(A, "")); | |
295 | + } | |
296 | + catch | |
297 | + { | |
298 | + return def; | |
299 | + } | |
300 | + } | |
301 | + } | |
302 | +} |
+++ SignusKHSVR/hyundai.ico
Binary file is not shown |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?