Fechando o WindowsPara desligar, reiniciar, resetar ou dar logout no sistema, use a funcao ExitWindowsEx, comoabaixo:ExitWindowsEx (uFlags, 0); onde uFlags e o tipo de reinicializacao que vai ocorrer. Valores de uFlags: Valor Significado EWX_FORCE Forca todos os processos a terminar. Ao inves de aparecer a mensagem "A aplicacao nao esta respondendo", ele forca o programa que nao responde a finalizar. EWX_LOGOFF Faz "logout" do sistema, ou seja, volta a tela de login (a que pede nome e senha) EWX_POWEROFF Desliga o computador (caso o computador nao tenha o recurso de auto-desligamento, ele fecha todos os programas e informa que o sistema pode ser desligado). EWX_REBOOT Reinicializa o computador (o equivalente a pressionar Ctrl+Alt+Del) EWX_SHUTDOWN Fecha todos os programas e informa ao usuario que e seguro desligar o computador. A funcao retorna True se funcionar, ou False em outro caso (bem, se funcionar voce vai ver ocomputador sendo desligado, nao?). Usuarios NT: verifique se o usuario tem o direito a desligar o computador em sua lista deprivilegios. Trocando o Papel de Parede do WindowsPara trocar o papel de parede (wallpaper) do Windows via codigo, use a seguinte procedure:type WallPaperFormat = (wpLadoALado, wpCentralizado);procedure SetWallPaper (Arquivo : String; Formato : WallPaperFormat);var Reg : TRegIniFile;begin Reg := TRegIniFile.Create ('Control Panel\Desktop'); Reg.WriteString ('', 'Wallpaper', Arquivo); if Formato = wpLadoALado then Reg.WriteString ('', 'TileWallpaper', '1'); else Reg.WriteString ('', 'TileWallpaper', '0'); Reg.Free; SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, nil,SPIF_SENDWININICHANGE);end;O parametro Formato devera ser wpLadoALado para o papel de parede ficar lado a lado, ouwpCentralizado para ficar centralizado. Fechar outro programa procedure TForm1.Button1Click(Sender: TObject);beginPostMessage(FindWindow(nil, 'Calculadora.exe'), WM_CLOSE,0,0);end; Evitar que um programa seja executado mais de uma vez{ Muitos programas Windows permitem apenas uma copia em execucao de cada vez. Isto e interessante principalmente quando e um grande aplicativo, pois duas copias ao mesmo tempo usuaria muito mais memoria. Em aplicativos desenvolvidos em Delphi podemos ter esta caracteristica. Vejamos: - Crie um novo projeto; - Mude o "Name" do Form1 para DPGFormPrinc; - Altere o codigo-fonte do arquivo Project1.dpr conforme abaixo: }program Project1;uses Forms, Windows, Unit1 in 'Unit1.pas' {DPGFormPrinc};{$R *.RES}var Handle: THandle;begin Handle := FindWindow('TDPGFormPrinc', nil); if Handle <> 0 then begin { Ja esta aberto } Application.MessageBox('Este programa ja esta aberto. A copia ' + 'anterior sera ativada.', 'Programa ja aberto', MB_OK); if not IsWindowVisible(Handle) then ShowWindow(Handle, SW_RESTORE); SetForegroundWindow(Handle); Exit; end; Application.Initialize; Application.CreateForm(TDPGFormPrinc, DPGFormPrinc); Application.Run;end.ObservacoesPara testar este programa voce devera compilar o projeto e fechar o Delphi. Depois, procure o Project1.exe (projeto compilado) usando o Windows Explorer e tente executa-lo mais de uma vez e veja o que acontece. Mas porque alterar o name do form principal para "DPGFormPrinc"? Este poderia ser qualquer outro nome, mas preferi usar as iniciais do meu nome (DPG). Procurei deixar um nome bem pessoal para nao correr o risco de colocar um nome que possa ser encontrado em outro aplicativo do Windows. Por exemplo: se deixar Form1, sera bem facil encontrar outro aplicativo feito em Delphi que possua uma janela com este nome, o que causaria problema. Formatar um disquete atraves de um programa Delphi{ Coloque o codigo abaixo imediatamente abaixo da palavra implementation: }const SHFMT_ID_DEFAULT = $FFFF;