This commit is contained in:
136
FlashWindow.cs
Normal file
136
FlashWindow.cs
Normal file
@@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The size of the structure in bytes.
|
||||||
|
/// </summary>
|
||||||
|
public uint cbSize;
|
||||||
|
/// <summary>
|
||||||
|
/// A Handle to the Window to be Flashed. The window can be either opened or minimized.
|
||||||
|
/// </summary>
|
||||||
|
public IntPtr hwnd;
|
||||||
|
/// <summary>
|
||||||
|
/// The Flash Status.
|
||||||
|
/// </summary>
|
||||||
|
public uint dwFlags;
|
||||||
|
/// <summary>
|
||||||
|
/// The number of times to Flash the window.
|
||||||
|
/// </summary>
|
||||||
|
public uint uCount;
|
||||||
|
/// <summary>
|
||||||
|
/// The rate at which the Window is to be flashed, in milliseconds. If Zero, the function uses the default cursor blink rate.
|
||||||
|
/// </summary>
|
||||||
|
public uint dwTimeout;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Stop flashing. The system restores the window to its original stae.
|
||||||
|
/// </summary>
|
||||||
|
public const uint FLASHW_STOP = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Flash the window caption.
|
||||||
|
/// </summary>
|
||||||
|
public const uint FLASHW_CAPTION = 1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Flash the taskbar button.
|
||||||
|
/// </summary>
|
||||||
|
public const uint FLASHW_TRAY = 2;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Flash both the window caption and taskbar button.
|
||||||
|
/// This is equivalent to setting the FLASHW_CAPTION | FLASHW_TRAY flags.
|
||||||
|
/// </summary>
|
||||||
|
public const uint FLASHW_ALL = 3;
|
||||||
|
/// <summary>
|
||||||
|
/// Flash continuously, until the FLASHW_STOP flag is set.
|
||||||
|
/// </summary>
|
||||||
|
public const uint FLASHW_TIMER = 4;
|
||||||
|
/// <summary>
|
||||||
|
/// Flash continuously until the window comes to the foreground.
|
||||||
|
/// </summary>
|
||||||
|
public const uint FLASHW_TIMERNOFG = 12;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Flash the spacified Window (Form) until it recieves focus.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="form">The Form (Window) to Flash.</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Flash the specified Window (form) for the specified number of times
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="form">The Form (Window) to Flash.</param>
|
||||||
|
/// <param name="count">The number of times to Flash.</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Start Flashing the specified Window (form)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="form">The Form (Window) to Flash.</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Stop Flashing the specified Window (form)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="form"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// A boolean value indicating whether the application is running on Windows 2000 or later.
|
||||||
|
/// </summary>
|
||||||
|
private static bool Win2000OrLater
|
||||||
|
{
|
||||||
|
get { return System.Environment.OSVersion.Version.Major >= 5; }
|
||||||
|
}
|
||||||
|
}
|
||||||
16
Form1.cs
16
Form1.cs
@@ -6,15 +6,17 @@ using System.Drawing;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace WebChecker
|
namespace WebChecker
|
||||||
{
|
{
|
||||||
public partial class Form1 : Form
|
public partial class Form1 : Form
|
||||||
{
|
{
|
||||||
const int CHECK_PERIOD = 30000;
|
const int CHECK_PERIOD = 1000*30;
|
||||||
|
|
||||||
WebBrowser wb = new WebBrowser();
|
WebBrowser wb = new WebBrowser();
|
||||||
string url = "http://me.sayclub.com/profile/home/view/ban8";
|
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();
|
Timer m_Timer = new Timer();
|
||||||
|
|
||||||
int m_iReqCnt = 0;
|
int m_iReqCnt = 0;
|
||||||
@@ -37,6 +39,16 @@ namespace WebChecker
|
|||||||
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
|
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)
|
void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
|
||||||
{
|
{
|
||||||
if(e.Url.Host != wb.Url.Host)
|
if(e.Url.Host != wb.Url.Host)
|
||||||
@@ -61,7 +73,7 @@ namespace WebChecker
|
|||||||
if(attr.IndexOf("login") >= 0)
|
if(attr.IndexOf("login") >= 0)
|
||||||
{
|
{
|
||||||
Process.Checked = false;
|
Process.Checked = false;
|
||||||
MessageBox.Show("logged in");
|
Alert("logged in");
|
||||||
}
|
}
|
||||||
|
|
||||||
lbStatus.Text = "상태 : 체크 완료";
|
lbStatus.Text = "상태 : 체크 완료";
|
||||||
|
|||||||
@@ -48,6 +48,8 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="FlashWindow.cs">
|
||||||
|
</Compile>
|
||||||
<Compile Include="Form1.cs">
|
<Compile Include="Form1.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|||||||
Reference in New Issue
Block a user