Autor Beitrag
Oliver Maas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: Do 06.05.10 14:12 
Hallo,

ich habe gesehen, dass es zwar sehr viele Beiträge zu FindWindow gibt, aber weiß jemand, ob sich da etwas von Win2000 auf XP geändert hat?

Ich habe eine Java Applikation, die neben meiner Delphi Applikation laufen kann (oder auch nicht). Früher (Win2000) konnte ich stets einfach mit FindWindow('Remote.Main',nil) schauen, ob die Java App lief.

Main ist der Name der Hauptklasse, Remote ist der Packagename der Java App. Das hat sich nicht geändert.

Aber nun (WinXP) geht das nicht mehr. Läuft die JavaApp, liefert der obige FindWindow Aufruf 0 zurück. Ich mache es nun anders (über EnumWindows, und ich sehe, dass der Klassenname 'SunAwtFrame' lautet, was ungünstig ist, denn die meisten framebasierten Javaprogramme haben diese Klasse; also gehe ich nun über den Titel, was zwar geht, mir aber nicht so gefällt).

Daher die konkrete Frage: kann das jemand bestätigen, dass der Wechsel auf XP diesen Unterschied ausmacht?!

viele Grüße

Olli

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 06.05.10 14:32 
Ich bezweifle, dass der Unterschied an FindWindow liegt. Hast du einmal geschaut welche Fenster unter Windows 2000 im Vergleich zu Windows XP bei der betreffenden Anwendung existieren? Zum Beispiel mit WinSpy?

Denn du sagst selbst, dass der Klassenname SunAwtFrame lautet, wie soll also die Suche nach Remote.Main dann klappen? Von einer Java-Version zur anderen kann sich da natürlich durchaus etwas geändert haben. Ich vermute einmal, dass du in WinSpy sehen wirst, dass der Klassenname unter 2000 Remote.Main lautet...
Oliver Maas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: Do 06.05.10 15:44 
Danke für die Antwort.
Leider hab ich kein Windows 2000 mehr, mit dem ich das testen könnte. Das Delphi Projekt ist ziemlich alt (über 5 Jahre), und in dem alten Code stand eben der gezeigte Aufruf drin, und der Kunde kam bisher immer damit klar.

Erst kürzlich (neuer PC beim Kunden?) kam der Kunde nun nicht mehr klar, und eine erneute Überprüfung auf meinem PC (mit XP) ergab tatsächlich, dass der FindWindow-Aufruf so nicht (mehr?) klappte.

Ich komme nun einigermassen klar, ich hab mich nur gewundert, dass plötzlich der Klassenname anders war als früher, obwohl die Namen der Klassen im Java Sourcecode dieselben sind wie früher auch :? . Als einzige Erklärung fiel mir da das OS ein.

freundliche Grüße, Olli

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
SvenAbeln
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Do 06.05.10 16:00 
user profile iconOliver Maas hat folgendes geschrieben Zum zitierten Posting springen:
Als einzige Erklärung fiel mir da das OS ein.

Eine andere Erklärung wäre eine neuere JAVA Version.
Google findet zu diesem Problem z.b. folgenden Forumsbeitrag von 2006:
forum.java.net hat folgendes geschrieben:
[...]
In JRE 1.5 and earlier, the Win32 Window class name for the top-level application window was inherited from the Java class name.

In JRE 1.6, the Win32 Window class name appears to be always set to SunAwtFrame.
[...]


Ansonsten hat FindWindow auch noch einen zweiten Parameter, den Fenster Titel.
Oliver Maas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: Fr 07.05.10 08:25 
Hallo,

vielen Dank, das mit der JRE scheint des Rätsels Lösung zu sein! :)
Es war tatsächlich ein Wechsel von Java 1.5 auf 1.6 in diesem Zeitraum.

Olli