狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

VB6中處理自定義窗口消息

VB6中處理自定義窗口消息

更新時(shí)間:2024-04-09 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

作者: ZDNET CHINA 特稿

在vb程序間進(jìn)行跨進(jìn)程通信不是一件容易的事。我曾經(jīng)見過許多的程序開發(fā)員試圖通過各種各樣的方法來完成這一工作,這些辦法包括從將信息寫入共享的文本文檔或注冊(cè)表鍵到使用成熟的activeX程序通信服務(wù)器。每一種辦法都有缺點(diǎn):以前的辦法容易產(chǎn)生錯(cuò)誤,而現(xiàn)在的這些方法又由于在服務(wù)器中呼叫每一個(gè)對(duì)象的時(shí)候都會(huì)發(fā)生跨進(jìn)程操作,又使其效率變得非常低。有一個(gè)經(jīng)過實(shí)踐檢驗(yàn)的方法是,將要跨進(jìn)程的通信掛接到你自己的VB程序的消息序列中,同時(shí)傾聽從其它進(jìn)程中傳來的自定義窗口消息,一種被大家稱之為"子類"的技術(shù)。


我曾經(jīng)描述過如何以及為什么在VB編程語言中要運(yùn)用"子類",而且我還展示了如何使用視窗應(yīng)用編程接口來將消息發(fā)送到你的應(yīng)用程序以及解鎖的隱藏控制功能中去。在本篇文章中,我會(huì)向大家解釋如何才能向其他的應(yīng)用程序發(fā)送消息以及如何發(fā)送消息才能解決跨進(jìn)程的通信難題。同時(shí),我還會(huì)給大家提供可再度使用的ActiveX DLL, Messenger.dll,來讓各位在將自定義消息運(yùn)用于自己的程序的時(shí)候盡可能的簡單起來。

傳送信息時(shí)與其它程序之間的相互作用

因?yàn)橄魉褪荳indows和在它上面運(yùn)行的程序之間通信的最基本方式,任何窗口或者控制任何的應(yīng)用程序都可以通過使用SendMessage或者相關(guān)的軟件來發(fā)送消息。此外,那些標(biāo)準(zhǔn)的消息對(duì)于所有運(yùn)行于Windows的應(yīng)用程序都有著相同的含義。有了這兩點(diǎn),我們就能得出一個(gè)令人吃驚的結(jié)論:通過發(fā)送消息,人們可以輕而易舉的控制任何的當(dāng)前正在運(yùn)行的應(yīng)用程序,甚至還包括那些并不應(yīng)該被別人操控的應(yīng)用程序。舉個(gè)例子來說:


當(dāng)你使用WM_xBUTTONDOWN 以及 WM_xBUTTONUP來傳送消息的時(shí)候,你可以在別的應(yīng)用程序中模擬鼠標(biāo)的點(diǎn)擊操作。

發(fā)送WM_KEYDOWN 以及 WM_KEYUP消息的時(shí)候,會(huì)模擬出按鍵盤的操作。

有惡意的程序員能夠通過發(fā)送一條WM_CLOSE消息到最高級(jí)窗口來迫使其它的應(yīng)用程序關(guān)閉,或者通過使用WM_ENDSESSION來讓其它的應(yīng)用程序誤以為Windows操作系統(tǒng)正在關(guān)閉。

指出你是在和誰談話

發(fā)送消息到另一個(gè)窗口的關(guān)鍵并不取決于你的應(yīng)用程序,而是取決于窗口句柄。Windows操作系統(tǒng)的應(yīng)用編程接口有許多的功能能夠重新得到特定的窗口句柄,其中最經(jīng)常使用的一個(gè)就是FindWindow功能。這個(gè)功能能夠在標(biāo)題說明中找到基于文本的最高級(jí)別的窗口(lpWindowName),并且返回到它的窗口句柄。在VB編程語言中關(guān)于FindWindow是如下這么描述的:


Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long


找到子窗體

你能通過使用FindWindowEx來找到子窗體句柄,就象是一個(gè)表格中的特殊控制一樣。



自定義消息提供了一種共通的語言

  
現(xiàn)在讓我們來復(fù)習(xí)一下:發(fā)送消息是一種簡單有效的與其它應(yīng)用程序進(jìn)行交流的方法,而且你能夠輕松的通過發(fā)送標(biāo)準(zhǔn)的Windows消息來模擬出用戶與圖形用戶界面程序之間的相互作用。但是,如果你需要分程傳遞一些非標(biāo)準(zhǔn)的消息到你的另一個(gè)也許已經(jīng)準(zhǔn)備就緒進(jìn)行處理的程序的時(shí)候又該如何去做呢?當(dāng)然,這是完全能夠做到的,重新定義一個(gè)標(biāo)準(zhǔn)消息的含義來表達(dá)"數(shù)據(jù)已經(jīng)準(zhǔn)備就緒,"使其它程序的主窗口子類化,并且對(duì)此消息進(jìn)行特殊的處理。


這么做真的有效果嗎?是的,答案是肯定的。但是這遠(yuǎn)遠(yuǎn)不是最佳的解決辦法。首先,你的數(shù)據(jù)處理程序不會(huì)對(duì)你決定進(jìn)行重定義的任何消息做出像正常時(shí)一樣的反應(yīng)。如果你能夠定義一條制有你的程序能夠明白的自定義消息的話,會(huì)比較好一些。


令人感到愉快的是,RegisterWindowMessageAPI函數(shù)就是這樣的。你只需要傳遞給它一個(gè)單獨(dú)的文本消息標(biāo)識(shí)符,剩下的工作就可以讓這個(gè)功能自己去完成了。其中的工作包括,向Windows注冊(cè)此消息,返回一條專門的消息標(biāo)識(shí)符,這條專門的消息標(biāo)識(shí)符必須被保證是唯一的而且對(duì)于當(dāng)前的Windows是有益的。之后,用相同的消息標(biāo)識(shí)符呼叫RegisterWindowMessage功能,無論是從相同的還是從不相同的程序中,會(huì)把這個(gè)分配給第一次呼叫的相同的標(biāo)識(shí)符返回。VB編程語言對(duì)于RegisterWindowMessage有如下聲明:


Private Declare Function RegisterWindowMessage _
Lib "user32" Alias "RegisterWindowMessageA" _
(ByVal lpString As String) As Long


把碎片組合在一起

這是解決跨進(jìn)程通信的最后一塊碎片。任何需要從別的程序接收自定義消息的程序會(huì)子類化它的主窗口,并且提供一個(gè)單獨(dú)的窗口標(biāo)題來讓它的hWnd能被FindWindow輕松的獲得。(第一個(gè)應(yīng)用程序應(yīng)該用另一種方法來定位第二個(gè)程序的hWnd。)兩個(gè)程序都注冊(cè)相同的自定義窗口消息,并且懸掛到他們接收到的標(biāo)識(shí)符上去。當(dāng)一個(gè)程序需要將自定義消息鎖代表的通知給另一個(gè)程序的時(shí)候,它會(huì)發(fā)現(xiàn)另一個(gè)程序的窗口句柄,并且通過使用SendMessage變量來發(fā)送自定義消息。任何額外的信息都會(huì)由于SendMessage注釋:swParam 以及l(fā)Param參數(shù)或者它的返回碼而相互聯(lián)絡(luò)。


根據(jù)我所說的,我編了一個(gè)在VB6程序中能夠被用來實(shí)現(xiàn)自定義消息特別的Messenger組件。這個(gè)組件的源代碼可以從下邊的列表中找到:


Listing A是這個(gè)組件主要類別的源代碼,cMessenger。

為個(gè)人使用的源代碼被稱之為cMessageInfo,可以在Listing B中被找到。

在Listing C中你能找到的是用來function addresses以及需要功能模塊的時(shí)候的組件源代碼。

Messenger負(fù)責(zé)為用戶子類,注冊(cè),接聽,以及發(fā)送自定義消息。這是相當(dāng)安全的,因此,多個(gè)應(yīng)用程序都能夠使用此組件的同一拷貝。


StartListening方法被看作是一個(gè)窗口對(duì)子類的句柄中唯一的參量。它為此窗口嵌入它自己的窗口程序,并且開始等待你用RegisterMessage方法定義的自定義消息。這樣能夠通過提高IncomingMessage事件以及只回應(yīng)你使用RegisterMessage注冊(cè)的自定義消息來確定是否收到一條自定義消息。在關(guān)閉窗口之前,通過使用StopListening功能,確保已經(jīng)把cMessenger從窗口消息序列中去掉了。


你可以使用SendMessage來傳送消息到其它的應(yīng)用程序。SendMessage認(rèn)可你希望通報(bào)的窗口標(biāo)題,同時(shí)也認(rèn)可你使用RegisterMessage注冊(cè)的消息文本。你能夠通過使用RegisterWindow或者 RegisterWindowByHandle手動(dòng)將新的窗口添加到高速緩存中去。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
亚洲国产成人不卡| 久久精品免费| 99香蕉国产精品偷在线观看| 亚洲乱码国产乱码精品精98午夜 | 日韩电影免费在线看| 国产欧美日韩一区二区三区在线观看| 欧美在线黄色| 日韩电影在线观看电影| 日韩av一区二区三区| 久久精品国产久精国产爱| 久久蜜臀中文字幕| 亚洲专区一区二区三区| 成人aaaa免费全部观看| 欧美日韩亚洲一区二区三区在线观看 | 99国产精品| 一区二区三区福利| 99精品视频在线播放观看| 日韩高清欧美激情| 久久狠狠亚洲综合| 国产精品香蕉一区二区三区| 樱桃国产成人精品视频| 亚洲成a人片综合在线| 国产精品丝袜久久久久久app| 欧日韩精品视频| 亚洲一二三区在线| 91亚洲国产成人精品一区二区三| 在线精品视频免费播放| 国产精品美女久久久| 91色porny在线视频| 国内视频精品| 岛国精品在线播放| 日韩黄色小视频| 伊人夜夜躁av伊人久久| 丝袜脚交一区二区| 国产夫妻精品视频| 精品无人区卡一卡二卡三乱码免费卡| 亚洲欧美日韩中文播放| 国产午夜亚洲精品午夜鲁丝片| 欧美日本高清视频在线观看| 久久久精品国产一区二区三区| 夜夜嗨一区二区三区| 在线看国产一区| 精品999久久久| 精品免费日韩av| 欧美mv日韩mv国产网站app| 亚洲欧洲av色图| 国产精品伦理一区二区| 视频精品一区二区| 91丨国产丨九色丨pron| 亚洲综合不卡| 久久九九99视频| 男人操女人的视频在线观看欧美| 午夜精品久久久| 日本欧美一区二区三区| 99riav一区二区三区| 色婷婷一区二区三区四区| 色综合久久久久综合体桃花网| 精品欧美黑人一区二区三区| 亚洲主播在线观看| 亚洲自拍与偷拍| 成人av在线一区二区| 久久午夜视频| 成人欧美一区二区三区1314 | 亚洲精品一区二区三区蜜桃久| 欧美精品在线一区二区| 欧美一区二区三区性视频| 欧美成人一区二区三区片免费 | 99精品视频一区| 欧美做爰猛烈大尺度电影无法无天| 中文字幕不卡的av| 亚洲精品国产一区二区三区四区在线 | 亚洲区小说区图片区qvod| 国产精品18久久久久久久久久久久 | 亚洲欧洲中文日韩久久av乱码| 成人免费视频视频在线观看免费 | 亚洲女人小视频在线观看| www.成人在线| 亚洲国产精品一区二区第一页| 欧美日韩一区自拍| 日韩精品一区二区三区四区 | 一区二区不卡在线播放| 精品一区二区免费看| 国产精品视频| 亚洲青青青在线视频| 欧美久久一级| 久久中文精品| 亚洲国产日韩一区二区| 国产精品456露脸| 欧美亚洲国产怡红院影院| 久久色在线观看| 五月天激情综合网| 国产亚洲欧美另类一区二区三区| 国产蜜臀av在线一区二区三区| 成人av网在线| 精品对白一区国产伦| 成人动漫视频在线| 精品久久久久久久一区二区蜜臀| 国产综合成人久久大片91| 欧美三级网页| 中文字幕av一区二区三区| 欧美ab在线视频| 国产亚洲va综合人人澡精品| 欧美一区二区| 国产欧美一区二区精品性色超碰| 成人毛片老司机大片| 久久亚洲私人国产精品va媚药| 丁香六月综合激情| 日韩美女主播在线视频一区二区三区| 国内精品不卡在线| 日韩午夜在线播放| 日韩二区在线观看| 欧美午夜视频网站| 国产一区二区三区高清播放| 午夜在线视频一区二区区别| 久久精品视频一区二区三区| 91啦中文在线观看| 国产精品麻豆欧美日韩ww| 国产综合欧美| 亚洲午夜激情av| 欧美亚洲动漫制服丝袜| 丰满亚洲少妇av| 色哟哟日韩精品| 狠狠狠色丁香婷婷综合激情| 欧美成人女星排行榜| 99亚偷拍自图区亚洲| 国产精品不卡一区| 99精品1区2区| 一区二区激情小说| 在线观看欧美黄色| 国产成人一级电影| 中文字幕一区视频| 色一情一伦一子一伦一区| 国产综合色精品一区二区三区| 久久久夜色精品亚洲| 亚洲国产一区二区三区a毛片| 视频一区二区欧美| 精品理论电影在线| 亚洲国产精品视频一区| 蜜臀av一区二区三区| 国产综合亚洲精品一区二| 亚洲国产毛片aaaaa无费看| 777精品伊人久久久久大香线蕉| 中文字幕一区在线观看视频| 久久成人免费| 国产美女视频91| 亚洲图片欧美激情| 色综合欧美在线视频区| 337p日本欧洲亚洲大胆色噜噜| 亚洲调教视频在线观看| 免费成人在线观看| 日本一二三四高清不卡| 久久综合九色综合久99| 99国产精品国产精品久久| 亚洲国产成人va在线观看天堂| 91精品国产综合久久国产大片 | 日韩精品一区二区三区在线| 国产日韩1区| 丁香婷婷深情五月亚洲| 亚洲成人精品影院| 国产亚洲综合av| 欧美系列在线观看| 最近看过的日韩成人| 成人免费不卡视频| 日韩电影免费一区| 成人免费一区二区三区视频| 日韩欧美在线123| 久久久久久9| 亚洲精品欧洲精品| 99riav久久精品riav| 国内不卡的二区三区中文字幕 | 亚洲精品亚洲人成人网在线播放| 欧美一区二区精美| 91成人在线观看喷潮| 精品一区二区三区日韩| 伊人色综合久久天天人手人婷| 精品少妇一区二区三区在线播放| 噜噜噜噜噜久久久久久91| 亚洲手机在线| 97精品国产97久久久久久久久久久久| 日本视频中文字幕一区二区三区| 亚洲欧洲精品一区二区三区| 亚洲精品一区二区在线观看| 欧美伊人久久久久久久久影院 | 国产亚洲精品aa午夜观看| 国产农村妇女精品一区二区| 欧美系列一区| 99久久精品一区| 国产成人精品一区二区三区网站观看| 天堂成人免费av电影一区| 一区二区三区在线高清| 中文在线一区二区| 国产婷婷色一区二区三区| 91精品国产综合久久久久久久久久| 久久国产主播精品| 久久本道综合色狠狠五月| 国产精品久久国产愉拍 | 在线观看91精品国产入口| 在线一区亚洲| 国产亚洲精品自拍| 亚洲欧美清纯在线制服|