terça-feira, 29 de abril de 2008

Como fazer sua aplicação iniciar junto com o Windows?

Olá,

essa dica é interessante e fácil. Aqui vou ensinar como fazer sua aplicação iniciar junto do Windows, ou seja, quando você entra no Windows vários programas, geralmente, se iniciam junto. Um bom exemplo desses programas são os antivírus. Enfim, iniciar seu programa junto com o Windows é fácil:

1º passo: Declarar a unit Registry na cláusula Uses.

Assim:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Registry;

2º passo: Digitar o código abaixo no Evento OnCreate (ou em algum outro lugar que você queira).

Assim:

procedure TForm1.FormCreate(Sender: TObject);
var
Reg: TRegistry;
begin
CriaIcone;
try

// Inicializa a variavel do tipo TRegistry
Reg:= TRegistry.Create;

// Define a hirearquia das pasta, a qual irá trabalhar.
Reg.RootKey:= HKEY_LOCAL_MACHINE;

// Cria/entra, dentro da pasta do registro no qual irá aguardar informação
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False);

// Escreve a informção na chave
// NomeDaChave, pode ser qualquer nome que você queira
Reg.WriteString('NomeDaChave', Application.ExeName);

// Fecha a chave do registro
Reg.CloseKey;
Finally
Reg.Free;
end;
end;

Obs: Este código acima faz com que ele cria uma chave de registro que faz com que inicie o seu programa junto com o Windows. Então se você quiser que ele faça isso apenas quando o usuário selecionar uma opção coloque este código, não no evento OnCreate, mas sim aonde desejar.

Abraços,

Imdm

Como colocar sua aplicação no Tray?

Olá, caros programadores,

acho que esse post irá ajudar muita gente a resolver um problema em DELPHI que vem atormentando a muita gente. Esse mesmo problema ficou me chateando por um bom tempo, mas no final das contas eu aprendi a lidar com ele e digo: é fácil vencê-lo. Bem, estou inspirado, mas irei direto ao assunto. O que ensinarei a fazer agora, em DELPHI, é como colocar seu programa no Tray (veja este post para saber o que é tray: http://imdm94.blogspot.com/2008/04/o-que-tray.html).
Um exemplo de como fica utilizando os passos que irei informar é visto no programa Despertador desenvolvido por mim e que será postado em breve neste blog. Vamos começar então:

1º passo: declarar na cláusula Uses a Unit ShellApi.

Fica mais ou menos assim:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Registry, ShellApi;

2º passo: abaixo da cláusula Uses declarar a constante
const WM_TRAYICON=WM_USER+1;

Assim:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Registry, ShellApi;

const WM_TRAYICON=WM_USER+1;

3º passo: na clásula private digite as procedures a seguir:

...
private
{ Private declarations }
{ Tratamento dos Ícones da Aplicação }
procedure WMSysCommand(var Msg: TWMSysCommand); Message WM_SysCommand;
procedure WMTrayIcon(var Msg: TMessage); Message WM_TRAYICON;
procedure DestroyIcone;
procedure CriaIcone;
public
{ Public declarations }
end;

4º passo: Digite a implementação a seguir:

procedure TForm1.CriaIcone;
var
NotifyIconData: TNotifyIconData;
begin
with NotifyIconData do
begin
cbSize:= SizeOf(TNotifyIconData);
Wnd:= Self.Handle;
uID:= 0;
uCallbackMessage:= WM_TRAYICON;
uFlags:= NIF_ICON or NIF_TIP or NIF_MESSAGE;
hIcon:= Application.Icon.Handle;
szTip:= 'Exemplo da utilização do TrayIcon by janbaceiredo';
end;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
Application.ShowMainForm:= False;
end;

procedure TForm1.DestroyIcone;
var
NotifyIconData: TNotifyIconData;
begin
NotifyIconData.cbSize:= SizeOf(TNotifyIconData);
NotifyIconData.Wnd:= Self.Handle;
NotifyIconData.uID:= 0;
NotifyIconData.uFlags:= 0;
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;

{Captura todas as mensagens enviadas para a aplicação.
Neste caso, trabalhamos apenas com as mensagens SC_MINIMIZE e SC_MAXIMIZE, que são enviadas quando devemos Minimizar ou Maximizar o formulario da aplicação. Capturando estas mensagens para esconder o ícone da aplicação da Barra de Tarefas do Windows e para criar / destruir o ícone que ficará ao lado do relógio.

Obs: Você pode trabalhar com outras mensagem também. Tipo SC_CLOSE, SC_RESTORE e etc.}
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
case (Msg.CmdType) of
SC_MINIMIZE: {isso daqui faz com que ao você minimizar a tela ele faça com que o programa em vez de ser minimizado normalmente ele irá para o Tray}
begin
Self.Visible:= False;
CriaIcone;
end;
SC_MAXIMIZE: {isso daqui faz com que ao você maximizar a tela ele não maximize ela mas sim deixá-la como está tornando-a apenas visível}
begin
Self.Visible:= True;
end
else
Inherited
end;
end;

{Quando dar um duplo clique sobre o ícone da aplicação, destruímos este mesmo ícone e exibimos o formulário principal. Isto só funciona se implementarmos um manipulador para as Mensagens WMTrayIcon, que é o que faremos abaixo.

Lembra-se da constante declarada no ínicio de nossa Unit?
Pois bem, ela é passada como parâmetro para esta procedure.}
procedure TForm1.WMTrayIcon(var Msg: TMessage);
var
Pt: TPoint;
begin
if (Msg.LParam = WM_RBUTTONDOWN) then { faz com que ao você clicar com o botão direito do mouse no ícone do seu programa que está no Tray ele faça aparecer um PopupMenu, que nada mais é do que aqueles pequenos retângulos verticais que aparecem quando você clica com o botão direito, por exemplo, num espaço vazio da sua área de trabalho, onde aparecem várias opções. }
begin
GetCursorPos(Pt);
PopupMenu.Popup(Pt.X, Pt.Y);
PopupMenu.AutoPopup:= False;
end
else
if (Msg.LParam = WM_LBUTTONDBLCLK) then {isso daqui deixa seu formulário invisível e envia seu programa para o Tray ao clicar com o botão esquerdo do mouse duas vezes sobre o ícone do seu programa que está no Tray. Para que, em vez de ter que clicar duas vezes, clicar apenas uma vez (isso eu também não encontrei na Internet) você deverá mudar onde está excrito WM_LBUTTONDBLCLK para WM_LBUTTONDOWN.}
begin
Self.Visible:= True;
DestroyIcone;
end;
end;

OBS: Quando for necessário criar ou destruir nosso ícone que fica no Tray, chamaremos as procedures CriaIcone e DestroyIcone respectivamente. A API Shel_NotifyIcon requer um ponteiro para uma variável do tipo TNotifyIconData, declarada na Unit ShellApi.

5º passo: Adicione um componente TPopupMenu e altere seu nome para PopupMenu

Obs: Nesse componente(PopupMenu) você vai adicionar as opções que devem aparecer quando o usuario clicar com o botão direito do mouse sobre o icone da sua aplicação que esta ao lado do relógio.
Exemplo: Sair, Configurações, Opções, Maximixar e etc...

Obs2: Caso você não coloque o componente PopupMenu no seu formulario, isso irá gerar um erro de acesso a memória quando você clicar com o botão direito do mouse sobre o icone da sua aplicação que ficará do lado do relógio do computador.
Sendo assim, não se esqueça de colocar esse componente(PopupMenu).

------------------------------------//--------//--------------------------------------------------


Pronto, acabou. UFA!!! Cansei...

Espero que isso ajude a muitas pessoas e qualquer dúvida ou erro que eu cometi ou segustão ou
erro que deu ao rodar o programa ou outra coisa qualquer é só deixar nos comentários ou me enviar um e-mail: imdm94@hotmail.com

Mais dicas sobre "O seu programa no Tray" nos posts posteriores.

Abraços,

Imdm

Os mesmos problemas de antes...

Olá,

não sei se agora já está tudo certo, mas estavam falando que o blog estava cheio de caracteres estranhos. Mudei algumas coisas na configuração, sumiu, mas depois de um tempo voltou a aparecer. Mudei mais coisas nas configurações, sumiu e pelos menos até agora não aconteceu mais nada. Ouvi dizer que tinha que ir em Configurações > Formatação > Codificação e então colocar em UTF-8 ou algo do gênero. Mas não consegui achar "Codificação". Se o problema voltar a ocorrer por favor me avisem. No meu não aparece nada, mas no de alguns aparece. Quem puder me ajudar, ficarei muito grato.

Desculpem a todos pelo transtorno,

Imdm

Comentários

Olá,

estou escrevendo para avisar que agora vocês podem comentar os posts como anônimos sem precisar de nenhuma conta nem nada. Ao clicar em comentários para comentar um determinado post vai aparecer uma janela pequena. No final dela vai aparecer a seguinte imagem:


Clique em "Anônimo" como indicado na figura acima e pronto. Fácil, não?

Abraços a todos,

Imdm

sexta-feira, 25 de abril de 2008

Problemas...

Olá,

recebi mensagens dizendo estar tendo problemas com a formatação do blog, alegando aparecimento de caracteres estranhos. Tentei modificar algumas configurações do blog, mas não sei se funcionou, por favor me ajudem. Se funcionou ou não me avisem.

Muito obrigado,

Imdm

quarta-feira, 23 de abril de 2008

FavIcon

Olá,

acabo de mudar o FavIcon do blog. Agora a imagem é uma letra I com as cores vermelha e amarela. Se alguém quiser que eu mude o FavIcon é só deixar um comentário ou me mandar um e-mail com a imagem que deseja em anexo.

Para quem não sabe, FavIcon é a contração de Favorite Icon que traduzindo fica Icone do Favorito, pois quando adicionamos uma página ao favorito às vezes aparece um ícone diferente, então, este é o Favorite Icon.

Obs: Para melhor visualizar a imagem clique nela com o botão esquerdo do mouse.

Ps: Eu coloquei a explicação de como mudar o FavIcon em imagem, pois aqui não aceita HTML nos posts. Desculpe pelo incômodo.

Fazer deste blog sua página inicial

Olá,

adicionei um link entre o título deste blog e os posts (as postagens) que ao ser clicado faz deste blog sua página inicial. Então, o que estamos esperando?

Abraços,

Imdm

O que é Tray?

Se você já ouviu falar em Tray e simplesmente não sabia o que significava agora tudo irá mudar. Tray, para explicar de forma bem simples, é onde fica o relógio e vários ícones de programas:

Aqui vai o meu Tray:

Portanto, TrayIcon é o ícone que fica no Tray. Por exemplo, na imagem abaixo, eu circulei o TrayIcon da Internet (ícone de dois computadores):

Exemplo de TrayIcon:


Espero que tenham entendido o que é Tray e TrayIcon. Qualquer dúvida postem como comentário.

Abraços,

Imdm

Em breve...

Olá, pessoal,

em breve chegará a versão 4.3.1.3 BETA do Despertador. Ele está agora cheio de novas funções que o tornarão mais prático e eficiente. Agora, ele, ao ser minimizado, vai direto para o Tray e assim ganha muitas outras funcionalidades. Em breve disponibilizarei ele neste blog.

Abraços,

Imdm

Caixa de Mensagem

Olá a todos,

acabo de adicionar uma caixa de mensagens no fim desta página. Espero que gostem e postem à vontade.

Imdm

terça-feira, 22 de abril de 2008

Contador de Visitas

E ae pessoal,

adicionei um contator lá no final da página. Espero que gostem. Se soubrem alguma dica para este blog ficar melhor e puderem me passar eu agradeço.

Abraços,

Imdm

segunda-feira, 21 de abril de 2008

Despertador

Olá, mais uma vez, pessoal,

Agora o programa que eu vou postar é um utilitário, foi feito em delphi e esta é a versão inacabada, ou seja, haverá outras versões. Nas próximas versões, o programa ficará no Tray. Esse programa é muito útil; espero que gostem.

O link é: http://rapidshare.com/files/109391426/Despertador.zip

Abraços,

Imdm

Jogo da Forca

Olá, denovo, pessoal,

acabo de fazer o upload no RapidShare do meu primeiro jogo. Ele foi feito em Visual Basic e dá para deduzir através do título que se trata de um jogo da forca. Espero que gostem.

O link é: http://rapidshare.com/files/109388972/Jogo_da_Forca.zip.html

Abraços,

Imdm

Bem-vindo

Olá, pessoal,

Acabo de criar meu primeiro blog, na verdade é o segundo, mas isso não vem ao caso. Dedico este blog, principalmente, à postagens sobre programação que é uma área na qual eu estou trabalhando - não que seja minha profissão, mas é porque eu mexo com programação -. Agradeço à todos que me ajudarem e espero ajudar vocês também. Irei postar, neste blog, links para que vocês possam baixar os programas que eu desenvolvi. Postem, também, sugestões ou críticas com relação às aplicações. Postarei também dicas sobre programação que eu vou adquirindo no decorrer do tempo.

Qualquer coisa meu e-mail é: imdm94@hotmail.com.

Abraços a todos,

Imdm