요즈음 시간 나는대로 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으로부터