다음을 통해 공유


SendMessageTimeoutW 함수(winuser.h)

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

통사론

LRESULT SendMessageTimeoutW(
  [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

보낼 메시지입니다.

시스템 제공 메시지 목록은 System-Defined 메시지참조하세요.

[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초 제한 시간을 지정하고 메시지를 처리하지 못하는 세 개의 최상위 창이 있는 경우 최대 15초의 지연 시간을 가질 수 있습니다.

[out, optional] lpdwResult

형식: PDWORD_PTR

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

반환 값

형식: LRESULT

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

함수가 실패하거나 시간이 초과되면 반환 값은 0입니다. 함수가 실패 시 SetLastError 항상 호출하지는 않습니다. 실패 이유가 중요한 경우 SendMessageTimeout을 호출하기 전에 SetLastError(ERROR_SUCCESS)를 호출합니다. 함수가 0을 반환하고 GetLastError ERROR_SUCCESS 반환하는 경우 제네릭 오류로 처리합니다.

발언

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

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

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

메모

winuser.h 헤더는 SENDMessageTimeout을 유니코드 전처리기 상수의 정의에 따라 이 함수의 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