Functions/GenXdev.Windows/Get-ForegroundWindow.ps1
<##############################################################################
Part of PowerShell module : GenXdev.Windows Original cmdlet filename : Get-ForegroundWindow.ps1 Original author : René Vaessen / GenXdev Version : 1.300.2025 ################################################################################ Copyright (c) René Vaessen / GenXdev Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ################################################################################> ############################################################################### <# .SYNOPSIS Gets the handle of the currently active foreground window. .DESCRIPTION This function retrieves the window handle (HWND) of the window that is currently in the foreground and has keyboard focus. It uses Windows API functions through P/Invoke to interact with the User32.dll library. .EXAMPLE Get-ForegroundWindow Returns the IntPtr handle of the currently active window. .EXAMPLE $windowHandle = Get-ForegroundWindow Write-Host "Active window handle: $windowHandle" Stores the foreground window handle in a variable and displays it. #> function Get-ForegroundWindow { [CmdletBinding()] param() begin { # define the windows api functions needed for window handling # this adds critical User32.dll method via P/Invoke for getting the # currently active window handle Microsoft.PowerShell.Utility\Add-Type -TypeDefinition @' using System; using System.Runtime.InteropServices; public class User32FW { [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); } '@ } process { # output verbose information about the operation being performed Microsoft.PowerShell.Utility\Write-Verbose 'Attempting to get foreground window handle' # call the windows api to get the handle of the currently active window Microsoft.PowerShell.Utility\Write-Output ([User32FW]::GetForegroundWindow()) } end { } } ############################################################################### |