2011-09-28 5 views
8

k CGWindowNumber에서 NSWindow ref. 나는 사용하여 시도 :kCGWindowNumber에서 NSWindow 가져 오기

[NSApp windowWithWindowNumber:windowNumber] 

을하지만 난 항상 null 값을 얻는다. 에 [window setlevel:NSFloatingWindowLevel]을 적용해야합니다. 항상 주어진 창 위에 설정했습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 아니면 다른 해결책이 있습니까?


대답을 주셔서 감사합니다, 그러나 이것은 해결책이 아니다, 나는 이미 시도했지만 작동하지 않습니다, 사실 내가 테스트를했다, 나는 다음과 같은 코드를 시도 :

for (NSInteger i = 0; i <10000; i + +) { 
NSWindow * wind; 
wind = [NSApp windowWithWindowNumber: windowNumber]; 
NSLog (@ "\ n Window:% @", wind); 
} 

을하지만, 결과는 항상 Window: (null)

나는 창 ecc의 OwnerPid 번호를 얻을 수있는 창 목록을 가지고 .. ecc ... 그리고 지금은 몇 가지 창 상단에 항상 설정해야합니다.

항상 위 설정 가능 : [window setlevel:NSFloatingWindowLevel], 창은 NSwindow 개체입니다.

해결책이 있으십니까? 내 문제 때문에 다른 생각이 들까?

+0

어디에서 창 번호를 가져 오나요? – omz

답변

2

kCGWindowNumber는이 CFNumber/NSNumber, -windowWithWindowNumber:NSInteger가 기대된다. -windowWithWindowNumber:에 전달하기 전에 창 번호 참조 (-integerValue)의 정수를 추출해야합니다.

+0

이 함수는 호출하는 응용 프로그램에 속한 윈도우에서만 작동합니다. 그러나 다른 사람들에게는'[NSApp windowWithWindowNumber : [[[NSWindow windowNumbersWithOptions : NSWindowNumberListAllApplications] objectAtIndex : i] integerValue]];'nil을 반환합니다. 왜? – Garnik

+0

'windowWithWindowNumber :'에 대한 문서는 : "windowNumbersWithOptions :'해당 윈도우 객체 **가 앱 **에 의해 소유되어있는 경우 발견 된 윈도우 번호에 대해'nil'을 반환 할 수 있습니다. –

+0

죄송합니다 ... 놓치 셨습니다 ... 다른 해결책이 필요합니다. – Garnik