Статьи по Делфи
Меню сайта


Категории каталога
Мои статьи [2]
Функции и процедуры Win Api [20]
Работа с мышью [10]
Реестр и Делфи [11]
Работа с файлами [38]
Делфи и Хакер [10]
Инсталлятор собственными руками [6]
Хитрости в делфи [3]
Работа с системой [19]


Форма входа


Поиск по каталогу


Друзья сайта


Наш опрос
Понравились ли вам треки
Всего ответов: 156


Приветствую Вас, Гость · RSS 2020-09-19, 10:40 PM
Начало » Статьи » Реестр и Делфи

Получить имя программы, с которой ассоциировано то или иное расширение
uses
{$IFDEF WIN32}
Registry; {We will get it from the registry}
{$ELSE}
IniFiles; {We will get it from the win.ini file}
{$ENDIF}

{$IFNDEF WIN32}
const
MAX_PATH = 144;
{$ENDIF}

function GetProgramAssociation(Ext: string): string;
var
{$IFDEF WIN32}
reg: TRegistry;
s: string;
{$ELSE}
WinIni: TIniFile;
WinIniFileName: array[0..MAX_PATH] of char;
s: string;
{$ENDIF}
begin
{$IFDEF WIN32}
s := '';
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
if reg.OpenKey('.' + ext + '\shell\open\command',
false) <> false then
begin
{The open command has been found}
s := reg.ReadString('');
reg.CloseKey;
end
else
begin
{perhaps thier is a system file pointer}
if reg.OpenKey('.' + ext,
false) <> false then
begin
s := reg.ReadString('');
reg.CloseKey;
if s <> '' then
begin
{A system file pointer was found}
if reg.OpenKey(s + '\shell\open\command',
false) <> false then
{The open command has been found}
s := reg.ReadString('');
reg.CloseKey;
end;
end;
end;
{Delete any command line, quotes and spaces}
if Pos('%', s) > 0 then
Delete(s, Pos('%', s), length(s));
if ((length(s) > 0) and
(s[1] = '"')) then
Delete(s, 1, 1);
if ((length(s) > 0) and
(s[length(s)] = '"')) then
Delete(s, Length(s), 1);
while ((length(s) > 0) and
((s[length(s)] = #32) or
(s[length(s)] = '"'))) do
Delete(s, Length(s), 1);
{$ELSE}
GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName));
StrCat(WinIniFileName, '\win.ini');
WinIni := TIniFile.Create(WinIniFileName);
s := WinIni.ReadString('Extensions',
ext,
'');
WinIni.Free;
{Delete any command line}
if Pos(' ^', s) > 0 then
Delete(s, Pos(' ^', s), length(s));
{$ENDIF}
result := s;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetProgramAssociation('gif'));
end;
Категория: Реестр и Делфи | Добавил: Admin (2006-12-17)
Просмотров: 1280 | Комментарии: 6 | Рейтинг: 0.0 |

Всего комментариев: 1
0
1 zaykap   [Материал]
В марте в редакции «Газеты. Ru» должно было состояться онлайн-интервью председателя Госдумы и главы высшего совета партии
«Единая Россия» Бориса Грызлова. Борис Грызлов планировал рассказать об убедительной победе ЕР на региональных выборах, о модернизации и инновациях. Однако пользователи Интернета устроили Грызлову флэш-моб. :arrow:
Большинство вопросов, которые они заранее прислали Грызлову, были крайне неприятны. Утром от Грызлова позвонили и отказались проводить онлайн конференцию...
Но 99% заданных вопросов были примерно вот такого плана:
Цитата:
Скажите пожалуйста, Борис Вячеславович, можно ли фильтром ученого
Петрика очистить воду получаемую из сосулек сбитых лазером, о котором говорила Ваш однопартиец, губернатор Санкт-Петербурга, госпожа
Матвиенко? (Андрей)
http://sibnews.blog.ru/160089939.html
В 10 утра Борис Грызлов, сказавшись на большую государственную занятость, отказался от интервью. :-)

Так вот представьте такую ситуацию, что на нашем сайте собирается дать онлайн интервью одно из первых лиц государства.
Какие бы вопросы задали вы о Сибири, или России? Пишите

Имя *:
Email *:
Код *: