Исправление Ссылок on PreviewPictures on Windows 8: Как Запустить Delphi Просмотрщик Со Старых Windows 7
Windows 8 принес много изменений, включая отказ от использования старого Просмотрщика изображений Windows 7 в пользу нового, основанного на Metro интерфейсе. Если вы хотите вернуться к старому стилю просмотра изображений, как это было в Windows 7, вы столкнетесь с проблемой, что стандартные методы не работают. В данной статье мы рассмотрим, как можно восстановить функциональность просмотра изображений в стиле Windows 7 на компьютерах, работающих под управлением Windows 8, с использованием языка программирования Object Pascal в среде разработки Delphi.
Проблема с запуском Windows 7 Windows Picture Viewer в Windows 8
Пользователь столкнулся с ошибкой при попытке запустить Просмотрщик изображений Windows 7 в операционной системе Windows 8. Он пытался использовать файл c:\windows\system32\shimgvw.dll, который, как он предполагал, содержит функциональность старого Просмотрщика, но без успеха. В коде, который он использовал, была ошибка в подходе: shimgvw.dll - это динамически подключаемая библиотека (DLL), и её нельзя запустить напрямую. Вместо этого, необходимо загрузить DLL и вызвать функцию из неё, или же использовать инструмент rundll32.exe, который предназначен для выполнения таких задач.
Решение: Использование rundll32.exe
Чтобы запустить старый Просмотрщик изображений Windows 7 в Windows 8, вам потребуется использовать rundll32.exe для вызова функции из DLL PhotoViewer.dll. Вот пример кода на Object Pascal, который демонстрирует, как это можно сделать в среде Delphi:
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
begin
ExecuteFile := 'rundll32.exe ';
ExecuteFile := ExecuteFile + '"c:\Program Files\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen';
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@SEInfo) then
begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess, ExitCode);
until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
ShowMessage('Windows Picture Viewer terminated');
end
else
ShowMessage('Error starting Windows Picture Viewer');
end;
В этом коде мы указываем rundll32.exe запустить функцию ImageView_Fullscreen из DLL PhotoViewer.dll, что должно открыть изображение в старом стиле Windows 7 Просмотрщика.
Альтернативный ответ и Комментарии
В комментариях пользователя упоминается, что он использовал функцию ShellExecuteEx раньше, но с примером, взятого с сайта, не сталкивался с подобной реализацией. Он также упоминает, что в его прошлом коде использовалась функциональность, которая позволяла обходиться навызовом по умолчанию через функцию операционной системы, что запускало бы "окно" для выбора программы.
Ключевой момент в том, что пользователи не могут заставить "shell" узнать, какая программа по умолчанию должна обрабатывать типы файлов, так как для Windows 8 Metro приложение является нативной программой для просмотра изображений, и его загружается автоматически.
Пользователь также отметил, что ранее у него была информация, что ошибка была с кодом 1 и сообщение об ошибке было "неправильная функция", а также упомянул, что на момент его запроса для его системы использовалась только Windows 8.
Подтвержденный ответ
В подтверждении, указано, что shimgvw.dll является DLL, которая предназначена для загрузки для вызова экспортированных функций, а не запускается напрямую. В Windows 7, если смотреть в реестр, то можно увидеть, что для запуска Просмотрщика изображений используется rundll32.exe, который запускает функцию из PhotoViewer.dll. Это значит, что пользователи Windows 8, желающие восстановить функцию просмотра изображений старым стилем, должны использовать аналогичный подход с помощью rundll32.exe.
Заключение
В данной статье мы рассмотрели, как восстановить работу старого Просмотрщика изображений Windows 7 в операционной системе Windows 8 с помощью Delphi и языка программирования Object Pascal. Несмотря на кажущуюся сложность задачи, правильное понимание того, как работают динамически подключаемые библиотеки и использование инструмента rundll32.exe, позволяет решить проблему.
Краткое описание 'Context': Пользователь столкнулся с проблемой запуска Просмотрщика изображений Windows 7 в Windows 8 и ищет решение, используя Delphi и Object Pascal.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.