SendMessage 함수(winuser.h)

지정된 메시지를 창 또는 창으로 보냅니다. SendMessage 함수는 지정된 창에 대한 창 프로시저를 호출하며 창 프로시저가 메시지를 처리할 때까지 반환되지 않습니다.

메시지를 보내고 즉시 반환하려면 SendMessageCallback 또는 SendNotifyMessage 함수를 사용합니다. 스레드의 메시지 큐에 메시지를 게시하고 즉시 반환하려면 PostMessage 또는 PostThreadMessage 함수를 사용합니다.

구문

LRESULT SendMessage(
  [in] HWND   hWnd,
  [in] UINT   Msg,
  [in] WPARAM wParam,
  [in] LPARAM lParam
);

매개 변수

[in] hWnd

형식: HWND

창 프로시저에서 메시지를 받을 창에 대한 핸들입니다. 이 매개 변수가 HWND_BROADCAST ((HWND)0xffff 경우 비활성화되거나 보이지 않는 소유되지 않은 창, 겹치는 창 및 팝업 창을 포함하여 시스템의 모든 최상위 창으로 메시지가 전송됩니다. 하지만 메시지는 자식 창으로 전송되지 않습니다.

메시지 전송에는 UIPI가 적용됩니다. 프로세스의 스레드는 무결성 수준이 낮거나 같은 프로세스에서 스레드의 메시지 큐에만 메시지를 보낼 수 있습니다.

[in] Msg

형식: UINT

보낼 메시지입니다.

시스템 제공 메시지 목록은 시스템 정의 메시지를 참조하세요.

[in] wParam

형식: WPARAM

추가 메시지 관련 정보입니다.

[in] lParam

형식: LPARAM

추가 메시지 관련 정보입니다.

반환 값

형식: LRESULT

반환 값은 메시지 처리의 결과를 지정합니다. 전송된 메시지에 따라 달라집니다.

설명

메시지가 UIPI에 의해 차단되면 GetLastError를 사용하여 검색된 마지막 오류가 5(액세스 거부)로 설정됩니다.

HWND_BROADCAST 사용하여 통신해야 하는 애플리케이션은 RegisterWindowMessage 함수를 사용하여 애플리케이션 간 통신에 대한 고유한 메시지를 가져와야 합니다.

시스템은 시스템 메시지(0~(WM_USER-1) 범위의 메시지)에 대해서만 마샬링을 수행합니다. 다른 메시지(그 >= WM_USER)를 다른 프로세스로 보내려면 사용자 지정 마샬링을 수행해야 합니다.

호출 스레드에서 지정된 창을 만든 경우 창 프로시저는 즉시 서브루틴으로 호출됩니다. 지정된 창이 다른 스레드에 의해 만들어진 경우 시스템은 해당 스레드로 전환하고 적절한 창 프로시저를 호출합니다. 스레드 간에 전송된 메시지는 수신 스레드가 메시지 검색 코드를 실행할 때만 처리됩니다. 보내는 스레드는 수신 스레드가 메시지를 처리할 때까지 차단됩니다. 그러나 보내는 스레드는 메시지가 처리되기를 기다리는 동안 큐에 추가되지 않은 들어오는 메시지를 처리합니다. 이를 방지하려면 SMTO_BLOCK 설정된 SendMessageTimeout 을 사용합니다. 큐에 추가되지 않은 메시지에 대한 자세한 내용은 큐에 추가되지 않은 메시지를 참조하세요.

접근성 애플리케이션은 SendMessage를 사용하여 WM_APPCOMMAND 메시지를 셸로 보내 애플리케이션을 시작할 수 있습니다. 이 기능은 다른 유형의 애플리케이션에서 작동하도록 보장되지 않습니다.

예제

예를 들어 키보드 입력 표시를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll
API 세트 ext-ms-win-ntuser-message-l1-1-0(Windows 8 도입)

추가 정보

개념

InSendMessage

메시지 및 메시지 큐

PostMessage

PostThreadMessage

참조

RegisterWindowMessage

SendDlgItemMessage

SendMessageCallback

SendMessageTimeout

SendNotifyMessage