Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавить пункт в контекстное меню проводника. 
:(
    Опции темы
Andrey44
Дата 19.11.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Alca, картинка  не помогает.
Ну направте в нужную сторону.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Alca
Дата 19.11.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Добавить пункт в контекстное меню Windows
ишо:
Цитата

http://fegrad.su/Pages-view-622.html
Контекстное меню файлов и папок 
Если Вы хотите чтобы вы могли открыть какой-либо прогой любой файл из контекстного меню, то это прописывается здесь

[HKEY_CLASSES_ROOT*shellЭто будет в контекстном менюcommand]
@="Путь_к_программе %1"

Можно сделать так, чтобы пункт "Открыть с помощью..." всегда появлялся в контекстном меню. Для этого найдем ключ HKEY_CLASSES_ROOT* и создадим в нем раздел shell (если его нет). Здесь создадим еще раздел "openas", а в нем еще "command". Измените значение "По умолчанию" на "C:WINDOWS undll32.exe shell32.dll,OpenAs_RunDLL %1" (путь к файлу подредактируйте при необходимости). 



Когда вы запускаете файл, ассоциированный с каким-то приложением в Windows, то файл открывается именно в этом приложении. А как быть, если вам надо открыть этот файл в другом приложении? С WinNT/2000/XP все понятно: там в контекстном меню файлов всегда присутствует пункт "Открыть с помощью...". В Win9х этого пункта изначально нет, но если выделить нужный файл и, удерживая Shift, щелкнуть правой кнопкой мыши по нему, то в контекстном меню появится дополнительный пункт "Открыть с помощью...". Таким образом удобно как переассоциировать открытие файлов на другое приложение (без копания в реестре и разных диалогах), так и использовать это для какого-то конкретного случая. 



Как связать несколько приложений с одним расширением файла.
Например, документ в формате Microsoft Word for Windows (расширение .doc) можно открывать как с помощью MS Word, так и с WordPad. Для этого:
1. Откройте окно "Мой компьютер".
2. В меню "Вид" выберите пункт "Свойства папки".
3. Выберите закладку "Типы файлов".
4. В списке "Зарегистрированные типы файлов" выберите "Документ Microsoft Word".
5. Нажмите на кнопку "Изменить".
6. Нажмите на кнопку "Добавить".
7. В строке "Действие" введите:
Открыть в WordPad
8. В строке "Приложение, исполняющее действие" введите:
"{path}wordpad.exe" "%1"
где {path} - полный путь к файлу Wordpad.exe. В этой строке кавычки обязательны.
9. Нажмите кнопку "OK".
Если после этого вы дважды щёлкните левой кнопкой мыши на файле с расширением .doc, то документ откроется программой Microsoft Word. Если вы щёлкните правой кнопкой мыши на файле такого типа, то из появившегося меню сможете выбрать пункт "Открыть в WordPad". 



Запуск программы из меню корзины
Для добавления программы в меню корзины(щелкните правой кнопкой мыши по иконке корзины) нужно сделать следующие:
- Откройте ветвь реестра "HKEY_CLASSES_ROOTCLSID{645FF040-5081-101B-9F08-00AA002F954E}Shell"
- Создайте в ней раздел с вашем именем
- В новом разделе создайте еще один с названием "Command"
- В параметре по умолчанию задайте путь к файлу который вы хотите открыть. 



Для быстрой чистки дисков, воспользуйтесь этим советом.
В реестре Windows HKEY_CLASSES_ROOTDriveshell создать раздел типа CleanDisk, в нем создать раздел (command), в параметре "По умолчанию", которого прописать:
C:WINDOWScleanmgr.exe /d %1
Теперь нажав правой кнопкой мыши на каком-либо диске можно выбрать команду CleanDisk.



Это сообщение отредактировал(а) Alca - 19.11.2008, 16:19


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 8.12.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Создание нового расширения файлов, Регистрация и ассоциация своей программы с новым 
Код

TRegistry *Reg = new TRegistry();

 Reg->RootKey = HKEY_CLASSES_ROOT;
 try
 {
    Reg->OpenKey(".my",true);
    Reg->WriteString("","myfile"); //"развернутое" описание
Reg->CloseKey();
Reg->OpenKey("myfile\\DefaultIcon",true);
Reg->WriteString("",ParamStr(0)+",0");
//рег-м значение пиктограммы, т. "Имя приложения, 0"
Reg->CloseKey();
Reg->OpenKey("myfile\\Shell\\Open\\Command", true);
Reg->WriteString("", ParamStr(0)+' '+'"'+"%1"+'"');
//это значит, что призапуске
//в приложение передается имя файла("%1" - вот именно
//вот это озачает..)
//т.е. в реестре будет иметь вид
//"c:\MyDir\MyProg.exe %1"
Reg->CloseKey();
}
 __finally
   {
     Reg->Free();
   } 


Этим зарегистрировали.
Код

int i;
AnsiString s;

if (ParamCount > 0)
   {
     for (i = 1; i<=ParamCount(); i++)
     {
       s = s+ParamStr(i)+' ';
       Memo1->Lines->LoadFromFile(s);
       Caption = "Куррент File из:"+s;
     }
   } 

А этот код должен отработать при загрузке приложения, т.е. либо это WinMain функция, или TForm->Create() событие... Но можно хоть в кнопке прописать. Все-равно в приложение переданы параметры.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Andrey44
Дата 9.12.2008, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 8
Всего: 26



Alca, спасибо за участие, буду пробовать. smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Alca
Дата 12.12.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



ContextEdit 1.2.zip

Присоединённый файл ( Кол-во скачиваний: 41 )
Присоединённый файл  ContextEdit_1.2.zip 487,26 Kb


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 12.12.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 5
Всего: 50



Как зарегистрировать свой пункт в меню для моего типа файлов


Автор: http://www.swissdelphicenter.ch 
uses
  Registry;

Код

procedure AddFileMenue(FilePrefix, Menue, Command: string);
var
  reg: TRegistry;
  typ: string;
begin
  reg := TRegistry.Create;
  with reg do
  begin
    RootKey := HKEY_CLASSES_ROOT;
    OpenKey('.' + FilePrefix, True);
    typ := ReadString('');
    if typ = '' then
    begin
      typ := Fileprefix + 'file';
      WriteString('', typ);
    end;
    CloseKey;
    OpenKey(typ + '\shell\' + Menue + '\command', True);
    WriteString('', command + ' "%1"');
    CloseKey;
    Free;
  end;
end;

procedure DeleteFileMenue(Fileprefix, Menue: string);
var
  reg: TRegistry;
  typ: string;
begin
  reg := TRegistry.Create;
  with reg do
  begin
    RootKey := HKEY_CLASSES_ROOT;
    OpenKey('.' + Fileprefix, True);
    typ := ReadString('');
    CloseKey;
    OpenKey(typ + '\shell', True);
    DeleteKey(Menue);
    CloseKey;
    Free;
  end;
end;

{ Example / Beispiel:}

procedure TForm1.Button1Click(Sender: TObject);
begin
  { Register the Menuepoint: }

  AddFileMenue('rtf', 'Edit with Notepad', 'C:\Windows\system\notepad.exe');

  {
    If you now click with the right mousebutton on a *.rtf-file then
    you can see a Menuepoint: "Edit with Notepad".
    When Click on that point Notepad opens the file.

    Wenn man nun mit der rechten Maustaste im Explorer auf eine *.rtf-Datei Clickt,
    dann erscheint dort der Menuepunkt "Edit with Notepad".
    Beim Clicken darauf, цffnet Notepad diese Datei.
  }
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  {
   Unregister the Menuepoint / Undo your changes in the Registry:
   Lцscht den Menuepunkt wieder aus der Registry:
  }

  DeleteFileMenue('rtf', 'Edit with Notepad');
end;



--------------------
PM WWW ICQ Skype Jabber   Вверх
Ilfirin
Дата 20.9.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Strider



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 7.10.2008
Где: Surreal world

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



А если надо обработать несколько файлов? 
в paramstr приходит по 1 файлу.
PM ICQ   Вверх
zark
Дата 26.1.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Ilfirin @ 20.9.2010,  15:50)
А если надо обработать несколько файлов? 
в paramstr приходит по 1 файлу.

Вот вот, и мне интересно как быть в таком случае.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




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


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

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