大家好,昨天俺休息了一天,木有给大家更新实例,今天呢,决定了,哈哈,更新三个。希望大家给俺好评哦,3Q,开始吧,第一个来个简单的。C#里面的MessageBox相信大家都玩过,哈哈。今天我们就实现让他自己数秒之后自己关闭。嘿嘿
今天看到一个有意思的“老师”,所以奉献给大家
写字楼里写字间,写字间里程序员;程序人员写程序,又拿程序换酒钱。
酒醒只在网上坐,酒醉还来网下眠;酒醉酒醒日复日,网上网下年复年。宁愿老死程序间,只要老板多发钱;小车大房不去想,撰个2k好过年。
若要见识新世面,公务员比程序员;一个在天一在地,而且还比我们闲。
别人看我穿白领,我看别人穿名牌;天生我才写程序,臀大近视肩周炎。年复一年春光度,度得他人做老板;老板扣我薄酒钱,没有酒钱怎过年.
春光逝去皱纹起,作起程序也委靡;来到水源把水灌,打死不做程序员.
别人笑我忒疯癫,我笑他人命太贱;状元三百六十行,偏偏来做程员!但愿老死电脑间,不愿鞠躬老板前;奔驰宝马贵者趣,公交自行程序员。
若将程员比妓女,一在平地一在天;若将程员比车马,他得驱驰我无闲。
别人笑我忒疯癫,我笑自己命太贱;不见满街漂亮妹,哪个归得程序员。不想只挣打工钱,那个老板愿发钱;小车大房咱要想,任我享用多悠闲。
比尔能搞个微软,我咋不能捞点钱;一个在天一在地,定有一日乾坤翻。
我在天来他在地,纵横天下山水间;傲视武林豪杰墓,一樽还垒风月山。
电脑面前眼发直,眼镜下面泪茫茫;做梦发财好几亿,从此不用手指忙。
哪知梦醒手空空,老板看到把我训;待到老时眼发花,走路不知哪是家。各位在此穷抱怨,可知小弟更可怜;俺学编程两年半,至今没赚一分钱。
听说三十是末日,二十三岁在眼前;发誓立志傍微软,渺渺前程对谁言?
哦了,开始吧,这里我们有好几种办法,首先是网络上面最常见的一种调用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代码中有我发现的一个非常棒的类,给大家了