易語(yǔ)言動(dòng)態(tài)鏈接庫(kù)制作詳解
一.關(guān)于易語(yǔ)言 DLL
從易語(yǔ)言 3.6 版開(kāi)始,已經(jīng)能夠支持對(duì)DLL動(dòng)態(tài)鏈接庫(kù)的開(kāi)發(fā), 編譯出的DLL是標(biāo)準(zhǔn)的DLL,和其他編程語(yǔ)言生成的標(biāo)準(zhǔn) DLL 的調(diào)用方法相同。易語(yǔ)言編寫(xiě)出的DLL,在非獨(dú)立編譯exe時(shí)只需要DLL文件隨應(yīng)用程序一起發(fā)行,而獨(dú)立編譯 exe 時(shí)無(wú)需將 DLL 文件隨應(yīng)用程序一起發(fā)行。
二.新建易語(yǔ)言DLL程序
新建一個(gè)易語(yǔ)言程序,然后選擇 “windows動(dòng)態(tài)鏈接庫(kù)”圖標(biāo),易語(yǔ)言就會(huì)自動(dòng)創(chuàng)建
出編寫(xiě)態(tài)連接庫(kù)的代碼區(qū)(程序集)
創(chuàng)建完畢就可以在代碼區(qū)里編寫(xiě)DLL程序。
三.如何生成動(dòng)態(tài)連接庫(kù) (DLL)
易語(yǔ)言中的 DLL 編寫(xiě)方法和易模塊的編寫(xiě)方法類似,都需要有對(duì)外的公開(kāi)接口。下面將通過(guò)編寫(xiě)一個(gè)“自創(chuàng)信息框”來(lái)看一下用易語(yǔ)言如何編寫(xiě)和調(diào)用DLL。
編寫(xiě)DLL時(shí)的公開(kāi)接口只能由以下方式生成,新建一個(gè)子程序,然后把“公開(kāi)”選中,在DLL中任何程序集中選中“公開(kāi)”的子程序都作為對(duì)外接口:
修改一下子程序名稱,叫“自創(chuàng)信息框”,然后創(chuàng)建2個(gè)參數(shù)“標(biāo)題”和“內(nèi)容”,都定義成整數(shù)型:
注意:目前DLL接口函數(shù)中的參數(shù)只能為以下9種之一:
字節(jié)型、短整數(shù)型、整數(shù)型、長(zhǎng)整數(shù)型、小數(shù)型、雙精度小數(shù)型、邏輯型、日期時(shí)間型、子程序指針型
定義好DLL參數(shù)后,我們可以創(chuàng)建新窗體作為信息框窗口,在新窗體上畫(huà)一個(gè)按鈕,一個(gè)標(biāo)簽,為了讓用戶按下確定按鈕后,窗口能關(guān)閉,可以雙擊確定按鈕,創(chuàng)建按鈕“被單擊”的觸發(fā)事件,寫(xiě)入代碼:
然后返回到剛才的程序集1代碼區(qū)開(kāi)始編寫(xiě)代碼。
由于2個(gè)參數(shù)都定義成了整數(shù)型,而調(diào)用的時(shí)候傳遞過(guò)來(lái)的標(biāo)題和內(nèi)容一定是文本型的,那么怎樣去取得里面內(nèi)容呢?別急,易語(yǔ)言3.6版中考慮到了這個(gè)問(wèn)題,所以新增加了3個(gè)命令:“指針到文本”、“指針到字節(jié)集”、“寫(xiě)到內(nèi)存”。
當(dāng)用戶傳遞的是文本型或者字節(jié)集型,易語(yǔ)言將自動(dòng)轉(zhuǎn)換成指針,我們可以使用“指針到文本”或“指針到字節(jié)集”把原來(lái)的文本返回出來(lái)。如下圖所示:
到此已經(jīng)完成“自創(chuàng)信息框DLL”所有工作,最后可以選擇菜單“程序”→“編譯”將其編譯為DLL。如下圖所示:
也可以使用快捷鍵“F7”編譯剛剛編寫(xiě)的DLL,我們將編譯以后的DLL名稱命名為“自創(chuàng)信息框”,如下圖所示:
通過(guò)以上,用易語(yǔ)言編寫(xiě)DLL的過(guò)程序基本完成。
四.如何使用DLL
用易語(yǔ)言編寫(xiě)的DLL可以在易語(yǔ)言自身調(diào)用,同樣,也可以在其他編程語(yǔ)言中調(diào)用,如(VB,VC,Delphi等)
在易語(yǔ)言中的調(diào)用方法如下圖所示:
注意:定義時(shí),2個(gè)參數(shù)都定義成文本型
最后請(qǐng)?jiān)诖绑w上畫(huà)一個(gè)按鈕,雙擊按鈕,寫(xiě)上代碼調(diào)用這個(gè)DLL,按下按鈕后,就會(huì)看到效果了!
注意事項(xiàng):
1:調(diào)用DLL時(shí)的Dll對(duì)應(yīng)命令名必須和接口名稱完全一樣。
2:接口函數(shù)的參數(shù)必須是基本數(shù)據(jù)類型,且不能為字節(jié)集型、文本型。
3:易語(yǔ)言3.6版中新增加3個(gè)命令“指針到文本”、“指針到字節(jié)集”、“寫(xiě)到內(nèi)存”,這3個(gè)命令最佳使用場(chǎng)合就是在易語(yǔ)言回調(diào)子程序和易語(yǔ)言DLL公開(kāi)子程序用作獲取外部數(shù)據(jù)。在Dll中使用文本參數(shù)的方法請(qǐng)參考“取漢字拼音.rar”程序
4:易語(yǔ)言編寫(xiě)的DLL如果要在其他編程語(yǔ)言中使用,必須附帶對(duì)應(yīng)的易語(yǔ)言支持庫(kù)
1. 如何在易語(yǔ)言中調(diào)用類型庫(kù)
Q: What's 類型庫(kù)?
A: 類型庫(kù)是一個(gè)描述信息的集合,這些描述信息涉及組件的類、接口及接口上的方法以及這些方法的參數(shù)類型。類型庫(kù)通過(guò) ITYPELIB 接口來(lái)訪問(wèn),用他可以輕松的解決如用戶界面等問(wèn)題,使程序開(kāi)發(fā)更加的簡(jiǎn)單。
現(xiàn)在在“易語(yǔ)言”中,也可以使用類型庫(kù)了,那么如何調(diào)用類型庫(kù)呢?
首先運(yùn)行“易語(yǔ)言”選擇“工具”→“封裝類型庫(kù)及OCX組件”菜單
會(huì)出現(xiàn)一個(gè)注冊(cè)O(shè)CX及類型庫(kù)的窗口
我們向下拖動(dòng)滾動(dòng)條,可以看到一個(gè)類型庫(kù)的分類,在這個(gè)分類之前的就是我們系統(tǒng)中的OCX組件,這個(gè)我們已經(jīng)非常熟悉了,這里就不作說(shuō)明了,在類型庫(kù)的分類之后,就是我們系統(tǒng)中有的類型庫(kù),我們可以選擇我們需要使用的注冊(cè)。
我們可以選擇我們需要的類型庫(kù)之后選擇“下一步”
之后我們會(huì)看到一個(gè)類似我們使用過(guò)的OCX注冊(cè)那樣的窗口,我們可以在這里對(duì)這個(gè)類型庫(kù)作一些漢化等操作
在完成了我們所需要的漢化工作之后,我們可以點(diǎn)擊“保存”按鈕來(lái)保存我們剛才的操作
點(diǎn)擊保存之后,會(huì)有提示信息提示你是否要把我們注冊(cè)好的類型庫(kù)保存到“易語(yǔ)言”目錄中去
我們選擇“是”之后,會(huì)提示我們安裝成功
這時(shí)我們?cè)龠\(yùn)行“易語(yǔ)言”,在支持庫(kù)中,就會(huì)看到我們剛才注冊(cè)的類型庫(kù)。
到這里我們已經(jīng)完成把類型庫(kù)注冊(cè)到“易語(yǔ)言”中的工作了,下面在讓我們來(lái)了解一下如何在易語(yǔ)言中使用這些類型庫(kù)
首先我們展開(kāi)數(shù)據(jù)類型
我們會(huì)看到他下面有很多類型,而這些類型下面又有很多命令,我們可以把它們看作是定義好了的自定義數(shù)據(jù),每一個(gè)類型就是自定義數(shù)據(jù)類型的一個(gè)類型名,下面的每一個(gè)命令都是一個(gè)成員。
那么我們?cè)趺词褂盟麄兡兀?/p>
首先創(chuàng)建一個(gè)變量,他的類型就是這些項(xiàng)目的名稱,我們可能在類型選擇中找不到這些,我們可以點(diǎn)擊這項(xiàng)來(lái)展開(kāi)所有的類型,就會(huì)發(fā)現(xiàn)我們需要的。
選擇我們需要的類型就可以了
具體的使用方法就和使用自定義數(shù)據(jù)類型一樣,直接使用我們選擇類型中的命令就可以了,如果還不能理解,想一下字體是怎么用的?定義“字體”為字體類型,使用“字體.加粗=真 ”方法是一樣。
我們?cè)倩剡^(guò)頭來(lái)看一下,把滾動(dòng)條向下拉,我們會(huì)看到一些事件
箭頭所示的就是office類型庫(kù)包括的事件,這些事件如何使用呢
我們會(huì)發(fā)現(xiàn)在控件箱中多出了一些控件,這些控件就是剛才我們注冊(cè)的類型庫(kù)的觸發(fā)事件,我們需要使用它的時(shí)候,就可其他組件一樣把它拖放到窗體上就可以了
這是我們會(huì)發(fā)現(xiàn)在屬性中多出一個(gè)控件,我們選擇該控件的觸發(fā)事件就可以了
他的使用和其他觸發(fā)事件是一樣的
到這里,我們已經(jīng)了解了在“易語(yǔ)言”中是如何使用類型庫(kù)了,是不是很簡(jiǎn)單?其實(shí)類型庫(kù)的使用就和其他的命令沒(méi)有什么區(qū)別,不要感覺(jué)它多么深?yuàn)W,只要我們有健全的資料就可以很好的使用它們?yōu)槲覀儗?xiě)出很好的軟件。
2. 如何在易語(yǔ)言中使用類型庫(kù)
如何在易語(yǔ)言中使用類型庫(kù),我們下面用一個(gè)小例程來(lái)說(shuō)明,首先打開(kāi)“易語(yǔ)言”
選擇“工具”→“封裝類型庫(kù)及OCX組件”注冊(cè)word類型庫(kù)。
然后左邊支持庫(kù)表中會(huì)出現(xiàn)word的類型庫(kù)
然后我們?cè)诖绑w中畫(huà)上兩個(gè)按鈕以便我們使用,至于旁邊畫(huà)的那個(gè)com控件我們等一下
現(xiàn)在我們開(kāi)始寫(xiě)入代碼,如果按照com對(duì)象的方法來(lái)操作word,我們就要先創(chuàng)建一個(gè)word的對(duì)象,連接“Word.Application”,其實(shí)這也是調(diào)用“word”對(duì)象中的“Application”對(duì)象,但是現(xiàn)在不用這樣了,通過(guò)類型庫(kù)我們可以直接來(lái)操作“Application”首先我們創(chuàng)建一個(gè)程序集變量,類型為“Application” ,這樣我們就可以直接操作“Application”中的命令
在“_按鈕1_被單擊”事件中輸入
這兩行代碼的作用是首先將word的可視屬性設(shè)置為“真”,然后再將word的標(biāo)題改為“易語(yǔ)言word”,運(yùn)行一下看看效果,是不是改變了?
以前我們用com對(duì)象操作word可以通過(guò)word對(duì)象提供的“quit”命令來(lái)結(jié)束word,但是并沒(méi)有相應(yīng)的觸發(fā)事件,我們只能使用,不能在這些事件中處理其他事情,現(xiàn)在可以做到了,我們上面看到的窗體上畫(huà)的那個(gè)com控件就可以起到這個(gè)作用,我們?cè)谟疫吔M件箱中選擇這個(gè)控件畫(huà)到窗體上。
這個(gè)就是word對(duì)象中“Application”對(duì)象的所有觸發(fā)事件,我們?cè)谶x擇“Application事件1”下來(lái)它的事件組合框選擇“quit”事件
會(huì)在代碼區(qū)生成一個(gè)“_Application事件1_Quit”子程序,我們?cè)龠@個(gè)子程序下面輸入如下代碼
這只是“Application”對(duì)象的一個(gè)觸發(fā)事件,我們?cè)趺床拍苡|發(fā)他呢?在“_按鈕2_被單擊”子程序中輸入如下代碼
現(xiàn)在我們運(yùn)行代碼,先單擊按鈕1創(chuàng)建,再單擊按鈕2關(guān)閉 word,你會(huì)發(fā)現(xiàn)并沒(méi)有觸發(fā)“_Application事件1_Quit”事件,沒(méi)有彈出信息框,因?yàn)槲覀冸m然調(diào)用了“_Application事件1_Quit”事件,但是并沒(méi)有將“_Application事件1_Quit”事件和“Application”掛鉤,我們必須在“__啟動(dòng)窗口_創(chuàng)建完畢”將這個(gè)事件和“Application”掛鉤,不然是無(wú)法觸發(fā)這個(gè)事件的。
這樣我們運(yùn)行 Word,單擊按鈕 2 結(jié)束,就會(huì)出現(xiàn)信息框了.
相關(guān)文章
易語(yǔ)言子程序數(shù)據(jù)報(bào)下用符號(hào)表示文本型的具體步驟
在本篇文章里小編給大家整理的是一篇關(guān)于易語(yǔ)言子程序數(shù)據(jù)報(bào)下用符號(hào)表示文本型的具體步驟,有需要的朋友們可以學(xué)習(xí)下。2020-08-08易語(yǔ)言開(kāi)啟運(yùn)行的實(shí)操方法
在本篇內(nèi)容里小編給大家分享的是關(guān)于易語(yǔ)言開(kāi)啟運(yùn)行的實(shí)操方法,對(duì)此有需求的朋友們可以跟著學(xué)習(xí)下。2018-12-12易語(yǔ)言多個(gè)窗口操作實(shí)現(xiàn)
我們?cè)诒酒獌?nèi)容里給大家分享了關(guān)于易語(yǔ)言多個(gè)窗口操作實(shí)現(xiàn)的方法步驟,需要的參考下。2018-12-12易語(yǔ)言基礎(chǔ)教程之循環(huán)程序結(jié)構(gòu)
在我們解決實(shí)際問(wèn)題時(shí),經(jīng)常遇到對(duì)某一段程序進(jìn)行重復(fù)執(zhí)行的結(jié)構(gòu),這種被重復(fù)執(zhí)行的程序結(jié)構(gòu)叫循環(huán)程序結(jié)構(gòu),被重復(fù)執(zhí)行的程序段稱為循環(huán)體。當(dāng)然,重復(fù)一般是有條件的,即在滿足一定條件下才執(zhí)行循環(huán)體,或者滿足一定條件就不再循環(huán)。2016-05-05易語(yǔ)言設(shè)置按回車下移焦點(diǎn)功能的講解
今天小編就為大家分享一篇關(guān)于易語(yǔ)言設(shè)置按回車下移焦點(diǎn)功能的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-11-11