O conceito de interface do usuário no Windows é baseado no conceito de janela. Diálogos, botões, painéis de controle, listas são todas janelas. Portanto, para executar qualquer ação com qualquer elemento da interface do seu próprio aplicativo ou do aplicativo de outra pessoa, você precisa obter um identificador de janela.
Necessário
- - Pacote de plataforma SDK;
- - compilador.
Instruções
Passo 1
Obtenha a alça da janela criando-a. Faça chamadas para as funções de API CreateWindow ou CreateWindowEx ou chame os métodos de wrapper apropriados (nos objetos necessários) das classes da estrutura ou biblioteca usada que encapsulam a funcionalidade de trabalhar com janelas ou controles. As funções CreateWindow e CreateWindowEx retornam diretamente o identificador de janela na criação bem-sucedida. Se chamados sem sucesso, eles retornam NULL. O código de razão do erro pode ser solicitado usando a função API GetLastError. Protótipos e descrições detalhadas dos parâmetros das funções CreateWindow e CreateWindowEx podem ser obtidos nos links https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx e https:// msdn.microsoft.com / en-us / library / windows / desktop / ms632680% 28v = vs.85% 29.aspx Ao usar classes de estruturas diferentes, a criação de objetos de janela do sistema operacional pode ocorrer explicitamente (chamando um método) ou implicitamente (implementação da estratégia RAII). Portanto, é melhor obter o identificador da janela em um objeto inicializado pronto. Você pode aprender sobre os métodos das classes que retornam o identificador de janela encapsulado pelo objeto na documentação da estrutura correspondente. Por exemplo, no MFC, um método semelhante é GetSafeHwnd da classe CWnd.
Passo 2
Pegue uma alça em uma janela procurando por ela. Use as funções FindWindow e FindWindowEx API ou os wrappers de objeto de classe apropriados para a estrutura que você está usando. FindWindow retorna um identificador para a janela de nível superior se encontrada, ou NULL em caso de falha. A pesquisa é realizada por nome da classe e título da janela. A descrição dos parâmetros e aspectos da função pode ser encontrada no link https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx. a função FindWindowEx é semelhante a FindWindow com a única diferença é que ela procura janelas filho. A documentação para FindWindowEx está disponível em
etapa 3
Encontre a alça da janela enquanto relaciona seus conjuntos. Use as funções de API EnumWindows, EnumChildWindows, EnumThreadWindows ou métodos de objetos de classe da estrutura que você está usando. As funções EnumWindows e EnumChildWindows enumeram as janelas de nível superior e janelas filho, respectivamente. A função EnumThreadWindows enumera todas as janelas não filhas do thread especificado. Cada uma dessas funções deve receber um ponteiro para um procedimento de retorno de chamada, que receberá os identificadores das janelas encontradas como parâmetros durante a operação. Combinando funções de enumeração, obtendo e analisando propriedades de janela no procedimento de retorno de chamada, você pode encontrar o identificador de a janela necessária. A documentação para as funções descritas é fornecida nos links: - EnumWindows: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms633494%28v=vs.85%29.aspx; - EnumThreadWindows: https://msdn.microsoft.com/en-us/library / windows / desktop /ms633495%28v=vs.85%29.aspx.
Passo 4
Obtenha uma alça para uma janela em coordenadas conhecidas. As funções WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx retornam identificadores para as janelas às quais o ponto especificado pertence. A função WindowFromPoint é a mais fácil de usar, mas não retorna identificadores para janelas ocultas ou desabilitadas. Você pode encontrar a documentação sobre seu uso em https://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx. As funções ChildWindowFromPoint e ChildWindowFromPointEx localizam identificadores para o filho janelas de uma determinada janela pai pertencente a um determinado ponto. Nesse caso, o comportamento de ChildWindowFromPointEx pode ser controlado de forma flexível usando um parâmetro adicional. A documentação para essas funções é fornecida pelos links: - ChildWindowFromPoint: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: https:// msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.