Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C++ ::: Win32 API (Windows API) ::: Formulários e Janelas

Usando a função EnumWindows() da API do Windows para retornar uma lista das janelas visíveis

Quantidade de visualizações: 7898 vezes
A função EnumWindows() é usada quando precisamos obter uma lista de todas as janelas de nível alto (top-level) visíveis na tela (ainda que minimizadas ou sobrepostas pelas janelas de outros programas).

Esta função opera juntamente com uma função de CALLBACK EnumWindowsProc() que deve ser fornecida por nossos programas C++. Veja o protótipo da função EnumWindows():

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

BOOL EnumWindows(
   WNDENUMPROC lpEnumFunc,......


Veja que o primeiro parâmetro da função é um ponteiro para a função de callback definida em nossa própria aplicação. Esta função de callback é chamada uma vez para cada janela encontrada. O segundo parâmetro é um valor a ser fornecido também por nossa aplicação. Geralmente fornecemos o valor 0 para este parâmetro.

Veja agora o protótipo da função de callback EnumWindowsProc():

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

BOOL CALLBACK EnumWindowsProc(
  HWND hwnd,......


Esta função de callback possui dois parâmetros. O primeiro (hwnd) guarda o handle para a janela encontrada na iteração atual. O segundo parâmetro (lParam) é o valor fornecido à função EnumWindows() no momento de sua chamada. Para continuar e exibir os dados da próxima janela, a função de callback deve retornar TRUE. Para interromper a listagem, basta retornar o valor FALSE.

Veja um programa no qual listamos todas as janelas visíveis na tela, incluindo seu handle, id do processo, título e caminho e nome do executável:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <psapi.h>

/*
  Este exemplo usa o header <psapi.h>
  É necessário fazer uma referência à psapi.lib 
*/

using namespace std;

// função de CALLBACK usada para listar todas as janelas
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){
  CHAR temp[255];
  DWORD dwThreadId, dwProcessId;
  HINSTANCE hInstance;
  HANDLE hProcess;

  if(!hWnd)
    return TRUE; // não é uma janela
  if(!IsWindowVisible(hWnd))
    return TRUE; // é janela, mas não está visível
  if(!SendMessage(hWnd, WM_GETTEXT, sizeof(temp), (LPARAM)temp))
    return TRUE; // é janela, está visível, mas não possui título

  // obtém o handle da instância da janela
  hInstance = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
  // obtém o id da thread que criou este processo
  dwThreadId = GetWindowThreadProcessId(hWnd, &dwProcessId);
  // abre o processo......


Note que alguns programadores C/C++ fornecem o valor NULL como segundo argumento para uma chamada à EnumWindows(). No Dev-C++ 4.9, teremos uma mensagem de advertência se fizermos isso. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

[Warning] passing NULL used for non-pointer converting 2 of ......


Link para compartilhar na Internet ou com seus amigos:

Vamos testar seus conhecimentos em Java

Analise o seguinte código Java

double a = 0.0 / 0;
System.out.println(a);

Qual é o resultado de sua execução?

A) Infinity

B) NaN

C) Uma exceção java.lang.ArithmeticException: / by zero

D) 0
Verificar Resposta Estudar Cards

Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Os materiais e os sistemas construtivos e estruturais têm, no último século, apresentado uma enorme evolução, com inúmeras tecnologias inovadoras. Contudo, se recuarmos há 125 anos atrás, a história da arquitetura anterior a esta época estaria restrita às construções utilizando poucos materiais. Assinale abaixo a opção que melhor representa estes materiais:

Selecione a resposta:

A) Alvenaria e madeira.

B) Madeira e aço.

C) Madeira e pedra.

D) Tijolo e madeira.

E) Tijolo e aço.
Verificar Resposta Estudar Cards

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 56.21
print("Valor: %.5d" % valor)

A) Valor: 00056

B) Valor: 21

C) Valor: 00056.21

D) Valor: 56

E) Valor: 6.2100
Verificar Resposta Estudar Cards

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 5
contador = 0
while valor < 20:
  valor = valor + 3
  contador = contador + 1

print("O laço while repetiu {0} vezes.".format(contador))

A) O laço while repetiu 7 vezes.

B) O laço while repetiu 6 vezes.

C) O laço while repetiu 4 vezes.

D) O laço while repetiu 5 vezes.

E) O laço while repetiu 8 vezes.
Verificar Resposta Estudar Cards

Vamos testar seus conhecimentos em JavaScript

Analise o seguinte código JavaScript

var a = new Array();
var b = new Array();
a[1] = 3;
b[2] = 5;
a = b;

Quais valores estão contidos em a[1] e a[2] depois da execução deste código?

A) a[1] é 3 e a[2] é 5.

B) a[1] é indefinido e a[2] é 5.

C) ambos a[1] e a[2] são indefinidos.

D) A execução deste código provoca um erro.
Verificar Resposta Estudar Cards

C++ ::: STL (Standard Template Library) ::: Vector C++

Como criar um vector de strings em C++, inserir alguns nomes usando a função push_back() e percorrê-los usando um iterador

Quantidade de visualizações: 10954 vezes
Se você tem pouca experiência com a classe container vector da STL (Standard Template Library), este exemplo o ajudará um pouco. Aqui eu mostro como criar um vector de strings em C++, inserir alguns nomes nele usando a função push_back() e depois percorrê-los individualmente usando um iterador.

Veja o código C++ completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]){
  // um vector vazio que conterá strings
  vector<string> nomes;

  // vamos inserir três nomes
  nomes.push_back("Osmar J. Silva");
  nomes.push_back("Carlos de Souza");
  nomes.push_back("Maria Dias de Carvalho");
......


Ao executar este código C++ nós teremos o seguinte resultado:

Osmar J. Silva
Carlos de Souza
Maria Dias de Carvalho


C++ ::: Fundamentos da Linguagem ::: Estruturas de Controle

Como usar o laço do...while da linguagem C++ - Apostila C++ para iniciantes

Quantidade de visualizações: 24432 vezes
O laço do..while é usado quando queremos executar um bloco de códigos repetidamente ENQUANTO uma condição for satisfeita. Porém, ao contrário do laço while, o laço do..while é sempre executado no mínimo uma vez, visto que a condição é testada antes da segunda interação, ou seja, o teste só ocorre no final da interação atual. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

do{
  bloco de instruções
......


Veja um exemplo de um laço do..while que conta de 10 à 0:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <string>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // um laço do..while que conta de
  // 10 até 0
  int valor = 10;

  do{
......



C++ ::: Fundamentos da Linguagem ::: Tipos de Dados

Como usar o tipo de dados size_t da linguagem C++

Quantidade de visualizações: 15362 vezes
O tipo size_t é definido no arquivo stddef.h e em outros headers, e sua definição pode ser encontrada da seguinte forma:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

typedef unsigned long size_t; 
......


Este tipo é usado para definir tamanhos de strings e blocos de memória. Foi proposto pelo ANSI C.

É comum encontrar size_t substituindo unsigned int ou unsigned long. Muito frequente também é ver este tipo recebendo o resultado de uma chamada ao operator sizeof. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <iostream>

using namespace std;

int main(){
  // vamos obter a quantidade de bytes em um int
  size_t tam = sizeof(int);
......


Ao executarmos este código nós teremos o seguinte resultado:

Um inteiro nesta arquitetura contém: 4 bytes


Desafios, Exercícios e Algoritmos Resolvidos de C++

Veja mais Dicas e truques de C++

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais


© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 76 usuários muito felizes estudando em nosso site.