using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WebChecker { public partial class Form1 : Form { const int CHECK_PERIOD = 30000; WebBrowser wb = new WebBrowser(); string url = "http://me.sayclub.com/profile/home/view/ban8"; Timer m_Timer = new Timer(); int m_iReqCnt = 0; int m_iRespCnt = 0; DateTime m_LastCheckT; public Form1() { InitializeComponent(); notifyIcon1.Visible = false; tbURL.Text = url; m_Timer.Interval = 1000; m_Timer.Tick += new EventHandler(m_Timer_Tick); wb.ScriptErrorsSuppressed = true; wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted); } void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if(e.Url.Host != wb.Url.Host) return; if((sender == wb) && (wb.ReadyState == WebBrowserReadyState.Complete || wb.ReadyState == WebBrowserReadyState.Interactive)) { lbStatus.Text = "상태 : 응답 받고 체크 중"; m_iRespCnt++; lbRespCnt.Text = "응답 : " + m_iRespCnt; HtmlDocument doc = wb.Document; HtmlElement element = doc.GetElementById("sbPersonalInfo"); element = element.Children[element.Children.Count-1]; element = element.Children[0]; element = element.GetElementsByTagName("IMG")[0]; string attr = element.GetAttribute("src"); if(attr.IndexOf("login") >= 0) { Process.Checked = false; MessageBox.Show("logged in"); } lbStatus.Text = "상태 : 체크 완료"; wb.Stop(); } } void m_Timer_Tick(object sender, EventArgs e) { if(wb.IsBusy == false) { TimeSpan span = DateTime.Now-m_LastCheckT; if(span.TotalMilliseconds >= CHECK_PERIOD) { m_iReqCnt++; lbReqCnt.Text = "요청 : " + m_iReqCnt; lbStatus.Text = "상태 : 요청 중"; wb.Navigate(url); m_LastCheckT = m_LastCheckT+TimeSpan.FromMilliseconds(CHECK_PERIOD); } else { lbStatus.Text = "상태 : 대기 (" + (int)(CHECK_PERIOD-span.TotalMilliseconds)/1000 + "초...)"; } } } private void Process_CheckedChanged(object sender, EventArgs e) { if(Process.Checked == true) { m_LastCheckT = DateTime.Now - TimeSpan.FromMilliseconds(CHECK_PERIOD-1000); m_Timer.Start(); url = tbURL.Text; tbURL.Enabled = false; } else { m_iReqCnt = 0; m_iRespCnt = 0; lbReqCnt.Text = "요청 : 0"; lbRespCnt.Text = "응답 : 0"; lbStatus.Text = "상태 : 대기"; m_Timer.Stop(); tbURL.Enabled = true; if(wb.IsBusy == true) wb.Stop(); } } private void Form1_Resize(object sender, EventArgs e) { if(this.WindowState == FormWindowState.Minimized) { notifyIcon1.Visible = true; this.Hide(); } else if(this.WindowState == FormWindowState.Normal) { notifyIcon1.Visible = false; this.ShowInTaskbar = true; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { notifyIcon1.Visible = false; } private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) { this.Show(); this.WindowState = FormWindowState.Normal; } private void btOpen_Click(object sender, EventArgs e) { try { System.Diagnostics.Process.Start(tbURL.Text); } catch(System.ComponentModel.Win32Exception noBrowser) { if(noBrowser.ErrorCode == -2147467259) MessageBox.Show(noBrowser.Message); } catch(System.Exception other) { MessageBox.Show(other.Message); } } } }