zoukankan      html  css  js  c++  java
  • vb.net 动态调用api

    Imports System
    Imports System.Runtime.InteropServices
    
    Public Class DllInvoke
        Public Sub New(ByVal DLLPath As String)
            Me.hLib = DllInvoke.LoadLibrary(DLLPath)
        End Sub
    
        Protected Overrides Sub Finalize()
            Try
                DllInvoke.FreeLibrary(Me.hLib)
            Finally
                MyBase.Finalize()
            End Try
        End Sub
    
        <DllImport("kernel32.dll")> _
        Private Shared Function FreeLibrary(ByVal [lib] As IntPtr) As Boolean
        End Function
    
        <DllImport("kernel32.dll")> _
        Private Shared Function GetProcAddress(ByVal [lib] As IntPtr, ByVal funcName As String) As IntPtr
        End Function
    
        Public Function Invoke(ByVal APIName As String, ByVal t As Type) As [Delegate]
            Return Marshal.GetDelegateForFunctionPointer(DllInvoke.GetProcAddress(Me.hLib, APIName), t)
        End Function
    
        <DllImport("kernel32.dll")> _
        Private Shared Function LoadLibrary(ByVal path As String) As IntPtr
        End Function
    
        Private hLib As IntPtr
    End Class
    Imports System
    Imports System.Runtime.CompilerServices
    Imports System.Runtime.InteropServices
    Imports System.Text
    
    Public Class test
    
        Private Declare Function MessageBoxA Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Integer, ByVal lpText As StringBuilder, ByVal lpCaption As StringBuilder, ByVal wType As Integer) As Long
        Private Delegate Function MessageBoxADelegate(ByVal hwnd As Integer, ByVal lpText As StringBuilder, ByVal lpCaption As StringBuilder, ByVal wType As Integer) As Long
    
        Public Shared Sub Main()
            Dim invoke As New DllInvoke("user32.dll")
            Dim mode As MessageBoxADelegate = DirectCast(invoke.Invoke("MessageBoxA", GetType(MessageBoxADelegate)), MessageBoxADelegate)
            mode.Invoke(0, New StringBuilder("haha"), New StringBuilder("title"), 0)
            Console.WriteLine("ok")
            Console.ReadLine()
        End Sub
    End Class
  • 相关阅读:
    ABAP开发常见任务
    sap smartform 打印乱码问题
    根据T-Code查看用户出口的代码
    java 调用SAP RFC函数错误信息
    代码单行超过72个字符的一个异常
    SAP 权限层次
    标准屏幕字段描述修改
    [转]SAP一句话入门SD模块
    Python3.7,os模块
    Python3,逻辑运算符
  • 原文地址:https://www.cnblogs.com/nanfei/p/3865407.html
Copyright © 2011-2022 走看看