易語言動態鏈結庫製作詳解

2022-09-21 09:24:09 字數 4020 閱讀 1759

一.關於易語言 dll

從易語言 3.6 版開始,已經能夠支援對dll動態鏈結庫的開發, 編譯出的dll是標準的dll,和其他程式語言生成的標準 dll 的呼叫方法相同。易語言編寫出的dll,在非獨立編譯exe時只需要dll檔案隨應用程式一起發行,而獨立編譯 exe 時無需將 dll 檔案隨應用程式一起發行。

二.新建易語言dll程式

新建乙個易語言程式,然後選擇 「windows動態鏈結庫」圖示,易語言就會自動建立

出編寫態連線庫的**區(程式集)

建立完畢就可以在**區里編寫dll程式。

三.如何生成動態連線庫 (dll)

易語言中的 dll 編寫方法和易模組的編寫方法類似,都需要有對外的公開介面。下面將通過編寫乙個「自創資訊框」來看一下用易語言如何編寫和呼叫dll。

編寫dll時的公開介面只能由以下方式生成,新建乙個子程式,然後把「公開」選中,在dll中任何程式集中選中「公開」的子程式都作為對外介面:

修改一下子程式名稱,叫「自創資訊框」,然後建立2個引數「標題」和「內容」,都定義成整數型:

注意:目前dll介面函式中的引數只能為以下9種之一:

位元組型、短整數型、整數型、長整數型、小數型、雙精度小數型、邏輯型、日期時間型、子程式指標型

定義好dll引數後,我們可以建立新窗體作為資訊框視窗,在新窗體上畫乙個按鈕,乙個標籤,為了讓使用者按下確定按鈕後,視窗能關閉,可以雙擊確定按鈕,建立按鈕「被單擊」的觸發事件,寫入**:

然後返回到剛才的程式集1**區開始編寫**。

由於2個引數都定義成了整數型,而呼叫的時候傳遞過來的標題和內容一定是文字型的,那麼怎樣去取得裡面內容呢?別急,易語言3.6版中考慮到了這個問題,所以新增加了3個命令:「指標到文字」、「指標到位元組集」、「寫到記憶體」。

當使用者傳遞的是文字型或者位元組集型,易語言將自動轉換成指標,我們可以使用「指標到文字」或「指標到位元組集」把原來的文字返回出來。如下圖所示:

到此已經完成「自創資訊框dll」所有工作,最後可以選擇選單「程式」→「編譯」將其編譯為dll。如下圖所示:

也可以使用快捷鍵「f7」編譯剛剛編寫的dll,我們將編譯以後的dll名稱命名為「自創資訊框」,如下圖所示:

通過以上,用易語言編寫dll的過程式基本完成。

四.如何使用dll

用易語言編寫的dll可以在易語言自身呼叫,同樣,也可以在其他程式語言中呼叫,如(vb,vc,delphi等)

在易語言中的呼叫方法如下圖所示:

注意:定義時,2個引數都定義成文字型

最後請在窗體上畫乙個按鈕,雙擊按鈕,寫上**呼叫這個dll,按下按鈕後,就會看到效果了!

注意事項:

1:呼叫dll時的dll對應命令名必須和介面名稱完全一樣。

2:介面函式的引數必須是基本資料型別,且不能為位元組集型、文字型。

3:易語言3.6版中新增加3個命令「指標到文字」、「指標到位元組集」、「寫到記憶體」,這3個命令最佳使用場合就是在易語言**子程式和易語言dll公開子程式用作獲取外部資料。在dll中使用文字引數的方法請參考「取漢字拼音.rar」程式

4:易語言編寫的dll如果要在其他程式語言中使用,必須附帶對應的易語言支援庫

1. 如何在易語言中呼叫型別庫

q: what's 型別庫?

a: 型別庫是乙個描述資訊的集合,這些描述資訊涉及元件的類、介面及介面上的方法以及這些方法的引數型別。型別庫通過 itypelib 介面來訪問,用他可以輕鬆的解決如使用者介面等問題,使程式開發更加的簡單。

現在在「易語言」中,也可以使用型別庫了,那麼如何呼叫型別庫呢?

首先執行「易語言」選擇「工具」→「封裝型別庫及ocx元件」選單

會出現乙個註冊ocx及型別庫的視窗

我們向下拖動滾動條,可以看到乙個型別庫的分類,在這個分類之前的就是我們系統中的ocx元件,這個我們已經非常熟悉了,這裡就不作說明了,在型別庫的分類之後,就是我們系統中有的型別庫,我們可以選擇我們需要使用的註冊。

我們可以選擇我們需要的型別庫之後選擇「下一步」

之後我們會看到乙個類似我們使用過的ocx註冊那樣的視窗,我們可以在這裡對這個型別庫作一些漢化等操作

在完成了我們所需要的漢化工作之後,我們可以點選「儲存」按鈕來儲存我們剛才的操作

點選儲存之後,會有提示資訊提示你是否要把我們註冊好的型別庫儲存到「易語言」目錄中去

我們選擇「是」之後,會提示我們安裝成功

這時我們再執行「易語言」,在支援庫中,就會看到我們剛才註冊的型別庫。

到這裡我們已經完成把型別庫註冊到「易語言」中的工作了,下面在讓我們來了解一下如何在易語言中使用這些型別庫

首先我們展開資料型別

我們會看到他下面有很多態別,而這些型別下面又有很多命令,我們可以把它們看作是定義好了的自定義資料,每乙個型別就是自定義資料型別的乙個型別名,下面的每乙個命令都是乙個成員。

那麼我們怎麼使用他們呢?

首先建立乙個變數,他的型別就是這些專案的名稱,我們可能在型別選擇中找不到這些,我們可以點選這項來展開所有的型別,就會發現我們需要的。

選擇我們需要的型別就可以了

具體的使用方法就和使用自定義資料型別一樣,直接使用我們選擇型別中的命令就可以了,如果還不能理解,想一下字型是怎麼用的?定義「字程式設計客棧體」為字型型別,使用「字型.加粗=真 」方法是一樣。

我們再回過頭來看一下,把滾動條向下拉,我們會看到一些事件

箭頭所示的就是office型別庫包括的事件,這些事件如何使用呢

我們會發現在控制項箱中多出了一些控制項,這些控程式設計客棧件就是剛才我們註冊的型別庫的觸發事件,我們需要使用它的時候,就可其他元件一樣把它拖放到窗體上就可以了

這是我們會發現在屬性中多出乙個控制項,我們選擇該控制項的觸發事件就可以了

他的使用和其他觸發事件是一樣的

到這裡,我們已經了解了在「易語言」中是如何使用型別庫了,是不是很簡單?其實型別庫的使用就和其他的命令沒有什麼區別,不要感覺它多麼深奧,只要我們有健全的資料就可以很好的使用它們為我們寫出很好的軟體。

2. 如何在易語言中使用型別庫

如何在易語言中使用型別庫,我們下面用乙個小例程來說明,首先開啟「易語言」

選擇「工具」→「封裝型別庫及ocx元件」註冊word型別庫。

然後左邊支援庫表中會出現word的型別庫

然後我們在窗體中畫上兩個按鈕以便我們使用,至於旁邊畫的那個com控制項我們等一下

現在我們開始寫入**,如果按照com物件的方法來操作word,我們就要先建立乙個word的物件,連線「word.application」,其實這也是呼叫「word」物件中的「application」物件,但是現在不用這樣了,通過型別庫我們可以直接來操作「application」首先我們建立乙個程式集變數,型別為「application」 ,這樣我們就可以直接操作「application」中的命令

在「_按鈕1_被單擊」事件中輸入

這兩行**的作用是首先將word的可視屬性設定為「真」,然後再將word的標題改為「易語言word」,執行一下看看效果,是不是改變了?

以前我們用com物件操作word可以通過word物件提供的「quit」命令來結束word,但是並沒有相應的觸發事件,我們只能使用,不能在這些事件中處理其他事情,現在可以做到了,我們上面看到的窗體上畫的那個com控制項就可以起到這個作用,我們在右邊元件箱中選擇這個控制項畫到窗體上。

這個就是word物件中「application」物件的所有觸發事件,我們在選擇「application事件1」下來它的事件組合框選擇「quit」事件

會在**區生成乙個「_application事件1_quit」子程式,我們再這個子程式下面輸入如下**

這只是「application」物件的乙個觸發事件,我們怎麼才能觸發他呢?在「_按鈕2_被單擊」子程式中輸入如下**

現在我們執行**,先單擊按鈕1建立,再單擊按鈕2關閉 word,你會發現並沒www.cppcns.com有觸發「_application事件1_quit」事件,沒有彈出資訊框,因為我們雖然呼叫了「_application事件1_quit」事件,但是並沒有將「_application事件1_quit」事件和「application」掛鉤,我們必須在「__啟動視窗_建立完畢」將這個事件和「application」掛鉤,不然是無法觸發這個事件的。

這樣我們執行 word,單擊按鈕 2 結束,就mjoaga會出現資訊框了.

本文位址: /ruanjian/yiyuyan/246034.html

Python呼叫易語言動態鏈結庫實現驗證碼功能

今天成功把易語言呼叫驗證碼通殺的dll在python中成功呼叫了 特此共享出來,下面是識別截圖 識別方法1 當然在學習python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢?學習python中有不明白推薦加入 號 928946953 群裡有志同道合的小夥伴,互幫互助,群裡有不錯的 學習教程和...

Delphi 製作 dll 動態鏈結庫

delphi 製作 dll 動態鏈結庫,封裝常用的函式。1,建立 dll 檔案 建立工程 檔案 mydll.dpr library mydll uses sysutils,classes,graphics,controls,forms,dialogs,stdctrls procedure mymsg...

linux靜態鏈結庫與動態鏈結庫詳解

linux靜態鏈結庫與動態鏈結庫詳解 一順便說說了哦 通常情況下,對函式庫的鏈結是放在編譯時期 compile time 完成的.所有相關的物件檔案 object file 與牽涉到的函式庫 library 被鏈結合成乙個可執行檔案 executable file 程式在執行時,與函式庫再無瓜葛,因...