1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
function OpenFile(const Filename: string): boolean;
{ Tente d'ouvrir le fichier dont le nom est passé en argument avec
l'application associée à son extension. Si aucune application n'est
associée à celle-ci, le dialogue "Ouvrir avec..." est appelé. }
var
errCode: Cardinal;
filePath: string;
begin
{ On stocke le chemin pour éviter de le décoder 2 fois }
filePath:= ExtractFilePath(Filename);
{ Tentative d'ouverture de l'application associée }
errCode:= ShellExecute(0, 'Open', PChar(Filename), '',
PChar(filePath), SW_SHOWNORMAL);
{ Si la tentative a échoué avec le code SE_ERR_NOASSOC, c'est que l'extension
n'est associée à aucune application }
if errCode = SE_ERR_NOASSOC then
{ Dans ce cas, on appelle le dialogue }
errCode:= ShellExecute(0, 'open', 'rundll32.exe',
PChar('shell32.dll,OpenAs_RunDLL ' + Filename),
PChar(filePath), SW_SHOWNORMAL);
{ Si le code retourné par ShellExecute est supérieur à 32, alors l'opération
a réussi, sinon c'est un code d'erreur }
result:= errCode > 32;
end; |
Partager