У меня есть 32-битное приложение, созданное с помощью C++ Builder 10.1.2. Он имеет компонент TFileOpenDialog. В Windows 7 он работает нормально, но при запуске в Windows 10 из файлового браузера или отладчика его метод Execute() всегда возвращает false.
TFileOpenDialog - это компонент Vista, поэтому я заменил его на TOpenDialog, и его метод Execute() также всегда возвращает false.
Я знаю, что это долгий путь, но что мы можем упустить?
К сожалению, функция Execute возвращает false. Это должно произойти только при нажатии кнопки Отмена.
У вас действительно есть доступ к выбранному файлу? Попробуйте запустить свое приложение как администратор (одного входа недостаточно). У меня были аналогичные проблемы с доступом к файлам драйверов / служб в более новых установках Win7 (старые работали нормально).
«Это должно происходить только при нажатии кнопки Отмена.» - так же бывает при выходе из строя самого диалога. Вы видите, что диалоговое окно вообще появляется на экране, или Execute() сразу возвращает false?
Также обратите внимание, что в Vista + по умолчанию TOpenDialog использует тот же интерфейс IFileOpenDialog, что и TFileOpenDialog, если вы не предпримете дополнительных шагов для отключения этого поведения.





Что возвращает false? TOpenDialog - это класс, классы не возвращаются.