`
huobengle
  • 浏览: 863534 次
文章分类
社区版块
存档分类
最新评论

捕获提示窗体消失的事件

 
阅读更多
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
public static extern bool GetClassName(IntPtr hWnd,
StringBuilder lpClassName, int nMaxCount);
public delegate bool WNDENUMPROC(IntPtr hwnd, int lParam);
[DllImport("user32.dll")]
public static extern int EnumWindows(WNDENUMPROC lpEnumFunc, int lParam);
[DllImport("user32.dll")]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd,
out uint dwProcessId);
[DllImport("kernel32.dll")]
public static extern uint GetCurrentProcessId();
public class SubWindow : NativeWindow
{
protected override void WndProc(ref Message m)
{
const int WM_SHOWWINDOW = 0x0018;
switch (m.Msg)
{
case WM_SHOWWINDOW:
if (m.LParam == IntPtr.Zero)
Console.WriteLine("隐藏");
break;
}
base.WndProc(ref m);
}
}
public static bool EnumFunc(IntPtr hwnd, int lParam)
{
uint vProcessID;
GetWindowThreadProcessId(hwnd, out vProcessID);
if (vProcessID != GetCurrentProcessId()) return true;
StringBuilder vStringBuilder = new StringBuilder(255);
GetClassName(hwnd, vStringBuilder, vStringBuilder.Capacity);
if (vStringBuilder.ToString().IndexOf("tooltips_class32") > 0)
{
Console.WriteLine(vStringBuilder.ToString());
new SubWindow().AssignHandle(hwnd);
return false;
}
else return true;
}
private void Form1_Load(object sender, EventArgs e)
{
EnumWindows(EnumFunc, 0);
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics