출처: http://blog.naver.com/process3?Redirect=Log&logNo=20030533885

요즈음 시간 나는대로 C#을 조금식 삽질하고 있습니다. 솔직히 웹2.0시대에 Visual C++로 삽질(개발)하는것은 생각만해도 ㅠ,.ㅜ

 오늘은 기존에 Visual C++ 만든 DLL을 C#에서 사용할 일이 많을것 같아서 자료를 인터넷에서 찾아 보았았습니다. 그 내용을 간단하게 정리해 보겠습니다.


using System;
using System.Runtime.InteropServices;

namespace CUnit
{
 /// <summary>Native methods</summary>
    public class NativeMethods
    {
        /// <summary>Windows Message</summary>
        [StructLayout(LayoutKind.Sequential)]
        public struct Message
        {
            public IntPtr hWnd;
            public uint msg;
            public IntPtr wParam;
            public IntPtr lParam;
            public uint time;
            public System.Drawing.Point p;
        }

        [System.Security.SuppressUnmanagedCodeSecurity]
        [DllImport("User32.dll", CharSet=CharSet.Auto)]
        public static extern bool PeekMessage( out Message msg, IntPtr hWnd, uint messageFilterMin, uint messageFilterMax, uint flags );
    }
}


코드는 위와 같은 형식을 따라 주면 됩니다.  다만 조심해야 하는 것이 파라미터의 typecasting이죠


예를 들어 C++에서 HWND -> IntPtr(C#) 로 바꾸어 주는것과 같은것입니다.


실제로 작동하는 것을 보고 싶다면 첨부된 파일을 실행해 보시면됩니다.


출처 : 최근의 삽질(경험)과 http://www.c-unit.com으로부터


AND