一.關于易語言 DLL
從易語言 3.6 版開始,已經(jīng)能夠支持對DLL動態(tài)鏈接庫的開發(fā), 編譯出的DLL是標準的DLL,和其他編程語言生成的標準 DLL 的調(diào)用方法相同。易語言編寫出的DLL,在非獨立編譯exe時只需要DLL文件隨應用程序一起發(fā)行,而獨立編譯 exe 時無需將 DLL 文件隨應用程序一起發(fā)行。
二.新建易語言DLL程序
新建一個易語言程序,然后選擇 “windows動態(tài)鏈接庫”圖標,易語言就會自動創(chuàng)建
出編寫態(tài)連接庫的代碼區(qū)(程序集)
創(chuàng)建完畢就可以在代碼區(qū)里編寫DLL程序。
三.如何生成動態(tài)連接庫 (DLL)
易語言中的 DLL 編寫方法和易模塊的編寫方法類似,都需要有對外的公開接口。下面將通過編寫一個“自創(chuàng)信息框”來看一下用易語言如何編寫和調(diào)用DLL。
編寫DLL時的公開接口只能由以下方式生成,新建一個子程序,然后把“公開”選中,在DLL中任何程序集中選中“公開”的子程序都作為對外接口:
修改一下子程序名稱,叫“自創(chuàng)信息框”,然后創(chuàng)建2個參數(shù)“標題”和“內(nèi)容”,都定義成整數(shù)型:
注意:目前DLL接口函數(shù)中的參數(shù)只能為以下9種之一:
字節(jié)型、短整數(shù)型、整數(shù)型、長整數(shù)型、小數(shù)型、雙精度小數(shù)型、邏輯型、日期時間型、子程序指針型
定義好DLL參數(shù)后,我們可以創(chuàng)建新窗體作為信息框窗口,在新窗體上畫一個按鈕,一個標簽,為了讓用戶按下確定按鈕后,窗口能關閉,可以雙擊確定按鈕,創(chuàng)建按鈕“被單擊”的觸發(fā)事件,寫入代碼:
然后返回到剛才的程序集1代碼區(qū)開始編寫代碼。
由于2個參數(shù)都定義成了整數(shù)型,而調(diào)用的時候傳遞過來的標題和內(nèi)容一定是文本型的,那么怎樣去取得里面內(nèi)容呢?別急,易語言3.6版中考慮到了這個問題,所以新增加了3個命令:“指針到文本”、“指針到字節(jié)集”、“寫到內(nèi)存”。
當用戶傳遞的是文本型或者字節(jié)集型,易語言將自動轉(zhuǎn)換成指針,我們可以使用“指針到文本”或“指針到字節(jié)集”把原來的文本返回出來。如下圖所示:
到此已經(jīng)完成“自創(chuàng)信息框DLL”所有工作,最后可以選擇菜單“程序”→“編譯”將其編譯為DLL。如下圖所示:
也可以使用快捷鍵“F7”編譯剛剛編寫的DLL,我們將編譯以后的DLL名稱命名為“自創(chuàng)信息框”,如下圖所示:
通過以上,用易語言編寫DLL的過程序基本完成。
四.如何使用DLL
用易語言編寫的DLL可以在易語言自身調(diào)用,同樣,也可以在其他編程語言中調(diào)用,如(VB,VC,Delphi等)
在易語言中的調(diào)用方法如下圖所示:
注意:定義時,2個參數(shù)都定義成文本型
最后請在窗體上畫一個按鈕,雙擊按鈕,寫上代碼調(diào)用這個DLL,按下按鈕后,就會看到效果了!
注意事項:
1:調(diào)用DLL時的Dll對應命令名必須和接口名稱完全一樣。
2:接口函數(shù)的參數(shù)必須是基本數(shù)據(jù)類型,且不能為字節(jié)集型、文本型。
3:易語言3.6版中新增加3個命令“指針到文本”、“指針到字節(jié)集”、“寫到內(nèi)存”,這3個命令最佳使用場合就是在易語言回調(diào)子程序和易語言DLL公開子程序用作獲取外部數(shù)據(jù)。在Dll中使用文本參數(shù)的方法請參考“取漢字拼音.rar”程序
4:易語言編寫的DLL如果要在其他編程語言中使用,必須附帶對應的易語言支持庫
1. 如何在易語言中調(diào)用類型庫
Q: What's 類型庫?
A: 類型庫是一個描述信息的集合,這些描述信息涉及組件的類、接口及接口上的方法以及這些方法的參數(shù)類型。類型庫通過 ITYPELIB 接口來訪問,用他可以輕松的解決如用戶界面等問題,使程序開發(fā)更加的簡單。
現(xiàn)在在“易語言”中,也可以使用類型庫了,那么如何調(diào)用類型庫呢?
首先運行“易語言”選擇“工具”→“封裝類型庫及OCX組件”菜單
會出現(xiàn)一個注冊OCX及類型庫的窗口
我們向下拖動滾動條,可以看到一個類型庫的分類,在這個分類之前的就是我們系統(tǒng)中的OCX組件,這個我們已經(jīng)非常熟悉了,這里就不作說明了,在類型庫的分類之后,就是我們系統(tǒng)中有的類型庫,我們可以選擇我們需要使用的注冊。
我們可以選擇我們需要的類型庫之后選擇“下一步”
之后我們會看到一個類似我們使用過的OCX注冊那樣的窗口,我們可以在這里對這個類型庫作一些漢化等操作
在完成了我們所需要的漢化工作之后,我們可以點擊“保存”按鈕來保存我們剛才的操作
點擊保存之后,會有提示信息提示你是否要把我們注冊好的類型庫保存到“易語言”目錄中去
我們選擇“是”之后,會提示我們安裝成功
這時我們再運行“易語言”,在支持庫中,就會看到我們剛才注冊的類型庫。
到這里我們已經(jīng)完成把類型庫注冊到“易語言”中的工作了,下面在讓我們來了解一下如何在易語言中使用這些類型庫
首先我們展開數(shù)據(jù)類型
我們會看到他下面有很多類型,而這些類型下面又有很多命令,我們可以把它們看作是定義好了的自定義數(shù)據(jù),每一個類型就是自定義數(shù)據(jù)類型的一個類型名,下面的每一個命令都是一個成員。
那么我們怎么使用他們呢?
首先創(chuàng)建一個變量,他的類型就是這些項目的名稱,我們可能在類型選擇中找不到這些,我們可以點擊這項來展開所有的類型,就會發(fā)現(xiàn)我們需要的。
選擇我們需要的類型就可以了
具體的使用方法就和使用自定義數(shù)據(jù)類型一樣,直接使用我們選擇類型中的命令就可以了,如果還不能理解,想一下字體是怎么用的?定義“字體”為字體類型,使用“字體.加粗=真 ”方法是一樣。
我們再回過頭來看一下,把滾動條向下拉,我們會看到一些事件
箭頭所示的就是office類型庫包括的事件,這些事件如何使用呢
我們會發(fā)現(xiàn)在控件箱中多出了一些控件,這些控件就是剛才我們注冊的類型庫的觸發(fā)事件,我們需要使用它的時候,就可其他組件一樣把它拖放到窗體上就可以了
這是我們會發(fā)現(xiàn)在屬性中多出一個控件,我們選擇該控件的觸發(fā)事件就可以了
他的使用和其他觸發(fā)事件是一樣的
到這里,我們已經(jīng)了解了在“易語言”中是如何使用類型庫了,是不是很簡單?其實類型庫的使用就和其他的命令沒有什么區(qū)別,不要感覺它多么深奧,只要我們有健全的資料就可以很好的使用它們?yōu)槲覀儗懗龊芎玫能浖?/p>
2. 如何在易語言中使用類型庫
如何在易語言中使用類型庫,我們下面用一個小例程來說明,首先打開“易語言”
選擇“工具”→“封裝類型庫及OCX組件”注冊word類型庫。
然后左邊支持庫表中會出現(xiàn)word的類型庫
然后我們在窗體中畫上兩個按鈕以便我們使用,至于旁邊畫的那個com控件我們等一下
現(xiàn)在我們開始寫入代碼,如果按照com對象的方法來操作word,我們就要先創(chuàng)建一個word的對象,連接“Word.Application”,其實這也是調(diào)用“word”對象中的“Application”對象,但是現(xiàn)在不用這樣了,通過類型庫我們可以直接來操作“Application”首先我們創(chuàng)建一個程序集變量,類型為“Application” ,這樣我們就可以直接操作“Application”中的命令
在“_按鈕1_被單擊”事件中輸入
這兩行代碼的作用是首先將word的可視屬性設置為“真”,然后再將word的標題改為“易語言word”,運行一下看看效果,是不是改變了?
以前我們用com對象操作word可以通過word對象提供的“quit”命令來結束word,但是并沒有相應的觸發(fā)事件,我們只能使用,不能在這些事件中處理其他事情,現(xiàn)在可以做到了,我們上面看到的窗體上畫的那個com控件就可以起到這個作用,我們在右邊組件箱中選擇這個控件畫到窗體上。
這個就是word對象中“Application”對象的所有觸發(fā)事件,我們在選擇“Application事件1”下來它的事件組合框選擇“quit”事件
會在代碼區(qū)生成一個“_Application事件1_Quit”子程序,我們再這個子程序下面輸入如下代碼
這只是“Application”對象的一個觸發(fā)事件,我們怎么才能觸發(fā)他呢?在“_按鈕2_被單擊”子程序中輸入如下代碼
現(xiàn)在我們運行代碼,先單擊按鈕1創(chuàng)建,再單擊按鈕2關閉 word,你會發(fā)現(xiàn)并沒有觸發(fā)“_Application事件1_Quit”事件,沒有彈出信息框,因為我們雖然調(diào)用了“_Application事件1_Quit”事件,但是并沒有將“_Application事件1_Quit”事件和“Application”掛鉤,我們必須在“__啟動窗口_創(chuàng)建完畢”將這個事件和“Application”掛鉤,不然是無法觸發(fā)這個事件的。
這樣我們運行 Word,單擊按鈕 2 結束,就會出現(xiàn)信息框了.
原文鏈接:https://blog.csdn.net/studyplus/article/details/21795125