Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
ВнизАссоциирование файлов с программой Найти похожие ветки
← →
alois (2003-07-16 18:56) [0]Уважаемые мастера, подскажите PLZ, как мне ассоциировать мою прогу с файлами определённых форматов. Буду очень признателен.
Чтобы кликнул, например, по RTF-файлу, и в моей проге он открылся. Я пытался через свойства папки - программа запускается, а содержимого файла не видно.
← →
Иван Шихалев (2003-07-16 19:08) [1]В реестре прописать соответствующие подключи HKEY_CLASSES_ROOT. Открыв редактор реестра можно достаточно быстро разобраться, что и как прописывать.
← →
Anatoly Podgoretsky (2003-07-16 20:22) [2]alois (16.07.03 18:56)
Путь использовал правильный (он самый простой), но наверно у тебя неверно написана программа.
← →
alois (2003-07-17 18:23) [3]Я знаю, что это делается через HKEY_CLASSES_ROOT.
Я делал вот так:
var reg: Tregistry;
………………….
1 begin
2 reg:=Tregistry.Create; {создаём переменную класса}
3 reg.RootKey:=HKEY_CLASSES_ROOT; {определяем имя активного раздела}
4 reg.CreateKey(".cid"); {определяем расширение файла, созданного из-под нашего приложения}
5 reg.OpenKey(".cid",true); {Открываем ключ с расширением и редактируем}
6 reg.WriteString("","Cool.Document"); {прописываем строку значения}
7 reg.CloseKey; {закрываем активный ключ}
8 reg.CreateKey("Cool.Document\shell\open\command");{создаём новый ключ}
9 reg.OpenKey("Cool.Document\shell\open\command",true);
10 reg.WriteString(" ",InputString+"myapp.exe "%1""); {прописываем путь к приложению с параметром %1, о котором скажем позже}
11 reg.CloseKey; {закрываем ключ}
12 reg.CreateKey("Cool.Document\DefaultIcon"); {создаём новый ключ}
13 reg.OpenKey("Cool.Document\DefaultIcon",true); {разрешаем редактирование и открываем его}
14 reg.WriteString(" ",InputString+"Icon.ico,0"); {прописываем путь к иконке нашего регистрируемого документа}
15 reg.CloseKey; {закрываем ключ}
16 end;
Вот так обрабатывал командную строку:
S:=ANSISTRSCAN(windows.GetCommandLine,"""); {перевод указателя на заданный символ в командной строке, а именно "}
SS:=ANSIEXTRACTQUOTEDSTR(S,"""); {избавляемся от кавычек в командной строке и получаем "чистый" путь к файлу данных}
Но, ни то, ни другое, не получается. Не могли бы Вы мне подсказать правильный алгоритм. Очень нужно. Please.
← →
horse (2003-07-17 18:29) [4]Создай ассоциацию в св-вах папки, посмотри что написало в реестр, удали, сравни с тем что пишет твоя программа
← →
alois (2003-07-17 22:12) [5]Так я и в свойствах папки создавал ассоциацию, а всё равно никакого толка. Не могу ничего понять. Всё вроде так делаю.
← →
nikus (2003-07-17 22:30) [6]>>S:=ANSISTRSCAN(windows.GetCommandLine,""");
>>SS:=ANSIEXTRACTQUOTEDSTR(S,""");
А не проще ли ss := ParamStr(1); ?
← →
Anatoly Podgoretsky (2003-07-17 22:55) [7]ShowMessage(SS); ???
← →
alois (2003-07-18 19:15) [8]Да, наверное, проще.
А вообще, мне хотя бы суметь открыть текстовый файл своей программой из контекстного меню Explorer. Никак не получается. Смотрел, куда другие прги прописываются в реестр, свою прописывал туда же - никакой реакции. У меня используется RxRichEdit. Может из-за этого?
← →
мыш (2003-07-19 08:58) [9]Попробуй так, у меня работает:
procedure TForm1.registIcon;
var
R : TRegIniFile;
begin
R := TRegIniFile.Create("");
with R do
begin
RootKey := HKEY_CLASSES_ROOT;
WriteString(".www","","proga");
WriteString("proga","","Описание файла");
WriteString("proga\DefaultIcon","",installpath+extractfilename(application.exename)+",0");
WriteString("proga\Shell","","Default_Action");
{WriteString(proga\Shell\First_Action","","This is our first action");
WriteString("proga\Shell\First_Action\command","",
application.exename+" /LotsOfParamaters %1");}
WriteString("proga\Shell\Default_Action","","Контекстное меню Windiws текст");
WriteString("proga\Shell\Default_Action\command",
"",application.exename+" %1");
{
WriteString("proga\Shell\Second_Action",
"","This is our second action");
WriteString("proga\Shell\Second_Action\command",
"",installpath+extractfilename(application.exename)+" /TonsOfParameters %1");}
Free;
end;
end;
proga-название твоей программы
← →
alois (2003-07-19 11:01) [10]Спасибо за совет, но пока почему-то не получается.
← →
alois (2003-07-19 17:24) [11]Да, спасибо, теперь получилось. Дело было не в реестре.
Я сделал так:
var ss : string;
begin
SS:=ParamStr(1);
if fileexists(ss) then begin
Editor.Lines.LoadFromFile(ss);
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c