- Список рубрик
- Теги этой статьи
- Новые статьи на сайте
- Самые популярные статьи
- Последние новости
CDStarter - запуск программ регулирования скорости CD/DVD-ROM приводов
Программирование на языке Delphi 5. Программа CDStarter предназначена для автоматического запуска программ регулирования скорости чтения приводов CD-ROM.
Основные возможности и ограничения:
- Загрузка CDStarter при старте Windows (если выбрано "Загружать при старте Windows");
- При вставке в привод нового компакт диска, программа автоматически запускает указанную в строке "Выполнить" программу. Это может быть, например, программа CDSpeed v1.03 или любая другая;
- Запуск программы может производиться с указанием параметров в строке "Параметры";
- Настройки CDStarter сохраняются в реестре Windows;
- Работа CDStarter с музыкальными CD не гарантируется;
- CDStarter отслеживает только один привод CD-ROM, выбираемый из списка "Устройство";
Привожу результирующий исходный код основного модуля программы на языке Delphi 5:
unit Starter;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
CoolTools, CoolCtrls, StdCtrls, FileCtrl, RzFilSys, ExtCtrls, Mask,
ToolEdit, RzLaunch, RzDlgBtn, Menus,Registry;
type
TFormCD = class(TForm)
CoolTrayIcon1: TCoolTrayIcon;
CoolGroupBox1: TCoolGroupBox;
CoolLabel1: TCoolLabel;
RzLauncher1: TRzLauncher;
FilenameEdit1: TFilenameEdit;
CoolLabel2: TCoolLabel;
RzDriveComboBox1: TRzDriveComboBox;
CoolCheckRadioBox1: TCoolCheckRadioBox;
Bevel1: TBevel;
RzDialogButtons1: TRzDialogButtons;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Timer1: TTimer;
CoolDisksInformant1: TCoolDisksInformant;
Timer2: TTimer;
Edit1: TEdit;
CoolLabel3: TCoolLabel;
procedure FormCreate(Sender: TObject);
procedure RzDialogButtons1ClickOk(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormCD : TFormCD;
LoadAtStartup : boolean;
Size1, Size2 : int64;
StartProg : String;
Drive : String[1];
Param : String;
Reg: TRegistry;
implementation
{$R *.DFM}
procedure TFormCD.FormCreate(Sender: TObject);
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run\', false);
if Reg.ReadString('CDStarter') <> ''
then LoadAtStartup := true
else LoadAtStartup := false;
if LoadAtStartup
then CoolCheckRadioBox1.Checked := True
else CoolCheckRadioBox1.Checked := False;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\CDStarter\', false);
StartProg := Reg.ReadString('StartProg');
Drive := Reg.ReadString('Drive');
Param := Reg.ReadString('Param');
finally
Reg.CloseKey;
Reg.Free;
end;
FormCD.Height := 183;
FormCD.Width := 287;
end;
procedure TFormCD.RzDialogButtons1ClickOk(Sender: TObject);
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run\', false);
if CoolCheckRadioBox1.Checked
then Reg.WriteString('CDStarter', Application.EXEName)
else Reg.DeleteValue('CDStarter');
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('Software\CDStarter\', true);
if FileNameEdit1.Text <> '' then Reg.WriteString('StartProg', FileNameEdit1.Text);
if RzDriveComboBox1.Drive <> '' then Reg.WriteString('Drive', RzDriveComboBox1.Drive);
if Edit1.Text <> '' then Reg.WriteString('Param', Edit1.Text);
finally
Reg.CloseKey;
Reg.Free;
end;
Hide;
end;
procedure TFormCD.N3Click(Sender: TObject);
begin
CoolTrayIcon1.Active := False;
Show;
end;
procedure TFormCD.N1Click(Sender: TObject);
begin
Close;
end;
procedure TFormCD.FormActivate(Sender: TObject);
var
st1: string[1];
i: byte;
YesDrive: boolean;
begin
YesDrive := False;
if RzDriveComboBox1.Items.Count <> 0
then
begin
For i := 0 to RzDriveComboBox1.Items.Count do
begin
st1 := copy(RzDriveComboBox1.Items[i], 1, 1);
if st1 = Drive
then
begin
RzDriveComboBox1.ItemIndex := i;
RzDriveComboBox1.Drive := st1[1];
YesDrive := True;
end;
end;
if not YesDrive
then
begin
RzDriveComboBox1.ItemIndex := 0;
st1 := copy(RzDriveComboBox1.Items[0], 1, 1);
RzDriveComboBox1.Drive := st1[1];
end;
end
else Close;
if LoadAtStartup
then CoolCheckRadioBox1.Checked := True
else CoolCheckRadioBox1.Checked := False;
if StartProg <> ''
then FileNameEdit1.Text := StartProg;
if Param <> ''
then Edit1.Text := Param;
end;
procedure TFormCD.Timer1Timer(Sender: TObject);
begin
CoolDisksInformant1.Drive := RzDriveComboBox1.Drive + ':\';
Size2 := CoolDisksInformant1.TotalBytes;
if (Size2 <> Size1) and (Size2 <> 0)
then
begin
RzLauncher1.FileName := FilenameEdit1.Text;
RzLauncher1.Parameters := Param;
RzLauncher1.Launch;
end;
Size1 := Size2;
end;
procedure TFormCD.FormHide(Sender: TObject);
begin
CoolTrayIcon1.Active := True;
end;
procedure TFormCD.Timer2Timer(Sender: TObject);
begin
Hide;
Timer2.Enabled := False;
end;
procedure TFormCD.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CoolTrayIcon1.Active := False;
end;
end.
Полный исходный проект программы CDStarter на Delphi 5 и готовый исполняемый файл программы можно скачать по ссылке ниже:
Также полный исходный проект программы CDStarter доступен у меня на GitHub в публичном доступе.
Вот и всё, данная программа писалась мною ещё в начале 2000-ых годов, когда ещё были распространены CD-ROM приводы и CD диски для которых нередко требовалось уменьшение максимальной скорости вращения диска для уверенного чтения информации с диска.
Автор: Попов Вадим
Теги этой статьи
Launch the License Manager from the bin folder (by default “C:/Program Files (x86)/Embarcadero/Studio/23.0/bin/LicenseManager.exe“) and delete any trial or beta (Test Field) license that you...
Карта разрушений и жертв российской агрессии в городе Мариуполь, на карте отмечены более 2000 пострадавших домов. На карте отмечены не только фото домов, но свидетельства их жителей, а так же место боевых...
Из-за военных событий 2014 года в Донецке тренер по плаванию Алексей Снежко и его жена вынужденно переехали в Киев. А теперь, в 2022-м, 33-летний Алексей потерял обоих родителей в Мариуполе. Как пережить...