Mostrando postagens com marcador windows. Mostrar todas as postagens
Mostrando postagens com marcador windows. Mostrar todas as postagens

Adicionar ícone em executável usando C/C++

0 comentários
English version at:
link

Olá,

Fiquei mais de um mês sem fazer um post por estar pensando em uma idéia diferente para publicar no blog.

Finalmente, ela apareceu.

Todos os compiladores que já usei adicionam o ícone padrão quando um executável é gerado. Por uma questão de design, venho procurado um modo de que um executável gerado tenha um ícone próprio.

Realizei a façanha em C/C++ no Windows.

Programas C/C++ podem utilizar um arquivo de recursos. Este é um arquivo texto escrito manualmente pelo programador. Nele podem ser armazenadas informações que serão inseridas no executável e.g: Descrição, Empresa, Versão... e o nome do arquivo de ícone.

Passos:
1-) O arquivo de ícone deve ter extensão .ico (usaremos o nome "im.ico")
2-) Crie o arquivo de recursos com extensão .rc (usaremos o nome "recTeste.rc")
3-) No arquivo de recursos insira as seguintes linhas:

#include <winver.h>

MEUAPLIC ICON DISCARDABLE "im.ico"

1 VERSIONINFO
FILEVERSION 3,3,0,0
PRODUCTVERSION 3,3,0,0
#ifdef _DEBUG
FILEFLAGS 0xbl
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "GenericCompany\0"
VALUE "FileDescription", "GenericApplication\0"
VALUE "FileVersion", "1.0\0"
VALUE "InternalName", "1.0\0"
VALUE "LegalCopyright", "Copyright \251 Generic Company. 1997\0"
VALUE "LegalTrademarks", "Generic Trademark.\0"
VALUE "OriginalFilename", "\0"
VALUE "ProductName", "Generic Application.\0"
VALUE "ProductVersion", "1.0\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

4-) Crie um arquivo "recTesteLib.rc" com o seguinte conteúdo.
#include "recTeste.rc"

5-) Utilize a seguinte sintaxe no programa windres.exe (vem junto com o Devian) para transformar o arquivo texto em um binário apropriado para ser usado pelo gcc:
windres -i recTesteLib.rc --input-format=rc -o recTesteLib.res -O coff

6-) Compile o seu fonte com o gcc utilizando a seguinte sintaxe:
gcc fonte.c recTesteLib.res -o "fonte"

Pronto!

Além do ícone no executável, veja que as informações de recursos foram inseridas no executável. Para ve-las, selecione o executável e pressione com com o botão direito do mouse e vá em propriedades e clique na aba "Versão".


Observações:
1-) Se não quiser ter todo esse trabalho, basta criar o arquivo de recursos em formato texto e adiciona-lo como parte de um projeto no Devian. Ele irá poupa-lo de escrever todos esses comandos.
2-) Não explicarei os comandos do programa windres para que o post não fique longo. Em caso de curiosidade vá no seguinte link
3-) Os arquivos de recursos tem muitas utilidades, dentre elas está a fácil adição de componentes gráficos em um Windows Frame. Quando aprender mais sobre esse assunto farei um post.

Restrição de memória do DOS

0 comentários
Olá,

Quando a microsoft fornecia DOS 5.x a restrição de memória era de 1 Mb. Devido a isso, o s.o era acusado injustamente de ser extrememente limitado, mas, vou mostrar que não é limitação dele e sim do PC.

O PC possuia um registrador de segmento de 16 bits e um de deslocamento de 16 bits Assim, ele pode referenciar 65536 endereços e cada um com 16 bits. logo, 1048576
(65536 * 16) posições de memória poderiam ser referenciadas, equivalendo a 1 Mb.

Atualmente, o tipo DWORD de 32 bits do Windows pode referenciar mais de 4 Gb de RAM.

Desligar computador a Distância no Windows usando Java

0 comentários
Hoje, pensei em uma idéia para desligar meu computador a distância. Consegui e a técnica é bem simples.

Primeiro, no computador que será desligado é necessário que algum código que estabeleça uma conexão em uma porta qualquer (acima da porta 1024) a fim de aguardar a ordem de desligamento.

O desligamento é feito pelo comando "shutdown.exe" do Windows (está na pasta c:\WINDOWS\system32\)

Então, criei uma classe que estabelece uma conexão por TCP na porta 10001. E ela espera somente duas "frases".

Frase 1 - Senha para o desligamento
Frase 2 - argumentos para o desligamento

A senha é importante para que nenhum outro código (além do seu) desligue a máquina.
Os argumentos para o desligamento são os mesmos do comando "shutdown.exe".

A classe que dá a ordem para desligar deve enviar a senha e os argumentos para a porta do computador a ser desligado. E pronto.

A classe ShutListener é o ouviente para ordem. Deixa-a rodando na máquina que vc pretende desligar.

A classe ShutLauncher é o disparador.

p.s: Uso de ShutLauncher

Abra o terminal e vá aonde o .class está e execute
java ShutLauncher 111.111.111.111 -r

O primeiro argumento é o ip da máquina a ser desligado e -r fará com que seja aberta uma janela dizendo o Windows será encerrado dentro 30 segundos.

Argumentos que podem ser passados:
-Abra o terminal e digite: shutdown /?
-Este artigo pode ajudar: link

Comentários:
- Você pode facilmente adaptar para o Linux.
- TCP é usado para garantir que as mensagens enviadas sejam recebidas, pois, TCP implementa transporte confiável. Eu poderia ter usado UDP e implementar o transporte confiável, mas, não estava com disposição para isso.

Arquivo .bat

1 comentários

English version at the following link:


enprogramminghome.blogspot.com

Um .bat é arquivo texto que podem ser inseridos comandos para serem rodados pelo interpretador do DOS (No Unix/Linux nunca testei um .bat). Quais comandos podemos inserir? Comandos padrões do DOS, nomes de arquivos (incluindo o caminho para diretórios diferentes) e conteúdo da variável path.

Exemplo:
Suponha que no diretório que você está trabalhando contém o arquivo Registro.java, que imprime na tela um registro qualquer, e queremos compila-lo, executá-lo, redericionarmos a saída para "sai.txt" e abrir este último arquivo. Ao invés de fazermos isso manualmente podemos criar o arquivo test.bat com o seguinte conteúdo:

javac Registro.java
java Registro > sai.txt
sai.txt

---FIM---Não incluir essa linha no arquivo

Quando clicarmos em test.bat ou roda-lo por linha de comando tudo será feito automaticamente!!
Isso implica em aumento de produtividade.
Podemos fazer isso para simular um executável de Java. Basta inserirmos no arquivo:
java NomeDaClasse

Não é uma solução que um .exe proporciona, mas é melhor do que ir no prompt e digitar o comando do interpretador.

Ratings:

Avaliação deste artigo

Copyright © Programming @ home