Voir l'exemple suivant tiré de la section Les délégués et les pointeurs de fonction non gérés de l'article Writing C# 2.0 Unsafe Code par Patrick Smacchia:
using System;
using System.Runtime.InteropServices;
class Program
{
internal delegate bool DelegBeep(uint iFreq, uint iDuration);
[DllImport("kernel32.dll")]
internal static extern IntPtr LoadLibrary(String dllname);
[DllImport("kernel32.dll")]
internal static extern IntPtr GetProcAddress(IntPtr hModule,String procName);
static void Main()
{
IntPtr kernel32 = LoadLibrary("Kernel32.dll");
IntPtr procBeep = GetProcAddress(kernel32, "Beep");
DelegBeep delegBeep = Marshal.GetDelegateForFunctionPointer(procBeep , typeof(DelegBeep)) as DelegBeep;
delegBeep(100,100);
}
}
Il y a aussi une autre méthode décrite par Junfeng Zhang, qui travaille également dans .NET 1.1:
Dynamic PInvoke
Merci pour la réponse rapide! Votre méthode décrite pour appeler la fonction non managée résidant dans ".dll". Est-ce que la même méthode est valable pour les méthodes d'appel résidant dans ".exe" et ".lib"? – milan