|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$signature = @' |
|
[DllImport("kernel32.dll", SetLastError=true)] |
|
public static extern IntPtr GetConsoleWindow(); |
|
|
|
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)] |
|
public static extern bool SetConsoleTitle(String title); |
|
|
|
[DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true)] |
|
public static extern int GetWindowText(IntPtr hWnd, |
|
System.Text.StringBuilder lpString, |
|
int nMaxCount); |
|
'@ |
|
|
|
$WinAPI = Add-Type -MemberDefinition $signature ` |
|
-Name WinAPI -Namespace IdentifyConsoleWindow -PassThru |
|
|
|
if (!$WinAPI::SetConsoleTitle("ConsoleWindowScript")) { |
|
echo "error: could not change console title -- is a console attached?" |
|
exit 1 |
|
} else { |
|
echo "note: successfully set console title to ""ConsoleWindowScript""." |
|
} |
|
|
|
$hwnd = $WinAPI::GetConsoleWindow() |
|
if ($hwnd -eq 0) { |
|
echo "note: GetConsoleWindow returned NULL." |
|
} else { |
|
echo "note: GetConsoleWindow returned 0x$($hwnd.ToString("X"))." |
|
$sb = New-Object System.Text.StringBuilder -ArgumentList 4096 |
|
if ($WinAPI::GetWindowText($hwnd, $sb, $sb.Capacity)) { |
|
$title = $sb.ToString() |
|
echo "note: GetWindowText returned ""${title}""." |
|
if ($title -eq "ConsoleWindowScript") { |
|
echo "success!" |
|
} else { |
|
echo "error: expected to see ""ConsoleWindowScript""." |
|
echo " (Perhaps the console window is on a different window station?)" |
|
} |
|
} else { |
|
echo "error: GetWindowText could not read the window title." |
|
echo " (Perhaps the console window is on a different window station?)" |
|
} |
|
} |
|
|