WinFuture-Forum.de: Positionierung via Batch Datei - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Positionierung via Batch Datei


#1 Mitglied ist offline   Nichtskönner 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 19. Dezember 16
  • Reputation: 0

geschrieben 20. Dezember 2016 - 11:58

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
0

Anzeige



#2 Mitglied ist offline   Airboss 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.029
  • Beigetreten: 27. Januar 07
  • Reputation: 40
  • Geschlecht:Männlich
  • Wohnort:Area 51

geschrieben 20. Dezember 2016 - 14:42

...vielleicht das Batchrun
O <<<--------------- NSA! - Anschluß für Sonden --------------->>> O

Eingefügtes Bild
0

#3 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

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.

#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.
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0