Há uma função da API do Windows para fazer isso chamada EnumWindows () que possui a funcionalidade principal necessária. Não conheço nenhum programa existente para fazer isso, mas você provavelmente poderia escrever um na sua linguagem de script favorita - eu pessoalmente prefiro o Python , que certamente poderia fazer algo assim. O VisualBasic provavelmente também poderia, assim como vários outros.
Você leu a seção sobre direitos autorais na impressão do site? Proíbe copiar, modificar e distribuir todo o conteúdo. Você deve pelo menos considerar atribuir uma justa atribuição ao autor.
ComFreek
@ComFreek: Mais justo do que criar um link para o site dos autores?
DerHochstapler #
2
Use a função API do Windows EnumWindows () . Ele invocará o argumento da função de retorno de chamada definido pelo aplicativo passado a ele para todas as janelas de nível superior na tela, passando o identificador de cada um deles, até que o retorno de chamada retorne FALSE.
Aqui está um programa simples de console do Python 2.x que escrevi que usa essa função (e algumas outras para determinar quais janelas podem realmente estar visíveis na área de trabalho - muitas das janelas de "nível superior" que EnumWindows()são listadas por cima são invisíveis - para realize o que você deseja.Ele usa o win32guimódulo incluído no pacote de extensão PyWin32 para obter acesso à API do Windows.Isso também pode ser feito em um nível mais baixo e direto, usando o ctypesmódulo interno, mas o PyWin32 é mais maneira avançada e conveniente de fazer isso, IMO.
Você pode redirecionar a saída para um arquivo de texto ou o programa pode ser modificado para exibir a lista em uma janela ou caixa de diálogo usando vários módulos GUI diferentes disponíveis, incluindo o módulo de interface tk / tcl chamado Tkinter, que vem de fábrica com o idioma.
import sys
import win32gui
def callback(hwnd, strings):if win32gui.IsWindowVisible(hwnd):
window_title = win32gui.GetWindowText(hwnd)
left, top, right, bottom = win32gui.GetWindowRect(hwnd)if window_title and right-left and bottom-top:
strings.append('0x{:08x}: "{}"'.format(hwnd, window_title))returnTruedef main():
win_list =[]# list of strings containing win handles and window titles
win32gui.EnumWindows(callback, win_list)# populate listfor window in win_list:# print resultsprint window
sys.exit(0)if __name__ =='__main__':
main()
uma coisa que vale a pena examinar, mas sua resposta pode ser melhor como um comentário, pois esse tipo de resposta é mais para o stackoverflow. Então, minha pergunta é olhar mais para programas já escritos que o fariam. Às vezes, as pessoas postam pedaços de vbscript. Conheço um pouco de vbscript, mas ele não tem muitas maneiras de ver as coisas. A tal ponto que, embora tenha uma função msgbox .. ou alguma caixinha que exiba informações, ela não rola .. e, portanto, a melhor maneira é fazer o programa rodar o bloco de notas e abrir o arquivo. Suponho que seja possível
barlop
Desculpa. Sugira que você edite sua pergunta para ter uma idéia mais clara do que deseja.
martineau
obrigado, eu sei um pouco de python (mais de powershell!) Eu vou dar a esta
Respostas:
Peguei o script do PowerShell de Enumerando todas as janelas do Windows com uma função do PowerShell e uma função de retorno de chamada e modifiquei-o levemente.
Imprime o nome da janela e o identificador.
fonte
Use a função API do Windows EnumWindows () . Ele invocará o argumento da função de retorno de chamada definido pelo aplicativo passado a ele para todas as janelas de nível superior na tela, passando o identificador de cada um deles, até que o retorno de chamada retorne
FALSE
.Aqui está um programa simples de console do Python 2.x que escrevi que usa essa função (e algumas outras para determinar quais janelas podem realmente estar visíveis na área de trabalho - muitas das janelas de "nível superior" que
EnumWindows()
são listadas por cima são invisíveis - para realize o que você deseja.Ele usa owin32gui
módulo incluído no pacote de extensão PyWin32 para obter acesso à API do Windows.Isso também pode ser feito em um nível mais baixo e direto, usando octypes
módulo interno, mas o PyWin32 é mais maneira avançada e conveniente de fazer isso, IMO.Você pode redirecionar a saída para um arquivo de texto ou o programa pode ser modificado para exibir a lista em uma janela ou caixa de diálogo usando vários módulos GUI diferentes disponíveis, incluindo o módulo de interface tk / tcl chamado
Tkinter
, que vem de fábrica com o idioma.fonte