Показать сообщение отдельно
  #1  
Старый 08.02.2019, 16:48
Konstantin-78 Konstantin-78 вне форума
Новичок
 
Регистрация: 27.04.2015
Сообщения: 76
Версия Delphi: Delphi7
Репутация: 10
По умолчанию Не могу поймать исключение ShellExecuteEx

Доброе время суток форумчане
Была и есть у меня библиотека, только с некоторых пор у меня стала через раз работать функция «ShellExecute» (раз, 2, 3 откроет word файл, и все, далее программа файл создает, но не открывает (файл word – корректный, к тому же создает один и тот же файл по одному алгоритму)),
Заменил ее на «ShellExecuteEx»

Код:
function LAUNCH_FILE(const AFileName: string): Boolean;
var
  ShellExecuteInfo: TShellExecuteInfo;
  LExtension: PAnsiChar;
begin
  begin
    FillChar(ShellExecuteInfo, SizeOf(ShellExecuteInfo), 0);
    ShellExecuteInfo.fMask := SEE_MASK_CLASSNAME;
    ShellExecuteInfo.nShow := SW_MAXIMIZE;
    ShellExecuteInfo.lpClass := PChar(AFileName);

    ShellExecuteInfo.Wnd := FMain.Handle;

    ShellExecuteInfo.lpVerb := 'open';
    ShellExecuteInfo.lpFile := PChar(AFileName);
    ShellExecuteInfo.cbSize := SizeOf(ShellExecuteInfo);
    if not ShellExecuteEx(@ShellExecuteInfo)  then
    begin
       ShowMessage('bad');
         Application.MessageBox(PChar(SysErrorMessage(GetLastError)), 'Ошибка', MB_OK or MB_ICONERROR);
      case ShellExecuteInfo.hInstApp of
        SE_ERR_FNF: ShowMessage('Файл не найден');
        SE_ERR_PNF: ShowMessage('Путь не найден');
        SE_ERR_ACCESSDENIED: ShowMessage('Доступ к файлу запрещен');
        SE_ERR_OOM: ShowMessage('He хватает памяти');
        SE_ERR_DLLNOTFOUND: ShowMessage('Не найдена необходимая DLL');
        SE_ERR_SHARE: ShowMessage( '-Файл занят другим пользователем');
        SE_ERR_ASSOCINCOMPLETE: ShowMessage('Не полная информация о связанном с файлом приложении');
        SE_ERR_DDETIMEOUT: ShowMessage('Истекло время на выполнение операции DDE');
        SE_ERR_DDEFAIL: ShowMessage('Ошибочная операция DDE');
        SE_ERR_DDEBUSY: ShowMessage('Операция DDE занята');
        SE_ERR_NOASSOC: ShowMessage('Нет приложения, связанного с файлом');
      end

    end
    else ShowMessage('All right');
  end;
end;


Та же самая фигня, но теперь, даже если файл и не открывает, всеравно выдает мое сообщение «('All right')»., т.е. она вообще в блок «исключений» не входит.
Не открывает на Windows XP.
Delphi 10.2 у меня Windows 10.

В чем может быть причина?

Заранее спасибо за ответ.
Ответить с цитированием