C++ ::: Win32 API (Windows API) ::: Processos |
Como usar a função EnumProcesses() da WinAPI em seus códigos C++ para obter os identificadores de cada processo ativo no WindowsQuantidade de visualizações: 8711 vezes |
A função EnumProcesses() pode ser usada quando queremos obter os ids de todos os processos sendo executados no momento no Windows. Veja o protótipo desta função:BOOL WINAPI EnumProcesses( DWORD* pProcessIds, DWORD cb, DWORD* pBytesReturned ); Esta função possui três parâmetros: a) DWORD* pProcessIds - Um ponteiro para uma matriz que receberá a lista de identificadores dos processos. É importante definir uma matriz um pouco grande, visto que não sabemos de antemão quantos processos serão retornados. b) DWORD cb - O tamanho da matriz pProcessIds em bytes. c) DWORD* pBytesReturned - O números de bytes retornados na matriz pProcessIds. Podemos facilmente saber quantos processos foram encontrados simplesmente dividindo o número de bytes retornados pela quantidade de bytes em um DWORD. Veja um trecho de código no qual listamos os ids de todos os processos sendo executados atualmente.
#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;
int main(int argc, char *argv[]){
DWORD processos[1024]; // vamos listar até 1024 processos
DWORD pBytesReturned; // bytes retornados pela função EnumProcesses()
// vamos listar os processos
EnumProcesses(processos, sizeof(processos), &pBytesReturned);
// quantidade de processos retornados
int retornados = pBytesReturned / sizeof(DWORD);
// agora vamos listar os ids dos processos retornados
for(int i = 0; i < retornados; i++){
if(!processos[i] == 0){
cout << "Processo " << (i + 1) << ": " << processos[i] << endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
O id de um processo pode ser fornecido para muitas funções úteis do Windows, entre elas OpenProcess(). Veja um trecho de código no qual fechamos (forçadamente) um processo mediante o fornecimento de seu id:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[]){
// vamos fechar o processo com o id 3040
// CUIDADO: Verifique o id do processo antes de fechá-lo
// pode ser que você esteja fechando processos essenciais
// para o bom funcionamento do Windows
// vamos abrir o processo desejado
// vai retornar ERROR_INVALID_HANDLE se o processo não
// puder ser aberto
HANDLE hProcesso = OpenProcess(PROCESS_TERMINATE, 0, 3040);
// vamos fechar o processo
if(TerminateProcess(hProcesso, 0)){
cout << "Processo finalizado com sucesso." << endl;
}
else{
cout << "Erro ao finalizar o processo: " <<
GetLastError() << endl;
}
// vamos fechar o handle do processo
CloseHandle(hProcesso);
system("PAUSE");
return EXIT_SUCCESS;
}
|
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Internet, LAN e E-Mail |
Exercícios Resolvidos de Java - Como testar se há um serviço sendo executado em uma porta de um servidor ou máquina localQuantidade de visualizações: 7855 vezes |
|
Pergunta/Tarefa: Este exercício resolvido é sobre Internet, Rede e E-Mail usando programação Java. Escreva um programa Java console ou GUI que peça ao usuário para informar um número de porta na máquina local. Em seguida, tente se conectar a esta porta e informe se há algum serviço sendo executado na porta informada. A entrada e saída do programa pode ser algo como: Informe o número da porta a ser pesquisada: 3306 Há um serviço na porta informada Informe o número da posta a ser pesquisada: 2040 Não há nenhum serviço na porta informada Resposta/Solução: Veja a resolução comentada deste exercício usando Java console:
package estudos;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Socket socket; // vamos declarar um objeto da classe Socket
String host = "localhost"; // define o nome da máquina host
// vamos pedir ao usuário que informe a porta a ser pesquisada
Scanner entrada = new Scanner(System.in);
System.out.print("Informe o número da posta a ser pesquisada: ");
int porta = Integer.parseInt(entrada.nextLine());
// vamos verificar se há algum serviço na porta informada
try{
socket = new Socket(host, porta);
System.out.println("Há um serviço na porta informada");
}
catch (UnknownHostException e) { // não foi possível encontrar a máquina host
System.out.println("Não foi possível encontrar a máquina host: " + e);
}
catch (IOException e) {
System.out.println("Não há nenhum serviço na porta informada");
}
}
}
Veja que, neste exercício, podemos ter o surgimento de duas exceções: UnknownHostException (a máquina informada não pôde ser encontrada) e IOException (houve erro de entrada e/ou saída). Por esta razão, é uma boa idéia envolver o código em um bloco try...catch. |
Java ::: Aplicativos Completos ::: Fontes |
Como criar um visualizador de fontes em Java Swing - Código fonte completoQuantidade de visualizações: 10897 vezes |
|
Código completo Java: Como escrever um visualizador de fontes em Java Swing Nesta dica eu mostro o código completo para uma aplicação GUI usado Java Swing e que permite visualizar as fontes instaladas no sistema. Ao clicar em uma das fontes exibidas em uma JList, o texto da JLabel é formatado de acordo com a fonte escolhida. Note que montei toda a GUI em código mesmo, ou seja, sem usar o editor visual do Netbeans ou outra IDE. Esse é um bom exercício para entender os elementos que compõem interfaces gráficas do Java Swing. Eis o código completo para o exemplo:
package arquivodecodigos;
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
public class Estudos extends JFrame
implements ListSelectionListener{
JLabel label = new JLabel("Observe este texto");
public Estudos(){
super("Visualizados de Fontes");
String[] fontNames; // nomes das fontes
Toolkit toolkit = Toolkit.getDefaultToolkit();
fontNames =
GraphicsEnvironment.getLocalGraphicsEnvironment().
getAvailableFontFamilyNames();
Vector fonts = new Vector();
for(int i = 0; i < fontNames.length; i++){
fonts.add(new Font(fontNames[i], Font.PLAIN, 16));
}
JList fontList = new JList(fonts);
fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
fontList.setCellRenderer(new FontCellRenderer());
JScrollPane scrollPane = new JScrollPane(fontList);
JPanel p = new JPanel();
p.add(scrollPane);
fontList.addListSelectionListener(this);
getContentPane().add(p, "Center");
getContentPane().add(label, "South");
setSize(500, 250);
setVisible(true);
}
@Override
public void valueChanged(ListSelectionEvent evt){
JList source = (JList) evt.getSource();
Font font = (Font) source.getSelectedValue();
label.setFont(font);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
// Classe personalizada que implementa ListCellRenderer
class FontCellRenderer implements ListCellRenderer{
@Override
public Component getListCellRendererComponent(
final JList list, final Object value,
final int index, final boolean isSelected,
final boolean cellHasFocus){
return new JPanel(){
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Font font = (Font) value;
String text = font.getFamily();
FontMetrics fm = g.getFontMetrics(font);
g.setColor(isSelected ? list.getSelectionBackground()
: list.getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(isSelected ? list.getSelectionForeground()
: list.getForeground());
g.setFont(font);
g.drawString(text, 0, fm.getAscent());
}
@Override
public Dimension getPreferredSize() {
Font font = (Font) value;
String text = font.getFamily();
Graphics g = getGraphics();
FontMetrics fm = g.getFontMetrics(font);
return new Dimension(fm.stringWidth(text), fm.getHeight());
}
};
}
}
Ao executá-lo você terá um resultado parecido com: ![]() |
C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como converter radianos em graus na linguagem CQuantidade de visualizações: 6020 vezes |
|
Todos os métodos e funções trigonométricas em C recebem seus argumentos em radianos, em vez de graus. Um exemplo disso é a função sin() do header math.h. Esta função recebe o ângulo em radianos e retorna o seu seno. No entanto, há momentos nos quais precisamos retornar alguns valores como graus. Para isso é importante sabermos fazer a conversão de radianos para graus. Veja a fórmula abaixo: \[Graus = Radianos \times \frac{180}{\pi}\] Agora veja como esta fórmula pode ser escrita em código C:
#include <stdio.h>
#include <stdlib.h>
// vamos definir o valor de PI
#define PI 3.14159265358979323846
int main(int argc, char *argv[]){
// valor em radianos
double radianos = 1.5;
// obtém o valor em graus
double graus = radianos * (180 / PI);
// mostra o resultado
printf("%f radianos convertidos para graus é %f\n\n",
radianos, graus);
system("PAUSE");
return 0;
}
Ao executarmos este código C nós teremos o seguinte resultado: 1.500000 radianos convertidos para graus é 85.943669 Para fins de memorização, 1 radiano equivale a 57,2957795 graus. |
Nossas 20 dicas & truques de programação mais populares |
|
Delphi - Delphi para matemática - Como arredondar valores de ponto-flutuante para cima usando a função Ceil() C - Como calcular a transposta de uma matriz em C - Curso de C para Geometria Analítica e Álgebra Linear |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Java - Como exibir a data e hora atual na linguagem Java usando um objeto Date e seu método toString() C# - Como adicionar ou subtrair meses de uma data em C# usando o método AddMonths() da estrutura DateTime R - R para Matemática e Estatística - Como calcular desvio padrão usando a função sd() da linguagem R |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






