installed pty
[VSoRC/.git] / node_modules / node-pty / deps / winpty / misc / IdentifyConsoleWindow.ps1
diff --git a/node_modules/node-pty/deps/winpty/misc/IdentifyConsoleWindow.ps1 b/node_modules/node-pty/deps/winpty/misc/IdentifyConsoleWindow.ps1
new file mode 100644 (file)
index 0000000..0c48859
--- /dev/null
@@ -0,0 +1,51 @@
+#
+# Usage: powershell <path>\IdentifyConsoleWindow.ps1
+#
+# This script determines whether the process has a console attached, whether
+# that console has a non-NULL window (e.g. HWND), and whether the window is on
+# the current window station.
+#
+
+$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?)"
+    }
+}