Using load library from Dll : DLL « Windows « C# / CSharp Tutorial






using System;
using System.Threading;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Text;


    class Program
    {
        [DllImport("kernel32.dll")]
        static extern IntPtr LoadLibrary(string dllName);

        [DllImport("kernel32.dll")]
        static extern IntPtr GetProcAddress(IntPtr hModule, string procName);

        delegate int MessageBoxDelegate(IntPtr hwnd,
            [MarshalAs(UnmanagedType.LPWStr)]string text,
            [MarshalAs(UnmanagedType.LPWStr)]string caption,
            int type);

        static void Main(string[] args)
        {
            IntPtr userApi = LoadLibrary("user32.dll");
            IntPtr msgBoxAddress = GetProcAddress(userApi, "MessageBoxW"); // unicode (wide) message box
            MessageBoxDelegate mbd = (MessageBoxDelegate)Marshal.GetDelegateForFunctionPointer(msgBoxAddress,typeof(MessageBoxDelegate));
            mbd(IntPtr.Zero, "A", "B", 0);

            DoSomething(mbd);
        }

        static void DoSomething(MessageBoxDelegate mbd)
        {
            mbd(IntPtr.Zero, "Work completed.", "Work Progress", 0);
        }
    }








29.11.DLL
29.11.1.Compile to dll
29.11.2.Fiber
29.11.3.Invoke MessageBox in Dll
29.11.4.Using load library from Dll
29.11.5.Call DLL API to move file
29.11.6.Marshal a function from Dll to a delegate