Hallo Zusammen,
Ich möchte, am liebsten per Knopfdruck, zwei Browser-Fenster öffnen, wo eins auf der linken Seite und eins auf der rechten Seite des Bildschirms sich anordnen sollen?
Und dies bestenfalls als Batch Datei...
Danke euch und schöne Grüße
Seite 1 von 1
Positionierung via Batch Datei
Anzeige
#2
geschrieben 20. Dezember 2016 - 14:42
...vielleicht das Batchrun
#3
geschrieben 20. Dezember 2016 - 22:42
Wenn das nicht auf Batch beschränkt sein sollte... und der IE nicht von Haus aus rausfällt... dann ließe sich da über PowerShell was tun. Sogar relativ einfach.
Entsprechend anpassen für mehrere Fenster. Die einfach als neue COM-Objekte (siehe Schritt 1) erstellen. Der Rest wär dann blanke Mathematik, welches Fenster wo hinzupacken ist. Variablennamen anpassen nicht vergessen. Protip: Man hat so auch Zugriff auf Fenstereigenschaften, kann also Komponenten ein- und ausblenden, wenn man das will. Seiten (vor-)ansurfen geht auch: mit $ie.Navigate(string URL) und $ie.Navigate2(string URL).
Mit anderen Browsern geht das auch, soweit diese ein scriptfähiges Interface haben. Ohne müßte man dann über die Windows-API zugreifen, das geht auch, ist aber aufwendig. Beim IE ist das vergleichsweise banal, der bringt alles schon mit.
Note: Wenn man das Fenster mit X zumacht, verliert das Script die Objektreferenz, falls es noch laufen sollte. Falls nicht, verliert es die Objektreferenz auch - sollte auf der Hand liegen -- an dieser Stelle sollte das InternetExplorer-Objekt den Status Visible=$true haben, sonst kann man es nämlich selbst auch nicht mehr beenden, ohne es per Taskmanager abzuschießen.
#Step 1: Erstelle Referenz auf ein InternetExplorer-Objekt.
$ie = new-object -ComObject InternetExplorer.Application
#Step 2: Referenz auf die Anzeige beschaffen.
$Display = $null;
Try
{
## Per CIM
$Display = Get-CimInstance -ClassName Win32_VideoController -ErrorAction Stop
}
Catch
[
## Falls das nicht geht, per WMI
$Display = Get-WmiObject -ClassName Win32_VideoController
}
#Step 3: Ermittle Positionsparameter.
$left = 10; # Pixel.
$top = 10; # Pixel.
$width = ( $Display.CurrentHorizontalResolution ) / 2 - 2 * $left; # $left Abstand nach links, $left Abstand auch zur horizontalen Mitte
$height = ( $Display.CurrentVerticalResolution ) / 2 - 2 * $top; # Dasselbe nach oben/unten
# Wenn man sich also den Bildschirm geviertelt vorstellt, ist das IE-Fenster im linken oberen Viertel zentriert, mit jeweils 10 Pixeln Abstand in alle Richtungen. Die anderen drei erreicht man entspechend, indem man die Werte für .Top und .Left so ändert, daß da jeweils die halbe Bildschirmauflösung in der entsprechenden Dimension mit dazugezählt werden muß.
# Step 4: Positionieren.
$ie.Left = $left # Abstand von linker oberer Monitorecke (in Pixeln) nach rechts
$ie.Top = $top # Abstand von linker oberer Monitorecke (in Pixeln) nach unten
$ie.Width = $width; # Fensterbreite
$ie.Height = $height; # Fensterhöhe
# Und den Spaß anzeigen
$ie.Visible = $true;
Entsprechend anpassen für mehrere Fenster. Die einfach als neue COM-Objekte (siehe Schritt 1) erstellen. Der Rest wär dann blanke Mathematik, welches Fenster wo hinzupacken ist. Variablennamen anpassen nicht vergessen. Protip: Man hat so auch Zugriff auf Fenstereigenschaften, kann also Komponenten ein- und ausblenden, wenn man das will. Seiten (vor-)ansurfen geht auch: mit $ie.Navigate(string URL) und $ie.Navigate2(string URL).
Mit anderen Browsern geht das auch, soweit diese ein scriptfähiges Interface haben. Ohne müßte man dann über die Windows-API zugreifen, das geht auch, ist aber aufwendig. Beim IE ist das vergleichsweise banal, der bringt alles schon mit.
Note: Wenn man das Fenster mit X zumacht, verliert das Script die Objektreferenz, falls es noch laufen sollte. Falls nicht, verliert es die Objektreferenz auch - sollte auf der Hand liegen -- an dieser Stelle sollte das InternetExplorer-Objekt den Status Visible=$true haben, sonst kann man es nämlich selbst auch nicht mehr beenden, ohne es per Taskmanager abzuschießen.
Thema verteilen:
Seite 1 von 1