Есть ли способ получить доступ к дескриптору окна в окнах, используя WSH, WMI или аналогичный?
Есть ли способ получить доступ к дескриптору окна в окнах, используя WSH, WMI или аналогичный? Я просто хочу пометить окно как всегда сверху. В идеале я бы использовал хост сценариев Windows для этого.
(Также должен быть помечен как WSH).
С Уважением,
3 ответа
Чтобы получить его с помощью WSH, вы можете использовать COM DLL, найденную в этой статье CodeProject. Используя это, вы можете получить дескриптор окна следующим образом:
Set obj = CreateObject("APIWrapperCOM.APIWrapper")
winHandle = obj.FindWindow("test.txt - Notepad")
Это также очень легко в PowerShell.
пример:
(Get-Process powershell).MainWindowHandle
Этот захват - дескриптор окна процесса PowerShell.
Хотя, если ваша главная цель - сделать окно верхним, есть много программ для этого, таких как DeskPins:
Я знаю, что это огромный некр и простите, если он уже был решен, но я боролся с этим уже некоторое время, и вот действительно простое решение, которое я написал:
function WinExist($winTitle, $instance = 0)
{
$h = Get-Process | Where-Object { $_.MainWindowTitle -match $winTitle } | ForEach-Object { $_.MainWindowHandle }
if ( $h -eq $null )
{
return 0
}
else
{
if ( $h -is [System.Array] )
{
$h = $h[$instance]
}
return $h
}
}
Возвращает "0", если окно не найдено или дескриптор окна. Если найдено больше окон, соответствующих строке $winTitle, возвращается номер экземпляра $ (0 означает первое окно, 1 секунду и т. Д.).
Пример:
# WinExist str_WindowTitle int_WindowNumber
# returns the handle of second notepad window (if more than 1 opened)
$hwnd = WinExist "notepad" 1
Я просто хочу пометить окно как всегда сверху.
взгляните на Eusing Auto Window Manager. Вы можете не только автоматически держать все окна, которые вы указали, всегда сверху, но вы также можете применять эффекты прозрачности от 0% (полностью прозрачный) до 100% (сплошной).
Auto Window Manager является бесплатной.