SWT 프로그램의 창 ID를 찾고 싶습니다.Java SWT의 창 ID
표준 SWT 쉘을 시작합니다. 그런 다음 어떻게 생성 된 창의 ID를 찾을 수 있습니까? 이 프로그램은 Compiz-Fusion 창 관리자를 사용하여 Fedora 10에서 실행됩니다 (차이가 나는 경우).
코드가 무슨 뜻인지 설명하기 위해 : (아래의 제안을 VonC 덕분에)보고 사물의 전체 범위를 시도 후 2009년 3월 6일 을
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell();
// find window ID here??
shell.open();
while (!shell.isDisposed()) {
if(!display.readAndDispatch()) {
display.sleep();
}
}
}
업데이트, 나는 가로 질러 온 지금까지 효과가 있었던 것. 그것은 대단히 dodgy하지만 최소한 내가 다른 어떤 일을 잠시 동안 할 수있게 해줍니다.
Control.embeddedHandle에서 반환 된 ID는 창 ID에 가깝습니다. 예측 가능한 오프셋에 따라 다릅니다. 그래서 내 코드는 다음과 같습니다
public static void main(String[] args) {
...
Shell shell = new shell(display, SWT.NONE);
Composite e = new Composite(shell, SWT.EMBEDDED);
long windowID = e.embeddedHandle - WINDOW_ID_MAGIC_NUMBER;
e.dispose();
....
WINDOW_ID_MAGIC_NUMBER가 5+입니다 (위젯의 번호가 포함 된 복합 전에 쉘에 추가).
지금까지 내 시스템에서는 안정적으로 보입니다. 나는 그것이 다른 환경에서 쓰러지는지 아직 보지 못했다.
단 몇 가지 단서를 위해 대답을 업데이트했습니다 ... 아직 "확실한"것은 없습니다. – VonC