■ SendMessageTimeout 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 |
using System; using System.Runtime.InteropServices; #region 타임 아웃을 갖는 메시지 보내기 - SendMessageTimeout(windowHandle, message, wordParameter, longParameter, flag, timeout, resultHandle) /// <summary> /// 타임 아웃을 갖는 메시지 보내기 /// </summary> /// <param name="windowHandle">윈도우 핸들</param> /// <param name="message">메시지</param> /// <param name="wordParameter">WORD 매개 변수</param> /// <param name="longParameter">LONG 매개 변수</param> /// <param name="flag">플래그</param> /// <param name="timeout">타임아웃</param> /// <param name="resultHandle">결과 핸들</param> /// <returns>처리 결과</returns> [DllImport("user32", SetLastError = true, CharSet = CharSet.Auto)] private static extern IntPtr SendMessageTimeout ( IntPtr windowHandle, uint message, IntPtr wordParameter, IntPtr longParameter, SendMessageTimeoutFlag flag, uint timeout, out IntPtr resultHandle ); #endregion /// <summary> /// 메시지 보내기 타이아웃 플래그 /// </summary> [Flags] public enum SendMessageTimeoutFlag : uint { /// <summary> /// SMTO_NORMAL /// </summary> SMTO_NORMAL = 0x0, /// <summary> /// SMTO_BLOCK /// </summary> SMTO_BLOCK = 0x1, /// <summary> /// SMTO_ABORTIFHUNG /// </summary> SMTO_ABORTIFHUNG = 0x2, /// <summary> /// SMTO_NOTIMEOUTIFNOTHUNG /// </summary> SMTO_NOTIMEOUTIFNOTHUNG = 0x8, /// <summary> /// SMTO_ERRORONEXIT /// </summary> SMTO_ERRORONEXIT = 0x20 } |