안녕하세요.
질문 내용을 보고 저도 궁금해서 MSDN을 뒤져 보던 중 다음과 같은 정보를 알아냈네요.
MS IntelliMouse Explorer 와 같은 마우스 버튼이 많이 달린(?) 마우스는 제4 버튼이나 제5 버튼을 클릭하게 되면 WM_XBUTTONDOWN, WM_XBUTTONUP 이벤트가 발생한답니다.
위의 이벤트는 Windows 2000과 Windows XP에서 지원한다는군요.
지금 회사에 마우스 버튼이 많은 마우스가 없어서 테스트는 못해봤습니다.
참고해보셔요. 델파이에서는 WM_XBUTTONDOWN과 WM_XBUTTONUP이 정의되어있지는 않네요.
Platform SDK의 Winuser.h 파일에 보면
#define WM_XBUTTONDOWN 0x020B
#define WM_XBUTTONUP 0x020C
srookie 님 답변 감사드립니다.
MSDN 과 볼랜드사이트를 뒤져서 답을 찾아냈습니다.
가르쳐 주신대로, 마우스의 4번째, 5번째 버튼의 경우는
WM_XBUTTONDOWN, WM_XBUTTONUP 메시지가 발생되더군요.
이를 델파이에서 사용하려면, TApplicationEvents 컴포넌트를 사용하면 됩니다.
TApplicationEvents 는 해당 어플리케이션 내부에서 발생하는 모든 메시지를 가로채는 것이더군요.
따라서, TApplicationEvents 의 OnMessage 이벤트 핸들러에서 해당 메시지를 구현해주면 됩니다.
이번과 같은 경우는 WM_XBUTTONDOWN 메시지에 대해서 처리해주면 되지요.
볼랜드 사이트에서 입수한 코드는 아래와 같습니다.
<!--CodeS-->
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
const
WM_XBUTTONDOWN = 524; // $20C
WM_XBUTTONUP = 523; // $20B
begin
// Check if special button
if Msg.Message = WM_XBUTTONUP then
begin
if Lo(Msg.wParam) = $40 then
begin
// Forward button pressed (MK_XBUTTON2 = $40)
end
else if Lo(Msg.wParam) = $20 then
begin
// Back button pressed (MK_XBUTTON1 = $20)
end;
도움이 되실 방법인지는 모르겠지만
인터넷 익스플로러의 앞,뒤로 키값인 Alt+->,Alt+<-를 강제로 발생을 시켜주며 어떨런지...