<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大鳥(niǎo)的學(xué)習(xí)樂(lè)園
    路漫漫其修遠(yuǎn)兮,吾將上下而求索
    posts - 26,comments - 27,trackbacks - 0
    到現(xiàn)在為止,本教程一直討論基于activex dlls中的類(lèi)的內(nèi)容,但是沒(méi)有一本教程不說(shuō)明與dll相似的activex exes。

       所以,想在這里實(shí)際編寫(xiě)一個(gè)activex exe工程。事實(shí)上,它和activex dll沒(méi)有太大的區(qū)別,甚至沒(méi)有區(qū)別。在啟動(dòng)visual basic后選擇\"activex exe\"就可創(chuàng)建,然后像以前一樣構(gòu)造自己的類(lèi)。

       但這里不想再作更詳細(xì)的討論,因?yàn)閍ctivex exe和activex dll除了在運(yùn)行時(shí)有一些微小區(qū)別外,其他都相同。

       它們的區(qū)別首先表現(xiàn)在它們的\"進(jìn)程空間\"的不同。所謂\"進(jìn)程空間\"是用于運(yùn)行、處理和存取的一塊計(jì)算機(jī)內(nèi)存。任何windows程序,如microsoft word等,都有自己的\"進(jìn)程空間\",它很像程序的桌面那樣。

       當(dāng)使用activex dlls工程運(yùn)行時(shí),dll是在使用它的程序的進(jìn)程空間中運(yùn)行的,而activex exe是在進(jìn)程空間外面工作的。但是,activex exe還有自己的\"桌面\"。這究竟如何理解呢?

       假如,activex dll變得不穩(wěn)定或意外受損時(shí),使用它的應(yīng)用程序常常出現(xiàn)藍(lán)屏的死機(jī)現(xiàn)象,而在exes中卻不會(huì)發(fā)生,因?yàn)樗凶约旱腬"進(jìn)程空間\",即使被破壞,也僅僅是桌面受損,當(dāng)然用戶(hù)程序應(yīng)該很好地去修復(fù)它。

       其次,它們的區(qū)別還表現(xiàn)在裝載的速度上。由于dll是直接裝載到已存在的進(jìn)程空間,所以它的速度非常快。而exes由于還要分配自己的進(jìn)程空間,所以速度上相對(duì)慢一點(diǎn)。

       上述兩點(diǎn)區(qū)別可以說(shuō)是它們真正的區(qū)別。

       總之,如果使用不同的windows工具來(lái)實(shí)現(xiàn)相應(yīng)的activex組件,那么相應(yīng)的工程類(lèi)型就應(yīng)該有所不同。例如,若使用mts,則應(yīng)創(chuàng)建dll工程,若使用dcom,則應(yīng)創(chuàng)建exe工程。當(dāng)然,即使現(xiàn)在不理解這此縮寫(xiě)字母的含義,我們也不必?fù)?dān)心。因?yàn)樗鼈兪轻槍?duì)高級(jí)用戶(hù)的,并用于com遠(yuǎn)程的工具組件。以后有機(jī)會(huì)再來(lái)給出相應(yīng)的教程。

       這里再來(lái)分析第二點(diǎn)的區(qū)別。

       如果現(xiàn)在需要?jiǎng)?chuàng)建這樣的一個(gè)程序,它不斷地檢測(cè)一個(gè)數(shù)據(jù)庫(kù)是否有什么改變。那么我們想到的是在程序中使用一些\"timer\"(計(jì)時(shí)器),每隔10分鐘激發(fā)一次并檢測(cè)該數(shù)據(jù)庫(kù)。但問(wèn)題來(lái)了,在該進(jìn)程空間的其他所有代碼都要被停止運(yùn)行直至數(shù)據(jù)庫(kù)檢測(cè)完畢。

       而activex exes偉大之處,就在于它有自己的進(jìn)程空間。所以在其中添加的計(jì)時(shí)器也只會(huì)工作在自己的進(jìn)程空間中而不會(huì)影響其他使用它的程序。也就是說(shuō),對(duì)于前面的工程來(lái)說(shuō),若使用activex exe來(lái)檢測(cè)數(shù)據(jù)庫(kù),則不會(huì)停止其他使用它的程序的運(yùn)行;即使需要從其他程序中返回一個(gè)消息,也可以通過(guò)其他事件而獲得。

       需要說(shuō)明的是,運(yùn)行代碼遠(yuǎn)離正規(guī)程序而通過(guò)事件與使用的應(yīng)用程序會(huì)話(huà)的方法稱(chēng)為\"異步處理\"。通常當(dāng)需要對(duì)e-mail或數(shù)據(jù)庫(kù)作定期檢查時(shí),或當(dāng)運(yùn)行一個(gè)長(zhǎng)的報(bào)表以及計(jì)算大的統(tǒng)計(jì)數(shù)據(jù)時(shí),我們就需使用這種異步處理方式。

       不怕你驚訝的話(huà),我們可以將前面論述的內(nèi)容總結(jié)成這樣的一句話(huà):

       \"activex dlls是在進(jìn)程內(nèi)運(yùn)行,而activex exes是在進(jìn)程外運(yùn)行\(zhòng)"。

       好了,下一節(jié)將創(chuàng)建并測(cè)試一個(gè)自己的activex exe工程,并使用大家還不太熟悉的\"異步處理\"技巧。然后,提出一個(gè)稱(chēng)為\"實(shí)例\"的有意義的概念,最后指明怎樣獲得更多的com知識(shí)使自己達(dá)到一個(gè)新的水平。
    posted on 2008-12-09 13:23 大鳥(niǎo) 閱讀(275) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): VBA
    主站蜘蛛池模板: 亚洲综合小说久久另类区| 日韩视频免费一区二区三区| 国产AV无码专区亚洲AWWW| 亚洲国产区男人本色| 久久精品免费一区二区喷潮| 亚洲区视频在线观看| 91免费精品国自产拍在线不卡| 亚洲一区免费观看| 亚洲毛片免费视频| 亚洲一区在线视频观看| 久久电影网午夜鲁丝片免费| 亚洲熟女精品中文字幕| 日本免费一区二区三区最新 | 无码国产精品一区二区免费式直播 | 国产在线播放线91免费| 亚洲宅男天堂在线观看无病毒| 三级黄色片免费看| 亚洲一区影音先锋色资源| 一个人免费高清在线观看| 国产AV无码专区亚洲AV麻豆丫 | 亚洲毛片基地日韩毛片基地| 成人片黄网站A毛片免费| 日韩精品亚洲专区在线影视| 亚洲精品无码久久久| 日韩精品无码免费专区午夜 | 亚洲视频一区在线播放| 毛色毛片免费观看| 九一在线完整视频免费观看| 亚洲大尺度无码专区尤物| 色影音免费色资源| 黄色毛片免费在线观看| 久久亚洲一区二区| 免费无码A片一区二三区| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 亚洲沟沟美女亚洲沟沟| 国产精品va无码免费麻豆| 国产精品免费久久| jlzzjlzz亚洲jzjzjz| 亚洲日本中文字幕一区二区三区| 十九岁在线观看免费完整版电影| 亚洲免费网站观看视频|