在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
哦了,开始吧,这里我们有好几种办法,首先是网络上面最常见的一种调用APi的方法。当然我换应大家和我讨论其他的办法,希望大家不吝赐教。 [DllImport("User32", CharSet = CharSet.Auto)] private extern static IntPtr FindWindow(string lpClassName,string lpWindowName); [DllImport("User32", CharSet = CharSet.Auto)] public static extern int PostMessage(IntPtr hwd, int msg, IntPtr wparam, IntPtr lParma); public const int WM_CLOSE = 0x10; 上面的这两个API函数的用法如下 http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx http://msdn.microsoft.com/en-us/library/ms644944(VS.85).aspx
大家可以去,仔细的研究一下。这里我们用到的就是用一个计时器,然后调用API捕获到弹出的窗口,然后实现我们想要的效果。 // 按照MessageBox的标题,找出Messagebox这个弹出框 void KillMessageBox() { IntPtr ptr = FindWindow(null, "自动关闭"); if (ptr != IntPtr.Zero) PostMessage(ptr,WM_CLOSE,IntPtr.Zero,IntPtr.Zero); } FindWindow就是专门找出窗口准备的,Timer的Tick事件中 void setTimer_Tick(object sender, EventArgs e) { KillMessageBox(); ((Timer)sender).Stop(); } 哈哈,完事。看效果吧,代码后面附上
当然,你也可以用这个API static extern bool EndDialog(IntPtr hDlg, out IntPtr nResult); 哈哈,例子太简单了,OK完事。
MyMessageBox.rar代码中有我发现的一个非常棒的类,给大家了 |
请发表评论