Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разное тестирование > Программа расширения контекстного меню


Автор: azesmcar 8.4.2009, 22:09
Добрый день,

Выдалось свободнов время - вот написал програмку, для меня во всяком случае полезную. Теперь о деле.
Наименование: ShellExtender (пока что)
Цель: Расширение возможностей контекстного меню эксплорера.
Возможности:
  • Копирование имен файл(а/ов)
  • Копирование полных имен файл(а/ов)
  • Копирование наименования типов файл(а/ов)
  • Копирование hash -а файл(а/ов) в форматах MD2, MD4, MD5, SHA1
пока что только это, но возможности практически безграничны.
Желательно немного протестировать программу, услышать мнение/критику..и что еще можно добавить в нее. Я подумываю над Batch rename...

А для тех кто в совершенстве владеет программой Regedit, расскажу как (пока что вручную) добавить новые возможности.

В регистрах есть ключь
HKEY_LOCAL_MACHINE\SOFTWARE\ShellExt
все что добавляется там, появляется в контекстном меню. Нужно только знать формат..а формат такой

%d - имя файла
%f - полное имя файла
%t - имя типа файла
%T - табуляция
%R - перенос строки
%D - перенос строки, табуляция
%1 - хеш MD2 файла
%2 - хеш MD4 файла
%3 - хеш MD5 файла
%4 - хеш SHA1 файла

т.е. добавив туда String value
Include="#include <%d>%R" - в результате выбора нескольких файлов - скопируем в буфер обмена что-то вроде
Цитата

#include <my_getopt.h>
#include <my_global.h>
#include <config-win.h>
#include <dbug.h>
#include <errmsg.h>
#include <m_ctype.h>
#include <m_string.h>
#include <my_alloc.h>


А вот и ссылка на программу
http://217.73.200.72/setup.exe
разумеется обо всех проблемах и багах писать сюда. Я скомпилировал так чтобы работало у всех..но я не идеален smile нету у меня компьютера без Visual Studio, не могу проверить..

И на всякий случах для тех кто не знает smile
программа вот тут

http://ipicture.ru/Gallery/Viewfull/17030948.html
в Start Menu не ищите

Всем спасибо

Автор: azesmcar 9.4.2009, 14:49
Ну и активность на этом форуме..господа админы, нельзя ли его как нибудь раскрутить?  smile
а то форум нужный, а посещений - нет 

Автор: Akella 25.4.2009, 23:49
Обзови setup.exe как-нибудь понятнее. А то леньки переименовывать после скачивания smile

Добавлено через 1 минуту и 39 секунд
А где деинсталлятор? Где настройки?
Я хочу, например, удалить некоторые из пунктов.

Добавлено через 3 минуты и 23 секунды
Вот результат.
Установил запустил Проводник. Щёлкнул по имени файла Безымянный.PNG

Вывалилось окошко с ошибкой и предложением отправить результаты в мелкософт.
Цитата

AppName: explorer.exe  AppVer: 6.0.2900.5512  ModName: shellextender.dll
ModVer: 1.0.0.1  Offset: 00002b7c


Добавлено через 3 минуты и 59 секунд
Цитата(azesmcar @  8.4.2009,  22:09 Найти цитируемый пост)
В регистрах есть ключь

1. В реестре
2. Ключ

Автор: azesmcar 25.4.2009, 23:53
Akella

Настройки пока только к сожалению в регистрах, никак не определюсь на чем окошки рисовать. smile 
все вот тут
HKEY_LOCAL_MACHINE\SOFTWARE\ShellExt
а деинсталятор в Add/Remove programs в Control Panel.

Добавлено через 18 секунд
Цитата

Обзови setup.exe как-нибудь понятнее. А то леньки переименовывать после скачивания smile

щас smile

Автор: Akella 25.4.2009, 23:54
У мну WinXP SP3

Автор: azesmcar 25.4.2009, 23:55
переименовал, вот новая ссылка smile 
http://217.73.200.72/setup.exe

Добавлено @ 23:56
Akella

И как работает? я вроде использую без проблем. Да, и как вообще программа? нужная вещь? (ваше личное субьективное мнение smile )

Автор: Akella 26.4.2009, 00:46
Цитата(azesmcar @  25.4.2009,  23:53 Найти цитируемый пост)
а деинсталятор в Add/Remove programs в Control Panel.

Не нашёл, как там пункт называется?

Добавлено через 3 минуты и 1 секунду
Цитата(azesmcar @  25.4.2009,  23:55 Найти цитируемый пост)
И как работает? я вроде использую без проблем. Да, и как вообще программа? нужная вещь? (ваше личное субьективное мнение smile )

Я уже написал, что не работает.
Вещь нужная. Поэтому заинтересовался.

Цитата(azesmcar @  25.4.2009,  23:55 Найти цитируемый пост)
переименовал, вот новая ссылка smile 
скачать

опять осталось setup.exe

Теперь требует перезагрузку, это обязательно?

Добавлено через 5 минут и 12 секунд
Удалил программу из панели управления. Запустил по новой setup.exe

Цитата
Установка или удаление предыдущей программы не были завершены. 

А можно как-то без перезагрузки?

*ушёл на перезагрузку*

Автор: Akella 26.4.2009, 01:15
Установил. 
Если щёлкаю правой кнопкой на файле INSTALL.txt, то пункт меню вижу.
А если на файле с именем Безымянный.PNG, то пункт не появляется.

Добавлено через 1 минуту и 17 секунд
И пункт About нужно перенести в конец списка. Этот пункт будет наименее востребованный, а можно и вообще его убрать.
Добавить нужно ещё возможность указать порядок пунктов.

Добавлено через 2 минуты и 38 секунд
После копирования имени файла в буфер обмена появляется окно с подтверждением того, что имя скопировано. Это вообще не нужно, ну или хотя бы сделать возможность отключения подтверждения (показа информационного окна).

Добавлено через 4 минуты и 14 секунд
Щёлкнул правой кнопкой по пустому месту в Проводнике.... опять ошибка
Цитата

AppName: explorer.exe  AppVer: 6.0.2900.5512  ModName: shellextender.dll
ModVer: 1.0.0.1  Offset: 00002b7c

и текущее окно Проводника закрывается.

Добавлено через 4 минуты и 49 секунд
Если щёлкнуть правой кнопкой по любой папке, то твоего пункта в меню нет.

Добавлено через 5 минут и 24 секунды
Или после ошибки shellextender не подгружается.

Автор: azesmcar 26.4.2009, 10:44
Извиняюсь..ссылку неправильно привел, вот
http://217.73.200.72/shellext.exe

Цитата

Не нашёл, как там пункт называется?

ShellExtender 1.0 (betta)

Цитата

Теперь требует перезагрузку, это обязательно?

К сожалению да, программа это COM DLL подружающийся к explorer, можно и без перезагрузки, но перезагружать надо будет explorer. В принципе logoff вполне сойдет.

Цитата

Если щёлкаю правой кнопкой на файле INSTALL.txt, то пункт меню вижу.
А если на файле с именем Безымянный.PNG, то пункт не появляется.

Сейчас посмотрю, может проблема с Русскими именами файлов, хотя сомневаюсь, у меня все на юникод.

Цитата

И пункт About нужно перенести в конец списка. Этот пункт будет наименее востребованный, а можно и вообще его убрать.
Добавить нужно ещё возможность указать порядок пунктов.

мысль smile непременно добавлю

Цитата

После копирования имени файла в буфер обмена появляется окно с подтверждением того, что имя скопировано. Это вообще не нужно, ну или хотя бы сделать возможность отключения подтверждения (показа информационного окна).

добавлю в конфиг, просто некоторые операции (например подсчет MD5 болшого файла) требуют времени, потому поставил MessageBox.

Цитата

Щёлкнул правой кнопкой по пустому месту в Проводнике.... опять ошибка

Вот это уже интересно...сейчас скачаю Service Pack 3

Цитата

Если щёлкнуть правой кнопкой по любой папке, то твоего пункта в меню нет.

да, он работает для файлов..просто не знаю как реализовать MD5 для папки, то ли по всем файлам пробежаться рекурсивно..вроде как программа для файлов предазначена..если найдем применение для директорий - добавлю. 

Автор: Akella 26.4.2009, 11:14
Цитата(azesmcar @  26.4.2009,  10:44 Найти цитируемый пост)
добавлю в конфиг, просто некоторые операции (например подсчет MD5 болшого файла) требуют времени, потому поставил MessageBox.

А в этому случае лучше сделать так:
определить примерное вермя время выполнения операция в первые 3-4 секунды выполнения, если это весьма долго, то вывести окно с какой-нибудь анимацией.

Добавлено через 4 минуты и 57 секунд
Цитата(azesmcar @  26.4.2009,  10:44 Найти цитируемый пост)
да, он работает для файлов..просто не знаю как реализовать MD5 для папки, то ли по всем файлам пробежаться рекурсивно..вроде как программа для файлов предазначена..если найдем применение для директорий - добавлю. 

Вот здесь можно получать информацию для каждого файла, каждой выделенной папки, если выделено 1 или более папок. И составлять примерно такой список:
Полный путь какой-нибудь уникальный разделитель информация

Добавлено через 6 минут и 4 секунды
При выделении одного файла видно меню, при выделении нескольких пункта меню нет. Выделил даже имена, где нет русских символов.

Добавлено через 7 минут и 8 секунд
Зашёл в папку D:\Distrib, щёлкаю по файлам правой кнопкой мышки, ни на одном из файлов пункта меню нет.

Добавлено через 8 минут и 28 секунд
Зашёл в корень диска с: - та же проблема. Пункт меню я вижу только если щёлкаю по файлу с именем INSTALL.txt

Добавлено через 9 минут и 16 секунд
Странно. Попытался вырезать и перенести файл INSTALL.txt.... Окно проводника закрылось с ошибкой.

Автор: azesmcar 26.4.2009, 12:56
Цитата

А в этому случае лучше сделать так:
определить примерное вермя время выполнения операция в первые 3-4 секунды выполнения, если это весьма долго, то вывести окно с какой-нибудь анимацией.

Подумаю как это сделать..закончу с багфиксом - приймусь за это smile


Akella
Я вчера вернул виндоуз акронисом...сегодня только установил свою программу и интересно то что все проблемы описанные здесь у меня тоже появились..до этого я ее использовал и ничего этого не было smile 
Спасибо огромное..начал разбираться.

Автор: azesmcar 26.4.2009, 14:20
Для начала багфикс

http://217.73.200.72/shellext.exe

работаю над остальными исправлениями. Проблема была в инсталяторе.

Автор: Akella 27.4.2009, 09:03
Тебе после инсталляции как-нибудь запускать бы свою Dll-ку. Или Предупреждать, что пункт меню появится только после перезапуска компьютера или процесса explorer.exe.

Автор: azesmcar 27.4.2009, 09:24
Цитата

Тебе после инсталляции как-нибудь запускать бы свою Dll-ку. Или Предупреждать, что пункт меню появится только после перезапуска компьютера или процесса explorer.exe.

Она должна автоматом загрузиться..но если после деинсталяции - тогда сложности, так-как длл-ка уже загружена. Хммм, подумаю сегодня как бы красивее это сделать..настройку создал, сегодня вечером еще раз протестирую скину на сервер.
А как насчет багов? Исправились?

Автор: Akella 27.4.2009, 09:28
Цитата(azesmcar @  27.4.2009,  09:24 Найти цитируемый пост)
Она должна автоматом загрузиться..

Только что установил. Кликнул по имени файла... нет пункта меню. Перезапустил процесс - есть

Добавлено через 44 секунды
Цитата(azesmcar @  27.4.2009,  09:24 Найти цитируемый пост)
но если после деинсталяции - тогда сложности, так-как длл-ка уже загружена. 

Так во время ДЕинсталляции можно/нужно закрывать DLL-ку.

Добавлено через 1 минуту и 40 секунд
Цитата(azesmcar @  27.4.2009,  09:24 Найти цитируемый пост)
А как насчет багов? Исправились?

вроде да, about забыл перенести или вообще убрать в окно настроек.

Добавлено через 2 минуты и 35 секунд
Кстати, если оставить About, то там, в окне "О программе" можно сделать кнопку на окно с настройками smile 

Автор: azesmcar 27.4.2009, 09:38
Цитата

вроде да, about забыл перенести или вообще убрать в окно настроек.

Добавлено через 2 минуты и 35 секунд
Кстати, если оставить About, то там, в окне "О программе" можно сделать кнопку на окно с настройками smile  

About уже убрал в окно с настройками, добавлю пункт Configure... вместо About и перенесу в конец списка. Просто пока не скинул на сервер, с работы не могу, дома сделаю вечером.

Цитата

Так во время ДЕинсталляции можно/нужно закрывать DLL-ку.

Думаю как это реализовать smile 
Перезапускать эксплорер как-то некрасиво..а требовать перезагрузки ради одного эксплорера тоже не то smile

Автор: Akella 27.4.2009, 09:45
Щёлкаю по пустому месту Проводника
Цитата

---------------------------
explorer.exe - Ошибка приложения
---------------------------
Инструкция по адресу "0x03772b7d" обратилась к памяти по адресу "0x00000000". Память не может быть "read".


"ОК" -- завершение приложения
"Отмена" -- отладка приложения
---------------------------
ОК   Отмена   
---------------------------



Добавлено через 1 минуту и 12 секунд
Цитата(azesmcar @  27.4.2009,  09:38 Найти цитируемый пост)
Так во время ДЕинсталляции можно/нужно закрывать DLL-ку.

Думаю как это реализовать smile 

Inno поддерживает скрипты, паскаль. Ты же на C++ пишешь?

Автор: azesmcar 27.4.2009, 09:50
Цитата

Inno поддерживает скрипты, паскаль. Ты же на C++ пишешь? 

Ага..инсталятор через Inno, язык программирования С++.
Так я скрипт написал, но не знаю что именно делать..убивать эксплорер что ли?

Цитата

Щёлкаю по пустому месту Проводника

Интересно. У меня нормально, вчера раз 50 проверял. (самые противные ошибки smile )
Всегда выдает или иногда? ОС 32х битная или х64?

Автор: Akella 27.4.2009, 14:45
Цитата(azesmcar @  27.4.2009,  09:50 Найти цитируемый пост)
Так я скрипт написал, но не знаю что именно делать..убивать эксплорер что ли?

А что, нельзя выгрузить dll без закрытия explorer`а?

Добавлено через 12 секунд
Цитата(azesmcar @  27.4.2009,  09:50 Найти цитируемый пост)
ОС 32х битная или х64?

32

Добавлено через 44 секунды
Я сейчас не могу даже папку создать проводником. Меню Файл открываю и Проводник валится.

Добавлено через 1 минуту и 44 секунды
Цитата

---------------------------
explorer.exe - Ошибка приложения
---------------------------
Инструкция по адресу "0x03772b7d" обратилась к памяти по адресу "0x00000000". Память не может быть "read".


"ОК" -- завершение приложения
"Отмена" -- отладка приложения
---------------------------
ОК   Отмена   
---------------------------



Цитата
адресу "0x00000000"

это говорит о том, что ты чего-то не создал, а пытаешься обратиться к этому.

Автор: azesmcar 27.4.2009, 14:55
Цитата

А что, нельзя выгрузить dll без закрытия explorer`а?

Смотрю как его заставить smile 

Цитата

это говорит о том, что ты чего-то не создал, а пытаешься обратиться к этому. 

Да, обращение к нулевому указателю. Вечером выставлю новую версию, если не найду ничего соберу дебаг версию с асертами поглядим что там творится.

Автор: azesmcar 27.4.2009, 19:49
Akella

Пока ничего нового не добавляю в проект, отдельно конфиг и все остальное готово, но оставлю пока баг не исправлю.
Скинул новую версию, никак не пойму где может вылетать. Поставил ASSERT везде где есть обращение к указателям.

Ссылка на новую версию http://217.73.200.72/shellext.exe

Автор: Akella 27.4.2009, 21:43
Установил. Щёлкаю по пустому место проводника.
Опять ошибка.
Цитата

AppName: explorer.exe  AppVer: 6.0.2900.5512  ModName: shellextender.dll
ModVer: 1.0.0.1  Offset: 00002b54


Прикрепляю файл.

Автор: Akella 27.4.2009, 21:44
И ещё. Когда у тебя что-то копируется в буфер обмена, то появляется ещё одна лишняя строка. Или в конец строки с именем добавляется код переноса строки. Не знаю, как это в сях, в дельфи это #13 (Нажатие клавиши enter)

Автор: azesmcar 30.4.2009, 00:08
Akella

Тему не забросил, просто никак не пойму где ошибка, все больше склоняюсь к тому что это не в программе а где-то в другом месте, в подключении к эксплореру, или что-то наподобие. В любом случае никак даже не могу получить эту ситуацию, у меня нормально работает, никаких ошибок нет. Вернул чистый виндоуз акронисом, инсталировал - все четко. Сейчас качаю сервис пак 3, надо бы под сервис паком проверить, такие проблемы нередко случаются после выходов сервис паков. Завтра докачает - взгляну.

Автор: Akella 30.4.2009, 00:13
У меня вот ещё что установлено.
Jet Audio;
NotePad++;
ACDSea Pro 2.0;
ESET Smart Security 4;
WinRAR.
Эти программы встраиваются в контекстное меню проводника.

Не найдёшь - пиши в приват smile 

Автор: azesmcar 4.5.2009, 13:35
Akella

Все достал, испробовал..ни в какую.
Установил Сервис пак 3, нормально пашет.
Попросил других людей проверить, вылетает..похоже я единственный человек на этой планете у которого программа работает smile 
Сделать дебаг у этих "других людет" не реально, попросить их сделать это еще более нереально. Даже не знаю уже что еще сделать? Переустановил виндоуз, работает...установил Vista x64, все равно работает.

Уже не знаю в какую сторону копать...создаю тему на форуме  smile 

Автор: Akella 4.5.2009, 14:16
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)