Trocando o Papel de Parede do Windows
Para trocar o papel de parede (wallpaper) do Windows via código, 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 parâmetro Formato deverá ser wpLadoALado para o papel de parede ficar lado a lado, ou
wpCentralizado para ficar centralizado.
terça-feira, 16 de setembro de 2008
Trocando o Papel de Parede do Windows com delphi
Testando drive de disquete com delphi
function TForm1.TemDiscoNoDrive(const drive : char): boolean;
var
DriveNumero : byte;
EMode : word;
begin
result := false;
DriveNumero := ord(Drive);
if DriveNumero >= ord('a') then
dec(DriveNumero,$20);
EMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
if DiskSize(DriveNumero-$40) <> -1 then
Result := true
else
messagebeep(0);
finally
SetErrorMode(EMode);
end;
end;
Utilize a função assim:
procedure TForm1.Button1Click(Sender: TObject);
begin
if TemDiscoNoDrive('a') then
ShowMessage('Tem disco no drive A:')
else
ShowMessage('Não tem disco no drive A:');
end;
Habilitando e Desabilitando o Ctrl+Alt+Del e o Alt+Tab com delphi
Para desabilitar o Ctrl+Alt+Del, o Alt+Tab e o Ctrl+Esc, utilize a seguinte rotina:
procedure TNomeDoForm.ButtonNameClick(Sender: TObject);
var
Numero : Integer;
begin
SystemParametersInfo (97, Word (True), @Numero, 0);
end;
E para reabilitar, utilize a rotina abaixo:
procedure TNomeDoForm.ButtonName2Click(Sender: TObject);
var
Numero : Integer;
begin
SystemParametersInfo(97, Word (False), @Numero, 0);
end;
Formatar um disquete através de um programa Delphi
{ Coloque o código abaixo imediatamente abaixo da palavra
implementation: }
const
SHFMT_ID_DEFAULT = $FFFF;
{ Opções de formatação }
SHFMT_OPT_QUICKFORMAT = $0000; { Formatação rápida }
SHFMT_OPT_FULL = $0001; { Formatação completa }
SHFMT_OPT_SYSONLY = $0002; { Copia sistema }
{ Códigos de errros }
SHFMT_ERROR = $FFFFFFFF; { Ocorreu erro }
SHFMT_CANCEL = $FFFFFFFE; { Foi cancelado }
SHFMT_NOFORMAT = $FFFFFFFD; { Não formatou }
function SHFormatDrive(Handle: HWND; Drive, ID, Options: Word):
LongInt; stdcall; external 'shell32.dll' name 'SHFormatDrive'
{ Coloque um botão no form e altere o evento OnClick dele
conforme abaixo: }
procedure TForm1.Button3Click(Sender: TObject);
var
Erro: DWord;
Msg: string;
begin
Erro := SHFormatDrive(Handle, 0, SHFMT_ID_DEFAULT, SHFMT_OPT_QUICKFORMAT);
case Erro of
SHFMT_ERROR: Msg := 'Ocorreu um erro.';
SHFMT_CANCEL: Msg := 'A formatação foi cancelada.';
SHFMT_NOFORMAT: Msg := 'Não foi possível formatar.';
else
Msg := 'Disco formatado com sucesso.';
end;
ShowMessage(Msg);
end;
Observações
Para formatação completa troque SHFMT_OPT_QUICKFORMAT por SHFMT_OPT_FULL. O segundo parâmetro (zero no exemplo) indica a unidade, sendo que A é 0 (zero), B é 1, etc.
Fechar outro programa usando o delphi
begin
PostMessage(FindWindow(nil, 'Calculadora.exe'), WM_CLOSE,0,0);
end;
Para desligar, reiniciar, resetar ou dar logout no windows com delphi
Fechando o Windows
Para desligar, reiniciar, resetar ou dar logout no sistema, use a função ExitWindowsEx, como
abaixo:
ExitWindowsEx (uFlags, 0);
onde uFlags é o tipo de reinicialização que vai ocorrer.
Valores de uFlags:
Valor
Significado
EWX_FORCE
Força todos os processos a terminar. Ao invés de aparecer a
mensagem "A aplicação não está respondendo", ele força o
programa que não responde a finalizar.
EWX_LOGOFF
Faz "logout" do sistema, ou seja, volta à tela de login (a que
pede nome e senha)
EWX_POWEROFF
Desliga o computador (caso o computador não 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 usuário que é seguro
desligar o computador.
A função retorna True se funcionar, ou False em outro caso (bem, se funcionar você vai ver o
computador sendo desligado, não?).
Usuários NT: verifique se o usuário tem o direito a desligar o computador em sua lista de
privilégios.
Fazer a barra de título ficar piscar com delphi
Inclua na seção uses: Windows
{ Coloque um TTimer no Form desejado. Define a propriedade
Interval do Timer para 1000 (1 segundo). Modifique
o evento OnTimer do Timer conforme abaixo: }
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FlashWindow(Handle, true);
FlashWindow(Application.Handle, true);
end;