2012-03-29 4 views
4

약간의 문제가 있습니다. 나는 MATLAB .m 파일을 가지고 있으며, 파일의 일부를 실행하자마자 마우스 커서를 그림 GUI의 특정 부분으로 자동 이동하려고합니다. 나는 약간의 검색을했지만, 내가 찾은 것을 구현하는 데 어려움을 겪고있다. 한 가지 해결책은 Java를 사용하는 것입니다.MATLAB 마우스 커서를 특정 좌표로 옮깁니다

import java.awt.Robot; 
mouse = Robot; 

mouse.mouseMove(0, 0); 
screenSize = get(0, 'screensize'); 
for i = 1: screenSize(4) 
    mouse.mouseMove(i, i); 
    pause(0.00001); 
end 

이렇게하면 커서가 화면의 아래쪽으로 이동합니다. 그러나 여기서 좌표계를 파악할 수는 없습니다. 나는 "mouse.mouseMove (i, i)"줄에 여러 다른 숫자 조합을 시도했지만 그 중 아무 것도 효과가없는 것 같았습니다. 변경 한 때마다 입력 한 내용과 관계없이 커서가 화면 왼쪽 상단으로 이동했습니다. 어떤 제안?

moveptr 및 PointerLocation 속성이 있다는 것도 알고 있습니다. 그러나, 나는 단지 음모의 한 부분으로 그들을 이동하는 방법에 대한 지침을 찾을 수 있습니다, 그리고 내가 뭘하려고 노력하고 있는지 그들이 확실하지 않습니다.

+0

흠, 무언가 내 마우스 포인터를 움직이기 시작하면 매우 화가 났을 것입니다 ... –

+0

좋습니다. 매우 도움이됩니다. –

+1

Windows XP의 Matlab R2011b에서 예제 코드가 작동합니다. 포인터가 왼쪽 상단으로 점프 한 다음 아래로 그리고 오른쪽으로 미끄러집니다. 이걸 부르기 전에'일시 중지 '를했을 수도 있습니다. 이렇게하면이 루프가 빨리 움직여 이동을 볼 수 없으며 포인터가 화면 하단에 남습니다. '일시 중지'를 시도한 다음 다시 실행하십시오. –

답변

2

좌표계는 다음과 같이 나타납니다. x = 0, y = 0은 기본 모니터의 왼쪽 위 모서리입니다. 양수 X가 왼쪽에서 오른쪽으로 이동했습니다. 양수 Y는 위에서 아래로 이동합니다.

(제대로 다중 모니터를 처리하는 부수적으로, 당신은, 오히려 화면 크기보다 screenSizes = get(0, 'MonitorPositions')를 사용한다.) (예쁜 일반)

다음 명령

나를 위해 작동 : 덧붙여

%Setup 
robot = java.awt.Robot; 
screenSizes = get(0, 'MonitorPositions'); 

%Mouse to upper left of primary monitor 
robot.mouseMove(1, 1) 

%Mouse to center of primary monitor 
robot.mouseMove(mean(screenSizes(1,[1 3])),mean(screenSizes(1,[2 4]))) 

%Mouse to hardcoded point 200 pixels down and 500 pixels to the right 
robot.mouseMove(500, 200) 

%Slow horizontal drag 
for ix = 1:500 
    robot.mouseMove(ix, 200); 
    pause(0.01) 
end 

, 당신이 올린 코드가 나를 위해 작동하는 것처럼 보입니다. 왼쪽 상단에서 오른쪽 하단으로 대각선으로 마우스를 움직였습니다. 불행히도 위의 코드 (나에게 효과가 있음)는 원래 가지고 있던 문제와 동일한 문제가있을 수 있습니다. FWIW, 내 버전 정보는 다음과 같습니다

MATLAB Version 7.12.0.635 (R2011a) 
Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 3) 
Java VM Version: Java 1.6.0_31-b05 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode 
+0

모든 도움에 감사드립니다! –

3

pause 문제가 될 수 없습니다.

Windows XP의 Matlab R2011b에서 예제 코드가 작동합니다. 포인터가 왼쪽 상단으로 점프 한 다음 오른쪽 아래로 글라이딩합니다. 이걸 부르기 전에 pause off을했을 수도 있습니다. 이렇게하면이 루프가 빨리 움직여 이동을 볼 수 없으며 포인터가 화면 하단에 남습니다. pause on을 시도한 다음 다시 실행하십시오.

관련 문제