Главная страница
    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.46 MB
Время: 0.005 c
9-1167997988
Samarik
2007-01-05 14:53
2008.03.16
Как сделать в игре притяжение к земле в Delphi?


2-1203068758
Костя
2008-02-15 12:45
2008.03.16
Как отловить нажатие кнопки мыши


3-1193057669
olevacho_
2007-10-22 16:54
2008.03.16
Изменение записей из DBGRID


15-1202219474
Карелин Артем
2008-02-05 16:51
2008.03.16
Подольск и вокруг него. Где программисты или аналитики нужны?


2-1203418404
webpauk
2008-02-19 13:53
2008.03.16
Double<>Integer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский