SendMessageTimeoutA 함수(winuser.h)

지정된 메시지를 하나 이상의 창으로 보냅니다.

구문

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

매개 변수

[in] hWnd

형식: HWND

창 프로시저에서 메시지를 받을 창에 대한 핸들입니다.

이 매개 변수가 HWND_BROADCAST ((HWND)0xffff 경우 비활성 또는 보이지 않는 소유하지 않은 창을 포함하여 시스템의 모든 최상위 창으로 메시지가 전송됩니다. 함수는 각 창의 시간이 초과될 때까지 반환되지 않습니다. 따라서 총 대기 시간은 uTimeout 값에 최상위 창 수를 곱할 수 있습니다.

[in] Msg

형식: UINT

보낼 메시지입니다.

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

[in] wParam

형식: WPARAM

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

[in] lParam

형식: LPARAM

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

[in] fuFlags

형식: UINT

이 함수의 동작입니다. 이 매개 변수는 다음 값 중 하나 이상일 수 있습니다.

의미
SMTO_ABORTIFHUNG
0x0002
수신 스레드가 응답하지 않거나 "중단"된 경우 함수는 시간 제한 기간이 경과할 때까지 기다리지 않고 반환합니다.
SMTO_BLOCK
0x0001
함수가 반환될 때까지 호출 스레드가 다른 요청을 처리하지 못하도록 합니다.
SMTO_NORMAL
0x0000
호출 스레드는 함수가 반환될 때까지 기다리는 동안 다른 요청을 처리할 수 없습니다.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
함수는 수신 스레드가 메시지를 처리하는 한 시간 제한 기간을 적용하지 않습니다.
SMTO_ERRORONEXIT
0x0020
메시지를 처리하는 동안 수신 창이 제거되거나 소유 스레드가 죽으면 함수는 0을 반환해야 합니다.

[in] uTimeout

형식: UINT

제한 시간 기간(밀리초)입니다. 메시지가 브로드캐스트 메시지인 경우 각 창에서 전체 시간 제한 기간을 사용할 수 있습니다. 예를 들어 5초 시간 제한 기간을 지정하고 메시지를 처리하지 못하는 최상위 창이 3개 있는 경우 최대 15초 지연이 발생할 수 있습니다.

[out, optional] lpdwResult

형식: PDWORD_PTR

메시지 처리의 결과입니다. 이 매개 변수의 값은 지정된 메시지에 따라 달라집니다.

반환 값

형식: LRESULT

함수가 성공하면 반환 값이 0이 아닙니다. SendMessageTimeoutHWND_BROADCAST 사용되는 경우 개별 창 시간 제한에 대한 정보를 제공하지 않습니다.

함수가 실패하거나 시간이 초과되면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. GetLastError가ERROR_TIMEOUT 반환하면 함수 시간이 초과됩니다.

Windows 2000: GetLastError가 0을 반환하면 함수 시간이 초과됩니다.

설명

함수는 지정된 창에 대한 창 프로시저를 호출하고 지정된 창이 다른 스레드에 속하는 경우 창 프로시저가 메시지를 처리하거나 지정된 시간 제한 기간이 경과할 때까지 반환되지 않습니다. 메시지를 받는 창이 현재 스레드와 동일한 큐에 속하는 경우 창 프로시저가 직접 호출됩니다. 시간 제한 값은 무시됩니다.

이 함수는 스레드가 GetMessage 또는 유사한 함수를 5초 이내에 호출하지 않은 경우 응답하지 않는 것으로 간주합니다.

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

참고

winuser.h 헤더는 SENDMessageTimeout을 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 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에 도입됨)

추가 정보

개념

GetMessage

InSendMessage

메시지 및 메시지 큐

PostMessage

참조

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage