segunda-feira, 13 de julho de 2015

Alterar letra de disco/unidade no Windows - Código fonte em Free Pascal para Lazarus ou Delphi

Segue o código fonte de um pequeno aplicativo para alterar a letra de unidade de um disco rígido, pendrive ou drive de CD/DVD, para Windows. Pode ser compilado no Lazarus ou no Delphi.
Será necessário adicionar os componentes conforme a declaração Type. Não alterei os nomes dos componentes, pois o aplicativo deveria servir apenas para testes.
O código pode ser melhorado, mas já é funcional.
Para rodar depois de compilado, deverá ser executado como administrador(botão direito no executável=>executar como administrador).

unit Unit1;

{$mode objfpc}{$H+}
{$R *.lfm}
interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, JwaWinBase;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation


var
  Drive: Char;
  DriveLetter: string;
  VolumeName : String;
{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (combobox1.ItemIndex = -1) or (ComboBox2.ItemIndex = -1)
  then Showmessage('Selecione todas as opções!') else
    begin
    GetVolumeNameForVolumeMountPoint(Pchar(copy(ComboBox1.Items[ComboBox1.ItemIndex], 1, 3)), Pchar(VolumeName), 50);
    DeleteVolumeMountPoint(Pchar(copy(ComboBox1.Items[ComboBox1.ItemIndex], 1, 3)));
    SetVolumeMountPoint(Pchar(ComboBox2.Items[ComboBox2.ItemIndex]+':\'), Pchar(VolumeName));
    ShowMessage((ComboBox1.Items[ComboBox1.ItemIndex]) + ' alterado para ' + (ComboBox2.Items[ComboBox2.ItemIndex]) + ':\');
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  for Drive := 'A' to 'Z' do
  begin
    DriveLetter := Drive + ':\';
    if GetDriveType(PChar(DriveLetter)) = DRIVE_UNKNOWN then
       ComboBox1.Items.Add(DriveLetter + ' Dispositivo Desconhecido')
    else if GetDriveType(PChar(DriveLetter)) = DRIVE_REMOVABLE then
       ComboBox1.Items.Add(DriveLetter + ' Pendrive')
    else if GetDriveType(PChar(DriveLetter)) = DRIVE_FIXED then
       ComboBox1.Items.Add(DriveLetter + ' Disco Local')
    else if GetDriveType(PChar(DriveLetter)) = DRIVE_REMOTE then
       ComboBox1.Items.Add(DriveLetter + ' Unidade de rede')
    else if GetDriveType(PChar(DriveLetter)) = DRIVE_CDROM then
       ComboBox1.Items.Add(DriveLetter + ' Drive de CD/DVD')
    else if GetDriveType(PChar(DriveLetter)) = DRIVE_RAMDISK then
       ComboBox1.Items.Add(DriveLetter + ' RAM Disk')
    else
       ComboBox2.Items.Add(Drive);
    end;
  end;
  end.
 

segunda-feira, 11 de maio de 2015

Como gravar ISOs (imagens de CDs/DVDs) corretamente

É comum que acusem erros ao tentar copiar imagens de CDs ou DVDs, principalmente para instalação de sistemas operacionais, como o Windows ou Linux, ou para copiar e gravar jogos de consoles como o PSX, PS2, etc.
A maioria desses erros pode ser evitada com procedimentos simples. O primeiro passo, é saber se o arquivo baixado está íntegro, ou seja, se não está corrompido. Para isso, existe um código embutido nos arquivos de imagem, que pode ser comparado com o código original e caso haja alguma divergência, é sinal de que o arquivo não está perfeito. Esse código é o hash MD5. Para checá-lo, existem diversas ferramentas gratuitas, como o WinMD5 Free (http://www.winmd5.com/).
Com a integridade do arquivo confirmada, o próximo passo é ter certeza de que ele será gravado corretamente na mídia escolhida, CD ou DVD.
Para isso, sempre utilizo a menor velocidade de gravação disponível. Se o disco for gravado com velocidade mais alta, há grande chance de que não funcione corretamente.
Quanto à gravação, podem ser utilizados diversos softwares específicos para esta finalidade, como o Ultraiso (https://www.ezbsystems.com/ultraiso/), ou o IMGBurn (http://www.imgburn.com/).
Recomendo ambos, mas o Ultraiso se destaca pela quantidade de funcionalidades, como emular um drive de CD/DVD, além daquelas esperadas.

quarta-feira, 6 de maio de 2015

Micro não reconhece ou para de reconhecer a saída HDMI da placa de vídeo

A comunicação via HDMI, apesar de simples, depende de um processo chamado "handshake", que nem sempre ocorre corretamente. Às vezes uma saída que funcionava normalmente, para de comunicar, ou o sistema operacional nem reconhece mais um dispositivo que antes reconhecia.
Recentemente tive um problema com uma placa de vídeo GeForce GTX 550 Ti. Essa placa tem 2 saídas DVI e uma mini-HDMI. Utilizo uma das saídas DVI com um monitor e a saída HDMI ligada na TV.
Sempre funcionou normalmente, mas o HDMI parou de funcionar e nem aparecia mais no Windows. Os drivers da placa estavam atualizados e o monitor, ligado no DVI, funcionava normalmente.
Tentei de tudo e não conseguia fazer o HDMI voltar a funcionar, cheguei a pensar que estivesse queimado, mas por fim, encontrei a solução, muito mais simples do que parecia:
Resetei a BIOS e tudo voltou ao normal.

Procedimentos:
1)Desligue o micro da tomada.
2)Abra o gabinete e remova a bateria da placa-mãe.
3)Ainda sem a bateria, segure o botão "POWER" por 2 segundos, para ter certeza de que não ficou nenhum vestígio de energia na placa.
4)Recoloque a bateria e ligue o micro.
Depois disso, será necessário acertar o horário da máquina, que será resetado para os valores de fábrica.
No meu caso, essa foi a solução.

Melhores substitutos para o Grooveshark

Com o encerramento do Grooveshark em 30/04/2015, seus usuários ficaram órfãos de um bom serviço gratuito de streaming de música. A maioria dos sites que oferece o mesmo tipo de serviço são pagos e seus planos gratuitos incluem propagandas nas listas de reprodução, ou limitam a quantidade de faixas ou tempo total de reprodução mensal.
Alguns possíveis substitutos que agregam funcionalidades parecidas e não têm limitações, são o lastfm.com.br e o movinx.com.
A proposta de ambos é parecida, mas não exatamente igual. No caso do Lastfm, o site reúne as funções de rádio online e rede social, com aplicativo próprio e acesso via navegador.
Já o Movinx permite ouvir músicas por streaming e criar playlists de forma simples e descomplicada. Ambos valem a pena conferir.