Форум: "Прочее";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизТребуется небольшая помощь в тестировании Найти похожие ветки
← →
Rouse_ © (2006-03-24 21:56) [0]Это обычная реализация IShellPropSheetExt, но по ряду причин, не имею возможности протестировать данное демо под всеми операционными системами.
Просьба, кто имеет возможность, протестируйте данный пример под системами отличными от ХР.
При неправильной работе данного примера может быть ошибка эксплорера с его последующим выпадением.
Вроде бы все подчистил, но хотелось бы удостовериться в стабильности работы.
Ссылка: http://rouse.front.ru/shellext.zip
Заранее спасибо, ну и конечно, советы приветствуются...
(Собирается данный пример под D7 и D2005/D2006, под остальными нет возможности проверить)
← →
Sergey Masloff (2006-03-24 22:35) [1]А на фиг там dsk? Dpr то не положил?
← →
Rouse_ © (2006-03-25 10:25) [2]вот блин :)
Как же это я так не доглядел то? :)
Готово, поправил
← →
Rouse_ © (2006-03-25 11:37) [3]Да, забыл сказать что это такое: после регистрации данной библиотеки в системе при просмотре свойств файлов следующих типов "(".exe", ".dll", ".ocx", ".scr", ".cpl", ".tlb", ".olb")" появляется дополнительная закладка со списком импорта и, если есть, экспорта...
← →
Yanis © (2006-03-25 12:11) [4]2 Rouse_
В Readme.txt ошибка ;)
← →
Yanis © (2006-03-25 12:23) [5]2 Rouse_
А как ей пользоваться то? Что то мудрёное? У меня не работает почему то.
← →
Rouse_ © (2006-03-25 14:44) [6]сначала ее нужно установить
regsvr32 <путь к библиотеке>\PEDump.dll
А потом смотреть к примеру свойства экзешников или библиотек :)
← →
Yanis © (2006-03-25 14:51) [7]
> сначала ее нужно установить
> regsvr32 <путь к библиотеке>\PEDump.dll
>
> А потом смотреть к примеру свойства экзешников или библиотек
> :)
Конечно я знаю, что её надо зарегить. Только вот дополнительной закладки не повляется :(
← →
Piter © (2006-03-25 15:58) [8]Да чем там тестировать, схема то отработанная :)
Да и вообще в Delphi пример есть:
"Borland\Delphi7\Demos\ActiveX\ShellExt"
← →
Yanis © (2006-03-25 17:25) [9]
> А потом смотреть к примеру свойства экзешников или библиотек
> :)
А после регистрации перезагрузка не требуется?
← →
Piter © (2006-03-25 18:12) [10]Да регистрация - это просто прописывание в реестре нужным параметров.
Не нужно никакой перезагрузки... Вот при удалении записи - DLL из ВАП проводника не сразу выгружается :)
← →
Yanis © (2006-03-25 18:18) [11]
> Да регистрация - это просто прописывание в реестре нужным
> параметров.
Да я на всякий случай переспросил. А у вас работает?
← →
Sergey Masloff (2006-03-25 18:33) [12]Windows 2000 Pro En sp4
Не работает. Компилируется регистрируется без проблем. Ничего не появляется в меню
← →
Rouse_ © (2006-03-25 23:36) [13]Ок, буду смотреть дальше... Придется таки разворачивать упавшую виртуальную машину... Спасибо...
> Да я на всякий случай переспросил. А у вас работает?
Да, у меня на ХР все бегает...
> Да чем там тестировать, схема то отработанная :)
Нет Мишь, тут все посложнее, иначе и не просил бы помощи...
← →
Rouse_ © (2006-03-25 23:39) [14]
> Sergey Masloff (25.03.06 18:33) [12]
Сереж, еще набольшая просьба. Проверь плз ресстр.
Вот так у меня:
Это регистрация:
[HKEY_CLASSES_ROOT\*\shellex\PropertySheetHandlers\{97AF3F10-EB54-45FB-96FD-9369BE3C2051}]
@="FWPropertySheet"
Это сам CLASSES_ROOT
[HKEY_CLASSES_ROOT\CLSID\{97AF3F10-EB54-45FB-96FD-9369BE3C2051}]
@=""
[HKEY_CLASSES_ROOT\CLSID\{97AF3F10-EB54-45FB-96FD-9369BE3C2051}\InprocServer32]
@="D:\\NewDemo\\COM\\PropertySheet\\Release\\PEDump.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{97AF3F10-EB54-45FB-96FD-9369BE3C2051}\ProgID]
@="PEDump.CharacterPage"
← →
Sergey Masloff (2006-03-25 23:40) [15]Rouse_ © (25.03.06 23:36) [13]
Если тестирование = запустить и посмотреть появилось ли меню то я в понедельник из отпуска выхожу могу на зоопарке проверить. Миллениума и 95 не обещаю все остальное есть вплоть до NT4 ;-)
← →
Sergey Masloff (2006-03-25 23:40) [16]Rouse_ © (25.03.06 23:39) [14]
10 сек.
← →
Sergey Masloff (2006-03-25 23:46) [17]Rouse_ © (25.03.06 23:39) [14]
Кроме этого
[HKEY_CLASSES_ROOT\CLSID\{97AF3F10-EB54-45FB-96FD-9369BE3C2051}\InprocServer32]
@="D:\\NewDemo\\COM\\PropertySheet\\Release\\PEDump.dll"
"ThreadingModel"="Apartment"
все нормально
тут просто PEDump.dll
ну мне не трудно руками писнуть. Щас проверю
← →
Rouse_ © (2006-03-25 23:48) [18]На выходе вот такая чтука должна показываться: http://rouse.front.ru/shellextbig.jpg
← →
Sergey Masloff (2006-03-25 23:53) [19]Да косяк с регистрацией у тебя где-то. Руками прописал все работает. Потом разрегистрировал-зарегистрировал ни хрена не работает.
← →
Rouse_ © (2006-03-25 23:54) [20]Ок, пасиб Сергей, с меня пива :) Буду думать регистрацию...
← →
Sergey Masloff (2006-03-25 23:55) [21]Слово адрес по русски с 1 с пишется ;-) Или стилизация? Тогда вторую д вставь! ;-)
← →
Rouse_ © (2006-03-25 23:57) [22]Хотя странно, модель регистрации стандартная:
procedure TFWPropertySheetFactory.UpdateRegistry(Register: Boolean);
const
szAppName = "FWPropertySheet";
szAppDescription = "PEDump Property Page";
var
szInProcServer32: String;
szInProcServer32Root: String;
szPropertySheetHandlers: String;
begin
szPropertySheetHandlers := "*\shellex\PropertySheetHandlers\" + GUIDToString(ClassID);
szInProcServer32Root := "CLSID\" + GUIDToString(ClassID) + "\";
szInProcServer32 := szInProcServer32Root + "InProcServer32\";
if Register then
begin
inherited UpdateRegistry(Register);
CreateRegKey(szPropertySheetHandlers, "", szAppName);
//CreateRegKey(szInProcServer32Root, "", szAppDescription);
CreateRegKey(szInProcServer32, "", ParamStr(1));
CreateRegKey(szInProcServer32, "ThreadingModel", "Apartment");
end
else
begin
DeleteRegKey(szInProcServer32);
DeleteRegKey(szInProcServer32Root);
inherited UpdateRegistry(Register);
end;
end;
Аааа, понял, если через BAT файл регистрировать - да, слетает.
Кто помнить, как в батнике прописать текущую папку?
Чичас там просто "regsvr32 PEDump.dll" он и пишет без пути :(
← →
Rouse_ © (2006-03-25 23:58) [23]
> Слово адрес по русски с 1 с пишется ;-) Или стилизация?
> Тогда вторую д вставь! ;-)
Пасибо, интерфейс я уже на скорую руку накидывал - да, есть ошибки :)
← →
Yanis © (2006-03-26 00:00) [24]
> Аааа, понял, если через BAT файл регистрировать - да, слетает.
>
> Кто помнить, как в батнике прописать текущую папку?
> Чичас там просто "regsvr32 PEDump.dll" он и пишет без пути
> :(
Точно. Попробовал сейчас из командной строки. Сделал текущей папка с dll и зарегил. Всё работает :)
← →
Rouse_ © (2006-03-26 00:07) [25]Мдя :(
Не помню я уже синтаксис и возможности батников.
Вопрос: как прописать строку вида:
"regsvr32 <путь к текущей папке где лежит BAT файл>\PEDump.dll"?
← →
Rouse_ © (2006-03-26 00:08) [26]Имеется ввиду в самом BAT файле :)
← →
Rouse_ © (2006-03-26 00:09) [27]
> Yanis © (26.03.06 00:00) [24]
Сообщи пожалуйста систему под которой проверял.
← →
Yanis © (2006-03-26 00:12) [28]
> "regsvr32 <путь к текущей папке где лежит BAT файл>\PEDump.
> dll"?
> %CD% Локальная Возвращает путь к текущей папке.
← →
Yanis © (2006-03-26 00:14) [29]
> Сообщи пожалуйста систему под которой проверял.
Microsoft Windows XP Professional 5.1.2600 (WinXP Retail) Service Pack 2
← →
Yanis © (2006-03-26 00:20) [30]К стати, проверил сейчас... На Microsoft Windows XP Home Edition 5.1.2600 (WinXP Retail) Service Pack 2 при просмотре свойств известных файлов возникает критическая ошибка експлорера.
← →
Rouse_ © (2006-03-26 00:21) [31]
> %CD% Локальная Возвращает путь к текущей папке.
Спасибо...
← →
Yanis © (2006-03-26 00:22) [32]
> при просмотре свойств известных файлов возникает критическая
> ошибка експлорера
Криво написал как то :) Имелось ввиду при просмотре файлов для которых предназначена программа.
← →
Rouse_ © (2006-03-26 00:25) [33]
> К стати, проверил сейчас... На Microsoft Windows XP Home
> Edition 5.1.2600 (WinXP Retail) Service Pack 2 при просмотре
> свойств известных файлов возникает критическая ошибка експлорера.
>
Ясно, значит не все вычистил :(
Вышли (если траффик не имеет значения) проблемный файл (на котором стабильно сваливается) на rouse79@yandex.ru
← →
Yanis © (2006-03-26 00:37) [34]
> Вышли (если траффик не имеет значения) проблемный файл (на
> котором стабильно сваливается)
Только что опытным путём выяснил, что ошибка возникает только на разных файлах. Т.е. если открыть свойства файл1.dll и открыть закладку, то иногда программа падает (почему то не всегда), но если открыть свойства второй раз того же файла, то всё работает без проблем. А теперь, к стати упал эксплорер и все файлы нормально обрабатываются. Странно :) Конечно, может я и написал многовато, но т.к. сам не знаю из-за чего но возникают ошибки и поэтому пишу всё что есть.
← →
Rouse_ © (2006-03-26 00:41) [35]гдето у меня там явно криво код написан. Кабы знать под чем можно данную библиотеку отладить кроме опытного пути? Уже третью неделю отлаживаю именно методом проб и ошибок ибо не могу нормальным отладчиком по коду пройтись :(
← →
Yanis © (2006-03-26 00:54) [36]Вот ещё симптомы. Возникает критическая ошибка Explorer.exe, но проводник остаётся работать. А случается это если с открытой закладкой "Список импорта/экспорта" побаловаться с окном - погонять его мышкой по экрану (причем с "заездом" краёв окошка свойст за края экрана), то возникает ошибка во 100% случаев. Может быть есть какая-нибудь процедура прорисовки SysListView32 или SysTreeView32, которая всё портит ну или в этом духе. В общем и целом по моему ошибка в процедуре отрисовки окна и/или его элементов.
← →
Rouse_ © (2006-03-26 01:10) [37]Хм, дело в том что я данный код откатал на всех рабочих машинах. Они именно твоей конфигурации. Ни одного сбоя.
Давай взглянем на код:WM_ERASEBKGND:
if UseThemes then
begin
GetControlRect(hDlg, DlgRect);
Details := OpenThemeData(hDlg, "TAB");
try
DrawThemeBackground(Details, GetDC(hDlg), TABP_BODY, 0, DlgRect, nil);
finally
CloseThemeData(Details);
end;
RedrawWindow(hDlg, nil, 0, REDRAWWINDOWFLAGS);
Result := 1;
Exit;
end;
Что здесь может давать ошибку ума не приложу :(
Поэтому и завел тему чтобы на нее взглянули люди, которые могли сталкиваться с данной темой...
Просто это тестовый проект, а на работе лежит такой же, но рабочий, в котором используется именно такойже подход (только нагрузка закладки несколько иная). Если она уйдет в сыром виде к клиентам - сами представляете какой это мне будет подарок от бухгалтерии :)
← →
Yanis © (2006-03-26 01:21) [38]
> Что здесь может давать ошибку ума не приложу :(
А ошибка перед началом перерисовки только у меня возникает? Или же у вас тоже?
← →
Yanis © (2006-03-26 01:30) [39]Возможно ошибка и не там. Просто предположение было. Даже если этот код закоментировать, то ошибка всё равно проявляется.
← →
Yanis © (2006-03-26 01:35) [40]Слушай включите пожалуйста ICQ мне так будет удобнее с вами общаться.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.042 c