Position/Größe von Windows-Fenstern ermitteln

ZaidoR

Mitglied
Hallo,

ich suche schon nach längerem nach einer "simplen" Lösung, wie ich aus bereits geöffneten Fenstern die Position und Größe ermitteln kann. Ein Beispiele wäre, ich habe Excel geöffnet und möchte nun dessen Position und Größe mittels Java erhalten.

Habe schon öfters Stichpunkte wie JNE oder User32 gelesen... Aber was ist nun das Korrekte und/oder vllt. das simpelste?? ???:L


(Hoffe dies ist das richtige Forum)

Vielen Dank
Rene
 
G

Gastredner

Gast
Es gibt keine "simple" Lösung. Du musst über JNA auf die Windows-API zugreifen und dir die entsprechenden Werte zurückgeben lassen oder du musst eine JNI-Bibliothek schreiben und dort dann auf die Windows-API zugreifen.
Selbstverständlich würde das dann auch nur unter Windows laufen.

EDIT: Du nimmst eine Skriptsprache wie AutoIt - diese kann die gewünschten Informationen ermitteln. Damit schreibst du ein Skript/Programm, welches die gewünschten Werte ausließt und auf die Standardausgabe schreibst. Dieses Programm startest du dann aus Java heraus und ließt einfach mit, was es auf stdout ausgibt.
Ist dann aber auch irgendwie hässlich.
 
Zuletzt bearbeitet von einem Moderator:

ZaidoR

Mitglied
hm ok, hab ich mir schon gedacht.. erstmal danke für die antwort..
hättest du vllt ein kleines beispielskript, wie man via JNA dieses realisiert?!
was man für dateien benötigt, was man tun muss.. am besten wäre ein beispielprogramm, welches ein bestimmtes programm analysiert, bzw dessen größe und position ermittelt und in der java console ausgibt oder so, dat wäre echt spitze!
 
G

Gastredner

Gast
hättest du vllt ein kleines beispielskript, wie man via JNA dieses realisiert?!
Ich habe bisher weder mit JNA, noch mit der Windows-API gearbeitet, von daher...nein, habe ich nicht.

Ein Teil des AutoIt-Quellcodes ist öffentlich, dort könntest du vielleicht nach den entsprechenden Funktionen und ihrer Umsetzung suchen. Ansonsten dürfte es ja wohl eine Beschreibung der Windows-API geben, die dir weiterhelfen könnte.
 

ZaidoR

Mitglied
hm, ich denke, dass sich irgendwer doch bestimmt mal mit diesem thema auseinander gesetzt hat. jeder hat ja mal klein angefangen. Und beispiel-quellcode finde ich auch nirgends ausführlich beschrieben, was schade ist.
nagut.. dann muss ich mich wohl selbst zurecht finden.
aaaber falls jemand ein beispielcode zur verfügung hat, dann bitte ich doch diesen hier zu posten,
wäre ich sehr dankbar für!


Grüße
Rene
 

kay73

Bekanntes Mitglied
Hi, die JNA hat mappings für die USER32.DLL. Leider gibt es für GetWindowTextLength und GetWindowText unsatisfiedLinkErrors bei mir (XP SP3 im vmplayer), aber vielleicht klappts es bei Dir. Du brauchst diese beiden JARs im Klasssenpfad:
jna.jar
platform.jar
Java:
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.GDI32;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.W32API;
import com.sun.jna.platform.win32.GDI32.RECT;


public class WindowPosApp {

	public static void main(String[] args) {
		final User32 user32 = (User32) Native.loadLibrary("user32", User32.class); 
				
		user32.EnumWindows(new User32.WNDENUMPROC() {
			
			@Override
			public boolean callback(W32API.HWND hwnd, Pointer arg1) {
				final GDI32.RECT r = new RECT();
				user32.GetWindowRect(hwnd, r);
								
				int titleLength = user32.GetWindowTextLength(hwnd);
				
				final byte [] title = new byte [titleLength];
				user32.GetWindowText(hwnd, title, title.length);
				
				System.out.println(String.format("%1$80s: [%2$d,%3$d][%4$d,%5$d]", 
					new String(title), 
					r.left, r.top, r.right - r.left, r.bottom - r.top));
				
				return true;
			}
		}, null);
	}
}
 
Zuletzt bearbeitet:

kay73

Bekanntes Mitglied
Hi, sorry, der Code stimmte so nicht. Man kann/muss
Code:
User32.INSTANCE
direkt verwenden. Die Library bekam so wohl eine Option zum Mappen von Funktionsnamen für Win32 nicht mit. Hier gibt es ein paar Sonderzeichen am Ende bei den Widechar-Fenstertiteln, aber ansonsten gehts. Bei den ASCII-Versionen crasht die JVM, aber die benutzt man eh nicht.
Java:
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.GDI32;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.W32API;
import com.sun.jna.platform.win32.GDI32.RECT;

public class WindowPosApp {

	public static void main(String[] args) {
		User32.INSTANCE.EnumWindows(new User32.WNDENUMPROC() {
			
			@Override
			public boolean callback(W32API.HWND hwnd, Pointer arg1) {
				final GDI32.RECT r = new RECT();
				User32.INSTANCE.GetWindowRect(hwnd, r);
								
				int titleLength = User32.INSTANCE.GetWindowTextLength(hwnd);
				
				final char [] title = new char [titleLength+2];
				User32.INSTANCE.GetWindowText(hwnd, title, title.length);
								
				System.out.println(String.format("%1$s: [%2$d,%3$d][%4$d,%5$d]", 
					new String(title), 
					r.left, r.top, r.right - r.left, r.bottom - r.top));
				
				return true;
			}
		}, null);
	}
}
.

Wieso sind die "Ändern" Knöpfe alle weg???
 
Zuletzt bearbeitet:

ZaidoR

Mitglied
cool, danke :)
das sieht doch schonmal nach einem ergebnis aus!

Ist nur komisch mit den leeren chars am ende jedes fenstertitels, aber das kann man ja parsen...


So und was ich jetzt nur noch benötige, ist von einem Fenster alle Unterfenster, sprich EnumChildWindows oder sowas?!?!
Wenn du sowas auch noch hinbekommst, wäre das super!


ABER SCHONMAL DICKES LOB!! :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
Lauezl Projektil zur Maus Position Allgemeine Java-Themen 10
J Hinergrund und Position verändern Allgemeine Java-Themen 2
Tobero Wie bekomme ich in welchem Quadrat sich eine Position in einem Grid befindet Allgemeine Java-Themen 11
C Position von Pixeln in Bilder auslesen Allgemeine Java-Themen 2
kodela aktuelle Position des Hauptfensters abfragen Allgemeine Java-Themen 12
Aruetiise Interface Position durch JButton ermitteln Allgemeine Java-Themen 5
T JasperReportsBuilder Position merken Allgemeine Java-Themen 0
C Position speichern von verschiebbaren Elementen auf JPanel Allgemeine Java-Themen 3
S per Mausklick Position ermitteln Allgemeine Java-Themen 8
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
c_sidi90 Werte an bestimmten Position aus PDF in DB sichern Allgemeine Java-Themen 2
G Position des Print Dialogs vorgeben Allgemeine Java-Themen 3
R BigDecimal, Position des Kommas Allgemeine Java-Themen 2
C Wie kann man die IText Table Position bestimmen? Allgemeine Java-Themen 3
W LayoutManager Position der Componenten nachträglich ändern Allgemeine Java-Themen 12
B von Array-Element auf Position in Array Allgemeine Java-Themen 7
M Position 2 Monitor Allgemeine Java-Themen 5
Q Serialisierung / Speicherung Geschwindingkeit & Aktuelle Position Allgemeine Java-Themen 7
X Position eines Gegenstandes über Webcam erkennen Allgemeine Java-Themen 11
R Google Keyword Position Allgemeine Java-Themen 11
M JTable verändert Position auf meinem JPanel Allgemeine Java-Themen 3
N InputStream erst ab gegebener Position Allgemeine Java-Themen 4
D Position des Mauszeigers setzen! Allgemeine Java-Themen 3
L 8 bytes von bestimmter position weg lesen? Allgemeine Java-Themen 11
H Position von JTextField Allgemeine Java-Themen 2
N JSplitPane: feste Divider-Position? Allgemeine Java-Themen 8
S addAtPosition - Zahl an einer bestimmten Position einfügen Allgemeine Java-Themen 8
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
J Größe einer CD ermitteln Allgemeine Java-Themen 10
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
N Kombinationen beliebiger Größe berechnen Allgemeine Java-Themen 1
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
C Ein Array mit der Größe von 1 KB erstellen Allgemeine Java-Themen 3
L Größe eines Objekts im Arbeitsspeicher Allgemeine Java-Themen 1
M ZipOutputStream gleiche Datei andere Größe? Allgemeine Java-Themen 0
M Array "Größe" anpassen Allgemeine Java-Themen 2
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
E ArrayList mit unbekannter Größe Allgemeine Java-Themen 8
F String in feste Größe zerlegen Allgemeine Java-Themen 11
F JFreeChart Größe anpassen Allgemeine Java-Themen 8
B JScrollPane und JPanel: Scrollen nur nach Größe des JPanels Allgemeine Java-Themen 2
W Größe des eingebauten Arbeitsspeichers auslesen Allgemeine Java-Themen 13
Developer_X Java3D-Ball größe angeben Allgemeine Java-Themen 12
reibi Größe Array aus bytes Allgemeine Java-Themen 14
data89 Die Größe eines Strings in Byte berechnen? Allgemeine Java-Themen 12
G ändernde größe des GrindBagL Allgemeine Java-Themen 2
L unterschiedliche Größe beim serialisieren eines Objektes! Allgemeine Java-Themen 6
G itext größe von image Allgemeine Java-Themen 2
S array von unbekannter größe Allgemeine Java-Themen 2
T Größe eine Variablen in Bytes? Allgemeine Java-Themen 22
C Größe von einem File Allgemeine Java-Themen 9
D JFrame vergrößert nicht auf die gewünschte Größe Allgemeine Java-Themen 2
S Bild Größe verändern Allgemeine Java-Themen 2
G String Array Größe begrenzt? Allgemeine Java-Themen 4
B ArrayList mit Größe initialisieren Allgemeine Java-Themen 16
P Größe eines Directories ermitteln mit allen SubDIR`s Allgemeine Java-Themen 28
P Maximale Größe einer Klasse Allgemeine Java-Themen 9
G Image in der Größe ändern Allgemeine Java-Themen 2
S Swing - Problem mit Fenster-/Komponenten-Größe Allgemeine Java-Themen 3
R Größe der JRE anpassen Allgemeine Java-Themen 18
G http maximale transfer größe? Allgemeine Java-Themen 3
M Datein einlesen und in feste Größe aufsplitten Allgemeine Java-Themen 2
J Größe von 2D-Arrays Allgemeine Java-Themen 3
H Größe eines Bildes ändern und Bild speichern Allgemeine Java-Themen 11
E JPEG Datei Größe und Qualität ändern (für Thumbnails) Allgemeine Java-Themen 4
H Größe eines Schriftzeichens ermitteln Allgemeine Java-Themen 2
thE_29 Größe bzw. Zeilen einer Datei Allgemeine Java-Themen 4
R -jar der Windows-Registry hinzufügen Allgemeine Java-Themen 1
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
izoards JAR als Windows Service mit Appache Procrun (prunsrv) Allgemeine Java-Themen 6
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
MarekLanger Filebeat in Docker unter Windows Allgemeine Java-Themen 1
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
M TomEE auf Windows Server 2016 installieren Allgemeine Java-Themen 4
Thallius Rätsel für Windows Profis Allgemeine Java-Themen 8
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J jar Dateien unter Windows 7 mit spezifischer jdk öffnen Allgemeine Java-Themen 2
T Java Windows sounds erkennen Allgemeine Java-Themen 1
P Java als Windows Dienst Allgemeine Java-Themen 2
I GUI für kleine Pop-Ups unter Windows Allgemeine Java-Themen 1
H Änderung im maximalen heap space unter Windows 7 ?! Allgemeine Java-Themen 5
dereki2000 Windows Benachrichtigung erzeugen Allgemeine Java-Themen 2
Neumi5694 Task-Name unter Windows Allgemeine Java-Themen 4
M Checkliste mit erweiterbaren Einträgen, Baumstruktur, wie Windows Explorer Navigation Allgemeine Java-Themen 2
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
R JDK installieren JDK / Maven auf Windows 10 installieren Allgemeine Java-Themen 9
K jar-Datei lässt sich unter Windows nicht verwenden Allgemeine Java-Themen 3
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
D Jsch nur für Windows? Allgemeine Java-Themen 2
X JDK installieren Weiß jemand, wie ich GCJ (WINDOWS) installieren und anwenden kann? Allgemeine Java-Themen 11
D JRE in .jar verpacken unter Windows Allgemeine Java-Themen 4
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben