Öffnen Sie Firefox mit der PowerShell
929
daniel gon
Ich führe zwei Skripte aus.
. C:\path/Set-Window.ps1 Start-Process -FilePath 'C:/Program Files/Mozilla Firefox/firefox.exe' -ArgumentList https://stackoverflow.com Start-Sleep -Seconds 0 Set-Window -ProcessName firefox -x 194 -y 18 -Width 1180 -Height 715 -Passthru
Wenn Set-Window.ps1 ist:
Function Set-Window { <# .SYNOPSIS Sets the window size (height,width) and coordinates (x,y) of a process window. .DESCRIPTION Sets the window size (height,width) and coordinates (x,y) of a process window. .PARAMETER ProcessName Name of the process to determine the window characteristics .PARAMETER X Set the position of the window in pixels from the top. .PARAMETER Y Set the position of the window in pixels from the left. .PARAMETER Width Set the width of the window. .PARAMETER Height Set the height of the window. .PARAMETER Passthru Display the output object of the window. .NOTES Name: Set-Window Author: Boe Prox Version History 1.0//Boe Prox - 11/24/2015 - Initial build 1.1//JosefZ (https://superuser.com/users/376602/josefz) - 19.05.2018 - treats more process instances of supplied process name properly .OUTPUT System.Automation.WindowInfo .EXAMPLE Get-Process powershell | Set-Window -X 2040 -Y 142 -Passthru ProcessName Size TopLeft BottomRight ----------- ---- ------- ----------- powershell 1262,642 2040,142 3302,784 Description ----------- Set the coordinates on the window for the process PowerShell.exe #> [OutputType('System.Automation.WindowInfo')] [cmdletbinding()] Param ( [parameter(ValueFromPipelineByPropertyName=$True)] $ProcessName, [int]$X, [int]$Y, [int]$Width, [int]$Height, [switch]$Passthru ) Begin { Try{ [void][Window] } Catch { Add-Type @" using System; using System.Runtime.InteropServices; public class Window { [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); [DllImport("User32.dll")] public extern static bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw); } public struct RECT { public int Left; // x position of upper-left corner public int Top; // y position of upper-left corner public int Right; // x position of lower-right corner public int Bottom; // y position of lower-right corner } "@ } } Process { $Rectangle = New-Object RECT $Handles = (Get-Process -Name $ProcessName).MainWindowHandle ### 1.1//JosefZ foreach ( $Handle in $Handles ) { ### 1.1//JosefZ if ( $Handle -eq [System.IntPtr]::Zero ) { Continue } ### 1.1//JosefZ $Return = [Window]::GetWindowRect($Handle,[ref]$Rectangle) If (-NOT $PSBoundParameters.ContainsKey('Width')) { $Width = $Rectangle.Right - $Rectangle.Left } If (-NOT $PSBoundParameters.ContainsKey('Height')) { $Height = $Rectangle.Bottom - $Rectangle.Top } If ($Return) { $Return = [Window]::MoveWindow($Handle, $x, $y, $Width, $Height,$True) } If ($PSBoundParameters.ContainsKey('Passthru')) { $Rectangle = New-Object RECT $Return = [Window]::GetWindowRect($Handle,[ref]$Rectangle) If ($Return) { $Height = $Rectangle.Bottom - $Rectangle.Top $Width = $Rectangle.Right - $Rectangle.Left $Size = New-Object System.Management.Automation.Host.Size -ArgumentList $Width, $Height $TopLeft = New-Object System.Management.Automation.Host.Coordinates -ArgumentList $Rectangle.Left, $Rectangle.Top $BottomRight = New-Object System.Management.Automation.Host.Coordinates -ArgumentList $Rectangle.Right, $Rectangle.Bottom If ($Rectangle.Top -lt 0 -AND $Rectangle.LEft -lt 0) { Write-Warning "Window is minimized! Coordinates will not be accurate." } $Object = [pscustomobject]@{ ProcessName = $ProcessName Size = $Size TopLeft = $TopLeft BottomRight = $BottomRight } $Object.PSTypeNames.insert(0,'System.Automation.WindowInfo') $Object } } } } }
All dies, um Firefox an einer bestimmten Position auf dem Bildschirm zu öffnen. Ich möchte aber auch, dass es sich über allen anderen Fenstern öffnet, die ich zur Zeit der Ausführung habe.
Was kann ich zu den Skripten hinzufügen, damit dies funktioniert?
Dies geschieht standardmäßig, da das Starten eines neuen Prozesses, insbesondere einer .exe, immer das aktive Fenster ist. Wenn das für Sie nicht passiert, hört sich das sehr seltsam an. Was ist Ihr Ziel / Anwendungsfall für diese Art von Dingen, da Sie sagen, dass Sie sich in einer vollständigen interaktiven Desktopsitzung befinden, im Gegensatz zum direkten Starten von FF?
postanote vor 5 Jahren
0
0 Antworten auf die Frage
Verwandte Probleme
-
12
Warum wird der Ordner / winsxs so groß und kann er verkleinert werden?
-
2
Erhöhte Berechtigungen für Startanwendungen in Windows?
-
14
PDF Viewer unter Windows
-
7
Welche Windows-Dienste kann ich sicher deaktivieren?
-
8
Firefox PDF-Plugin zum Anzeigen von PDF-Dateien im Browser unter Windows
-
1
Windows verliert das Bildschirmlayout
-
1
Gibt es eine Möglichkeit, Installationen / Updates zu verhindern, die meine Festplatte mit kryptisch...
-
1
Wie kann ich von Ubuntu aus über das Netzwerk auf Windows Vista-Drucker zugreifen?
-
6
Log Viewer unter Windows
-
3
Windows-Hintergrundproblem mit zwei Bildschirmen