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

主站蜘蛛池模板: 无码一区中文字幕| 国产日产欧美精品| 亚洲欧美另类视频| 欧美日韩专区| 婷婷丁香色| 天天做天天爱天天爽综合区| 中文成人无码国产亚洲| 福利在线一区| 91久久偷偷做嫩草影院精品| 国产三级国产精品国产普男人| www.亚洲一区二区三区| 午夜精品区| 日本a∨在线观看| 欧美a网站| 国产一区二区三区在线观看视频| 伊人久久福利中文字幕| 成人av专区精品无码国产| 日韩高清一区 | 美女免费黄网站| 国产成人喷潮在线观看| 国产乱子伦视频在线播放| 久久国产高潮流白浆免费观看| 成年人视频一区二区| 精品久久久久久成人AV| 午夜福利在线观看入口| 99re经典视频在线| 国产精品分类视频分类一区| 网友自拍视频精品区| vvvv98国产成人综合青青| 亚洲天堂久久| 伊伊人成亚洲综合人网7777| 91色在线视频| 免费大黄网站在线观看| 亚洲国模精品一区| 亚洲第一成年免费网站| 99一级毛片| 亚洲天堂2014| 97久久超碰极品视觉盛宴| 免费高清自慰一区二区三区| 国产欧美在线观看精品一区污| 国产毛片基地| 国产欧美日韩va另类在线播放 | 99er这里只有精品| 亚洲香蕉久久| 天天色天天综合| 无码 在线 在线| 亚洲精品欧美重口| 五月天香蕉视频国产亚| 91精品国产91久无码网站| 71pao成人国产永久免费视频| 欧美中文一区| 日韩精品一区二区深田咏美| 日日拍夜夜嗷嗷叫国产| 亚洲男人天堂2018| 亚洲毛片网站| 亚洲成人高清在线观看| 国产成人1024精品| 99国产精品国产| vvvv98国产成人综合青青| 宅男噜噜噜66国产在线观看| 日韩精品欧美国产在线| 97一区二区在线播放| 91美女视频在线| 狠狠综合久久久久综| 青青操国产| 九九热在线视频| 国产成人狂喷潮在线观看2345| 久久永久精品免费视频| 亚洲国产第一区二区香蕉| 91久久性奴调教国产免费| 天天综合网在线| 亚洲伦理一区二区| 亚洲AⅤ无码国产精品| 欧美精品三级在线| 国产真实乱子伦视频播放| 欧美区一区二区三| 伊人福利视频| 天堂在线www网亚洲| 中文字幕在线播放不卡| 91精品国产丝袜| 国产精品一线天| 无码 在线 在线|