diff --git a/FlashWindow.cs b/FlashWindow.cs
new file mode 100644
index 0000000..0e8de45
--- /dev/null
+++ b/FlashWindow.cs
@@ -0,0 +1,136 @@
+using System.Runtime.InteropServices;
+using System;
+public static class FlashWindow
+{
+ [DllImport("user32.dll")]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ private static extern bool FlashWindowEx(ref FLASHWINFO pwfi);
+ [StructLayout(LayoutKind.Sequential)]
+ private struct FLASHWINFO
+ {
+ ///
+ /// The size of the structure in bytes.
+ ///
+ public uint cbSize;
+ ///
+ /// A Handle to the Window to be Flashed. The window can be either opened or minimized.
+ ///
+ public IntPtr hwnd;
+ ///
+ /// The Flash Status.
+ ///
+ public uint dwFlags;
+ ///
+ /// The number of times to Flash the window.
+ ///
+ public uint uCount;
+ ///
+ /// The rate at which the Window is to be flashed, in milliseconds. If Zero, the function uses the default cursor blink rate.
+ ///
+ public uint dwTimeout;
+ }
+ ///
+ /// Stop flashing. The system restores the window to its original stae.
+ ///
+ public const uint FLASHW_STOP = 0;
+
+ ///
+ /// Flash the window caption.
+ ///
+ public const uint FLASHW_CAPTION = 1;
+
+ ///
+ /// Flash the taskbar button.
+ ///
+ public const uint FLASHW_TRAY = 2;
+
+ ///
+ /// Flash both the window caption and taskbar button.
+ /// This is equivalent to setting the FLASHW_CAPTION | FLASHW_TRAY flags.
+ ///
+ public const uint FLASHW_ALL = 3;
+ ///
+ /// Flash continuously, until the FLASHW_STOP flag is set.
+ ///
+ public const uint FLASHW_TIMER = 4;
+ ///
+ /// Flash continuously until the window comes to the foreground.
+ ///
+ public const uint FLASHW_TIMERNOFG = 12;
+
+ ///
+ /// Flash the spacified Window (Form) until it recieves focus.
+ ///
+ /// The Form (Window) to Flash.
+ ///
+ public static bool Flash(System.Windows.Forms.Form form)
+ {
+ // Make sure we're running under Windows 2000 or later
+ if(Win2000OrLater)
+ {
+ FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_ALL | FLASHW_TIMERNOFG, uint.MaxValue, 0);
+ return FlashWindowEx(ref fi);
+ }
+ return false;
+ }
+ private static FLASHWINFO Create_FLASHWINFO(IntPtr handle, uint flags, uint count, uint timeout)
+ {
+ FLASHWINFO fi = new FLASHWINFO();
+ fi.cbSize = Convert.ToUInt32(Marshal.SizeOf(fi));
+ fi.hwnd = handle;
+ fi.dwFlags = flags;
+ fi.uCount = count;
+ fi.dwTimeout = timeout;
+ return fi;
+ }
+ ///
+ /// Flash the specified Window (form) for the specified number of times
+ ///
+ /// The Form (Window) to Flash.
+ /// The number of times to Flash.
+ ///
+ public static bool Flash(System.Windows.Forms.Form form, uint count)
+ {
+ if(Win2000OrLater)
+ {
+ FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_ALL, count, 0);
+ return FlashWindowEx(ref fi);
+ }
+ return false;
+ }
+ ///
+ /// Start Flashing the specified Window (form)
+ ///
+ /// The Form (Window) to Flash.
+ ///
+ public static bool Start(System.Windows.Forms.Form form)
+ {
+ if(Win2000OrLater)
+ {
+ FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_ALL, uint.MaxValue, 0);
+ return FlashWindowEx(ref fi);
+ }
+ return false;
+ }
+ ///
+ /// Stop Flashing the specified Window (form)
+ ///
+ ///
+ ///
+ public static bool Stop(System.Windows.Forms.Form form)
+ {
+ if(Win2000OrLater)
+ {
+ FLASHWINFO fi = Create_FLASHWINFO(form.Handle, FLASHW_STOP, uint.MaxValue, 0);
+ return FlashWindowEx(ref fi);
+ }
+ return false;
+ }
+ ///
+ /// A boolean value indicating whether the application is running on Windows 2000 or later.
+ ///
+ private static bool Win2000OrLater
+ {
+ get { return System.Environment.OSVersion.Version.Major >= 5; }
+ }
+}
\ No newline at end of file
diff --git a/Form1.cs b/Form1.cs
index 8fbf702..dc49c03 100644
--- a/Form1.cs
+++ b/Form1.cs
@@ -6,15 +6,17 @@ using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
+using System.Runtime.InteropServices;
namespace WebChecker
{
public partial class Form1 : Form
{
- const int CHECK_PERIOD = 30000;
+ const int CHECK_PERIOD = 1000*30;
WebBrowser wb = new WebBrowser();
string url = "http://me.sayclub.com/profile/home/view/ban8";
+ //string url = "http://me.sayclub.com/profile/home/view/tosvmfks53";
Timer m_Timer = new Timer();
int m_iReqCnt = 0;
@@ -37,6 +39,16 @@ namespace WebChecker
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
}
+ void Alert(string message)
+ {
+ this.Show();
+ this.TopMost = true;
+ FlashWindow.Start(this);
+
+ MessageBox.Show(this, message);
+ FlashWindow.Stop(this);
+ }
+
void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if(e.Url.Host != wb.Url.Host)
@@ -61,7 +73,7 @@ namespace WebChecker
if(attr.IndexOf("login") >= 0)
{
Process.Checked = false;
- MessageBox.Show("logged in");
+ Alert("logged in");
}
lbStatus.Text = "상태 : 체크 완료";
diff --git a/WebChecker.csproj b/WebChecker.csproj
index 7312817..fc71206 100644
--- a/WebChecker.csproj
+++ b/WebChecker.csproj
@@ -48,6 +48,8 @@
+
+
Form