■ SetForegroundWindow API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
#region 활성 윈도우 설정하기 - SetForegroundWindow(windowHandle) /// <summary> /// 활성 윈도우 설정하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <returns>처리 결과</returns> [DllImport("user32")] private static extern bool SetForegroundWindow(IntPtr windowHandle); #endregion |
■ GetCurrentPackageFullName API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System.Runtime.InteropServices; using System.Text; #region 현재 패키지 전체 명칭 구하기 - GetCurrentPackageFullName(packageFullNameLength, packageFullNameStringBuilder) /// <summary> /// 현재 패키지 전체 명칭 구하기 /// </summary> /// <param name="packageFullNameLength">패키지 전체 명칭 길이</param> /// <param name="packageFullNameStringBuilder">패키지 전체 명칭 문자열 빌더</param> /// <returns>처리 결과</returns> [DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)] private static extern int GetCurrentPackageFullName(ref int packageFullNameLength, StringBuilder packageFullNameStringBuilder); #endregion |
■ GetCurrentThreadId API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Runtime.InteropServices; #region 현재 스레드 ID 구하기 - GetCurrentThreadId() /// <summary> /// 현재 스레드 ID 구하기 /// </summary> /// <returns>현재 스레드 ID</returns> [DllImport("kernel32")] private static extern uint GetCurrentThreadId(); #endregion |
■ GetCurrentConsoleFontEx API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
using System; using System.Runtime.InteropServices; #region 현재 콘솔 폰트 구하기 (확장) - GetCurrentConsoleFontEx(consoleOutputHandle, maximumWindow, fontInfo) /// <summary> /// 현재 콘솔 폰트 구하기 (확장) /// </summary> /// <param name="consoleOutputHandle">콘솔 출력 핸들</param> /// <param name="maximumWindow">최대 윈도우 여부</param> /// <param name="fontInfo">폰트 정보</param> /// <returns>처리 결과</returns> [return: MarshalAs(UnmanagedType.Bool)] [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)] private static extern bool GetCurrentConsoleFontEx(IntPtr consoleOutputHandle, bool maximumWindow, ref FontInfo fontInfo); #endregion /// <summary> /// 폰트 정보 /// </summary> [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct FontInfo { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Public #region Field /// <summary> /// 크기 /// </summary> public int Size; /// <summary> /// 폰트 인덱스 /// </summary> public int FontIndex; /// <summary> /// 폰트 너비 /// </summary> public short FontWidth; /// <summary> /// 폰트 크기 /// </summary> public short FontSize; /// <summary> /// 폰트 패밀리 /// </summary> public int FontFamily; /// <summary> /// 폰트 가중치 /// </summary> public int FontWeight; /// <summary> /// 폰트명 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string FontName; #endregion } |
■ SetCurrentConsoleFontEx API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
using System; using System.Runtime.InteropServices; #region 현재 콘솔 폰트 설정하기 (확장) - SetCurrentConsoleFontEx(consoleOutputHandle, maximumWindow, fontInfo) /// <summary> /// 현재 콘솔 폰트 설정하기 (확장) /// </summary> /// <param name="consoleOutputHandle">콘솔 출력 핸들</param> /// <param name="maximumWindow">최대 윈도우 여부</param> /// <param name="fontInfo">폰트 정보</param> /// <returns>처리 결과</returns> [return: MarshalAs(UnmanagedType.Bool)] [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)] private static extern bool SetCurrentConsoleFontEx(IntPtr consoleOutputHandle, bool maximumWindow, ref FontInfo fontInfo); #endregion /// <summary> /// 폰트 정보 /// </summary> [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct FontInfo { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Public #region Field /// <summary> /// 크기 /// </summary> public int Size; /// <summary> /// 폰트 인덱스 /// </summary> public int FontIndex; /// <summary> /// 폰트 너비 /// </summary> public short FontWidth; /// <summary> /// 폰트 크기 /// </summary> public short FontSize; /// <summary> /// 폰트 패밀리 /// </summary> public int FontFamily; /// <summary> /// 폰트 가중치 /// </summary> public int FontWeight; /// <summary> /// 폰트명 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string FontName; #endregion } |
■ ReleaseDC API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System; using System.Runtime.InteropServices; #region DC 해제하기 - ReleaseDC(windowHandle, deviceContextHandle) /// <summary> /// DC 해제하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="deviceContextHandle">디바이스 컨텍스트 핸들</param> /// <returns>처리 결과</returns> [DllImport("user32", ExactSpelling = true)] private static extern IntPtr ReleaseDC(IntPtr windowHandle, IntPtr deviceContextHandle); #endregion |
■ ReleaseDC API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region DC 구하기 - GetDC(windowHandle) /// <summary> /// DC 구하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <returns>디바이스 컨텍스트 핸들</returns> [DllImport("user32", ExactSpelling = true, SetLastError = true)] private static extern IntPtr GetDC(IntPtr windowHandle); #endregion |
■ SendMessage API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
using System; using System.Runtime.InteropServices; #region 메시지 보내기 - SendMessage(windowHandle, message, wordParameter, longParameter) /// <summary> /// 메시지 보내기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="message">메시지</param> /// <param name="wordParameter">WORD 매개 변수</param> /// <param name="longParameter">LONG 매개 변수</param> /// <returns>처리 결과</returns> [DllImport("user32", EntryPoint = "SendMessage", CharSet = CharSet.Unicode)] private static extern IntPtr SendMessage(IntPtr windowHandle, int message, IntPtr wordParameter, string longParameter); #endregion |
■ SendMessage API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
using System; using System.Runtime.InteropServices; #region 메시지 보내기 - SendMessage(windowHandle, message, wordParameter, longParameter) /// <summary> /// 메시지 보내기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="message">메시지</param> /// <param name="wordParameter">WORD 매개 변수</param> /// <param name="longParameter">LONG 매개 변수</param> /// <returns>처리 결과</returns> [DllImport("user32", EntryPoint = "SendMessage", CharSet = CharSet.Unicode)] private static extern int SendMessage(IntPtr windowHandle, int message, int wordParameter, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder longParameter); #endregion |
■ DestroyWindow API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region 윈도우 제거하기 - DestroyWindow(windowHandle) /// <summary> /// 윈도우 제거하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <returns>처리 결과</returns> [DllImport("user32", EntryPoint = "DestroyWindow", CharSet = CharSet.Unicode)] private static extern bool DestroyWindow(IntPtr windowHandle); #endregion |
■ SendMessage API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
using System; using System.Runtime.InteropServices; #region 메시지 보내기 - SendMessage(windowHandle, message, wordParameter, longParameter) /// <summary> /// 메시지 보내기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="message">메시지</param> /// <param name="wordParameter">WORD 매개 변수</param> /// <param name="longParameter">LONG 매개 변수</param> /// <returns>처리 결과</returns> [DllImport("user32", EntryPoint = "SendMessage", CharSet = CharSet.Unicode)] private static extern int SendMessage(IntPtr windowHandle, int message, IntPtr wordParameter, IntPtr longParameter); #endregion |
■ CreateWindowEx API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
using System; using System.Runtime.InteropServices; #region 윈도우 생성하기 (확장) - CreateWindowEx(extendedStyle, className, windowName, style, x, y, width, height, parentWindowHandle, menuHandle, instanceHandle, parameter) /// <summary> /// 윈도우 생성하기 (확장) /// </summary> /// <param name="extendedStyle">확장 스타일</param> /// <param name="className">클래스명</param> /// <param name="windowName">윈도우명</param> /// <param name="style">스타일</param> /// <param name="x">X</param> /// <param name="y">Y</param> /// <param name="width">너비</param> /// <param name="height">높이</param> /// <param name="parentWindowHandle">부모 윈도우 핸들</param> /// <param name="menuHandle">메뉴 핸들</param> /// <param name="instanceHandle">인스턴스 핸들</param> /// <param name="parameter">매개 변수</param> /// <returns>윈도우 핸들</returns> [DllImport("user32", EntryPoint = "CreateWindowEx", CharSet = CharSet.Unicode)] private static extern IntPtr CreateWindowEx ( int extendedStyle, string className, string windowName, int style, int x, int y, int width, int height, IntPtr parentWindowHandle, IntPtr menuHandle, IntPtr instanceHandle, [MarshalAs(UnmanagedType.AsAny)] object parameter ); #endregion |
■ GdipEmfToWmfBits API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
using System; using System.Runtime.InteropServices; #region GDI+ EMF→WMF 변환하기 - GdipEmfToWmfBits(emfHandle, bufferSize, bufferByteArray, mappingMode, flag) /// <summary> /// GDI+ EMF→WMF 변환하기 /// </summary> /// <param name="emfHandle">EMF 핸들</param> /// <param name="bufferSize">버퍼 크기</param> /// <param name="bufferByteArray">버퍼 바이트 배열</param> /// <param name="mappingMode">매핑 모드</param> /// <param name="flag">플래그</param> /// <returns>처리 결과</returns> [DllImport("gdiplus")] private static extern uint GdipEmfToWmfBits(IntPtr emfHandle, uint bufferSize, byte[] bufferByteArray, int mappingMode, EMFToWMFBitsFlag flag); #endregion /// <summary> /// EMF→WMF 비트 플래그 /// </summary> public enum EMFToWMFBitsFlag { /// <summary> /// Default /// </summary> Default = 0x00000000, /// <summary> /// Embed EMF /// </summary> EmbedEMF = 0x00000001, /// <summary> /// Include Placeable /// </summary> IncludePlaceable = 0x00000002, /// <summary> /// No XOR Clip /// </summary> NoXORClip = 0x00000004 }; |
■ AssignProcessToJobObject API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System; using System.Runtime.InteropServices; #region 작업 객체에 프로세스 할당하기 - AssignProcessToJobObject(jobHandle, processHandle) /// <summary> /// 작업 객체에 프로세스 할당하기 /// </summary> /// <param name="jobHandle">작업 핸들</param> /// <param name="processHandle">프로세스 핸들</param> /// <returns>처리 결과</returns> [DllImport("kernel32", SetLastError = true)] private static extern bool AssignProcessToJobObject(IntPtr jobHandle, IntPtr processHandle); #endregion |
■ SetInformationJobObject API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
using System; using System.Runtime.InteropServices; #region 작업 객체 정보 설정하기 - SetInformationJobObject(jobHandle, jobObjectInformationType, jobObjectInformationHandle, jobObjectInformationLength) /// <summary> /// 작업 객체 정보 설정하기 /// </summary> /// <param name="jobHandle">작업 핸들</param> /// <param name="jobObjectInformationType">작업 객체 정보 타입</param> /// <param name="jobObjectInformationHandle">작업 객체 정보 핸들</param> /// <param name="jobObjectInformationLength">작업 객체 정보 길이</param> /// <returns>처리 결과</returns> [DllImport("kernel32")] private static extern bool SetInformationJobObject ( IntPtr jobHandle, JobObjectInformationType jobObjectInformationType, IntPtr jobObjectInformationHandle, uint jobObjectInformationLength ); #endregion /// <summary> /// 작업 객체 정보 타입 /// </summary> public enum JobObjectInformationType { /// <summary> /// Associate Completion Port Information /// </summary> AssociateCompletionPortInformation = 7, /// <summary> /// Basic Limit Information /// </summary> BasicLimitInformation = 2, /// <summary> /// Basic UI Restrictions /// </summary> BasicUIRestrictions = 4, /// <summary> /// End Of Job Time Information /// </summary> EndOfJobTimeInformation = 6, /// <summary> /// Extended Limit Information /// </summary> ExtendedLimitInformation = 9, /// <summary> /// Security Limit Information /// </summary> SecurityLimitInformation = 5, /// <summary> /// Group Information /// </summary> GroupInformation = 11 } |
■ CreateJobObject API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System; using System.Runtime.InteropServices; #region 작업 객체 생성하기 - CreateJobObject(jobAttributesHandle, name) /// <summary> /// 작업 객체 생성하기 /// </summary> /// <param name="jobAttributesHandle">작업 특성 핸들</param> /// <param name="name">명칭</param> /// <returns>작업 핸들</returns> [DllImport("kernel32", CharSet = CharSet.Unicode)] private static extern IntPtr CreateJobObject(IntPtr jobAttributesHandle, string name); #endregion |
■ GetCursorPos API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
using System.Runtime.InteropServices; #region 커서 위치 구하기 - GetCursorPos(mousePoint) /// <summary> /// 커서 위치 구하기 /// </summary> /// <param name="mousePoint">마우스 포인트</param> /// <returns>처리 결과</returns> [DllImport("user32")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool GetCursorPos(out MousePoint mousePoint); #endregion /// <summary> /// 마우스 포인트 /// </summary> [StructLayout(LayoutKind.Sequential)] public struct MousePoint { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Public #region Field /// <summary> /// X /// </summary> public int X; /// <summary> /// Y /// </summary> public int Y; #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MousePoint(x, y) /// <summary> /// 생성자 /// </summary> /// <param name="x">X</param> /// <param name="y">Y</param> public MousePoint(int x, int y) { X = x; Y = y; } #endregion } |
■ SetCursorPos API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
#region 커서 위치 설정하기 - SetCursorPos(x, y) /// <summary> /// 커서 위치 설정하기 /// </summary> /// <param name="x">X</param> /// <param name="y">Y</param> /// <returns>처리 결과</returns> [DllImport("user32", EntryPoint = "SetCursorPos")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetCursorPos(int x, int y); #endregion |
■ IsWow64Process API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
using System; using System.Runtime.InteropServices; #region WOW 64비트 프로세스 여부 구하기 - IsWow64Process(processHandle, isWOW64Process) /// <summary> /// WOW 64비트 프로세스 여부 구하기 /// </summary> /// <param name="processHandle">프로세스 핸들</param> /// <param name="isWOW64Process">WOW 64비트 프로세스 여부</param> /// <returns>처리 결과</returns> [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool IsWow64Process(IntPtr processHandle, out bool isWOW64BitProcess); #endregion |
■ GetProcAddress API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System; using System.Runtime.InteropServices; #region 프로시저 주소 구하기 - GetProcAddress(moduleHandle, procedureName) /// <summary> /// 프로시저 주소 구하기 /// </summary> /// <param name="moduleHandle">모듈 핸들</param> /// <param name="procedureName">프로시저명</param> /// <returns>프로시저 핸들</returns> [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr GetProcAddress(IntPtr moduleHandle, [MarshalAs(UnmanagedType.LPStr)] string procedureName); #endregion |
■ GetCurrentProcess API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region 현재 프로세스 구하기 - GetCurrentProcess() /// <summary> /// 현재 프로세스 구하기 /// </summary> /// <returns>현재 프로세스 핸들</returns> [DllImport("kernel32")] private static extern IntPtr GetCurrentProcess(); #endregion |
■ GetProcAddress API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System; using System.Runtime.InteropServices; #region 프로시저 주소 구하기 - GetProcAddress(moduleHandle, procedureName) /// <summary> /// 프로시저 주소 구하기 /// </summary> /// <param name="moduleHandle">모듈 핸들</param> /// <param name="procedureName">프로시저명</param> /// <returns>프로시저 핸들</returns> [DllImport("kernel32", SetLastError = true, CallingConvention = CallingConvention.Winapi)] private extern static IntPtr GetProcAddress(IntPtr moduleHandle, string procedureName); #endregion |
■ LoadLibrary API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region 라이브러리 로드하기 - LoadLibrary(filePath) /// <summary> /// 라이브러리 로드하기 /// </summary> /// <param name="filePath">파일 경로</param> /// <returns>처리 결과</returns> [DllImport("kernel32", SetLastError = true, CallingConvention = CallingConvention.Winapi)] private extern static IntPtr LoadLibrary(string filePath); #endregion |
■ IsWow64Process API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
using System; using System.Runtime.InteropServices; #region WOW 64비트 프로세스 여부 구하기 - IsWow64Process(processHandle, isWOW64Process) /// <summary> /// WOW 64비트 프로세스 여부 구하기 /// </summary> /// <param name="processHandle">프로세스 핸들</param> /// <param name="isWOW64Process">WOW 64비트 프로세스 여부</param> /// <returns>처리 결과</returns> [DllImport("kernel32", SetLastError = true, CallingConvention = CallingConvention.Winapi)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool IsWow64Process([In] IntPtr processHandle, [Out] out bool isWOW64Process); #endregion |
■ FindMimeFromData API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
using System.Runtime.InteropServices; #region 데이터에서 MIME 찾기 - FindMimeFromData(bindContext, url, bufferByteArray, size, mimeProposed, mimeFlag, mime, reserverd) /// <summary> /// 데이터에서 MIME 찾기 /// </summary> /// <param name="bindContext">바인딩 컨텍스트</param> /// <param name="url">URL</param> /// <param name="bufferByteArray">버퍼 바이트 배열</param> /// <param name="size">크기</param> /// <param name="mimeProposed">제안 MIME</param> /// <param name="mimeFlag">MIME 플래그</param> /// <param name="mime">MIME</param> /// <param name="reserverd">예약</param> /// <returns>처리 결과</returns> [DllImport("urlmon", CharSet = CharSet.Auto)] private extern static uint FindMimeFromData ( uint bindContext, [MarshalAs(UnmanagedType.LPStr)] string url, [MarshalAs(UnmanagedType.LPArray)] byte[] bufferByteArray, uint size, [MarshalAs(UnmanagedType.LPStr)] string mimeProposed, uint mimeFlag, out uint mime, uint reserverd ); #endregion |