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
  • 相关阅读:
    HTML head 头标签
    p标签text-align:justify以及CSS文字两端对齐
    css雪碧图制作
    ps去掉图片上的文字
    Qt Quick之TableView的使用
    Qt Quick之Canvas
    Qt Quick中的信号与槽
    QT之在QML中使用C++类和对象
    rhel7+apache+c cgi+动态域名实现web访问
    (转载)JDOM/XPATH编程指南
  • 原文地址:https://www.cnblogs.com/nanfei/p/3865407.html
Copyright © 2011-2022 走看看