65.9K
CodeProject is changing. Read more.
Home

Use Lambda Expressions as Unmanaged Callbacks

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.40/5 (5 votes)

Nov 5, 2010

CPOL
viewsIcon

5931

// Even more simplifiedclass Program{ [DllImport("user32", ExactSpelling = true)] static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, IntPtr lParam); [UnmanagedFunctionPointer(CallingConvention.Winapi)] delegate bool WNDENUMPROC(IntPtr hwnd, IntPtr lParam); ...

// Even more simplified
class Program
{
    [DllImport("user32", ExactSpelling = true)]
    static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, IntPtr lParam);

    [UnmanagedFunctionPointer(CallingConvention.Winapi)]
    delegate bool WNDENUMPROC(IntPtr hwnd, IntPtr lParam);

    static void Main(string[] args)
    {
        List<IntPtr> windows = new List<IntPtr>();
        EnumWindows((hwnd, lParam) =>
        {
            windows.Add(hwnd);
            return true;
        }, IntPtr.Zero);
    }
}