SendMessage에서 마우스 클릭을 보내려하지만 작동하지 않습니다. 내 코드가 잘못되었습니다.
Int 윈도우은 0이 아니지만 여전히 작동하지 않습니다.SendMessage에서 마우스 클릭을 보내려하지만 작동하지 않습니다. 내 코드가 잘못되었습니다.
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
private const uint WM_RBUTTONDOWN = 0x0204;
private const uint WM_RBUTTONUP = 0x0205;
private int MAKELPARAM(int p, int p_2)
{
return ((p_2 << 16) | (p & 0xFFFF));
}
public void ClickOnPoint(System.Drawing.Point p)
{
int window = FindWindow(null, "Untitled - Notepad");
//System.Windows.Forms.MessageBox.Show(window + "\n");
SendMessage(window, WM_RBUTTONDOWN, 0, MAKELPARAM(500,500));
SendMessage(window, WM_RBUTTONUP, 0, MAKELPARAM(500, 500));
}
에 대한이 작품 어떻게 감지 하는가? (500, 500)에 메모장 창이 있으며 상황에 맞는 메뉴가 표시 될 것으로 기대하십니까? 좌표는 절대 화면 좌표가 아닌 클라이언트의 클라이언트 좌표와 관련이 있습니다. Windows Spy와 같은 도구를 사용하여 메시지가 수신되는지 확인할 수 있습니다. 또한 : [다중 모니터 경고] (https://msdn.microsoft.com/de-de/library/windows/desktop/ms646242 (v = vs.85) .aspx)를 고려하십시오. – dlatikay
(500,500)에서 메모장 (전체 화면)의 창을 확인하는 것은 텍스트 영역입니다. 내 코드에 menubox (실행 취소, 잘라 내기, 복사, 붙여 넣기, 삭제 등)가 표시되어야하지만 표시가 아닙니다. –
은'SedMessage' 0의 반환 값입니다 (메시지 배달 성공을 나타냅니다)? 그것이 0이 아니면'GetLastError'를 호출하십시오. [이 답변] (https://stackoverflow.com/a/3721053/1132334) wParam 값을 0 대신 MK_RBUTTON합니다 제안합니다. – dlatikay