Sous Windows 8, j'ai essayé d'exécuter le code ci-dessous pour afficher l'ancien Windows 7 Picture Viewer, mais il renvoie une erreur. Sur Windows 8, je peux trouver C: \ Program Files (x86) \ Windows Photo Viewer \ PhotoViewer.dll mais je pense que c'est l'application de métro Windows 8 plus récente. Je pense que l'ancien Windows Picture Viewer est 'c: \ windows \ system32 \ shimgvw.dll. Je voudrais prévisualiser l'image avec le style d'application de bureau plutôt que Metro.Afficher Windows 7 Windows Picture Viewer sous Windows 8
J'ai essayé les deux, mais les deux retournent que le fichier n'a pas de programme associé? Qu'est-ce que je fais?
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') ;
Je ne l'ai pas utilisé ShellExecuteEx avant donc la base du code est venu de here.
Pouvez-vous être plus précis que "ça retourne une erreur"? Et si vous voulez prévisualiser une image, pourquoi êtes-vous en train de coder en dur l'application qui affichera l'image? Pourquoi ne transmettez-vous pas l'image à l'interpréteur de commandes et lui demandez de l'afficher en aperçu? –
Windows affiche le message d'erreur à ShellExecuteEx (@SEInfo) et le code de sortie après le message dans le débogueur est 69627776. – Bill
Lorsque je passe le nom de l'image à l'interpréteur de commandes, il exécute l'application de métro. – Bill