Functions/GenXdev.Windows/Get-ForegroundWindow.ps1

###############################################################################
<#
.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 {
    }
}
###############################################################################