Me gustaría encontrar la ID de ventana de mi programa SWT.ID de ventana de Java SWT
Arranco mi shell SWT de la manera estándar. ¿Cómo puedo encontrar la ID de la ventana que se ha creado? El programa se está ejecutando en Fedora 10 usando el administrador de ventanas de Compiz-Fusion (si eso hace la diferencia).
Código para ayudar a explicar lo que quiero decir:
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();
}
}
}
actualización 6 Mar 2009 Después de mirar y probar toda una serie de cosas (gracias a VonC por las sugerencias abajo), me encontré algo que ha funcionado hasta ahora. Es supremamente dudoso, pero al menos me permite seguir con otro trabajo por el momento.
La ID devuelta desde Control.embeddedHandle está cerca de la identificación de la ventana. Es diferente por una compensación predecible. Así que mi código es:
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 es 5+ (número de widgets añadió que pagar antes de que el compuesto incorporado).
Parece confiable en mi sistema hasta el momento. Todavía tengo que ver si se cae en un entorno diferente.
Acabo de actualizar mi respuesta para obtener algunas pistas más ... sin embargo, nada "definitivo". – VonC