麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

在關(guān)機(jī)或Logff前信息的攔截

2019-11-18 17:51:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
如果我們關(guān)機(jī)或Logoff時(shí),我們的程序有時(shí)會(huì)因而無(wú)法按正常程序結(jié)束,一般我們會(huì)在Form的Unload中一段程序結(jié)束時(shí)要做什么事,但是,如果使用者直接用開(kāi)始功能菜單的關(guān)機(jī),會(huì)使UnLoad的部份沒(méi)有做到,我們現(xiàn)在就想辦法來(lái)攔截關(guān)機(jī)(或Logoff)時(shí)的信息。

一般來(lái)說(shuō),關(guān)機(jī)或Logff后,Windows會(huì)傳依序送出WM_QUERYENDsession的信息給每個(gè)PRocess,如果中間有一個(gè)Process不能順利結(jié)束(例如:Word修改后未存檔,而出現(xiàn)是否存檔,但我們按取消),這時(shí)該信息執(zhí)行的結(jié)果會(huì)傳回False(0),這時(shí)Windows也就不再繼續(xù)送WM_QUERYENDSESSION給下一個(gè)Proccess。反之,如果所有的Process都可以順利結(jié)束(也就是每個(gè)送出的WM_QUERYENDSESSION都傳回True),那才代表以以順利結(jié)束。

不管WM_QUERYENDSESSION最后的結(jié)果是可以順利結(jié)束或不能順利結(jié)束,Windows會(huì)再送一個(gè)WM_ENDSESSION的信息給所有的Process,而wParam的內(nèi)容便是指出是否可以順利結(jié)束(True菜單可以,F(xiàn)alse菜單不行,在vb中則CheckwParam=0菜單False,0菜單True),說(shuō)到這里大概就知道該如何做啦,程序如下:

'以下在Form
PrivateSubForm_Load()
DimretAsLong
'記錄原來(lái)的WindowProcedure的位址
preWinProc=GetWindowLong(Me.hwnd,GWL_WNDPROC)
'設(shè)定form的windowProcedure到wndproc
ret=SetWindowLong(Me.hwnd,GWL_WNDPROC,AddressOfwndproc)
EndSub

PrivateSubForm_Unload(CancelAsInteger)
DimretAsLong
'取消Message的截取,而使之又只送往原來(lái)的WindowProcedure
ret=SetWindowLong(Me.hwnd,GWL_WNDPROC,preWinProc)
'這里只是要看看用關(guān)機(jī)的方式結(jié)束程序時(shí),會(huì)不會(huì)執(zhí)行到這里
DimfnoAsLong
fno=FreeFile
Open"c:/tt2"ForAppendAsfno
Print#fno,"ccc" vbCrLf
Close#fno
EndSub

'以下在.Bas

OptionExplicit

DeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"_
(ByValhwndAsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong
DeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"_
(ByValhwndAsLong,ByValnIndexAsLong)AsLong
DeclareFunctionCallWindowProcLib"user32"Alias"CallWindowProcA"_
(ByVallpPrevWndFuncAsLong,ByValhwndAsLong,ByValMsgAsLong,_
ByValwParamAsLong,ByVallParamAsLong)AsLong

PublicConstGWL_WNDPROC=(-4)
PublicConstWM_ENDSESSION=&H16
PublicConstWM_QUERYENDSESSION=&H11

PublicpreWinProcAsLong

PublicFunctionwndproc(ByValhwndAsLong,ByValMsgAsLong,_
ByValwParamAsLong,ByVallParamAsLong)AsLong
IfMsg=WM_QUERYENDSESSIONThen
Debug.Print"QryEnd",wParam,lParam
Else
IfMsg=WM_ENDSESSIONThen
IfwParam0Then'代表將順利關(guān)機(jī)或LogOff,這時(shí)便得做正常結(jié)束程序的操作
DimfnoAsLong
Open"c:/ttt"ForOutputAs#1
Print#1,"hahcccc5"
Close#1
EndIf
EndIf
EndIf
'將之送往原來(lái)的WindowProcedure
wndproc=CallWindowProc(preWinProc,hwnd,Msg,wParam,lParam)
EndFunction

->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费观看国产精品视频 | 999久久国精品免费观看网站 | 激情综合在线 | 鲁丝片一区二区三区免费入口 | 色婷婷久久久久久 | 黄色免费大片 | av大全在线免费观看 | 国产亚洲综合一区二区 | 成人wxx视频免费 | 欧美性生交大片 | 九九热在线视频观看 | 黄 色 免费网 站 成 人 | 欧美一级做性受免费大片免费 | 男人天堂免费 | 国产资源在线播放 | 久久久噜噜噜久久熟有声小说 | 草久影视| 蜜桃视频网站在线观看 | 久章草影院 | 毛片视频网址 | 亚洲伊人色欲综合网 | 色综合久久久久久久久久 | 亚洲成人第一页 | 精品国产一级毛片 | 久久久一区二区精品 | 精品一区二区6 | 欧美激情第一区 | 国产精品美女一区二区 | 婷婷中文字幕一区二区三区 | 国产精品视频免费在线观看 | 九九热视频在线免费观看 | 成人做爰s片免费看网站 | av亚洲在线观看 | 日韩毛片在线看 | 国产一区在线免费 | 国产午夜精品一区二区三区在线观看 | 精品国产一区三区 | 56av国产精品久久久久久久 | av在线免费观看国产 | 欧美精品v国产精品v日韩精品 | 成人午夜精品久久久久久久3d |