[C#] DLLImport 방법
- DllImport
User32.DLL 파일을 Import 하여, 함수를 호출하는 방법입니다.
/*
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("User32.dll", EntryPoint = "PostMessage")]
public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
public extern static IntPtr GetWindowDC(IntPtr hWnd);
[DllImport("User32.dll")]
public extern static IntPtr GetDCEx(IntPtr hWnd);
[DllImport("User32.dll")]
public extern static int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("user32.dll")]
public static extern Int32 GetWindowLong(IntPtr hWnd, Int32 Offset);
[DllImport("user32.dll")]
public static extern Int32 SetWindowLong(IntPtr hWnd, Int32 Offset, Int32 newLong);
[DllImport("user32.dll")]
public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
[DllImport("user32.dll")]
public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
//EnableMenuItem Win32 API Declaration - Set the enabled values of the title bar (from GetSystemMenu) items
[DllImport("user32.dll")]
public static extern int EnableMenuItem(IntPtr hMenu, int wIDEnable, int wValue);
[DllImport("user32.dll")]
public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll")]
public static extern int SetWindowPos(IntPtr hWndChild, int hwndInsertAfter, int x, int y, int cx, int cy, int wFlag);
[DllImport("user32.dll")]
public static extern int Mouse_Event(int dwFlags, int dx, int dy, int cButtons, IntPtr dwExtreInfo);
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
public static extern bool IsWindow(IntPtr hWnd);
*/
외부 라이브러리 사용(DllImport)
#. 내용.
- 외부 라이브러리를 사용하기 위한 선언입니다. Dll 파일을 C# 프로젝트가 인식할 수 있도록 해야 하며 대게 해당 파일을 C:/Program Files/ 내지는 프로젝트 내의 bin/debug 또는 bin/release에 복사해 두면 됩니다.
#. 사용 방법.
using System.Runtime.InteropServices; //선언
//사용하고자 하는 dll 파일을 첫번째 인수에 넣음.
[DllImport("user32.dll")]
//public 및 static의 정적 메소드로 선언해야 하고, extern 한정자는 메소드가 C# 코드 외부에서 구현됨을 나타 냅니다.
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
.
.
.
//이런 식으로 사용하면 됩니다.
hHook = SetWindowsHookEx(WH_MOUSE, MouseHookProcedure, (IntPtr)0, AppDomain.GetCurrentThreadId());
#. 주의사항.
- 인자값과 리턴 값의 자료형을 정확하게 맞춰줘야 합니다. 그렇지 않을 경우 데이터를 주고 받다가 데이터가 소실되는 경우가 발생합니다.
[C#] DLLImport, User32.DLL 파일을 Import 하여, 함수를 호출하는 방법입니다.
2023. 10. 18. 10:52