Existe uma maneira de obter acesso a um identificador de janela no Windows usando o WSH ou o WMI ou similar?

4

Existe uma maneira de obter acesso a um identificador de janela no Windows usando o WSH ou o WMI ou similar? Eu só quero marcar uma janela como sempre no topo. Idealmente, eu usaria o host de script do Windows para isso.

(também deve ser marcado como WSH).

Atenciosamente,

    
por Jotham 24.11.2009 / 06:02

3 respostas

3

Para pegá-lo com o WSH, você pode usar a DLL COM encontrada em este artigo do CodeProject . Usando isso, você pode pegar um identificador de janela da seguinte forma:

Set obj = CreateObject("APIWrapperCOM.APIWrapper")
winHandle = obj.FindWindow("test.txt - Notepad")

Isso também é muito fácil no PowerShell .

exemplo:

(Get-Process powershell).MainWindowHandle

Essa captura é o identificador de janela do processo do PowerShell.

Embora, se o seu objetivo principal seja fazer uma janela no topo, existem muitos programas para isso, como DeskPins :

    
por 24.11.2009 / 06:09
0

I just want to flag a window as always-on-top.

Dê uma olhada no gerenciador de janelas automáticas de Eusing. não só você pode manter automaticamente todas as janelas que você especificar sempre no topo , mas você também pode aplicar efeitos de transparência de 0% (totalmente transparente) a 100% (sólido).

O Gerenciador de Janelas Automáticas é gratuito.

    
por 24.11.2009 / 06:23
0

Eu sei que é um necro maciço e perdão se já foi resolvido, mas eu tenho lutado com isso há algum tempo e aqui está uma solução muito simples que eu escrevi:

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
    }
}

Retorna "0" se a janela não foi encontrada ou o identificador da janela. Se for encontrado mais janelas correspondentes à string $ winTitle, ele retornará o número da instância $ (0 significa primeira janela, 1 segundo, etc.).

Exemplo:

# WinExist str_WindowTitle int_WindowNumber
# returns the handle of second notepad window (if more than 1 opened)
$hwnd = WinExist "notepad" 1 
    
por 07.06.2016 / 16:49