狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
天天av天天翘天天综合网色鬼国产 | 日韩av在线播放中文字幕| 欧美日韩国产经典色站一区二区三区 | 精品一区二区免费在线观看| 国产欧美精品一区二区色综合 | 国产日产欧美一区| 日本乱人伦aⅴ精品| 欧美成人免费在线| 捆绑变态av一区二区三区| 国产午夜精品久久| 色菇凉天天综合网| 欧美精品一级| 久久aⅴ国产欧美74aaa| 亚洲色图在线看| 欧美一级高清大全免费观看| 亚洲少妇一区| 91丨porny丨在线| 久久成人麻豆午夜电影| 成人欧美一区二区三区1314| 欧美精品1区2区3区| 国产精品入口66mio| av亚洲精华国产精华| 日韩国产欧美在线播放| 国产精品电影一区二区三区| 欧美一级高清大全免费观看| 久久激情一区| 在线高清一区| eeuss鲁片一区二区三区| 在线视频一区观看| 久久婷婷影院| 国产河南妇女毛片精品久久久| 老色鬼精品视频在线观看播放| 日本va欧美va瓶| 91网站最新地址| 综合精品久久久| 欧美在线综合| 欧美精品国产一区二区| 国产福利不卡视频| 日韩av一二三| 亚洲激情图片一区| 国产亚洲成aⅴ人片在线观看 | 欧美色图片你懂的| 国产精品乱子乱xxxx| 黑人一区二区| 色综合网站在线| 成人精品视频一区二区三区尤物| 亚洲精品中文在线影院| 久久久美女毛片| 日韩一区二区免费高清| 在线视频观看一区| 免费永久网站黄欧美| 亚洲日本黄色| 影音先锋亚洲电影| 欧美日韩网址| 99视频一区二区三区| 粉嫩嫩av羞羞动漫久久久| 精品一区免费av| 蜜桃视频在线一区| 男男成人高潮片免费网站| 亚洲高清视频的网址| 有码一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 久久婷婷国产综合精品青草| 精品少妇一区二区三区视频免付费| 欧美日韩欧美一区二区| 欧美无乱码久久久免费午夜一区| 色综合久久久久久久| 巨乳诱惑日韩免费av| 久久亚洲影院| 91福利国产精品| 欧美在线高清视频| 欧美日韩在线播放一区| 欧美色精品天天在线观看视频| 欧美午夜精品久久久| 欧美系列亚洲系列| 成人app软件下载大全免费| 欧美大片拔萝卜| 日韩亚洲欧美成人一区| 91精品国产色综合久久| 欧美一区二区三区小说| 欧美成人官网二区| 欧美精品一区二区三区在线| 欧美精品一区二区久久久| 26uuu色噜噜精品一区二区| 26uuu色噜噜精品一区| 国产亚洲欧美日韩俺去了| 国产日韩v精品一区二区| 国产精品乱人伦| 一区二区激情视频| 亚洲18色成人| 另类人妖一区二区av| 国产伦精品一区二区三区在线观看| 国产福利一区在线观看| av激情综合网| 激情成人亚洲| 亚洲一卡久久| 欧美日韩精品欧美日韩精品| 日韩欧美一级片| 中文无字幕一区二区三区| 亚洲美腿欧美偷拍| 亚洲一区二三| 久久99久国产精品黄毛片色诱| 亚洲午夜久久久久久久久电影院| 日韩免费视频一区二区| 欧美激情1区2区| 亚洲一区二区3| 色婷婷久久99综合精品jk白丝| 日韩经典中文字幕一区| 日韩亚洲国产中文字幕欧美| 影音先锋在线一区| 日本亚洲三级在线| 国产视频一区在线观看| 免费久久99精品国产自| 男人的天堂久久精品| 26uuu精品一区二区三区四区在线| 国产欧美三级| 成人久久视频在线观看| 日韩一区欧美二区| 午夜亚洲福利| 国产欧美一区二区在线观看| 精品国精品国产| 久久亚洲二区三区| 国产原创一区二区| 北岛玲一区二区三区四区| 亚洲国产免费| 欧美体内she精高潮| 久久亚洲综合色| 亚洲最大的成人av| 国产成人欧美日韩在线电影| 亚洲国产二区| 欧美精品成人一区二区三区四区| 欧美激情一区二区三区四区| 日韩精品久久理论片| 99免费精品视频| 久久久www| 精品国产乱码久久久久久久久| 亚洲欧美另类在线| 黄色精品一二区| 亚洲精品极品| 欧美一区二区女人| 亚洲自拍偷拍综合| 成人免费毛片嘿嘿连载视频| 国产精品亚洲一区| 欧美在线观看天堂一区二区三区| 99精品免费视频| 欧美一级在线观看| 一区二区视频在线| 高清成人免费视频| 免费亚洲电影| 久久九九久久九九| 久久99久久精品| 亚洲三级国产| 精品国产精品一区二区夜夜嗨| 午夜精品福利久久久| 欧美在线二区| 在线不卡免费av| 亚洲高清在线视频| 欧美日韩免费观看一区=区三区 | 91视频在线观看| 欧美日韩综合不卡| 亚洲一卡二卡三卡四卡| 欧美成人久久| 欧美精品第1页| 亚洲国产美女搞黄色| 欧美激情日韩| 日韩一级片在线观看| 性欧美疯狂xxxxbbbb| 欧美特黄一区| 2023国产精品自拍| 韩国av一区二区三区四区| 国产日韩精品一区观看 | 欧美高清在线一区二区| 国产成人免费视频精品含羞草妖精| 欧美一区二区三区免费| 韩国久久久久| 国内自拍亚洲| 久久久久久久久久久久久夜| 亚洲超碰精品一区二区| 国产福利一区二区三区视频| 销魂美女一区二区三区视频在线| 日韩写真欧美这视频| 国产精品麻豆欧美日韩ww| 亚洲免费色视频| 女同性一区二区三区人了人一| 日韩女优av电影| 精品一区二区在线看| 在线观看视频91| 亚洲欧洲日产国产综合网| 成人午夜在线播放| 91精品欧美综合在线观看最新| 国产日本欧美一区二区| 成人精品视频一区二区三区 | 欧美日韩一级片在线观看| 亚洲成人av在线电影| 亚洲神马久久| 一区二区三区日韩精品视频| 黄色成人91| www激情久久| 精品一区二区在线看| 色美美综合视频|