
Delphi Programlama Dilinde Registry İşlemleri (Program Kısa Yollarının Oluşturulması)
Tekrar Merhaba,
Programciyim.com ekibi olarak sizlere en iyi bilgiyi en anlaşılır biçimde sunmak ilk hedefimiz.
Delphi Programlama Dili ile Registry (Windows Kayıt Defteri) İşlemlerine devam ediyoruz. Bu makalemi yazmaya başlamadan önce hangi konu üzerinde yazsam acaba diye biraz araştırma yaptım. Programciyim.com ekibi olarak sizlere en iyi bilgiyi en anlaşılır biçimde sunmak ilk hedefimiz. Diğer bir hedefimizde makalelerimizi okurken sıkılmadan makalenin sonuna kadar okumanızı sağlamak. Biraz öncede bahsettiğim gibi hangi konudan bahsetsem diye biraz araştırma yaptım.
Win32 uygulamalarınızın kullanımının kolay olması her zaman ilk hedefiniz olmalı
Win32 (Windows Masa Üstü) uygulamlarınızı geliştirdikten sonra ikinci aşama uygulamanızın müşteride kullanılması gelmektedir. Eğe hedefiniz programınızın çok kolay bir kullanıma sahip olması ise yapmanız gereken ilk konulardan birisi de kurulum işlemlerinden sonra veya çok kullanıcılı ortamlarda client bir bilgisayardan program çalıştırıldığında programa ait kısa yolların istendiğinde masa üstüne, görev çubuğuna veya başlat menüsüne kolay bir şekilde tanımlanabilmesidir. Bu işlemi programınızda yapabiliyor olmanız kullanıcılarınızın hoşuna gidecektir.
Registry (Windows Kayıt Defteri)'ye hakim olan programcı daima güzel uygulamalar geliştirecektir.
Bu aşamada Registry (Windows Kayıt Defteri) den başlat menüsünü tıkladığımız zaman karşımıza gelen programların yer aldığı klasörün yerini öğrenmek, masa üstü klasörünün yerini ve quick launch klasörünün yerini öğrenmek amacı ile faydalanıyoruz.
Aşağıdaki kaynak kod örneğinde iki konuyu birden göreceksiniz. Birincisi Delphi Programlama Dili'nde Registry ile çalışma ve geliştirmiş olduğunuz uygulamanızın kıs yollarının oluşturulması.
unit frmKisayolOlustur1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, ActiveX, ComObj, ShlObj, StdCtrls, Buttons, ExtCtrls;
type
TfrmKisayolOlustur = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
cbDesktopOlustur: TCheckBox;
cbQuickLaunchOlustur: TCheckBox;
cbProgramlarMenusuKisayolOlustur: TCheckBox;
btnOlustur: TBitBtn;
btnVazgec: TBitBtn;
procedure btnVazgecClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnOlusturClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmKisayolOlustur: TfrmKisayolOlustur;
type
ShortcutType = (_DESKTOP, _QUICKLAUNCH, _SENDTO, _STARTMENU, _OTHERFOLDER);
implementation
{$R *.dfm}
function KisayolOlustur(KaynakDosyaAdi: string; Lokasyon: ShortcutType; AltKlasor, CalismaYeri, Parametre, Aciklama: string): string;
const
SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer';
QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv';
var
KYObject :IUnknown;
KYSLink :IShellLink;
KYPFile :IPersistFile;
Klasor,LinkAdi: string;
WDosyaAdi :WideString;
Reg :TRegIniFile;
begin
KYObject := CreateComObject(CLSID_ShellLink);
KYSLink := KYObject as IShellLink;
KYPFile := KYObject as IPersistFile;
KYSLink.SetPath(PChar(KaynakDosyaAdi));
KYSLink.SetArguments(PChar(Parametre));
KYSLink.SetDescription(PChar(Aciklama));
LinkAdi := ChangeFileExt(KaynakDosyaAdi, '.lnk');
LinkAdi := ExtractFileName(LinkAdi);
// Hızlı Başlat
if Lokasyon = _QUICKLAUNCH then begin
Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT);
try
Klasor := Reg.ReadString('MapGroups', 'Quick Launch', '');
finally
Reg.Free;
end;
end
// Diğer lokasyonlar
else begin
Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT);
try
case Lokasyon of
_OTHERFOLDER : Klasor := AltKlasor;
_DESKTOP : Klasor := Reg.ReadString('Shell Folders', 'Desktop', '');
_STARTMENU : Klasor := Reg.ReadString('Shell Folders', 'Start Menu', '');
_SENDTO : Klasor := Reg.ReadString('Shell Folders', 'SendTo', '');
end;
finally
Reg.Free;
end;
end;
if Klasor <> '' then begin
if(AltKlasor <> '') and (Lokasyon <> _OTHERFOLDER) then
WDosyaAdi := Klasor + '\' + AltKlasor + '\' + LinkAdi
else
WDosyaAdi := Klasor + '\' + LinkAdi;
if CalismaYeri = '' then
KYSLink.SetWorkingDirectory(PChar(ExtractFilePath(KaynakDosyaAdi)))
else
KYSLink.SetWorkingDirectory(PChar(CalismaYeri));
KYPFile.Save(PWChar(WDosyaAdi), False);
Result := WDosyaAdi;
end;
end;
function ProgramYolu: string;
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\
Shell Folders', False);
Result := reg.ReadString('Programs');
reg.CloseKey;
finally
reg.Free;
end;
end;
procedure TfrmKisayolOlustur.btnVazgecClick(Sender: TObject);
begin
Close;
end;
procedure TfrmKisayolOlustur.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmKisayolOlustur.btnOlusturClick(Sender: TObject);
const PROGR = 'C:\Programim.exe';
var
PPath :String;
begin
if(cbDesktopOlustur.Checked)then KisayolOlustur(PROGR, _DESKTOP, '','','','Description');
if(cbQuickLaunchOlustur.Checked)then KisayolOlustur(PROGR, _QUICKLAUNCH, '','','','Description');
if(cbProgramlarMenusuKisayolOlustur.Checked)then PPath := KisayolOlustur(PROGR, _OTHERFOLDER, ProgramYolu,'','','Açıklama');
if((cbProgramlarMenusuKisayolOlustur.Checked) and (PPath <> '')) then begin
ShowMessage('Kısayol ' + PPath + ' klasörüne oluşturuldu');
end;
end;
end.
Program Kısa Yolu Oluşturma

- Yorum yazmak için giriş yapın veya kayıt olun




