在 Windows 8 上,我尝试运行下面显示的代码以显示旧的 Windows 7 图片查看器,但它返回错误。在 Windows 8 上,我可以找到 C:\Program Files (x86)\Windows Photo Viewer\PhotoViewer.dll 但我认为这是较新的 Windows 8 Metro 应用程序。我认为较旧的 Windows 图片查看器是 'c:\windows\system32\shimgvw.dll。我想用桌面应用程序样式而不是 Metro 预览图像。
我都试过了,但都返回该文件没有与之关联的程序?我在搞砸什么?
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
ExecuteFile:='c:\windows\system32\shimgvw.dll';
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;
lpParameters := PChar('ImageView_Fullscreen');
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') ;
我之前没有使用过 ShellExecuteEx,所以代码的基础来自这里。