1. 程式人生 > >記憶體載入DLL並呼叫函式--VB

記憶體載入DLL並呼叫函式--VB

從記憶體中載入並呼叫DLL的程式碼,很邪惡,VBGOOD的仙劍魔同學從C翻譯成VB的。

直接在記憶體中呼叫DLL中的函式

使用方法:

  Dim data()  As Byte
    Dim handle As Long
    Dim fun_stdcall As Long
    Open "SampleDLL.dll" For Binary As #1
    ReDim data(0 To LOF(1) - 1)
    Get #1, , data
    Close #1    '先將DLL讀取BYTE陣列中

    handle = MemoryLoadLibrary(VarPtr(data(0)))   '載入DLL    
    fun_cdecl = MemoryGetProcAddress(handle, "subNumbers")  '取得函式地址    
     Debug.Print CallFunc_cdecl(fun_cdecl, 1, 2)  '呼叫函式 
    Call MemoryFreeLibrary(handle)  '擦屁股。。。


    Erase data   '釋放陣列記憶體

VB程式碼下載: 

也附上C的原始碼吧:

相關推薦

記憶體載入DLL呼叫函式--VB

從記憶體中載入並呼叫DLL的程式碼,很邪惡,VBGOOD的仙劍魔同學從C翻譯成VB的。 直接在記憶體中呼叫DLL中的函式 使用方法:   Dim data()  As Byte     Dim handle As Long     Dim fun_stdcall A

vb.net動態載入dll執行dll中的某一個函式

注意:下面的Dll檔案必須是用託管程式碼寫的,否則請使用API的相應函式進行動態載入。 一、 比如我事先寫了一個類,如下: Public Class TestClass     Public Function Add(ByVal add1 As Integer, ByVal

VB封裝DLL呼叫

首先明確DLL函式是什麼 DLL:動態連結庫(Dynamic Link Library),一個DLL檔案裡面可以包含多個函式,其實就是實現共享函式的一種方式,一個應用程式可能需要多個DLL聯合起來才可以正常使用 一,新建ActiveX Dll 工程,然後在裡面的類模組裡面書

關於Qt動態載入dll時,函式指標取地址OK,使用時卻有問題

碰到如題所述的問題,很尷尬,有些庫函式可以正常使用,而有些一用就game over。還以為是庫有問題。 呼叫介面函式時,崩掉??? 根據網上同仁給出的解決方法,是在定義函式指標型別時新增一個_stdcall。但也存在一個缺陷,只能在Windows平臺上幫助解決問題。如下所示 typedef

VS2012生成C的dll呼叫以及Python呼叫C的DLL

目錄 VS2012生成DLL 使用Win32應用程式嚮導! 這樣就會生成一個模板,我們只要填充模板就可以了 新增一個mydll.cpp檔案,如下圖: 新增如下程式碼:

函式實現判斷素數呼叫函式輸出100以內所有素數

/** * 檔名稱:2012-4.cpp * 作 者: 胡穎 * 完成日期:2017 年 3月 13 日 * 輸入描述:輸入整數m * 問題描述:判斷整數m是否為素數,呼叫函式輸出100以內的所有素數 * 程式輸出:輸出m是否為素數及100以內的素數

學習使用C++封裝DLL呼叫

一、生成DLL VS2013——建立win32專案——DLL——完成 //maopao.cpp #include "stdafx.h" //關鍵在於加入這一句,意為將C語言下的程式匯出為DLL extern"C"_declspec(dllexport) void

使用LoadLibrary動態載入DLL使用其中的類

動態載入DLL並使用其中的函式,是大家經常用到的,那麼直接使用LoadLibrary載入DLL來使用其中的類物件又該怎麼做呢?本文給出方案&示例: DLL - 標頭檔案和匯出方法 cla

3分鐘完成在VS建立一個DLL呼叫

目錄 step 1 : 建立Win32工程(DLL工程) step 2 : 建立MFC工程(對話方塊測試工程,Demo) step 3 : 設定Win32工程屬性(DLL工程) step 4 : 設

vs2013 打包呼叫dll(opencv,多函式複雜情況下)

首先,先推薦兩個具有高質量的部落格,先把這兩個案例做成功了,我這邊的案例也差不多了。 博主認為使用函式進行打包的方法更加簡單。為避免前兩個博主的文章消

[原始碼和文件分享]根據PE檔案格式從匯入表中獲取載入DLL遍歷匯入函式名稱和地址

背景 瞭解 PE 檔案格式,對於做一些資料分析都是比較重要的基礎。在 PE 檔案格式中,理解匯入表以及匯出表的工作原理,又是重中之重。理解了 PE 格式的匯入表,就可以修改 PE 格式進行 DLL 注入,也可以修改匯入表實現 API HOOK 等。理解了 PE 格式的匯出表,可以不需要 WIN3

JS/JavaScript前臺非同步載入呼叫回撥函式

程式碼簡單直接貼程式碼 /** * 非同步載入依賴的javascript檔案 * src:script的路徑 * callback:當外部的javascript檔案被load的時候,執行的回撥 */ var loadAsyncScript = function (

c理解提高(3)程式的記憶體四區模型和函式呼叫模型

程式的記憶體四區模型 記憶體四區的建立流程 流程說明 1、作業系統把物理硬碟程式碼load到記憶體 2、作業系統把c程式碼分成四個區 3、作業系統找到main函式入口執行   各區元素分析 函式呼叫模型 基本原理

總結-型別轉換&函式載入&立即呼叫模式&作用域&Math物件&Date物件&String物件&Array物件&瀏覽器物件&定時器

型別轉換&函式預載入&立即呼叫模式&作用域&Math物件&Date物件&String物件&Array物件&瀏覽器物件&定時器 轉換成布林型 false -數值型的0 -數值型的0.0 -布林型的f

四個dll檔案引發的“血案”——呼叫DLL中的函式

喵哥專案的合作公司最近給喵哥出了個難題——專案中鐳射雷達的模組是公司一個工程師負責的,工程師比較務實,在網上一個VB.NET程式碼的基礎修改了一些細節,就交差了,的確可以用,但是最近工程師退出了這個專案,boss打算讓喵哥接手這個模組,喵哥很慌,但還是硬著頭皮上了。 面臨的

effective c++乾貨之條款05:瞭解C++預設編寫呼叫哪些函式

如果你寫了一個空類: class EmptyClass { }; 當你寫下以下程式碼時: EmptyClass a; //編譯器會自動為你建立一個建構函式,一個解構函式 EmptyClass b();//編譯器會自動為你建立一個拷貝建構函式 EmptyClass c =

linux:核心如何定位呼叫裝置驅動初始化函式

寫過linux驅動程式的人都知道需要將驅動的初始化函式通過module_init註冊,然後在通過menuconfig配置的時候選擇隨核心一起編譯(非模組),系統在啟動的時候就能夠自動呼叫驅動初始化函數了。真是一件神奇的事情! #include <linu

VB6動態執行vb.net程式碼c#程式碼,python,記憶體載入OCX控制元件Activex-COM物件

我在研究記憶體動態編譯執行.net原始碼。用.net開發一個dll,傳入vb.net程式碼或者c#原始碼就可以自動執行,建立視窗或者直接返回計算結果。 把這個dll給易語言vc6,vb6,freebasic,delphi等語言呼叫。讓一切程式語言都支援.net 簡單說,熟悉

[Swift通天遁地]一、超級工具-(5)使用UIWebView(網頁檢視)載入本地頁面呼叫JavaScript(指令碼)程式碼

本文將演示如何使用UIWebView(網頁檢視)讀取專案中的網頁檔案,以及執行JavaScript指令碼程式碼。 在專案資料夾【DemoApp】上點選滑鼠右鍵,彈出右鍵選單。 【New File】->【Blank】空白模板->【next】 ->【Save As】:Register.ht

定義一個包含私有成員變數和函式的類,再定義一個內部類,在內部類函式中訪問外部成員變數,呼叫外部函式。在外部類函式中建立內部類物件,呼叫內部類函式

public class Test5 {         //定義包含私有成員變數和函式         private int a = 201320883;         private voi