home *** CD-ROM | disk | FTP | other *** search
- unit UnitFormEdit;
-
- {
- Purpose:
- - show the contents of the startright's run key and the startup folder
- - allow removal of items
- - allow for sorting of items
-
- Updates:
- Show the icons of each item
- Show the system's "File Properties" dialog
- Enable/Disable functionality
- New EndProgramOnClose functionality to show "new items"
- }
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Registry, ComCtrls, StdCtrls,
- UnitMyKeys, UnitListViewMover , Buttons, ImgList, ExtCtrls;
-
- type
- TFrmEdit = class(TForm)
- ILStartupIcons: TImageList;
- PageControl1: TPageControl;
- TabSheet1: TTabSheet;
- TabSheet2: TTabSheet;
- ILRunKeyIcons: TImageList;
- Panel1: TPanel;
- btnTop: TSpeedButton;
- btnUp: TSpeedButton;
- btnDown: TSpeedButton;
- btnBottom: TSpeedButton;
- lvRunkeySort: TListView;
- btnDeleteRun: TSpeedButton;
- bRunProperties: TButton;
- bSelectNew: TButton;
- Panel2: TPanel;
- lvRunkeyDisabled: TListView;
- bRunkeyEnable: TButton;
- Splitter1: TSplitter;
- Panel3: TPanel;
- btnTop2: TSpeedButton;
- lvStartup: TListView;
- btnUp2: TSpeedButton;
- btnDown2: TSpeedButton;
- btnBottom2: TSpeedButton;
- btnDeleteStartup: TSpeedButton;
- bStartupProperties: TButton;
- Panel4: TPanel;
- lvStartupDisabled: TListView;
- bStartupEnable: TButton;
- Splitter2: TSplitter;
- lblVersion: TLabel;
- Shape1: TShape;
- Shape2: TShape;
- Label1: TLabel;
- Label2: TLabel;
- btnExclude: TSpeedButton;
- btnExcludeStartup: TSpeedButton;
- bRunkeyOtherProperties: TButton;
- bStartupOtherProperties: TButton;
- bSelectNewRunItems: TButton;
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure btnTopClick(Sender: TObject);
- procedure btnUpClick(Sender: TObject);
- procedure btnDownClick(Sender: TObject);
- procedure btnBottomClick(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure btnTop2Click(Sender: TObject);
- procedure btnUp2Click(Sender: TObject);
- procedure btnDown2Click(Sender: TObject);
- procedure btnBottom2Click(Sender: TObject);
- procedure btnDeleteRunClick(Sender: TObject);
- procedure btnDeleteStartupClick(Sender: TObject);
- procedure lvRunkeySortClick(Sender: TObject);
- procedure lvStartupClick(Sender: TObject);
- procedure bRunPropertiesClick(Sender: TObject);
- procedure bStartupPropertiesClick(Sender: TObject);
- procedure lvStartupDisabledClick(Sender: TObject);
- procedure bStartupEnableClick(Sender: TObject);
- procedure bRunkeyEnableClick(Sender: TObject);
- procedure lvRunkeyDisabledClick(Sender: TObject);
- procedure bSelectNewClick(Sender: TObject);
- procedure btnExcludeClick(Sender: TObject);
- procedure btnExcludeStartupClick(Sender: TObject);
- procedure bRunkeyOtherPropertiesClick(Sender: TObject);
- procedure bStartupOtherPropertiesClick(Sender: TObject);
- procedure bSelectNewRunItemsClick(Sender: TObject);
- private
- { Private declarations }
- r : TRegistry;
- EndProgramOnClose : boolean;
- function OKToDelete() : boolean;
- function OKToExclude() : boolean;
- procedure LoadData;
- procedure SaveData;
- procedure ShowPropertiesDialog(filename : string);
- public
- { Public declarations }
- procedure SetEndProgramOnClose(value : boolean);
- function SelectNewItems : boolean;
- procedure ShowNewItems;
- procedure InitGUI;
- end;
-
- var
- FrmEdit: TFrmEdit;
-
- implementation
-
- Uses shellAPI, shlobj, UnitItemManager, UnitFrmAbout, UnitSpecialPaths; {for extracting ICONS}
-
- const DISABLED_STATUS = 'Disabled';
- const EXCLUDED_STATUS = 'Excluded';
- const NO_LONGER_EXISTS_VALUE = '[Item no longer exists in system''s runkey]';
- {$R *.dfm}
-
- procedure TFrmEdit.InitGUI;
- var c : TListColumn;
- begin
- lvRunkeySort.Columns.Clear;
- c := lvRunkeySort.Columns.Add;
- c.Caption := 'Key';
- c.Width := Trunc(lvRunkeySort.ClientWidth * 0.3);
-
- c := lvRunkeySort.Columns.Add;
- c.Caption := 'Value';
- c.Width := Trunc(lvRunkeySort.ClientWidth * 0.65);
-
- // disabled/excluded run keys
- lvRunkeyDisabled.Columns.clear;
- c := lvRunkeyDisabled.Columns.Add;
- c.Caption := 'Disabled Key';
- c.Width := Trunc(lvRunkeyDisabled.ClientWidth * 0.2);
-
- c := lvRunkeyDisabled.Columns.Add;
- c.Caption := 'Disabled Value';
- c.Width := Trunc(lvRunkeyDisabled.ClientWidth * 0.6);
-
- c := lvRunkeyDisabled.Columns.Add;
- c.Caption := 'Status';
- c.Width := Trunc(lvRunkeyDisabled.ClientWidth * 0.2);
-
-
-
-
- lvStartup.Columns.clear;
- c := lvStartup.Columns.Add;
- c.Caption := 'Startup Shortcuts';
- c.Width := lvStartup.ClientWidth;
-
- lvStartupDisabled.Columns.clear;
- c := lvStartupDisabled.Columns.Add;
- c.Caption := 'Shortcuts';
- c.width := Trunc(lvStartupDisabled.ClientWidth * 0.8);
-
- c := lvStartupDisabled.Columns.Add;
- c.Caption := 'Status';
- c.width := Trunc(lvStartupDisabled.ClientWidth * 0.2);
-
-
- self.PageControl1.ActivePageIndex := 0;
-
- self.LoadData;
- end;
- procedure TFrmEdit.ShowNewItems;
- begin
- self.Position := poScreenCenter;
- self.InitGUI;
- self.SelectNewItems;
- self.Show;
-
- end;
-
- procedure TFrmEdit.SetEndProgramOnClose(value : boolean);
- begin
- EndProgramOnClose := value;
- end;
-
-
- procedure TFrmEdit.FormCreate(Sender: TObject);
- begin
- r := TRegistry.Create();
- end;
-
- procedure TFrmEdit.FormDestroy(Sender: TObject);
- begin
- r.Free;
- end;
-
- procedure TFrmEdit.FormShow(Sender: TObject);
- begin
- //self.LoadData;
- end;
- procedure TFrmEdit.LoadData;
-
- function GetSmallShortcutIcon(FileName: String): HICON;
- var
- FileInfo: TSHFileInfo;
- begin
- SHGetFileInfo(PChar(FileName), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON
- or SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
- Result := FileInfo.hIcon;
- end;
-
- procedure ExtractAndSetIconRunkey(li : TListItem; keyvalue : string);
- var sEXE : string;
- IconIndex : word;
- icon : TIcon;
- begin
- // find ICON of EXE item
- // add default icon if can't find the file
- //
- sEXE := '';
- sEXE := UnitMyKeys.FindExecutableFromRunValue(keyvalue);
- If FileExists(sEXE) then begin
- IconIndex := 0;
-
- icon := TIcon.Create;
- icon.Handle := 0;
- icon.Handle := ShellAPI.ExtractAssociatedIcon(hInstance, PChar(sEXE), IconIndex);
- if (icon.Handle <> 0) then begin
- ILRunKeyIcons.AddIcon(icon);
- end;
- icon.Free;
-
- li.ImageIndex := ILRunKeyIcons.Count - 1;
- end else begin
- li.ImageIndex := 0;
- end;
- end;
-
- procedure ExtractAndSetIconShortcut(li : TListItem; filename : string);
- var icon : TIcon;
- begin
- //
- // find ICON of .LNK item
- // add default icon if can't find the file
- //
- if FileExists(filename) then begin
-
- icon := TIcon.Create;
- icon.Handle := 0;
- icon.Handle := GetSmallShortcutIcon(li.caption);
- if (icon.Handle <> 0) then begin
- ILStartupIcons.AddIcon(icon);
- end;
- icon.Free;
-
- li.ImageIndex := ILStartupIcons.Count - 1;
- end else begin
- li.ImageIndex := 0;
- end;
- end;
- var sorted : array of string;
- data, s : string;
- i, sortIndex : integer;
- li : TListItem;
-
-
- //link : IShellLink;
- DisabledValues, ExcludedValues : TStringList;
- begin
- lvRunkeySort.Clear;
- //
- // read the sorted RunKey values & their dat
- //
- r.RootKey := HKEY_LOCAL_MACHINE;
- sortIndex := 0;
- if (r.OpenKey(SR_RUNSORT_KEY, false)) then begin
- sortIndex := r.ReadInteger(SR_SORTINDEX_VALUE);
- SetLength(sorted, sortIndex);
-
- for i := 0 to (sortIndex - 1) do begin
- sorted[i] := r.ReadString(IntToStr(i));
- end;
- r.CloseKey;
- end;
-
- ILRunKeyIcons.Clear;
- ILRunKeyIcons.AddIcon(Application.Icon);
-
- if (r.OpenKey(SR_RUN_KEY, false )) then begin
- for i := 0 to (sortIndex - 1) do begin
- s := r.ReadString(sorted[i]);
-
- li := lvRunkeySort.Items.add;
- li.Caption := sorted[i];
- li.SubItems.Add(s);
-
- ExtractAndSetIconRunkey(li, s);
- end;
- r.CloseKey;
- end;
-
- //
- // Shortcurt data
- //
-
- lvStartup.Clear;
- r.RootKey := HKEY_LOCAL_MACHINE;
-
- ILStartupIcons.Clear;
- ILStartupIcons.AddIcon(Application.Icon);
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_STARTUPSORT_KEY, false)) then begin
- sortIndex := r.ReadInteger(SR_SORTINDEX_VALUE);
- SetLength(sorted, sortIndex);
-
- for i := 0 to (sortIndex - 1) do begin
- li := lvStartup.Items.Add;
- li.caption := r.ReadString( IntToStr(i) );
-
- ExtractAndSetIconShortcut(li, li.caption);
- end;
- r.CloseKey;
- end;
-
- // disabled startup items
- lvStartupDisabled.Items.Clear;
-
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_STARTUPDISABLE_KEY, false)) then begin
- disabledValues := TStringList.Create;
- r.GetValueNames(disabledValues);
- for i := 0 to (disabledValues.Count - 1) do begin
- li := lvStartupDisabled.items.Add;
- li.caption := r.ReadString(disabledValues.Strings[i]);
- li.SubItems.Add(DISABLED_STATUS);
-
- ExtractAndSetIconShortcut(li, li.caption);
- end;
- r.CloseKey;
-
- disabledValues.Free;
- end;
- // excluded startup items
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_STARTUPEXCLUDE_KEY, false)) then begin
- ExcludedValues := TStringList.Create;
- r.GetValueNames(ExcludedValues);
- for i := 0 to (ExcludedValues.Count - 1) do begin
- {the data may or may not include the full path to the shortcut}
- li := lvStartupDisabled.items.Add;
-
- data := r.ReadString(Excludedvalues[i]);
- if not (fileExists(data)) then begin
- ItemManager.CorrectExcludedShortcutItem(Excludedvalues[i]);
- li.caption := r.ReadString(Excludedvalues[i]);
- end else begin
- li.caption := data;
- end;
- li.SubItems.Add(EXCLUDED_STATUS);
-
- ExtractAndSetIconShortcut(li, li.caption);
- end;
-
- ExcludedValues.Free;
- r.CloseKey;
- end;
-
-
- // disabled runkey items
- lvRunkeyDisabled.Items.Clear;
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_RUNDISABLED_KEY, false)) then begin
- disabledValues := TStringList.Create;
- r.GetValueNames(disabledValues);
- for i := 0 to (disabledValues.Count - 1) do begin
- li := lvRunkeyDisabled.items.Add;
- li.caption := disabledValues.Strings[i];
- li.SubItems.add( r.ReadString(disabledValues.Strings[i]) );
- li.SubItems.Add(DISABLED_STATUS);
- s := li.SubItems[0];
-
- ExtractAndSetIconRunkey(li, s);
- end;
- r.CloseKey;
-
- disabledValues.Free;
- end;
- //
- // excluded runkey items
- //
- ExcludedValues := TStringList.Create;
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_RUNEXCLUDE_KEY, false)) then begin
- r.GetValueNames(ExcludedValues);
- r.CloseKey;
- end;
- i := ExcludedValues.IndexOf(SR_STARTRIGHT_VALUE);
- if (i <> -1) then ExcludedValues.Delete(i);
- {don't show ME in the excluded list}
-
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(WINDOWS_RUN_KEY, false)) then begin
- for i := 0 to (ExcludedValues.Count - 1) do begin
-
- s := r.ReadString(ExcludedValues.Strings[i]);
- li := lvRunkeyDisabled.Items.add;
- if (s = '') then begin
- li.caption := ExcludedValues.Strings[i];
- li.SubItems.Add(NO_LONGER_EXISTS_VALUE);
- li.SubItems.Add(EXCLUDED_STATUS);
- li.ImageIndex := 0;
- end else begin
- li.caption := ExcludedValues.Strings[i];
- li.SubItems.Add(s);
- li.SubItems.Add(EXCLUDED_STATUS);
- ExtractAndSetIconRunkey(li, s);
- end;
- end;
- r.CloseKey;
- end;
-
- ExcludedValues.Free;
- end;
-
-
- procedure TFrmEdit.FormClose(Sender: TObject;
- var Action: TCloseAction);
- begin
- self.SaveData;
- if (self.EndProgramOnClose) then begin
- Application.Terminate;
- end;
- end;
-
-
- procedure TFrmEdit.SaveData;
- var i, j : integer;
- begin
- //
- // delete the current RunSort key, and rebuild
- //
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_HOME_KEY, false )) then begin
- r.DeleteKey(SR_SUB_RUNSORT);
- r.CloseKey;
- end;
-
- if (r.OpenKey(SR_RUNSORT_KEY, true)) then begin
- j := 0;
- for i := 0 to (lvRunkeySort.Items.count - 1) do begin
- if (Trim(lvRunkeySort.Items[i].caption) <> '') then begin
- r.WriteString(IntToStr(j), lvRunkeySort.Items[i].caption);
- j := j + 1;
- end;
- end;
- r.WriteInteger(SR_SORTINDEX_VALUE, lvRunkeySort.Items.Count );
- r.CloseKey;
- end;
-
-
- //
- // same for StartupSort key
- //
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_HOME_KEY, false )) then begin
- r.DeleteKey(SR_SUB_STARTUPSORT);
- r.CloseKey;
- end;
-
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_STARTUPSORT_KEY, true)) then begin
- for i := 0 to lvStartup.Items.count - 1 do begin
- r.WriteString(IntToStr(i), lvStartup.Items[i].caption);
- end;
- r.WriteInteger(SR_SORTINDEX_VALUE, lvStartup.Items.Count );
- r.CloseKey;
- end;
-
-
- //
- // save the disabled items
-
-
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_RUNDISABLED_KEY, true)) then begin
- for i := 0 to (lvRunkeyDisabled.Items.Count - 1) do begin
- if (lvRunkeyDisabled.Items[i].SubItems[1] = DISABLED_STATUS) then begin
- r.WriteString(lvRunkeyDisabled.Items[i].Caption,
- lvRunkeyDisabled.Items[i].SubItems[0] );
- end;
- end;
- r.CloseKey;
- end;
-
- end;
-
-
-
- //
- // move the runkey items
- //
- procedure TFrmEdit.btnTopClick(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedTop(lvRunkeySort);
- end;
- procedure TFrmEdit.btnUpClick(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedUp(lvRunkeySort);
- end;
- procedure TFrmEdit.btnDownClick(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedDown(lvRunkeySort);
- end;
- procedure TFrmEdit.btnBottomClick(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedBottom(lvRunkeySort);
- end;
-
- //
- // move the startup items
- //
- procedure TFrmEdit.btnTop2Click(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedTop(lvStartup);
- end;
-
- procedure TFrmEdit.btnUp2Click(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedUp(lvStartup);
- end;
-
- procedure TFrmEdit.btnDown2Click(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedDown(lvStartup);
- end;
-
- procedure TFrmEdit.btnBottom2Click(Sender: TObject);
- begin
- UnitListViewMover.MoveSelectedBottom(lvStartup);
- end;
-
- //
- // show a property page
- // enable/disable property buttons
- //
- procedure TFrmEdit.bRunPropertiesClick(Sender: TObject);
- var f : string;
- begin
- f := UnitMyKeys.FindExecutableFromRunValue( lvRunkeySort.Selected.SubItems.Strings[0]);
- if (f = '') then begin
- Dialogs.ShowMessage('Cannot locate executable');
- end else begin
- self.ShowPropertiesDialog(f);
- end;
- end;
-
- procedure TFrmEdit.bStartupPropertiesClick(Sender: TObject);
- begin
- self.ShowPropertiesDialog(lvStartup.Selected.caption);
- end;
-
- procedure TFrmEdit.lvRunkeySortClick(Sender: TObject);
- var v : string;
- begin
- bRunProperties.Enabled := (lvRunkeySort.SelCount = 1);
- if (lvRunkeySort.SelCount = 1) then begin
- v := UnitFrmAbout.GetVersionString(
- FindExecutableFromRunValue(lvRunkeySort.Selected.subitems[0]));
- if (v = '') then begin
- lblVersion.Caption := '';
- end else begin
- lblVersion.caption := ExtractFilename(lvRunkeySort.selected.caption) +
- ' version: ' + v;
- end;
-
- end else begin
- lblVersion.caption := '';
- end;
- btnExclude.Enabled := (lvRunkeySort.SelCount > 0);
- btnDeleteRun.Enabled := (lvRunkeySort.SelCount > 0);
- end;
-
- procedure TFrmEdit.lvStartupClick(Sender: TObject);
- begin
- bStartupProperties.Enabled := (lvStartup.SelCount = 1);
- btnDeleteStartup.Enabled := (lvStartup.SelCount > 0);
- btnExcludeStartup.Enabled := (lvStartup.SelCount > 0);
- end;
-
- procedure TFrmEdit.ShowPropertiesDialog(filename : string);
- var sei : TShellExecuteInfo;
- begin
- FillChar(sei, SizeOf(sei), #0);
- sei.cbSize := SizeOf(sei);
- sei.lpFile := PChar(filename);
- sei.lpVerb := 'properties';
-
- sei.fMask := SEE_MASK_INVOKEIDLIST;
- ShellExecuteEx(@sei);
-
- end;
-
-
-
-
-
-
- //
- // Disable/Exclude buttons & util dialog
- //
-
- function TFrmEdit.OKToDelete() : boolean;
- begin
- result := (MessageDlg(
- 'Disabled items are not run by Windows and not run by StartRight' +#13#10+
- 'Disable the selected item(s)?',
- mtConfirmation, [mbYes, mbNo], 0) = mrYes)
- end;
-
-
- function TFrmEdit.OKToExclude() : boolean;
- begin
- result := (MessageDlg(
- 'Excluded items are run by Windows and not managed by StartRight' +#13#10+
- 'Exclude the selected item(s)?',
- mtConfirmation, [mbYes, mbNo], 0) = mrYes)
- end;
- procedure TFrmEdit.btnExcludeClick(Sender: TObject);
- var i : longint;
- begin
- if (self.OKToExclude) then begin
- for i := 0 to (lvRunkeySort.Items.count - 1) do begin
- if (lvRunkeysort.items[i].Selected) then begin
- ItemManager.ExcludeRunkeyItem(
- lvRunkeySort.Items[i].Caption);
- end;
- end;
-
-
- lvRunkeySort.DeleteSelected;
- self.LoadData;
- end;
- end;
-
- procedure TFrmEdit.btnDeleteRunClick(Sender: TObject);
- var i : longint;
- li : TListItem;
- begin
- if self.OKToDelete then begin
- // update any changes in order
- // delete the Run value and delete it's associated sort key
- // remove the item from the list
- for i := 0 to (lvRunkeySort.Items.count - 1) do begin
- if lvRunkeysort.items[i].Selected then begin
- ItemManager.DisableRunkeyItem(lvRunkeySort.Items[i].Caption);
-
- // move a copy to the disabled items
- li := lvRunkeyDisabled.Items.Add;
- li.Caption := lvRunkeySort.Items[i].Caption;
- li.SubItems.Add(lvRunkeySort.items[i].SubItems[0]);
- li.SubItems.Add(DISABLED_STATUS);
- end;
- end;
-
-
- // reload the form data
- self.LoadData;
- btnDeleteRun.Enabled := false;
- end;
- end;
-
- procedure TFrmEdit.btnDeleteStartupClick(Sender: TObject);
- var i : longint;
- begin
- if (self.OKToDelete) then begin
- self.SaveData;
-
- for i := (lvStartup.Items.Count - 1) downto 0 do begin
- if (not lvStartup.items[i].Selected) then CONTINUE;
-
- ItemManager.DisableStartupItem(lvStartup.items[i].Caption);
- lvStartup.Items[i].Delete;
- end;
- self.LoadData;
-
- btnDeleteStartup.Enabled := false;
- btnExcludeStartup.Enabled := false;
- end;
- end;
-
- procedure TFrmEdit.btnExcludeStartupClick(Sender: TObject);
- var i : longint;
- begin
- if (self.OKToExclude) then begin
- //self.SaveData;
-
- for i := (lvStartup.Items.Count - 1) downto 0 do begin
- if (not lvStartup.items[i].Selected) then CONTINUE;
-
- ItemManager.ExcludeStartupItem(lvStartup.items[i].Caption);
- lvStartup.Items[i].Delete;
- end;
- self.LoadData;
-
- btnDeleteStartup.Enabled := false;
- btnExcludeStartup.Enabled := false;
- end;
- end;
-
-
-
-
-
- //
- // Disable / Enable buttons
- //
-
-
- procedure TFrmEdit.lvStartupDisabledClick(Sender: TObject);
- begin
- if (lvStartupDisabled.SelCount = 1) then begin
- bStartupEnable.Enabled := true;
- bStartupOtherProperties.Enabled := true;
- if (lvStartupDisabled.Selected.SubItems[0] = DISABLED_STATUS) then begin
- bStartupEnable.Caption := 'Enable';
- end else begin
- bStartupEnable.Caption := 'Include';
- end;
- end else begin
- bStartupEnable.Enabled := false;
- bStartupOtherProperties.Enabled := false;
- end;
- end;
-
- procedure TFrmEdit.bStartupEnableClick(Sender: TObject);
- var shortcut : string;
- begin
- shortcut := lvStartupDisabled.Selected.Caption;
-
- if (lvStartupDisabled.Selected.SubItems[0] = EXCLUDED_STATUS) then begin
- ItemManager.IncludeStartupItem(shortcut);
- end else begin
- ItemManager.EnableStartupItem(shortcut);
- end;
-
- lvStartupDisabled.DeleteSelected;
- bStartupEnable.Enabled := false;
- bStartupOtherProperties.Enabled := false;
- self.LoadData;
- end;
-
- procedure TFrmEdit.bRunkeyEnableClick(Sender: TObject);
- var i : integer;
- begin
- for i := 0 to (lvRunkeyDisabled.Items.count - 1) do begin
- if (lvRunkeyDisabled.Items[i].Selected) then begin
- if (lvRunkeyDisabled.Items[i].SubItems[1] = EXCLUDED_STATUS) then begin
- ItemManager.IncludeRunkeyItem(lvRunkeyDisabled.Items[i].Caption);
- end else begin
- ItemManager.EnableRunkeyItem(lvRunkeyDisabled.Items[i].Caption);
- end;
- end;
- end;
- lvRunkeyDisabled.DeleteSelected;
- self.LoadData;
-
- bRunkeyEnable.Enabled := false;
- bRunkeyOtherProperties.Enabled := false;
- end;
-
- procedure TFrmEdit.lvRunkeyDisabledClick(Sender: TObject);
- begin
- if (lvRunkeyDisabled.SelCount = 1) then begin
- bRunkeyEnable.Enabled := true;
- bRunkeyOtherProperties.Enabled := true;
- if (lvRunkeyDisabled.Selected.SubItems[1] = DISABLED_STATUS) then begin
- bRunkeyEnable.Caption := 'Enable';
- end else begin
- bRunkeyEnable.Caption := 'Include';
- end;
- end else begin
- bRunkeyEnable.Enabled := false;
- bRunkeyOtherProperties.Enabled := false;
- end;
-
- end;
-
- procedure TFrmEdit.bSelectNewClick(Sender: TObject);
- begin
- if not SelectNewItems then begin
- ShowMessage('No new items');
- end;
- end;
-
-
- function TFrmEdit.SelectNewItems : boolean;
- var values : TStringList;
- i : integer;
- li : TListItem;
- topItemSet : boolean;
- begin
- values := TStringList.Create;
- // read new values
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_RUNNEWITEMS_KEY, false)) then begin
- r.GetValueNames(values);
- r.CloseKey;
- end;
-
- // select new items
- result := false;
- lvRunkeySort.ClearSelection;
- topItemSet := false;
- for i := 0 to (values.Count - 1) do begin
- li := lvRunkeySort.FindCaption(0,values.Strings[i],false,true,false);
- if li = nil then CONTINUE;
-
- li.Selected := true;
- result := true;
- {make the first item visible to the user}
- if (not topItemSet) then begin
- li.MakeVisible(true);
- topItemSet := true;
- end;
- end;
- values.free;
-
- self.lvRunkeySortClick(self);
- end;
-
-
-
-
- procedure TFrmEdit.bRunkeyOtherPropertiesClick(Sender: TObject);
- var f : string;
- begin
- f := UnitMyKeys.FindExecutableFromRunValue( lvRunkeyDisabled.Selected.SubItems.Strings[0]);
- if (f = '') then begin
- Dialogs.ShowMessage('Cannot locate executable');
- end else begin
- self.ShowPropertiesDialog(f);
- end;
- end;
-
-
- procedure TFrmEdit.bStartupOtherPropertiesClick(Sender: TObject);
- begin
- self.ShowPropertiesDialog(lvStartupDisabled.Selected.caption);
- end;
-
- procedure TFrmEdit.bSelectNewRunItemsClick(Sender: TObject);
- var values : TStringList;
- i : integer;
- li : TListItem;
- topItemSet : boolean;
- s : string;
- begin
- values := TStringList.Create;
- topItemSet := false;
-
- // read new values
- r.RootKey := HKEY_LOCAL_MACHINE;
- if (r.OpenKey(SR_STARTUPNEW_KEY, false)) then begin
- r.GetValueNames(values);
-
- // select new items
-
- lvRunkeySort.ClearSelection;
- topItemSet := false;
- for i := 0 to (values.Count - 1) do begin
- s := r.ReadString(values.Strings[i]);
- li := lvStartup.FindCaption(0,s,false,true,false);
- if li = nil then CONTINUE;
-
- li.Selected := true;
-
- {make the first item visible to the user}
- if (not topItemSet) then begin
- li.MakeVisible(true);
- topItemSet := true;
- end;
- end;
- values.free;
-
-
- r.CloseKey;
- end;
-
- if (not topItemSet) then ShowMessage('No new items');
- self.lvStartupClick(self);
- end;
-
- end.
-