Окно PuTTY есть, хотя оно получает "прозрачное" свойство по какой-то поддельной причине. Обходной путь, более легкий, чем те, которые я видел до сих пор, - вернуть видимость назад.
Следующие методы работают на 32-битной Vista Home Premium, SP2. YMMV.
Метод 1, короткий скрипт AutoHotkey:
; show_PuTTY.ahk
; Must be launched when putty.exe is already running
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
WinWait, PuTTY Configuration
WinSet, Transparent, 255
Метод 2, скрипт Powershell, вызываемый из командного файла (не требует никаких дополнительных программ):
# unhide.ps1
$definition = @"
[DllImport("user32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
public static void ShowWin()
{
IntPtr hwnd = FindWindow("PuTTYConfigBox", "PuTTY Configuration");
SetWindowLong(hwnd, -20, 524288);
}
"@
add-type -MemberDefinition $definition -Namespace my -Name WinApi
do {}
until(Get-Process putty -ErrorAction SilentlyContinue | Select -p Responding)
[my.WinApi]::ShowWin()
Затем вы можете вызвать его из командного файла (например, PuTTY.bat
), расположенный в том же положении, где лежит unhide.ps1
:
@echo off
rem PuTTY.bat
start "" "%ProgramFiles%\PuTTY\putty.exe"
rem Use %ProgramFiles(x86)% for 32 bit PuTTY on 64 bit Vista
powershell.exe -ex remotesigned -f unhide.ps1
Пожалуйста, смотрите кредиты на комментарий ниже.