Dica 1: Como obter o identificador da janela

Dica 1: Como obter o identificador da janela


O conceito de interface do usuário no Windows é construído sobre o conceito de janelas. Diálogos, botões, painéis de controle, listas - tudo isso janelas. Portanto, para realizar qualquer ação com qualquer elemento da interface da sua própria ou da aplicação de outra pessoa, você precisa obter descritor janelas.



Como obter o identificador da janela


Você precisará



  • - pacote Platform SDK;
  • - O compilador.


Instruções


1


Obter descritor janelas, criando-o. Faça chamadas para as funções da API CreateWindow ou CreateWindowEx, ou ligue para os métodos de wrapper apropriados (nos objetos necessários) das classes da estrutura ou biblioteca usada que encapsulam a funcionalidade de trabalhar com janelasou controles. As funções CreateWindow e CreateWindowEx retornam diretamente descritor janelas se for criado com sucesso. Se a chamada falhar, eles retornam um valor NULL. O código de motivo de erro pode ser consultado usando a API GetLastError. Protótipos e uma descrição detalhada dos parâmetros das funções CreateWindow e CreateWindowEx podem ser encontradas em http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx e http: // msdn .microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx. Ao usar classes de diferentes frameworks, a criação de objetos do sistema operacional pode ocorrer de forma explícita (chamando o método) ou implicitamente (implementação da estratégia RAII). Portanto, descritor janelas é melhor receber no objeto inicializado pronto. Sobre os métodos das classes que retornam descritor janelas, encapsulado pelo objeto, você pode descobrir na documentação da estrutura correspondente. Por exemplo, no MFC, um método semelhante é GetSafeHwnd da classe CWnd.


2


Obter descritor janelas procurando por isso. Use as funções FindWindow e FindWindowEx API ou os métodos wrapper correspondentes dos objetos classes da estrutura aplicável. A função FindWindow retorna descritor janelas nível superior se for encontrado ou NULL em caso de falha. A pesquisa é feita pelo nome e título da classe janelas. Descrição dos parâmetros e aspectos da funçãoestá localizado em http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. A semântica da função FindWindowEx é semelhante ao FindWindow com a única diferença é que ele executa uma pesquisa janelas infantis. A documentação do FindWindowEx está disponível em http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx.


3


Encontre descritor janelas no processo de enumeração de seus conjuntos. Use as funções da API EnumWindows, EnumChildWindows, EnumThreadWindows ou os métodos dos objetos de classe da estrutura utilizada. A lista de funções EnumWindows e EnumChildWindows janelas alto nível e criança janelas respectivamente. EnumThreadWindows enumera todos os não-filhos janelas do fluxo especificado. Cada uma dessas funções deve ser passada um ponteiro para o procedimento de retorno de chamada, que no processo de trabalho será transferido descritors encontrou janelas como parâmetros Ao combinar as funções de enumeração, obtendo e analisando as propriedades das janelas no procedimento de retorno de chamada, você pode encontrar descritor o necessário janelas. A documentação para as funções descritas é dada emlinks: - EnumWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: http://msdn.microsoft.com/ en-us / library / janelas / desktop / ms633494% 28v = VS.85% 29.aspx; - EnumThreadWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633495%28v=vs 0,85% 29.aspx.


4


Obter descritor janelas de coordenadas conhecidas. Funções WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx return descritorA função windowsFromPoint é a mais fácil de usar, mas não retorna descritorJanelas ocultas e desativadas. em sua documentação aplicativo é o elo http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint e encontrar ChildWindowFromPointEx descritors filhos do pai especificado janelas, pertencendo a um determinado ponto. Assim comportamento ChildWindowFromPointEx pode ser flexivelmente controlada usando um parâmetro adicional. Documentação para estas funções são fornecidas nos links: - ChildWindowFromPoint: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: http: // msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.



Dica 2: Como reconhecer o identificador


Descritor Janela ou Janela do Handle, - específicaUm identificador emitido pelo sistema operacional para a janela durante sua criação. Se por algum motivo você precisar conhecer o descritor de sistema de uma janela (por exemplo, ao escrever um aplicativo), isso pode ser feito usando o programa HWND.



Como reconhecer o identificador


Você precisará



  • - programa HWND.


Instruções


1


Localize este aplicativo por meio de mecanismos de pesquisana Internet e faça o download para o seu computador. Este programa é um aplicativo gratuito desenvolvido pelo programador Pavel Lesnikov. Antes de descompactar o arquivo com o programa, verifique os dados baixados com o software antivírus. Descompacte o arquivo com o programa. Execute o utilitário clicando no arquivo WHD.exe duas vezes. A janela do programa tem uma interface simples: controles e um campo para exibir descritores. Se você não tiver um arquivador, baixe da Internet um programa chamado Win Rar.


2


Coloque o interruptor na posição "Docursor "e pressione CapsLock no teclado. Após essa operação, os identificadores de todas as janelas pelas quais o cursor do mouse passa são exibidos automaticamente no campo de saída dos descritores. Para desativar este procedimento, clique em CapsLock novamente. Digite a classe da janela cujo descritor você deseja conhecer.


3


Clique no botão "OK" e o campo abaixo aparecerá.ID de pesquisa. Para fechar a janela do programa, clique na cruz no canto superior direito. Para entrar em contato com o desenvolvedor do programa, acesse http://vokinsel.dviger.com. Você será capaz de obter conselhos em tempo real, bem como aprender sobre a disponibilidade de novas versões do software.


4


Este utilitário não requer instalação e muitofácil de usar. Os identificadores de janela obtidos desta maneira podem ser usados ​​posteriormente em outros aplicativos para acessar janelas de serviço do Windows e janelas de programas em execução. Se você não souber usar esses programas, leia a ajuda. Normalmente, os desenvolvedores descrevem os princípios básicos de trabalhar com programas.




Dica 3: Como obter o manuseio


Interface de programação de aplicativosOs sistemas operacionais da família Windows são representados por um conjunto de funções. Quando são chamados, vários objetos (arquivos, processos, threads, objetos de sincronização, etc.) podem ser criados. Para garantir um acesso razoavelmente abstrato e unificado a esses objetos, sua identificação é feita usando descritores - valores numéricos "impessoais".



Como obter o punho


Você precisará



  • - tradutor de uma linguagem de programação que permite o uso da API do Windows;
  • - talvez o SDK da plataforma do Windows.


Instruções


1


Obtenha os descritores de janela.Isso pode ser feito de muitas maneiras. O método específico depende da função API tseli.Ispolzuyte CreateWindow final ou CreateWindowEx para criar a janela. Eles retornam uma alça sobre o sucesso e NULL se procurar neudachi.Proizvedite janelas de nível superior e janelas filho em vários parâmetros usando o FindWindow e funções FindWindowEx respectivamente. Se for bem sucedido, a pesquisa irá obter uma alça okna.Perechislyayte janela EnumWindows funções, EnumChildWindows, EnumThreadWindows. Descritores encontrados janelas será passado como um parâmetro identificador de janela vyzova.Naydite localizado em uma posição específica na tela reversa. Fazer uma chamada para uma das funções: WindowFromPoint, ChildWindowFromPoint ou ChildWindowFromPointEx.


2


Obter descritores de processo.Criar um novo processo, chamando o CreateProcess função API, CreateProcessAsUser, CreateProcessWithTokenW ou CreateProcessWithLogonW. Todos eles retornar um identificador para um novo processo na estrutura do tipo PROCESS_INFORMATION campo hProcess, um ponteiro para o qual deve ser transmitida a eles último identificador processo parametrom.Naydite de seu identificador bem conhecido. Use chamar OpenProcess. Identificações de todos os processos em execução pode ser obtido, por exemplo, utilizando funções CreateToolhelp32Snapshot, e Process32First Process32Next Biblioteca Ferramenta Help.Izvlekite pseudo-descritor do processo actual, utilizando a função GetCurrentProcess.


3


Obtenha os descritores de thread.As funções CreateThread e CreateRemoteThread criam threads em seus próprios processos e outros, respectivamente, retornando seus descritores. Para abrir um fluxo existente usando seu identificador, tendo recebido um descritor correspondente, é possível por meio da função OpenThread. O pseudo-descritor do fluxo atual é retornado quando o GetCurrentThread é chamado.


4


Descritores para arquivos, diretórios físicosdiscos, volumes em discos, consoles, recursos de comunicação (portas de entrada e saída), caixas de correio, e pipes nomeados podem ser obtidas pelo telefone uma única função - CreateFile.


5


Os descritores de arquivo para objetos de exibição de arquivo são retornados ao chamar CreateFileMapping e OpenFileMapping.


6


As funções CreateMutex, CreateSemaphore eCreateEvent é criado e as funções OpenMutex, OpenSemaphore e OpenEvent abrem objetos de sincronização existentes (exclusões mútuas, semáforos e eventos). Todos eles retornam descritores.


7


Manipulação de todos os objetos GDI (comocontextos de dispositivo, fontes, escova, lápis, hardware raster georreferenciados dependentes e independentes, DIB-secções, etc.) são produzidos por meio dos seus descritores. Função para criar objetos GDI são numerosas e para a obtenção de informações sobre eles devem consultar a seção apropriada MSDN.


8


Um descritor obtido em um processo, comoregra, não pode ser usado em outro. No entanto, em alguns casos, é possível obter um descritor-duplicado correspondente ao objeto principal. Chame a função de API DuplicateHandle para implementar o descritor duplicado. Isso pode ser usado, por exemplo, para implementar o uso simultâneo de objetos ou canais de sincronização sem nome por vários processos.