■ SetProcessDPIAware API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; using System.Windows.Forms; #region 프로세스 DPI 인식 설정하기 - SetProcessDPIAware() /// <summary> /// 프로세스 DPI 인식 설정하기 /// </summary> /// <returns>처리 결과</returns> [DllImport("user32")] private static extern bool SetProcessDPIAware(); #endregion |
■ mouse_event 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 마우스 이벤트 발생시키기 - mouse_event(flag, deltaX, deltaY, data, extraInformation) /// <summary> /// 마우스 이벤트 발생시키기 /// </summary> /// <param name="flag">플래그</param> /// <param name="deltaX">델타 X</param> /// <param name="deltaY">델타 Y</param> /// <param name="data">데이터</param> /// <param name="extraInformation">부가 정보</param> [DllImport("user32")] private static extern void mouse_event(int flag, int deltaX, int deltaY, int data, UIntPtr extraInformation); #endregion |
■ ImmGetDefaultIMEWnd API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region 디폴트 IME 윈도우 구하기 - ImmGetDefaultIMEWnd(windowHandle) /// <summary> /// 디폴트 IME 윈도우 구하기 /// </summary> /// <param name="windowHandle">윈도우</param> /// <returns>디폴트 IME 윈도우 핸들</returns> [DllImport("imm32")] private static extern IntPtr ImmGetDefaultIMEWnd(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", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr windowHandle, uint message, IntPtr wordParameter, IntPtr longParameter); #endregion |
■ SendMessage API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
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")] private static extern int SendMessage(int windowHandle, short message, int wordParameter, int longParameter); #endregion |
■ GetActiveWindow API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region 활성 윈도우 구하기 - GetActiveWindow() /// <summary> /// 활성 윈도우 구하기 /// </summary> /// <returns>활성 윈도우 핸들</returns> [DllImport("user32")] private static extern IntPtr GetActiveWindow(); #endregion |
■ SetForegroundWindow 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 활성 윈도우 설정하기 - SetForegroundWindow(windowHandle) /// <summary> /// 활성 윈도우 설정하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <returns>처리 결과</returns> [DllImport("user32")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetForegroundWindow(IntPtr windowHandle); #endregion |
■ FindWindowEx 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
|
using System; using System.Runtime.InteropServices; #region 윈도우 찾기 (확장) - FindWindowEx(parentWindowHandle, childAfterWindowHandle, className, windowText) /// <summary> /// 윈도우 찾기 (확장) /// </summary> /// <param name="parentWindowHandle">부모 윈도우 핸들</param> /// <param name="childAfterWindowHandle">찾기 이후 자식 윈도우 핸들</param> /// <param name="className">클래스명</param> /// <param name="windowText">윈도우 텍스트</param> /// <returns>윈도우 핸들</returns> [DllImport("user32")] private static extern IntPtr FindWindowEx ( IntPtr parentWindowHandle, IntPtr childAfterWindowHandle, string className, string windowText ); #endregion |
■ GetMessageExtraInfo API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region 메시지 부가 정보 구하기 - GetMessageExtraInfo() /// <summary> /// 메시지 부가 정보 구하기 /// </summary> /// <returns>메시지 부가 정보 핸들</returns> [DllImport("user32", CharSet = CharSet.Auto)] private static extern UIntPtr GetMessageExtraInfo(); #endregion |
■ FindWindow 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 윈도우 찾기 - FindWindow(className, windowText) /// <summary> /// 윈도우 찾기 /// </summary> /// <param name="className">클래스명</param> /// <param name="windowText">윈도우 텍스트</param> /// <returns>윈도우 핸들</returns> [DllImport("user32", SetLastError = true)] private static extern IntPtr FindWindow(string className, string windowText); #endregion |
■ SendInput API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
using System.Runtime.InteropServices; #region 입력 보내기 - SendInput(inputArrayLength, inputArray, size) /// <summary> /// 입력 보내기 /// </summary> /// <param name="inputArrayLength">입력 배열 길이</param> /// <param name="inputArray">입력 배열</param> /// <param name="size">크기</param> /// <returns>처리 결과</returns> [DllImport("user32", SetLastError = true)] private static extern uint SendInput ( uint inputArrayLength, [MarshalAs(UnmanagedType.LPArray), In] Input[] inputArray, int size ); #endregion |
■ WTSUnRegisterSessionNotification API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region WTS 세션 통지 등록 취소하기 - WTSUnRegisterSessionNotification(windowHandle) /// <summary> /// WTS 세션 통지 등록 취소하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <returns>처리 결과</returns> [DllImport("wtsapi32")] private static extern bool WTSUnRegisterSessionNotification(IntPtr windowHandle); #endregion |
■ WTSRegisterSessionNotification 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 WTS 세션 통지 등록하기 - WTSRegisterSessionNotification(windowHandle, flag) /// <summary> /// WTS 세션 통지 등록하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="flag">플래그</param> /// <returns>처리 결과</returns> [DllImport("wtsapi32")] private static extern bool WTSRegisterSessionNotification(IntPtr windowHandle, int flag); #endregion |
■ RegisterHotKey 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 핫키 등록하기 - RegisterHotKey(windowHandle, id, modifiers, virtualKey) /// <summary> /// 핫키 등록하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="id">ID</param> /// <param name="modifiers">수정자</param> /// <param name="virtualKey">가상 키</param> /// <returns>처리 결과</returns> [DllImport("user32")] private static extern bool RegisterHotKey(IntPtr windowHandle, int id, uint modifiers, uint virtualKey); #endregion |
■ UnregisterHotKey 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 핫키 등록 취소하기 - UnregisterHotKey(windowHandle, id) /// <summary> /// 핫키 등록 취소하기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="id">ID</param> /// <returns>처리 결과</returns> [DllImport("user32")] private static extern bool UnregisterHotKey(IntPtr windowHandle, int id); #endregion |
■ PlaySound 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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
using System; using System.Runtime.InteropServices; #region 사운드 재생하기 - PlaySound(soundName, moduleName, flag) /// <summary> /// 사운드 재생하기 /// </summary> /// <param name="soundName">사운드명</param> /// <param name="moduleName">모듈명</param> /// <param name="flag">플래그</param> /// <returns>처리 결과</returns> [DllImport("winmm", CharSet = CharSet.Auto)] private extern static int PlaySound(string soundName, IntPtr moduleName, int flag); #endregion #region 플래그 - Flag /// <summary> /// 플래그 /// </summary> private enum Flag { /// <summary> /// SND_SYNC /// </summary> /// <remarks>play synchronously (default)</remarks> SND_SYNC = 0x0000, /// <summary> /// SND_ASYNC /// </summary> /// <remarks>play asynchronously</remarks> SND_ASYNC = 0x0001, /// <summary> /// SND_NODEFAULT /// </summary> /// <remarks>silence (!default) if sound not found</remarks> SND_NODEFAULT = 0x0002, /// <summary> /// SND_MEMORY /// </summary> /// <remarks>soundName points to a memory file</remarks> SND_MEMORY = 0x0004, /// <summary> /// loop the sound until next PlaySound /// </summary> SND_LOOP = 0x0008, /// <summary> /// SND_NOSTOP /// </summary> /// <remarks>don't stop any currently playing sound</remarks> SND_NOSTOP = 0x0010, /// <summary> /// SND_NOWAIT /// </summary> /// <remarks>don't wait if the driver is busy</remarks> SND_NOWAIT = 0x00002000, /// <summary> /// SND_ALIAS /// </summary> /// <remarks>name is a registry alias</remarks> SND_ALIAS = 0x00010000, /// <summary> /// SND_ALIAS_ID /// </summary> /// <remarks>alias is a predefined ID</remarks> SND_ALIAS_ID = 0x00110000, /// <summary> /// SND_FILENAME /// </summary> /// <remarks>name is file name</remarks> SND_FILENAME = 0x00020000, /// <summary> /// SND_RESOURCE /// </summary> /// <remarks>name is resource name or atom</remarks> SND_RESOURCE = 0x00040004 } #endregion |
■ PlaySound API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System.Runtime.InteropServices; #region 사운드 재생하기 - PlaySound(filePath, moduleHandle, flag) /// <summary> /// 사운드 재생하기 /// </summary> /// <param name="filePath">파일 경로</param> /// <param name="moduleHandle">모듈 핸들</param> /// <param name="flag">플래그</param> /// <returns>처리 결과</returns> [DllImport("winmm")] private static extern int PlaySound(string filePath, int moduleHandle, int flag); #endregion |
■ keybd_event API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System.Runtime.InteropServices; #region 키보드 이벤트 발생시키기 - keybd_event(virtualKey, scanCode, flag, extraInformation) /// <summary> /// 키보드 이벤트 발생시키기 /// </summary> /// <param name="virtualKey">가상 키</param> /// <param name="scanCode">스캔 코드</param> /// <param name="flag">플래그</param> /// <param name="extraInformation">부가 정보</param> [DllImport("user32")] private static extern void keybd_event(byte virtualKey, byte scanCode, uint flag, int extraInformation); #endregion |
■ InternetGetConnectedState API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Runtime.InteropServices; #region 인터넷 연결 상태 구하기 - InternetGetConnectedState(description, reservedValue) /// <summary> /// 인터넷 연결 상태 구하기 /// </summary> /// <param name="description">설명/param> /// <param name="reservedValue">예약 값</param> /// <returns>인터넷 연결 상태</returns> [DllImport("wininet")] private extern static bool InternetGetConnectedState(out int description, int reservedValue); #endregion |
■ SwitchDesktop 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 데스크톱 전환하기 - SwitchDesktop(desktopHandle) /// <summary> /// 데스크톱 전환하기 /// </summary> /// <param name="desktopHandle">데스크톱 핸들</param> /// <returns>처리 결과</returns> [DllImport("user32", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SwitchDesktop(IntPtr desktopHandle); #endregion |
■ CloseDesktop API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System; using System.Runtime.InteropServices; #region 데스크톱 닫기 - CloseDesktop(desktopHandle) /// <summary> /// 데스크톱 닫기 /// </summary> /// <param name="desktopHandle">데스크톱 핸들</param> /// <returns>처리 결과</returns> [DllImport("user32", SetLastError = true)] private static extern IntPtr CloseDesktop(IntPtr desktopHandle); #endregion |
■ OpenDesktop 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 데스크톱 열기 - OpenDesktop(desktopName, flag, inherit, desiredAccess) /// <summary> /// 데스크톱 열기 /// </summary> /// <param name="desktopName">데스크톱명</param> /// <param name="flag">플래그</param> /// <param name="inherit">상속 여부</param> /// <param name="desiredAccess">희망 액세스</param> /// <returns>처리 결과</returns> [DllImport("user32", SetLastError = true)] private static extern IntPtr OpenDesktop(string desktopName, uint flag, bool inherit, uint desiredAccess); #endregion |
■ OpenInputDesktop 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 사용자 입력받는 데스크톱 열기 - OpenInputDesktop(flag, inherit, desiredAccess) /// <summary> /// 사용자 입력받는 데스크톱 열기 /// </summary> /// <param name="flag">플래그</param> /// <param name="inherit">상속 여부</param> /// <param name="desiredAccess">희망 액세스</param> /// <returns>데스크톱 핸들</returns> [DllImport("user32", SetLastError = true)] private static extern IntPtr OpenInputDesktop(uint flag, bool inherit, uint desiredAccess); #endregion |
■ SystemParametersInfo API 함수를 선언하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
using System.Runtime.InteropServices; #region 시스템 매개 변수 정보 처리하기 - SystemParametersInfo(action, parameter1, parameter2, flag) /// <summary> /// 시스템 매개 변수 정보 처리하기 /// </summary> /// <param name="action">액션</param> /// <param name="parameter1">매개 변수 1</param> /// <param name="parameter2">매개 변수 2</param> /// <param name="flag">플래그</param> /// <returns>처리 결과</returns> [DllImport("user32", CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SystemParametersInfo(uint action, uint parameter1, ref bool parameter2, int flag); #endregion |
■ SetWaitableTimer 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
|
#region 대기 가능한 타이머 설정하기 - SetWaitableTimer(timerHandle, dueTime, period, completionRoutineHandle, argumentHandleToCompletionRoutine, resume) /// <summary> /// 대기 가능한 타이머 설정하기 /// </summary> /// <param name="timerHandle">타이머 핸들</param> /// <param name="dueTime">타이머 신호 수신 시간 (단위 : 100 나노초)</param> /// <param name="period">타이머 기간 (단위 : 밀리초)</param> /// <param name="completionRoutineHandle">완료 루틴 핸들</param> /// <param name="argumentHandleToCompletionRoutine">완료 루틴용 인자 핸들</param> /// <param name="resume">복원 여부</param> /// <returns>처리 결과</returns> [DllImport("kernel32", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetWaitableTimer ( SafeWaitHandle timerHandle, [In] ref long dueTime, int period, IntPtr completionRoutineHandle, IntPtr argumentHandleToCompletionRoutine, bool resume ); #endregion |