Здарова, KeeL!
10 декабря 2003 г., 16:42:15, ты намылил:
K> То есть если пользователь щёлкнул два раза по какому-нибудь
K> файлу(например C:\logs.txt) запускалась бы моя прога.
Ну так бы сразу!!!
В Basice я не силен, так-что если ты не силен в pascale (Delphi), жди
других ответов.
Unit1.pas
=====Резать тутunit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
registry, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var Reg:TRegistry;
s:string;
begin
Reg:=TRegistry.Create; // Работа с реестром
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
if not Reg.OpenKey('txtfile\shell\open\command',false) // Есть или нет ключ
then s:='notepad.exe %1'
else s:=Reg.ReadString('');
Reg.CloseKey;
Reg.OpenKey('txtfile\shell\open\command',true);
Reg.WriteString('OldVariable',s);
Reg.WriteString('',ParamStr(0)+' %1'); // ParamStr(0) - путь к своему EXE
файлу
s[length(s)]:='s'; //Последний символ
Label1.Caption:=Format(s,['Тута будет путь к файлу']); // Заменв %s в строке
на 'Тута будет путь к файлу'
finally
reg.Free; // Конец работы с реестром
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var s:string;
Reg:TRegistry;
begin
if ParamCount>0 then // если прога запустилась с параметром
begin
Reg:=TRegistry.Create; // Работа с реестром
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
if not Reg.OpenKey('txtfile\shell\open\command',false) // Есть или
нет ключ
then s:='notepad.exe %s'
else begin
s:=Reg.ReadString('OldVariable');
s[length(s)]:='s'; //Последний символ
end;
Label1.Caption:=ParamStr(1); // Параметр - путь к файлу
if pos(Paramstr(0),s)=0 then // Если Paramstr(0) есть в Paramstr(1)
// тогда мы запускаем себя
// Пороисходит когда нажать более одного раза Button1
begin
s:=Format(s,[ParamStr(1)]); // Заменв %s в строке на первый
параметр с которым была запущена прога
WinExec(PChar(s),SW_SHOW); // Запуск блокнота
end
else Label1.Caption:=Label1.Caption+' Рекурсивно запускаем свой
EXE!!!!';
finally
reg.Free; // Конец работы с реестром
end;
end;
end;
end.
=====Резать тутUnit1.dfm
=====Резать тутobject Form1: TForm1
Left = 220
Top = 128
Width = 512
Height = 120
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 12
Top = 12
Width = 137
Height = 13
Caption = 'Label1'
end
object Button1: TButton
Left = 10
Top = 38
Width = 75
Height = 25
Caption = 'Get&&Set'
TabOrder = 0
OnClick = Button1Click
end
=====Резать тутProject1.dpr кому надо сам создаст, а то мыло и так большое
получилось.