Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить свой пункт в системное меню Windows.. Я пень пнём! 
:(
    Опции темы
Killer600
  Дата 28.6.2004, 09:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне нужно сделать пункт в системном меню Windows и обрабатывать его - точнее чтобы по нему щёлкали и файлы с мои расширением открывались в Memo(т.е. мне надо сделать меню как у Winrar'а )и путь к тому файлу сразу же записывался в Edit????????? exclamation.gif bored.gif sad.gif
Если нужно - мой ящик [email protected]
  Вверх
Illusion Dolphin
Дата 28.6.2004, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



uses ..., registry;

const my_ext = 'abc';
my_ind = 'abc_file';
var reg:tregistry;

function register_ext:boolean;
begin
result:=false;
Reg:=Tregistry.create;
try
Reg.rootkey:=Windows.HKEY_CLASSES_ROOT;
Reg.OpenKey('\'+my_ext +'\',true);
Reg.writestring('',my_ind);
Reg.free;
Reg:=Tregistry.create;
Reg.rootkey:=Windows.HKEY_CLASSES_ROOT;
Reg.OpenKey('\'+my_ind+'\',true);
Reg.OpenKey('\'+my_ind+'\DefaultIcon',true);
Reg.writestring('',Application.Exename+',1');
Reg.OpenKey('\'+my_ind+'\Shell\Open\Command',true);
Reg.writestring('','"'+Application.Exename+'" "%1"');
Result:=true;
except
end;
Reg.free;
end;

procedure tform1formcreate(sender:TObject);
begin
if not register_ext then showmessage('Не могу зарегистрировать расширение!');
if fileexists(paramstr(1)) then
begin
edit1.text:=paramstr(1); //выводим путь к файлу
memo1.Lines.LoadFromFile(paramstr(1)); //открываем файл
end
end;

P.S. Это если файлы текстового формата, иначе вместо
memo1.Lines.LoadFromFile
придётся писать что-нибудь своё, что зависит от конкретной задачи.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 28.6.2004, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



GetSystemMenu + AppendMenu + WM_SYSCOMMAND
Добавлено @ 16:08
Ой, ошибся - подумал для системного меню окнаsmile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Akella
Дата 29.6.2004, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Как добавить свой пункт меню в проводнике?
Код

function AddMenuItem(ConnType: TconnType; MenuText, StatusBarText,
 GuidOrPath: string; HelpMenu: Boolean): string;
var
 GUID: TGUID;
 ID: string;
 Reg: TRegistry;
begin
 CreateGuid(GUID);
 ID := GuidToString(GUID);
 Reg := TRegistry.Create;
 with Reg do
 begin
   RootKey := HKEY_LOCAL_MACHINE;
   OpenKey('\Software\Microsoft\Internet Explorer\Extensions\'
     + ID, True);
   if HelpMenu then
     WriteString('MenuCostumize', 'help');
   WriteString('CLSID', '{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}');
   WriteString('MenuText', MenuText);
   WriteString('MenuStatusBar', StatusBarText);
   case ConnType of
     EXECUTABLE: WriteString('Exec', GuidOrPath);
     COM_OBJECT: WriteString('ClsidExtension', GuidOrPath);
     SCRIPT: WriteString('Script', GuidOrPath);
   end;
   CloseKey;
   OpenKey('\Software\IE5Tools\Menu Items\', True);
   WriteString(MenuText, ID);
   CloseKey;
   Free;
 end;
 Result := ID;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.