상세 컨텐츠

본문 제목

PostMessage, SendMessage - 특정 윈도우(Windows)에 메세지(Message)처리하기

.NET/Windows API for .NET

by 클리엘 클리엘 2019.08.09 16:29

본문

PostMessage와 SendMessage의 전달인수및 사용법은 완전히 같습니다. 다만 차이점이라면 SendMessage는 해당 지정한 윈도우로 메세지(Message)를 즉시처리하도록 하는 반면 PostMessage는 메세지자체를 큐(Queue)에 담아둡니다.(향후 내부적으로 GetMessage에 의해 순서대로 처리됩니다.)

따라서 메세지를 보내고 처리완료를 대기할 필요없이 곧장 다른 작업으로 전환해야 한다면 PostMessage가 가장 적절하며 어느정도의 대기시간이 걸린다 하더라도 비교적 신속히 처리되어야할 경우라면 SendMessage사용이 적합합니다.

어느것이든 사용방법과 처리하고자 하는 내용이 같으므로 여기서는 SendMessage를 기준으로 알아보도록 하겠습니다.

<DllImport("user32.dll")> _
Public Shared Function SendMessage(hwnd As Integer, wMsg As Integer, wParam As Integer, lParam As UInteger) As Integer
End Function

▶VB.NET 선언

[DllImport("user32.dll")]
public static extern int SendMessage(int hwnd, int wMsg, int wParam, uint lParam);

▶C# 선언


SendMessage의 첫번째 인수는 Message를 수신할 Windows의 Handle을 지정합니다. 두번째 인수는 실제로 전달하고자 하는 Message의 내용입니다.

세번째와 네번째인수는 두번째에서 지정한 Message의 내용에 따라 지정되는 추가적인 정보인데 이는 두번째 인수의 Message내용이 무엇인가에 따라 달라집니다.

관련글 더보기

댓글 영역