Windows 8 で、古い Windows 7 の画像ビューアーを表示するために以下のコードを実行しようとしましたが、エラーが返されます。Windows 8 では C:\Program Files (x86)\Windows Photo Viewer\PhotoViewer.dll を見つけることができますが、これは新しい Windows 8 メトロ アプリだと思います。古い Windows Picture Viewer は「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 を使用したことがないので、コードの基礎はhereから来ました。