Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Вниз

Открыть файл.   Найти похожие ветки 

 
Thrasher ©   (2008-02-18 11:57) [0]

В общем проблема в чем - пишу каталогизатор документов. Нужно сделать так, что-бы файлы, которые в каталоге, открывались программой, которая с ними асоциированная. Например .doc чтобы открывались программой ассоциированной именно с этим расширением (не только винворд, может кто-то использует опенофис). Знаю есть такая функция в WinAPI?, но как она называется не помню, что-то вроде FileOpen.

Подскажите в каком направлении следует копать. Спасибо.


 
Рамиль ©   (2008-02-18 12:00) [1]

ShellExecute


 
Mozg@n   (2008-02-18 19:44) [2]

Эта функция находится в модуле ShellApi

ShellExecute
ShellExecuteA
ShellExecuteW

Просто наглядный пример:

 shellapi.ShellExecute(0,"open",pchar(extractfilepath(paramstr(0)+"\help\help.html"),nil,nil,sw_maximize);


 
ПостОвый терминатор ©   (2008-02-18 19:57) [3]

Так в жизни именно это и делает Windows.
И не мучай себя сомнениями.
Ну, а если захочешь открывать файлы не ассоциированными с ними программами, тогда спрашивай.


 
ПостОвый терминатор ©   (2008-02-18 20:06) [4]


> Thrasher ©   (18.02.08 11:57)

>
А это код поможет тебе узнать кто с кем ассоциирован на конкретном компе:
{
This Code will return the programs associated with each extension.
You can obviously modify it to search for a specific extension.
}
uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
keys: TStringList;
i: Integer;
typename, displayname, server: string;
begin
memo1.Clear;
reg := TRegistry.Create;
try
  reg.rootkey := HKEY_CLASSES_ROOT;
  if reg.OpenKey("", False) then
  begin
    keys := TStringList.Create;
    try
      reg.GetKeyNames(keys);
      reg.CloseKey;
      {memo1.lines.addstrings(keys);}
      for i := 0 to keys.Count - 1 do
      begin
        if keys[i][1] = "." then
        begin
          {this is an extension, get its typename}
          if reg.OpenKey(keys[i], False) then
          begin
            typename := reg.ReadString("");
            reg.CloseKey;
            if typename <> "" then
            begin
              if reg.OpenKey(typename, False) then
              begin
                displayname := reg.ReadString("");
                reg.CloseKey;
              end;
              if reg.OpenKey(typename + "\shell\open\command", False) then
              begin
                server := reg.ReadString("");
                memo1.Lines.Add(Format("Extension: "%s", Typename: "%s", Displayname:"%s"" +
                                       #13#10"  Server: %s",
                                       [keys[i], typename, displayname, server]));
                reg.CloseKey;
              end;
            end;
          end;
        end;
      end;
    finally
      keys.Free;
    end;
  end;
finally
  reg.Free
end;
end;


 
Riply ©   (2008-02-18 20:40) [5]

> [4] ПостОвый терминатор ©   (18.02.08 20:06)

> if keys[i][1] = "." then

Надо проверять не пустая ли строка.
Возможен вариант (при таком способе получения имен ключей),
когда имя будет иметь нулевую длину.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
15-1202144713
ProgRAMmer Dimonych
2008-02-04 20:05
2008.03.16
Нужна помощь в выборе программы


2-1203152996
Rakurs
2008-02-16 12:09
2008.03.16
Сортировка TStringList при OEM тексте


11-1185758323
Dr. Andrew
2007-07-30 05:18
2008.03.16
Как установить стиль XP для кнопок и ползунка ScrollBar?


2-1201868147
S@shka
2008-02-01 15:15
2008.03.16
Привязка формы к окну другого приложения (Form1.Parent - ??)


2-1203018290
WebSQLNeederr
2008-02-14 22:44
2008.03.16
Заменить кусок текста из мемо на свой текст





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский