본문 바로가기
Delphi Tip/Windows

SendMessage 함수를 활용한 윈도우 메시지 전송 방법

by MonoSoft 2023. 6. 16.
728x90
반응형

델파이에서 SendMessage 함수를 활용한 윈도우 메시지 전송 방법 

728x90

 

 

 

SendMessage 함수는 다른 윈도우로 메시지를 전송하여

효과적인 통신을 가능하게 해줍니다.

 

 

 

SendMessage

 

SendMessage 함수는 지정된 윈도우로 메시지를 보내는 역할을 합니다.

이 함수는 윈도우의 핸들, 전송할 메시지,

메시지 매개변수 및 메시지 데이터를 인자로 받습니다.

 

 

메시지를 보내면 수신측 윈도우의 메시지 처리기(Window Procedure)가

호출되어 해당 메시지를 처리합니다.

 

 

[델파이에서 SendMessage 함수 사용하기] 델파이에서는

WinAPI를 사용하여 SendMessage 함수를 호출할 수 있습니다.

 

 

다음은 SendMessage 함수를 활용하여 다른 윈도우로 메시지를 보내는 예제입니다

const
  WM_MY_MESSAGE = WM_USER + 1; // 사용자 정의 메시지 상수 정의

procedure TForm1.Button1Click(Sender: TObject);
var

  hWnd: HWND;
  wParam: WPARAM;
  lParam: LPARAM;
begin
  // 대상 윈도우의 핸들 가져오기
  hWnd := FindWindow(nil, '대상 윈도우 제목');
  if hWnd <> 0 then

  begin
    // 메시지 전송
    wParam := 0;
    lParam := 0;
    SendMessage(hWnd, WM_MY_MESSAGE, wParam, lParam); end;
end;

procedure TForm1.WndProc(var Msg: TMessage);
begin

  inherited;
  if Msg.Msg = WM_MY_MESSAGE then
  begin

    // 메시지 수신 처리
    ShowMessage('메시지를 받았습니다!');
  end;

end;

위의 예제에서는 '대상 윈도우 제목'이라는

제목을 가진 윈도우에 대해 SendMessage 함수를 사용합니다.

 

메시지를 보낼 때는 윈도우의 핸들, 사용자 정의 메시지(WM_MY_MESSAGE),

그리고 필요에 따라 wParam과 lParam 값을 설정하여 메시지를 전송합니다.

 

메시지를 받기 위해 수신측 윈도우의 WndProc 메서드를

오버라이딩하여 메시지 처리기를 구현합니다.

 

위의 예제에서는 WM_MY_MESSAGE 메시지를 수신하면

간단한 메시지 박스를 통해 메시지를 받았음을 알려줍니다.

 

이처럼 SendMessage 함수를 사용하면

다른 윈도우로 메시지를 전송하여 윈도우 간의

효과적인 통신이 가능해집니다.

 

이상으로 델파이에서 SendMessage 함수를 활용한

윈도우 메시지 전송 방법에 대해 설명하였습니다.

 

메시지 기반의 통신은 윈도우 애플리케이션 개발에 있어서 중요한 부분이므로,

윈도우 API를 자유롭게 활용하여 다양한 기능을

개발하는 데에 활용해보시기 바랍니다.

728x90
반응형

댓글