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

主站蜘蛛池模板: 亚洲人成网站色7777| 欧美一级黄色影院| 久久精品aⅴ无码中文字幕 | 亚洲午夜天堂| 国产日韩欧美视频| 91尤物国产尤物福利在线| 亚洲欧美日韩视频一区| 永久天堂网Av| 国产sm重味一区二区三区| 国产菊爆视频在线观看| 啪啪啪亚洲无码| 天天做天天爱天天爽综合区| 亚洲国产91人成在线| www.91中文字幕| 国产精品男人的天堂| 国产色网站| 欧美视频免费一区二区三区| 中文无码影院| 午夜不卡视频| 欧美一级特黄aaaaaa在线看片| 国产真实二区一区在线亚洲| 成人亚洲天堂| 久视频免费精品6| 国产毛片高清一级国语| 午夜限制老子影院888| 在线免费观看a视频| 亚洲一区免费看| 日韩性网站| 欧美色香蕉| 制服丝袜一区二区三区在线| 中日韩一区二区三区中文免费视频| 天天躁夜夜躁狠狠躁躁88| 亚洲欧美在线综合一区二区三区| 亚洲欧洲日本在线| 在线观看国产精品第一区免费| 国产精品19p| 亚洲国产精品日韩av专区| 亚洲免费成人网| 久热中文字幕在线| 欧美成人精品一级在线观看| 57pao国产成视频免费播放| 国产亚洲欧美在线专区| 亚洲国产亚洲综合在线尤物| 亚洲成A人V欧美综合| 久久免费精品琪琪| 草草影院国产第一页| a级免费视频| 精品超清无码视频在线观看| 欧美精品1区2区| 欧美激情视频一区二区三区免费| 综合五月天网| 999精品视频在线| 日本一区中文字幕最新在线| 亚洲香蕉在线| 高h视频在线| 毛片基地视频| 国产区在线看| 国产精品微拍| AV不卡无码免费一区二区三区| 日韩毛片在线播放| 波多野结衣亚洲一区| 色爽网免费视频| 国产精品精品视频| 国产欧美在线观看视频| 欧美日韩动态图| 亚洲第一精品福利| julia中文字幕久久亚洲| 国产丝袜无码精品| 毛片基地美国正在播放亚洲| 91久久精品国产| 欧美综合区自拍亚洲综合绿色| 亚洲天堂日本| a级毛片在线免费观看| 青草视频在线观看国产| 婷婷六月激情综合一区| 免费av一区二区三区在线| 国产丝袜啪啪| www.99精品视频在线播放| 亚洲开心婷婷中文字幕| 国产日韩欧美成人| 91精品免费久久久| 久久五月视频|