Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Shell Extensions


Автор: WWWlad 6.9.2010, 18:15
Всем доброго дня.

Написал свое расширение оболочки windows, рисующее каждому файлу в проводнике иконку в зависимости от его содержимого, по сути эскиз-превьюшку. Представляет собой 32-битную DLL с реализацией IExtractIcon, замечательно работает на 32-битных же системах. Но в Win7 64 работать отказывается. Точнее, превьюшки рисуются при просмотре папки в OpenDialog моей же программы (32 бит), но не в штатном проводнике.
Вопрос к знатокам: могут ли вообще 32бит расширения оболочки полноценно функционировать в 64бит системах? Если да, что какие дополнительные действия для этого требуются? Как их правильно регистрировать?

И второй вопрос: можно ли в 64бит системе запустить 32-битный проводник (explorer), чтобы хоть временно пронаблюдать работу моей DLL?

Заранее огромное спасибо всем ответившим.

Автор: CodeMonkey 6.9.2010, 19:28
Цитата(WWWlad @  6.9.2010,  19:15 Найти цитируемый пост)
Вопрос к знатокам: могут ли вообще 32бит расширения оболочки полноценно функционировать в 64бит системах?


Нет. 32-х разрядный компонент не может быть загружен в 64-х разрядный процесс и наоборот. Вам нужно два варианта своей DLL: 32-х разрядный и 64-х разрядный. Второй из которых... невозможно сделать в Delphi и не будет возможно ещё как минимум год. Можно посмотреть в сторону FreePascal или Microsoft-ских компиляторов.

Цитата(WWWlad @  6.9.2010,  19:15 Найти цитируемый пост)
можно ли в 64бит системе запустить 32-битный проводник (explorer), чтобы хоть временно пронаблюдать работу моей DLL?


Можно. Запускать C:\Windows\SysWOW64\explorer.exe вместо C:\Windows\explorer.exe.

Автор: WWWlad 7.9.2010, 12:28
CodeMonkey, 
спасибо за развернутый ответ. 

Вот только не получается запустить 32-битный проводник  smile При запуске C:\Windows\SysWOW64\explorer.exe новое окно проводника появляется, но не запускается (судя по диспетчеру) новый процесс. Процесс explorer в списке только один и он, естественно, не 32-битный. В итоге даже в отдельном окне не могу заставить свое расширение работать.

Автор: CodeMonkey 7.9.2010, 13:15
Так естественно. Проводник-же может быть только один. Вы запущенный сначала закройте, а уж потом запускайте новый.

Автор: WWWlad 7.9.2010, 13:25
Цитата(CodeMonkey @ 7.9.2010,  13:15)
Так естественно. Проводник-же может быть только один. Вы запущенный сначала закройте, а уж потом запускайте новый.

Пробовал. Прибивал в диспетчере все explorer'ы (с исчезновением панели задач), потом запускал C:\Windows\SysWOW64\explorer.exe - в итоге имеем 64-битный процесс. Или чего-то не понимаю?

Автор: CodeMonkey 7.9.2010, 17:03
http://support.microsoft.com/kb/895561.

Автор: WWWlad 7.9.2010, 18:09
Цитата(CodeMonkey @ 7.9.2010,  17:03)
http://support.microsoft.com/kb/895561.

http://thewindows7site.com/forum/archive/index.php/t-12093.html  smile 

Автор: CodeMonkey 7.9.2010, 19:43
Похоже, http://social.technet.microsoft.com/Forums/en-US/w7itproui/thread/e237260d-ca42-4fbc-a657-89796d884715.

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