Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2007, 11:33   #1
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Вопрос как открыть файл через прогу?

Пишу некоторый редактор некоторых файлов.
Моя прога может открыть файл для редактирования 3-мя способами
на пиктограмму, через меню, и на гор клавишу (во всех случаях открывается opendialog) мне надо чтобы (как любой редактор) прога открывала ассоциированный файл запуском самого файла, как это сделать?????
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 29.03.2007, 12:11   #2
LeoN
Форумчанин
 
Аватар для LeoN
 
Регистрация: 03.11.2006
Сообщений: 278
По умолчанию

ЧИЖ что то я немного вопрос не понял при чем тут вообще OpenDialog?
Разработка сайтов -дело прикольное
LeoN вне форума Ответить с цитированием
Старый 29.03.2007, 12:45   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Пишу некоторый редактор некоторых файлов
Ну, для некоторого редактора некоторых файлов, думается, подойдет некоторым образом такой способ запуска (аж с некоторым ожиданием):

procedure TFMain.ShellExecute_AndWait(FileNam e: string);
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
begin
Application.Minimize;
Ph := exInfo.HProcess;
end else
Exit;
while WaitForSingleObject(ExInfo.hProcess , 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
Application.Restore;
end;

Осталось некоторым образом разобраться и некоторым образом приспособить под свои нужды...
mihali4 вне форума Ответить с цитированием
Старый 29.03.2007, 14:05   #4
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
По умолчанию

а можно чуть чуть пояснить код процедуры? ато я пока разобрался только как сделать ее съедобной для компилятора,

и когда она должна вызываться onformcreate?
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 29.03.2007, 16:23   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
когда она должна вызываться onformcreate?
Э-э-х, память девичья... Это кто писал, Пушкин?
Цитата:
мне надо чтобы (как любой редактор) прога открывала ассоциированный файл запуском самого файла
mihali4 вне форума Ответить с цитированием
Старый 29.03.2007, 17:38   #6
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Хорошо

Нашел я ответ на свой вопрос.
Все оказалось проще: нужное мне для открытия файла
filename=paramstr(1)
заодно вместо открытия файла через прогу ее можно также запускать например с ярлыка с каким нибудь параметром.
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 29.03.2007, 18:29   #7
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Хех, т.е. для каждого редактируемого файла свой ярлык?
Вообще-то все ассоциации делаются через реестр.
zetrix вне форума Ответить с цитированием
Старый 29.03.2007, 21:51   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Вообще-то все ассоциации делаются через реестр.
А я делал именно приведенной процедурой (просто скопировал из модуля). Разве на диске с книгами по Дельфи она отрабатывает неверно?
Ну, естественно, используются имеющиеся в системе ассоциации.

Последний раз редактировалось mihali4; 29.03.2007 в 22:10.
mihali4 вне форума Ответить с цитированием
Старый 30.03.2007, 00:22   #9
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
По умолчанию

Зачем для каждого файла свой ярлык?
если файл "Открыть с помощью..." проги (ну или ассоциированный просто "Открыть") то paramstr(1) = filename (того файла который открываешь), а мне больше ни чего и не надо, далее просто вызывается процедура которая читает данные из файла filename
в буфер), ровно также как если сначала открыть прогу а потом в ней файл.

И к стати где в реестре живет инфа от том через какую прогу открывать файл данного типа, и какая у него иконка, ато я нашел только где живут названия типов файлов.
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 30.03.2007, 12:32   #10
Fainder
Участник клуба
 
Регистрация: 15.02.2007
Сообщений: 1,112
По умолчанию Вот небольшой образчик

Я пользовался таким вот образчиком:
Цитата:
procedure TForm1.Button1Click(Sender: TObject);
var
R : TRegIniFile;
begin
R := TRegIniFile.Create('');
with R do
begin
RootKey := HKEY_CLASSES_ROOT;
WriteString('.myext','','MyExt');
WriteString('MyExt','','Some description of MyExt files');
WriteString('MyExt\DefaultIcon','', 'C:\MyApp.Exe,0');
WriteString('MyExt\Shell','','This_ Is_Our_Default_Action');
WriteString('MyExt\Shell\First_Acti on',
'','This is our first action');
WriteString('MyExt\Shell\First_Acti on\command','',
'C:\MyApp.Exe /LotsOfParamaters %1');
WriteString('MyExt\Shell\This_Is_Ou r_Default_Action','',
'This is our default action');
WriteString('MyExt\Shell\This_Is_Ou r_Default_Action\command',
'','C:\MyApp.Exe %1');
WriteString('MyExt\Shell\Second_Act ion',
'','This is our second action');
WriteString('MyExt\Shell\Second_Act ion\command',
'','C:\MyApp.Exe /TonsOfParameters %1');
Free;
end;
end;
Прописываешься в реестре и никаких ярлыков для каждого файла, никаких "Открыть с помо-щью..." Хочешь - несколько действий. Хочешь - несколько типов файлов. В общем коротко, сухо и комфортно
Fainder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как через дельфи открыть папку в проводнике? t3ns0r Общие вопросы Delphi 6 28.03.2009 21:32
Как Web документ(htm, mht, и т.д.) открыть через Word? Yelzhas Общие вопросы Delphi 4 18.11.2007 20:14
Открыть порт для подключения через proxy Progs Работа с сетью в Delphi 18 05.07.2007 11:13
КАК ОТКРЫТЬ ЛЮБОЕ ПРИЛОЖЕНИЕ ЧЕРЕЗ DELPHI??? micaell Общие вопросы Delphi 8 17.12.2006 20:05