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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 18:38   #1
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию Создание кнопки в проводнике

Всем привет. Собственно САБЖ: как создать собственную кнопку в проводнике windows средствами delphi??
dubailand вне форума Ответить с цитированием
Старый 18.03.2012, 18:41   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А кнопка должна запускать "Unreal Tournament 3" ?
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.03.2012, 18:48   #3
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию

Цитата:
А кнопка должна запускать "Unreal Tournament 3" ?
Ах, если бы...
dubailand вне форума Ответить с цитированием
Старый 18.03.2012, 18:54   #4
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

ну наверное через реестр или отлваливать сообщения и таскать ее вместе с explorer'om ну это уже так бред!
Кольша вне форума Ответить с цитированием
Старый 18.03.2012, 23:20   #5
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию

Попробовал через реестр, но почему то не работает (вручную все работает). Кстати, ошибка ни на какую строку не вылазит, а выскакивает окно с: "Failed to set data for 'InfoTip'"
Вот собственно сам код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg:TRegistry;
begin
     Reg:=TRegistry.Create;
     Reg.RootKey := HKEY_LOCAL_MACHINE;
     Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}\TasksItemsSelected', false); //Данный ключ уже существует
     Reg.OpenKey('\0\{c53ac272-7f42-44f0-9fb2-c660d077a6c8}',true);//Этот ключ создаем, т.е. он будет новый
     Reg.WriteString('InfoTip',' ');//В созданном ключе создаем строковый параметр
     Reg.WriteString('Title',' ');//Аналогично
     Reg.OpenKey('\shell\InvokeTask\command',true);//Продолжаем создавать ключ
     Reg.WriteString(' ','wscript.exe "C:\Users\??????\Desktop\edit.js" %0');//В созданном ключе еще один строковый параметр
     Reg.CloseKey;
     Reg.Free;
end;
Что мне нужно исправить?? Заранее спасибо...
dubailand вне форума Ответить с цитированием
Старый 18.03.2012, 23:53   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы точно программно добиваетесь того же эффекта?(те же ключи создаете)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.03.2012, 20:09   #7
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию

Цитата:
а вы точно программно добиваетесь того же эффекта?(те же ключи создаете)
Да, еще раз 3 раза перепроверил, все правильно
dubailand вне форума Ответить с цитированием
Старый 19.03.2012, 20:39   #8
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

А бы использовать RegIni
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 19.03.2012, 21:19   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
dubailand
Извиняюсь, а зачем? Ярлык на рабстоле или в быстром запуске гораздо удобнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.03.2012, 23:47   #10
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию

Stilet, дело в том, что я создаю программу, которая не запускает файл, а обрабатывает данные, смотря с какого окна она запускается. Именно поэтому ярлык на столе мне в корне не подходит...к сожалению.

Решил последовать совету lux16 и работать с RegIni. Исправил код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  Reg:TRegIniFile;
begin
     Reg:=TRegIniFile.Create;
     Reg.RootKey := HKEY_LOCAL_MACHINE;
     Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\', false);
     Reg.CreateKey('{5c4f28b5-f869-4e84-8e60-f11db97c5cc7}\TasksItemsSelected\0\{c53ac272-7f42-44f0-9fb2-c660d077a6c8}');
     Reg.WriteString('{c53ac272-7f42-44f0-9fb2-c660d077a6c8}','InfoTip',' ');
     Reg.WriteString('{c53ac272-7f42-44f0-9fb2-c660d077a6c8}','Title',' ');
     Reg.CloseKey;
     Reg.Free;
end;
Была ошибка связанная с нехваткой прав для редактирования ветви HKEY_LOCAL_MACHINE. Исправил на HKEY_CURRENT_USER, но к сожалению нельзя создать необходимые GUIDы. Программу запускаю от имени администратора, нужные права есть. Как мне правильно поступить в данной ситуации, чтобы получить необходимые права???

Последний раз редактировалось dubailand; 19.03.2012 в 23:55.
dubailand вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание кнопки Aleksandr Общие вопросы Delphi 7 28.03.2011 16:11
создание подстроки как в проводнике Windows Danilka Общие вопросы Delphi 3 26.05.2010 18:55
Создание кнопки RIO Общие вопросы Delphi 4 02.05.2010 16:55
Создание кнопки LENA_M Microsoft Office Excel 1 24.04.2009 16:44
Создание кнопки Karl_Karlovi4 Общие вопросы Delphi 1 05.02.2008 13:55