SendMessage(동기식)
PostMessage(비동기식)
윈도우 핸들의 버튼을 클릭하는 명령을 수행 시 Button Down 후 Button Up에 대한 반환을 무한히 기다리는 SendMessage를 사용할 시 Button Up이 될 때까지 다음 구문이 실행되지 않는 오류를 발견,
따라서 다음과 같은 코드로 대체할 수 있다. (LeftClick_AsyncUP 참고)
public static void ClickButton(IntPtr h_btn, ClickType type)
{
switch (type)
{
case ClickType.LeftClick:
SendMessage(h_btn, WindowMessage.WM_LBUTTONDOWN, 0, 0);
SendMessage(h_btn, WindowMessage.WM_LBUTTONUP, 0, 0);
break;
case ClickType.LeftClick_AsyncUP:
SendMessage(h_btn, WindowMessage.WM_LBUTTONDOWN, 0, 0);
PostMessage(h_btn, WindowMessage.WM_LBUTTONUP, 0, 0);
break;
case ClickType.LeftDoubleClick:
SendMessage(h_btn, WindowMessage.WM_LBUTTONDBLCLK, 0, 0);
break;
case ClickType.RightClick:
SendMessage(h_btn, WindowMessage.WM_RBUTTONDOWN, 0, 0);
SendMessage(h_btn, WindowMessage.WM_RBUTTONUP, 0, 0);
break;
case ClickType.RightDoubleClick:
SendMessage(h_btn, WindowMessage.WM_RBUTTONDBLCLK, 0, 0);
break;
}
}
댓글