से विंडो आईडी मैं अपने एसडब्ल्यूटी कार्यक्रम की विंडो आईडी ढूंढना चाहता हूं।जावा एसडब्ल्यूटी
मैं अपने एसडब्ल्यूटी खोल को मानक तरीके से शुरू करता हूं। फिर मुझे बनाई गई विंडो की आईडी कैसे मिलती है? प्रोग्राम कंपोज़-फ़्यूज़न विंडो मैनेजर (यदि इससे कोई फर्क पड़ता है) का उपयोग कर फेडोरा 10 पर निष्पादित किया जा रहा है।
कोड मदद करने के लिए समझाने मैं क्या मतलब है:
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();
}
}
}
अद्यतन 6 मार्च 2009 देख रही है और चीजों की एक पूरी श्रृंखला से बाहर की कोशिश कर रहा (नीचे दिए गए सुझावों के लिए VonC करने के लिए धन्यवाद) के बाद, मैं भर में आया था ऐसा कुछ जो अब तक काम करता है। यह बेहद कमजोर है लेकिन कम से कम मुझे इस पल के लिए कुछ और काम करने की अनुमति देता है।
Control.embeddedHandle से लौटाई गई आईडी विंडो आईडी के करीब है। यह एक अनुमानित ऑफसेट से अलग है। तो मेरी कोड है:
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