999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用VB實現系統托盤技術

2017-04-13 05:43:17趙汝苓
中國新通信 2017年5期

趙汝苓

【摘要】 通過調用API函數實現系統托盤技術,主要涉及到API的幾個常用函數的聲明和調用,再結合VB本身的特征綜合運用。

【關鍵詞】 API 系統托盤 消息機制

系統托盤常指Windows任務欄的狀態區域,系統時鐘、音量控制等程序都在系統托盤中,一些應用程序在安裝完后也將它們本身的圖標放入了其中。一般來說,系統托盤駐留程序是在計算機后臺運行,如瑞星、MSN等。系統托盤主要以特殊的小圖標在任務欄右邊時間的區域出現,作為程序運行的一個標志,我們可以通過使用小圖標所彈出的菜單來控制應用程序狀態,可實現修改該圖標、窗口復位、最大化、最小化及關閉程序等功能。

利用VB調用API可以實現功能比較完整的托盤程序,牽涉到Shell_NotifyIcon、SendMassage、CallWindowProc、SetWindowLong等API函數,其中Shell_NotifyIcon是主要的函數,它用來添加、刪除、更改系統托盤區的圖標,SendMassage、CallWindowProc、SetWindowLong函數,通過WINDOWS操作系統的消息機制,實現對應用程序的控制。

一、先介紹相關的API函數、關鍵字

1、Shell_NotifyIcon用于添加、刪除、更改系統托盤區的圖標;2、SendMassage用于將一條消息發給某個窗口;3、CallWindowProc用于發送消息到一個窗口過程;4、SetWindowLong用于使窗口結構中為指定的窗口設置屬性,SetWindowLong函數作用是取得默認窗口過程的地址,然后轉向自定義的窗口過程的地址。5、消息機制。Windows消息控制中心一般是三層結構,其頂端就是Windows內核。Windows內核維護著一個消息隊列,第二季控制中心從這個消息隊列中獲取自己管轄的消息,后作出處理,有些消息直接處理掉,有些還要發送給下一級窗體或控件。第二級控制中心一般是各Windows應用程序的Application對象。第三級控制中心就是Windows窗體對象,每一個窗體都有一個默認的窗體過程,這個過程負責處理各種接收到的消息。

二、系統托盤圖標屬性設置

在使用Shell_NotifyIcon函數之前,我們應先定義結構類型NOTIFYICONDATA,然后定義一個NOTIFYICONDATA 的變量TheData來記錄設置托盤圖標的數據。

代碼:

Public Type NOTIFYICONDATA

cbSize As Long HWnd As Long

Uid As Long UFlags As Long

UCallbackMessage As Long

HIcon As Long

SzTip As String*64

End Type

Private TheData As NOTIFYCONDATA

1、設置添加圖標屬性值

代碼:With TheData

Uid=0

.HWnd=frm.HWnd frm.HWnd是程序主窗體的句柄

.cbSize=Len(TheData)\

.HIcon=frm.Icon.Handle frm.Icon.Handle指向主窗體的圖標

.UFlags=NIF_ICON

.UCallbackMessage=TRAY_CALLBACK 作用是允許返回消息

.UFlags=.UFlags Or NIF_MESSAGE

.cbSize=Len(TheData)

End With

Shell_NotifyIcon NIM_ADD,TheData 根據前面定義NIM_ADD,設置為“添加模式”,然后添加。

2、設置刪除圖標屬性值

代碼:

With TheData

.UFlags=0

End With

Shell_NotifyIcon NIM_DELETE,TheData 根據前面定義NIM_DELETE,設置為“刪除模式”。

3、設置更改圖標屬性值

With TheData

.HIcon=pic.Handle tip是字符串string,存儲提示信息

.UFlags=NIF_ICON 指明要對浮動提示進行設置

End With

Shell_NotifyIcon NIM_MODIFY,TheData 根據前面定義NIM_MODIFY,設置為“更改模式”

4、設置為圖標添加浮動提示信息的屬性值

代碼:

With TheData

.SzTip=tip&vbNullChar tip是字符串string,存儲提示信息

.UFlags=NIF_TIP 指明要對浮動提示進行設置

End With

Shell_NotifyIcon NIM_MODIFY,TheData 根據前面定義

NIM_MODIFY,設置為“修改模式”。

此時的托盤圖標是孤立的,我們并不能利用它來控制應用程序的行為。

三、利用消息機制實現托盤圖標控制

每個應用程序在運行時都會被分配一個窗口過程WINDOWPROC,由這個窗口過程來接受和處理操作系統發來的消息,通常情況下這個窗口過程是由操作系統指定的,它會自動的響應并處理一些WINDOWS消息。程序中用到了SendMassage、CallWindowProc、SetWindowLong等API函數,其中SendMassage函數的作用是將一條消息發給某個窗口;CallWindowPro函數用來發送消息到一個窗口過程;而使用SetWindowLong函數來為窗口結構中為指定的窗口設置屬性。

1、處理來自托盤圖標的信息。需要編寫代碼來處理消息,必須先更改窗口的屬性,從原來有默認的窗口過程處理消息變成由自定義編寫的消息處理過程來處理消息。使用SetWindowLong函數來取得默認窗口過程的地址,然后轉向自定義的窗口過程的地址。然后,編寫NewWindowProc函數代碼,需要注意的是TRAY_CALLBACK是由托盤區圖標傳來的消息,要讓托盤圖標傳回消息,必須在添加托盤圖標時指定。

2、實現對圖標右鍵菜單的控制。這時我們需要用到SendMassage函數來向主窗體發送最大化、最小化、關閉、移動等信息,其中HWnd是主窗體的句柄,WM_ SYSCOMMAND表示發送的是系統控制類的消息,SC_ MOVE、SC_SIZE、SC_RESTORE是要發送的消息。

小結:Windows環境提供有非常豐富的編程接口資源,在這個基礎上可以編制出能滿足各種目標功能的應用系統。當然必須對Windows的一種重要運行機制——消息機制作深入的理解,然后才能運用API函數來達到各種要求,系統托盤技術只是其中的一個運用,在此起到了拋磚引玉的作用。

參 考 文 獻

[1]劉新民,蔡瓊編著,《VisualBasic6.0程序設計》,清華大學出版社,2014,3

[2]肖斌編著,《VisualBasic6.0程序設計》,北京希望電子出版社,2012,8

主站蜘蛛池模板: www亚洲天堂| 日韩亚洲高清一区二区| 日韩欧美一区在线观看| 色悠久久久| 亚洲第一成年网| 成人国产免费| 亚洲中文精品久久久久久不卡| 国产欧美高清| 免费在线观看av| 亚洲国产精品无码AV| 久久国产精品麻豆系列| 欧美久久网| 亚洲人成人伊人成综合网无码| 国产精品深爱在线| 欧美日韩福利| 91精品人妻互换| 91精品伊人久久大香线蕉| 日韩无码白| 91青青草视频在线观看的| 手机精品福利在线观看| 国产色爱av资源综合区| 中文字幕在线一区二区在线| 欧美成人怡春院在线激情| 婷婷伊人五月| a级毛片免费网站| 亚洲天堂区| 色噜噜狠狠色综合网图区| 亚洲中文在线视频| 国产特一级毛片| 麻豆精品在线视频| 最新国产在线| 亚洲av片在线免费观看| 色综合久久无码网| 亚洲免费福利视频| 亚洲三级电影在线播放| 国产欧美视频在线| 视频二区中文无码| 欧美在线伊人| 欧美亚洲日韩不卡在线在线观看| 国产精品视频免费网站| 久久久噜噜噜| 天天综合色网| 小说区 亚洲 自拍 另类| 国产99久久亚洲综合精品西瓜tv| 欧美日韩另类国产| 欧美日韩国产综合视频在线观看 | 国产一二视频| 国产精品免费电影| 欧美区在线播放| 亚洲天堂久久| 男女性午夜福利网站| 成人国产三级在线播放| 九九香蕉视频| 456亚洲人成高清在线| 欧美在线视频不卡第一页| 美美女高清毛片视频免费观看| 日日拍夜夜操| 久久国产精品影院| 67194亚洲无码| 9966国产精品视频| 小蝌蚪亚洲精品国产| 香蕉久人久人青草青草| 一级一级一片免费| 成人免费一区二区三区| 91探花在线观看国产最新| 亚洲欧美日韩视频一区| 91香蕉视频下载网站| 在线视频亚洲色图| 激情爆乳一区二区| 综合色在线| 欧美日韩亚洲综合在线观看| 白丝美女办公室高潮喷水视频| 四虎亚洲国产成人久久精品| 国产内射一区亚洲| 欧美成人精品一级在线观看| 亚洲国产无码有码| 亚洲天堂视频网站| 国产在线视频导航| 欧美日韩国产系列在线观看| 天天躁夜夜躁狠狠躁图片| 在线日韩一区二区| 久久精品视频亚洲|