大家好,昨天俺休息了一天,木有給大家更新執行個體,今天呢,決定了,哈哈,更新三個。希望大家給俺好評哦,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代碼中有我發現的一個非常棒的類,給大家了