2010-04-18 6 views
1

안녕하세요, 원격 인터페이스를 추가하려고하는 os x 응용 프로그램을 만들고 있습니다. 이를 위해 마우스를 아래로 내리고 응용 프로그램의 창으로 명령을 내릴 수 있어야합니다. NSEvent로 이벤트를 생성하기위한 현재 이벤트 번호를 얻는 방법

나는 다음과 같이 보이는, 내가 성공적으로이 작업을 수행 할 수있는 코드를 발견

int mask = 0x100; 
NSEvent* eventMouseDown = [NSEvent mouseEventWithType:NSLeftMouseDown 
    location:p 
    modifierFlags:mask 
    timestamp:[NSDate timeIntervalSinceSystemStartup] 
    windowNumber:[w windowNumber] 
    context:[NSGraphicsContext graphicsContextWithWindow:w] 
    eventNumber:++eventCounter +42599 clickCount:1 pressure:0]; 
NSLog(@"Mouse down event: %@", eventMouseDown); 
[[NSApplication sharedApplication] sendEvent:eventMouseDown]; 

이 코드의 생각 만 한 가지 문제가 있고 이것이 eventNumer 매개 변수입니다. 내가 아는 한 각 이벤트마다 증가하는 숫자입니다. 그러나 나는 현재의 숫자를 어디에서 늘려야 할 지 찾을 방법을 찾을 수 없다. 현재 내가 사용하는 번호는 단지 시도와 오류 뿐이며 항상 작동하도록 솔기가 없습니다.

+0

'42599'는 무엇입니까? –

+0

이것은 테스트하는 동안 추가 한 임의의 숫자입니다. 내가 처음이 코드를 작성했을 때 나는 0으로 시도했지만 이것이 작동하지 않았습니다. 그래서 다른 번호를 시도해 보았습니다.이 번호로 작업하고있었습니다. 그러나 이상하게 여기고 어떤 종류의 마법 번호를 사용하는 것은 익숙하지 않습니다. – Chris

답변

1

eventNumber에 0을 사용하십시오.

+0

처음 시도했지만 0을 사용하면 이벤트가 전혀 수신되지 않습니다. 나가 반응을 얻지 않는 평균 방법. – Chris

+0

좋아, 나는 더 많은 테스트를했는데 이제는 0으로 작동하도록 솔기가 맺어졌습니다. 왜 그것이 이전에 작동하지 않았는지 모르겠습니다. 솔기는 응용 프로그램에 포커스를 올바르게 설정해야합니다. – Chris

0

이벤트 카운터는 일련 번호 일 뿐이므로 0 (+ 42599)부터 시작하여 각 이벤트가 생성되기 전에 하나씩 증가합니다. 마지막 값에 매달려 야합니다.

본인이 직접 시도하지는 않았지만 매번 새로운 번호가 표시되는 한 숫자는 중요하지 않은 것처럼 보입니다.

관련 문제