JNI: HWND von aufrufendem Fenster bekommen.

Status
Nicht offen für weitere Antworten.

Bert Brenner

Bekanntes Mitglied
In meiner vorläuftigen Version hab ich mir den Handle mit dem Fenstertitel und FindWindow geholt, ich möchte aber nicht ausschliessen ich mal 2 Fenster mit selben Titel offen hab.

Gibt es eine alternative möglichkeit in dem ich z.b. aus einem Component das ich an die native Methode übergebe den Handle auf das Fenster zu bekommen?
 
Wennst das jetzt bitte selbst so ausbesserst, damit man auch 100%ig sagen welche Sprache das ist, helfe ich dir vielleicht!

Ich verstehe deine Frage einfach net!
 
Neuer Versuch:

Momentan verwende ich die erste von den beiden Methoden, funktioniert auch ganz gut.

Würde aber lieber was im Stil der 2. Funktion benutzen um auch dann keine Probleme zu bekommen wenn ich 2 Fenster mit dem selben Namen habe.

Code:
/*
 * Class:     pdtwain_PdTwain
 * Method:    getHwnd
 * Signature: (Ljava/lang/String;)I
 */
JNIEXPORT jint JNICALL Java_pdtwain_PdTwain_getHwnd__Ljava_lang_String_2
(JNIEnv *env, jclass, jstring windowTitle) {
	return (jint)FindWindow(NULL, env->GetStringUTFChars(windowTitle, NULL));
}

/*
 * Class:     pdtwain_PdTwain
 * Method:    getHwnd
 * Signature: (Ljava/awt/Component;)I
 */
JNIEXPORT jint JNICALL Java_pdtwain_PdTwain_getHwnd__Ljava_awt_Component_2
(JNIEnv *env, jclass, jobject parentComponent) {
	HWND hwnd = NULL;

	// find parentComponent´s HWND

	return hwnd;
}
 
Achso, du willst eine Komponente übergeben und nachsehen ob es auch 100%ig das Fenster ist und nicht nur der Titel gleich ist!

Tjo, gute Frage ob das geht, in Linux gehts, weil da niemals 2 Fenster mit dem gleichen Namen existieren können, was es in Windows ja kann!


Aber ob man das irgendwie casten kann, glaub ich eher net, er gibt dir halt das erste Fenster mit dem Namen zurück was am "weitesten oben" liegt zurück!
 
Sowas in der Richtung hab ich schon befürchtet. Nun, dann werd ich wohl dafür sorge tragen das es keine 2 Fenster mit selben Namen gibt. Danke auf jeden fall.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben