Initial commit
This commit is contained in:
		
							
								
								
									
										614
									
								
								Handler/Project_form2/Util.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										614
									
								
								Handler/Project_form2/Util.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,614 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Diagnostics; | ||||
| using System.Drawing; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Net; | ||||
| using System.Runtime.Serialization.Formatters.Binary; | ||||
| using System.Text; | ||||
| using System.Windows.Forms; | ||||
|  | ||||
| namespace Project | ||||
| { | ||||
|  | ||||
|     public static class Util | ||||
|     { | ||||
|  | ||||
|          | ||||
|  | ||||
|         public static Boolean TouchKeyShow(TextBox tb,string title) | ||||
|         { | ||||
|             //입력창 표시 | ||||
|             var f = new Dialog.fTouchKeyFull(title, tb.Text); | ||||
| 			if (f.ShowDialog() == DialogResult.OK) | ||||
| 			{ | ||||
| 				tb.Text = f.tbInput.Text; | ||||
| 				tb.Focus(); | ||||
| 				tb.SelectAll(); | ||||
| 				return true; | ||||
| 			} | ||||
| 			else return false; | ||||
|         } | ||||
|  | ||||
|         #region "MessageBox" | ||||
|         public static void MsgI(string m, Boolean legacy = false) | ||||
|         { | ||||
|  | ||||
|             if (legacy) | ||||
|                 MessageBox.Show(m, "확인", MessageBoxButtons.OK, MessageBoxIcon.Information); | ||||
|             else | ||||
|             { | ||||
|                 var f = new fMsgQuestion("알림\n" + m, "확인", ""); | ||||
|                 f.lbTitle.BackColor = Color.DeepSkyBlue; | ||||
|                 f.lbTitle.BackColor2 = Color.DodgerBlue; | ||||
|                 f.EnableUserClose = true; | ||||
|                 f.DialogMode = true; | ||||
|                 f.ShowDialog(); | ||||
|             } | ||||
|         } | ||||
|         public static void MsgE(string m, Boolean legacy = false) | ||||
|         { | ||||
|             if (legacy) | ||||
|             { | ||||
|                 MessageBox.Show(m, "오류", MessageBoxButtons.OK, MessageBoxIcon.Error); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 var f = new fMsgQuestion("오류 알림\n" + m, "확인", ""); | ||||
|                 f.lbTitle.BackColor = Color.Red; | ||||
|                 f.lbTitle.BackColor2 = Color.Red; | ||||
|                 f.EnableUserClose = true; | ||||
|                 f.DialogMode = true; | ||||
|                 f.ShowDialog(); | ||||
|             } | ||||
|         } | ||||
|         public static DialogResult MsgQ(string m, string btOK = "확인", string btCancel = "아니오") | ||||
|         { | ||||
|             var f = new fMsgQuestion("선택 알림\n" + m, btOK, btCancel); | ||||
|             f.lbTitle.BackColor = Color.DeepSkyBlue; | ||||
|             f.lbTitle.BackColor2 = Color.DodgerBlue; | ||||
|             f.EnableUserClose = true; | ||||
|             f.DialogMode = true; | ||||
|             var dlg = f.ShowDialog(); | ||||
|             return dlg; | ||||
|         } | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         public static string JobListToFile(Class.CHistoryJOB data, string jobdate, string jobseq, out int cnt) | ||||
|         { | ||||
|             cnt = 0; | ||||
|             if (string.IsNullOrEmpty(jobdate)) return string.Empty; | ||||
|             //이미저장된 목록을 가져오고 중복된것은 피한다 | ||||
|             var preSavedFile = System.IO.Path.Combine(Pub.setting.Path_Data, "JobData", jobdate.Substring(0, 6), jobdate + "-" + jobseq + ".txt"); | ||||
|             List<string> preList = new List<string>(); | ||||
|             if (System.IO.File.Exists(preSavedFile)) preList.AddRange(System.IO.File.ReadAllLines(preSavedFile, System.Text.Encoding.UTF8)); | ||||
|  | ||||
|             //Temp | ||||
|             var fiName = System.IO.Path.Combine(Pub.setting.Path_Data, "UploadTemp", jobdate + "_" + jobseq + ".tab"); | ||||
|             var fi = new System.IO.FileInfo(fiName); | ||||
|             if (fi.Directory.Exists == false) fi.Directory.Create(); | ||||
|             var sb = new System.Text.StringBuilder(); | ||||
|  | ||||
|             sb.AppendLine("#Time\tSID\tRID\tRAW"); | ||||
|             var oklist = data.Items.Where(t => t.VisionData.RID.isEmpty() == false).ToArray(); | ||||
|             foreach (var item in oklist) | ||||
|             { | ||||
|                 //기존에 전송한 목록에 없어야 한다 | ||||
|                 if (item.error ==  Class.JobData.ErrorCode.None && item.VisionData.RID.isEmpty() == false) | ||||
|                 { | ||||
|                     sb.AppendLine(string.Format("{0}\t{1}\t{2}\t{3}", | ||||
|                      item.JobStart.ToString("yyyy-MM-dd HH:mm:sss"), item.VisionData.SID, item.VisionData.RID, item.VisionData.QROutRaw)); | ||||
|                     cnt += 1; | ||||
|                 } | ||||
|             } | ||||
|             try | ||||
|             { | ||||
|                 System.IO.File.WriteAllText(fi.FullName, sb.ToString(), System.Text.Encoding.UTF8); | ||||
|                 return fi.FullName; | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 Pub.log.AddE("JobListToFile:" + ex.Message); | ||||
|                 return string.Empty; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public static bool SendMail(string seqdate, string seqno) | ||||
|         { | ||||
|             Chilkat.MailMan mailman = new Chilkat.MailMan(); | ||||
|             bool success = mailman.UnlockComponent("BLUPRT.CBX012020_rzDFf7pQAsCS"); | ||||
|             if (success != true) | ||||
|             { | ||||
|                 Debug.WriteLine(mailman.LastErrorText); | ||||
|                 return false; | ||||
|             } | ||||
|  | ||||
|             mailman.SmtpHost = "10.101.10.6"; | ||||
|  | ||||
|             mailman.SmtpPort = 25; | ||||
|  | ||||
|             //  Create a new email object | ||||
|             Chilkat.Email email = new Chilkat.Email(); | ||||
|  | ||||
|             var mailform = Pub.mailForm.FirstOrDefault(); | ||||
|             if (mailform == null) | ||||
|                 return false; | ||||
|  | ||||
|  | ||||
|  | ||||
|             var subject = mailform.subject.Trim(); | ||||
|             subject = subject.Replace("{seqdate}", seqdate); | ||||
|             subject = subject.Replace("{seqno}", seqno); | ||||
|  | ||||
|  | ||||
|             var buffer = System.IO.File.ReadAllText(Util.CurrentPath + "\\Mailform.html"); | ||||
|  | ||||
|             //시드별집계데이터생성 | ||||
|             System.Text.StringBuilder sbFileSID = new StringBuilder(); | ||||
|             System.Text.StringBuilder sbFileREEL = new StringBuilder(); | ||||
|             sbFileSID.AppendLine(string.Format("NO,SID,작업수량,예정수량,UNIT")); | ||||
|             sbFileREEL.AppendLine(string.Format("NO,SID,REEL,QTY,TIME")); | ||||
|  | ||||
|             // int cntrid = 1; | ||||
|  | ||||
|             System.IO.File.WriteAllText(Util.CurrentPath + "\\result_sidsummary.csv", sbFileSID.ToString(), System.Text.Encoding.Default); | ||||
|             System.IO.File.WriteAllText(Util.CurrentPath + "\\result_reelist.csv", sbFileREEL.ToString(), System.Text.Encoding.Default); | ||||
|  | ||||
|             //메일본문의 내용 치환 | ||||
|             var contents = buffer.Trim(); | ||||
|             contents = contents.Replace("{seqdate}", seqdate); | ||||
|             contents = contents.Replace("{seqno}", seqno); | ||||
|  | ||||
|             email.Subject = subject; | ||||
|             email.SetHtmlBody(contents); | ||||
|             email.From = "ReelSorter"; | ||||
|             email.AddFileAttachment(Util.CurrentPath + "\\result_sidsummary.csv"); | ||||
|             email.AddFileAttachment(Util.CurrentPath + "\\result_reelist.csv"); | ||||
|  | ||||
|  | ||||
|             System.Text.StringBuilder maillist = new StringBuilder(); | ||||
|             foreach (DataSet1.MailRecipientRow r in Pub.mailList.Rows) | ||||
|             { | ||||
|                 success = email.AddTo(r.Name, r.Address); | ||||
|                 maillist.Append(string.Format("{0}({1})", r.Name, r.Address)); | ||||
|             } | ||||
|  | ||||
|  | ||||
|             success = mailman.SendEmail(email); | ||||
|             if (success != true) | ||||
|             { | ||||
|                 Debug.WriteLine(mailman.LastErrorText); | ||||
|                 return false; | ||||
|             } | ||||
|  | ||||
|             success = mailman.CloseSmtpConnection(); | ||||
|             if (success != true) | ||||
|             { | ||||
|                 Debug.WriteLine("Connection to SMTP server not closed cleanly."); | ||||
|                 Pub.log.AddE("메일 발송 실패(" + maillist.ToString() + ")"); | ||||
|             } | ||||
|  | ||||
|             Pub.log.AddI("메일 발송 완료(" + maillist.ToString() + ")"); | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         public static T FileDeSerialize<T>(string file) | ||||
|         { | ||||
|             T Retval = default(T); | ||||
|             if (System.IO.File.Exists(file) == false) return Retval; | ||||
|             var xmlSerializer = new BinaryFormatter(); | ||||
|             using (FileStream fs = new FileStream(file, FileMode.Open)) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     var value = xmlSerializer.Deserialize(fs); | ||||
|                     Retval = (T)Convert.ChangeType(value, typeof(T)); | ||||
|                 } | ||||
|                 catch (Exception ex) | ||||
|                 { | ||||
|                     Pub.log.AddE("File DeSerialized Error : " + ex.Message); | ||||
|                 } | ||||
|                 //Retval = (T)xmlSerializer.Deserialize(fs); | ||||
|             } | ||||
|             return Retval; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         public static void FileSerialize(object data, string file) | ||||
|         { | ||||
|             if (data == null) return; | ||||
|             var xmlSerializer = new BinaryFormatter(); | ||||
|             using (FileStream fs = new FileStream(file, FileMode.Create)) | ||||
|             { | ||||
|                 xmlSerializer.Serialize(fs, data); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         public static void splitID(string ID, out string ww, out string seq) | ||||
|         { | ||||
|             if (ID.Length < 3) | ||||
|             { | ||||
|                 ww = ""; | ||||
|                 seq = ""; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     ww = ID.Substring(0, 2);// int.Parse(ID.Substring(0, 2)); | ||||
|                     seq = ID.Substring(2);// int.Parse(ID.Substring(2)); | ||||
|                 } | ||||
|                 catch (Exception ex) | ||||
|                 { | ||||
|                     Pub.log.AddE("slit id eerr" + ex.Message); | ||||
|                     ww = ""; | ||||
|                     seq = "-1"; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         public static void ScreenCaptrue(int _BitmapWidth, int _BitmapHeight, Point ptSouce) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 Bitmap bitmap = new Bitmap(_BitmapWidth, _BitmapHeight); | ||||
|                 Graphics _graphic = Graphics.FromImage(bitmap); | ||||
|  | ||||
|                 _graphic.CopyFromScreen(ptSouce, new Point(0, 0), new Size(_BitmapWidth, _BitmapHeight)); | ||||
|  | ||||
|                 string savefile = System.IO.Path.Combine(Util.CurrentPath, "ScreenShot", DateTime.Now.ToString("yyyyMMddHHmmss") + ".png"); | ||||
|                 System.IO.FileInfo grpath = new FileInfo(savefile); | ||||
|                 if (!grpath.Directory.Exists) grpath.Directory.Create(); | ||||
|  | ||||
|                 bitmap.Save(grpath.FullName, System.Drawing.Imaging.ImageFormat.Png); | ||||
|                 Util.MsgI("화면 캡쳐 성공\n" + | ||||
|                     "위치:" + grpath.Directory.FullName + "\n" + | ||||
|                     "파일명: " + grpath.Name); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 Util.MsgE("화면 캡쳐 실패\n" + ex.Message); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         public static void SaveBugReport(string content, string subdirName = "BugReport") | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 var path = CurrentPath + subdirName; | ||||
|                 if (!System.IO.Directory.Exists(path)) System.IO.Directory.CreateDirectory(path); | ||||
|                 var file = path + "\\" + DateTime.Now.ToString("yyyyMMdd_HHmmss_fff") + ".txt"; | ||||
|                 System.IO.File.WriteAllText(file, content, System.Text.Encoding.UTF8); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
|                 //nothing | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public static void CopyData(System.Data.DataRow drSrc, System.Data.DataRow drDes) | ||||
|         { | ||||
|             if (drDes == null || drSrc == null) return; | ||||
|             foreach (System.Data.DataColumn col in drSrc.Table.Columns) | ||||
|             { | ||||
|                 if (col.ColumnName.ToUpper() == "IDX") continue; | ||||
|                 drDes[col.ColumnName] = drSrc[col.ColumnName]; | ||||
|             } | ||||
|  | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 현재실행중인폴더를 반환합니다. | ||||
|         /// </summary> | ||||
|         public static string CurrentPath | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return AppDomain.CurrentDomain.BaseDirectory; | ||||
|             } | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// 콤마와 줄바꿈등을 제거합니다. | ||||
|         /// </summary> | ||||
|         /// <returns></returns> | ||||
|         public static string ToCSVString(string src) | ||||
|         { | ||||
|             string retval = src.Replace("\r", "").Replace("\n", "").Replace(",", ""); | ||||
|             return retval; | ||||
|         } | ||||
|  | ||||
|         public static Boolean RunProcess(string file, string arg = "") | ||||
|         { | ||||
|             var fi = new System.IO.FileInfo(file); | ||||
|             if (!fi.Exists) | ||||
|             { | ||||
|                 Pub.log.AddE("Run Error : " + file); | ||||
|                 return false; | ||||
|             } | ||||
|             System.Diagnostics.Process prc = new System.Diagnostics.Process(); | ||||
|             System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(file); | ||||
|             si.Arguments = arg; | ||||
|             prc.StartInfo = si; | ||||
|             prc.Start(); | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         #region "convert" | ||||
|         public static string RectToStr(Rectangle rect) | ||||
|         { | ||||
|             return string.Format("{0};{1};{2};{3}", rect.X, rect.Y, rect.Width, rect.Height); | ||||
|         } | ||||
|         public static string RectToStr(RectangleF rect) | ||||
|         { | ||||
|             return string.Format("{0};{1};{2};{3}", rect.X, rect.Y, rect.Width, rect.Height); | ||||
|         } | ||||
|         public static string PointToStr(Point pt) | ||||
|         { | ||||
|             return string.Format("{0};{1}", pt.X, pt.Y); | ||||
|         } | ||||
|         public static string PointToStr(PointF pt) | ||||
|         { | ||||
|             return string.Format("{0};{1}", pt.X, pt.Y); | ||||
|         } | ||||
|         public static Rectangle StrToRect(string str) | ||||
|         { | ||||
|             if (str.isEmpty() || str.Split(';').Length != 4) str = "0;0;0;0"; | ||||
|             var roibuf1 = str.Split(';'); | ||||
|             return new System.Drawing.Rectangle( | ||||
|                 int.Parse(roibuf1[0]), | ||||
|                 int.Parse(roibuf1[1]), | ||||
|                 int.Parse(roibuf1[2]), | ||||
|                 int.Parse(roibuf1[3])); | ||||
|         } | ||||
|         public static RectangleF StrToRectF(string str) | ||||
|         { | ||||
|             if (str.isEmpty() || str.Split(';').Length != 4) str = "0;0;0;0"; | ||||
|             var roibuf1 = str.Split(';'); | ||||
|             return new System.Drawing.RectangleF( | ||||
|                 float.Parse(roibuf1[0]), | ||||
|                 float.Parse(roibuf1[1]), | ||||
|                 float.Parse(roibuf1[2]), | ||||
|                 float.Parse(roibuf1[3])); | ||||
|         } | ||||
|         public static Point StrToPoint(string str) | ||||
|         { | ||||
|             if (str.isEmpty() || str.Split(';').Length != 2) str = "0;0"; | ||||
|             var roibuf1 = str.Split(';'); | ||||
|             return new System.Drawing.Point( | ||||
|                 int.Parse(roibuf1[0]), | ||||
|                 int.Parse(roibuf1[1])); | ||||
|         } | ||||
|         public static PointF StrToPointF(string str) | ||||
|         { | ||||
|             if (str.isEmpty() || str.Split(';').Length != 2) str = "0;0"; | ||||
|             var roibuf1 = str.Split(';'); | ||||
|             return new System.Drawing.PointF( | ||||
|                 float.Parse(roibuf1[0]), | ||||
|                 float.Parse(roibuf1[1])); | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|         #region "NIC" | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 지정된 nic카드가 현재 목록에 존재하는지 확인한다. | ||||
|         /// </summary> | ||||
|         /// <returns></returns> | ||||
|         public static Boolean ExistNIC(string NICName) | ||||
|         { | ||||
|             if (string.IsNullOrEmpty(NICName)) return false; | ||||
|             foreach (string NetName in NICCardList()) | ||||
|             { | ||||
|                 if (NetName.ToLower() == NICName.ToLower()) | ||||
|                 { | ||||
|                     return true; | ||||
|                 } | ||||
|             } | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Ehternet Card 를 사용안함으로 설정합니다.(관리자권한필요) | ||||
|         /// </summary> | ||||
|         /// <param name="NicName"></param> | ||||
|         public static Boolean NICDisable(string NICName) | ||||
|         { | ||||
|             //해당 nic 가 현재 목록에 존재하는지 확인한다. | ||||
|  | ||||
|             string cmd = "interface set interface " + NICName + " disable"; | ||||
|             Process prc = new Process(); | ||||
|             ProcessStartInfo si = new ProcessStartInfo("netsh", cmd); | ||||
|             si.WindowStyle = ProcessWindowStyle.Hidden; | ||||
|             prc.StartInfo = si; | ||||
|             prc.Start(); | ||||
|  | ||||
|             ////목록에서 사라질때까지 기다린다. | ||||
|             DateTime SD = DateTime.Now; | ||||
|             Boolean timeout = false; | ||||
|             while ((true)) | ||||
|             { | ||||
|  | ||||
|                 bool FindNetwork = false; | ||||
|                 foreach (string NetName in NICCardList()) | ||||
|                 { | ||||
|                     if (NetName == NICName.ToLower()) | ||||
|                     { | ||||
|                         FindNetwork = true; | ||||
|                         break; // TODO: might not be correct. Was : Exit For | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 if (!FindNetwork) | ||||
|                     break; // TODO: might not be correct. Was : Exit While | ||||
|  | ||||
|                 System.Threading.Thread.Sleep(1000); | ||||
|                 TimeSpan ts = DateTime.Now - SD; | ||||
|                 if (ts.TotalSeconds > 10) | ||||
|                 { | ||||
|                     timeout = true; | ||||
|                     break; // TODO: might not be correct. Was : Exit While | ||||
|                 } | ||||
|             } | ||||
|             return !timeout; | ||||
|         } | ||||
|  | ||||
|         public static List<String> NICCardList() | ||||
|         { | ||||
|             List<String> Retval = new List<string>(); | ||||
|             foreach (System.Net.NetworkInformation.NetworkInterface Net in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) | ||||
|             { | ||||
|                 if (Net.NetworkInterfaceType == System.Net.NetworkInformation.NetworkInterfaceType.Ethernet) | ||||
|                 { | ||||
|                     Retval.Add(Net.Name.ToUpper()); | ||||
|                 } | ||||
|             } | ||||
|             return Retval; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 이더넷카드를 사용함으로 설정합니다. | ||||
|         /// </summary> | ||||
|         /// <param name="NicName"></param> | ||||
|         public static Boolean NICEnable(string NICName) | ||||
|         { | ||||
|             string cmd = "interface set interface " + NICName + " enable"; | ||||
|             System.Diagnostics.Process prc = new System.Diagnostics.Process(); | ||||
|             System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo("netsh", cmd); | ||||
|             si.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; | ||||
|             prc.StartInfo = si; | ||||
|             prc.Start(); | ||||
|  | ||||
|  | ||||
|             ////목록에생길떄까지 대기 | ||||
|             DateTime SD = DateTime.Now; | ||||
|             while ((true)) | ||||
|             { | ||||
|  | ||||
|                 bool FindNetwork = false; | ||||
|                 foreach (string NetName in NICCardList()) | ||||
|                 { | ||||
|                     if (NetName.ToLower() == NICName.ToLower()) | ||||
|                     { | ||||
|                         FindNetwork = true; | ||||
|                         break; // TODO: might not be correct. Was : Exit For | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 if (FindNetwork) | ||||
|                     break; // TODO: might not be correct. Was : Exit While | ||||
|  | ||||
|                 System.Threading.Thread.Sleep(1000); | ||||
|                 TimeSpan ts = DateTime.Now - SD; | ||||
|                 if (ts.TotalSeconds > 10) | ||||
|                 { | ||||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             ////결이 완료될떄까지 기다린다. | ||||
|             SD = DateTime.Now; | ||||
|             while ((true)) | ||||
|             { | ||||
|  | ||||
|                 bool FindNetwork = false; | ||||
|                 foreach (System.Net.NetworkInformation.NetworkInterface Net in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) | ||||
|                 { | ||||
|                     if (Net.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.GigabitEthernet && | ||||
|                         Net.NetworkInterfaceType != System.Net.NetworkInformation.NetworkInterfaceType.Ethernet) continue; | ||||
|                     if (Net.Name.ToLower() == NICName.ToLower()) | ||||
|                     { | ||||
|                         //string data = Net.GetIPProperties().GatewayAddresses[0].ToString(); | ||||
|  | ||||
|                         if (Net.OperationalStatus == System.Net.NetworkInformation.OperationalStatus.Up) | ||||
|                         { | ||||
|  | ||||
|                             FindNetwork = true; | ||||
|                             break; // TODO: might not be correct. Was : Exit For | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 if (FindNetwork) | ||||
|                     return true; | ||||
|  | ||||
|                 System.Threading.Thread.Sleep(1000); | ||||
|                 TimeSpan ts = DateTime.Now - SD; | ||||
|                 if (ts.TotalSeconds > 10) | ||||
|                 { | ||||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|         } | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|         public static void RunExplorer(string arg) | ||||
|         { | ||||
|             System.Diagnostics.ProcessStartInfo si = new ProcessStartInfo("explorer"); | ||||
|             si.Arguments = arg; | ||||
|             System.Diagnostics.Process.Start(si); | ||||
|         } | ||||
|  | ||||
|         #region "watchdog" | ||||
|         public static void WatchDog_Run() | ||||
|         { | ||||
|             System.IO.FileInfo fi = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "WatchCat.exe"); | ||||
|             if (!fi.Exists) return; | ||||
|             var Exist = CheckExistProcess("watchcat"); | ||||
|             if (Exist != null) return; | ||||
|             RunProcess(fi.FullName); | ||||
|         } | ||||
|  | ||||
|         public static System.Diagnostics.Process CheckExistProcess(string ProcessName) | ||||
|         { | ||||
|             foreach (var prc in System.Diagnostics.Process.GetProcesses()) | ||||
|             { | ||||
|                 if (prc.ProcessName.StartsWith("svchost")) continue; | ||||
|                 if (prc.ProcessName.ToUpper() == ProcessName.ToUpper()) return prc; | ||||
|             } | ||||
|             return null; | ||||
|         } | ||||
|         #endregion | ||||
|  | ||||
|  | ||||
|         #region "web function" | ||||
|         /// <summary> | ||||
|         /// URL로부터 문자열을 수신합니다. | ||||
|         /// </summary> | ||||
|         /// <param name="url"></param> | ||||
|         /// <param name="isError"></param> | ||||
|         /// <returns></returns> | ||||
|         public static string GetStrfromurl(string url, out Boolean isError) | ||||
|         { | ||||
|             isError = false; | ||||
|             string result = ""; | ||||
|             try | ||||
|             { | ||||
|                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url)); | ||||
|                 request.Timeout = 60000; | ||||
|                 request.ReadWriteTimeout = 60000; | ||||
|  | ||||
|                 request.MaximumAutomaticRedirections = 4; | ||||
|                 request.MaximumResponseHeadersLength = 4; | ||||
|                 request.Credentials = CredentialCache.DefaultCredentials; | ||||
|                 var response = request.GetResponse() as HttpWebResponse; | ||||
|                 var txtReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); | ||||
|                 result = txtReader.ReadToEnd(); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 isError = true; | ||||
|                 result = ex.Message.ToString(); | ||||
|             } | ||||
|             return result; | ||||
|         } | ||||
|  | ||||
|         #endregion | ||||
|  | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 ChiKyun Kim
					ChiKyun Kim