Разработать программу для просмотра рисунков. Программа должна отражать рисунок, загруженный с помощью стандартного диалогового окна обзора. Кроме того, любой рисунок должен быть связан с данной программой, и открываться ней по двойному щелчку мыши или нажатию клавиши <Enter> в Проводнике или любой кому друг файлменеджер.
Направьте меня на путь истинный... Каким способом лучше связать картинки и программу... Пишите свои советы, может кто уже видел такое в нете, пишите... По крайней мере я не нашел(
Решение:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ExtDlgs, jpeg, Registry, ShlObj; type TForm1 = class(TForm) pnl1: TPanel; pnl2: TPanel; pnl3: TPanel; img1: TImage; btn2: TSpeedButton; btn3: TSpeedButton; btn1: TBitBtn; dlgOpenPic1: TOpenPictureDialog; chk1: TCheckBox; procedure FormCreate(Sender: TObject); procedure chk1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; dir: string; PicturesName: array of string; Count: Integer; Reg: TRegistry; implementation {$R *.dfm} function Load(FName:string): boolean; begin form1.img1.Picture.LoadFromFile(FName); end; procedure Associate; var s:string; begin dir:=ExtractFileDir(Application.ExeName); Reg:=TRegistry.Create; Reg.RootKey := HKEY_CLASSES_ROOT; Reg.OpenKey('.jpg\OpenWithProgids\', true); Reg.WriteString('TestApplication.jpg', ''); Reg.OpenKey('\TestApplication.jpg\DefaultIcon\', true); s:=dir+Application.ExeName+',0'; Reg.WriteString('', s); Reg.OpenKey('\TestApplication.jpg\Shell\Open\', true); Reg.WriteString('', 'Îòêðûòü â TestApplication'); Reg.OpenKey('command\', true); s:=dir+Application.ExeName+'" "%1"'; Reg.WriteString('', s); Reg.Free; SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); end; procedure DeleteAssociate; begin Reg:=TRegistry.Create; Reg.RootKey := HKEY_CLASSES_ROOT; reg.DeleteKey('.jpg'); reg.DeleteKey('TestApplication.jpg'); Reg.Free; SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); end; procedure TForm1.FormCreate(Sender: TObject); begin if ParamCount <> 0 then Load(ParamStr(1)); end; procedure TForm1.chk1Click(Sender: TObject); begin if(chk1.Checked) then Associate else DeleteAssociate; end; end.