Можно ли выполнить код C ++ из Progress ABL?
В частности, я хочу использовать функцию SHGetKnownFolderPath (документация здесь) определить местоположение папки «Документы» на компьютере под управлением Windows 7, на котором папка документов перенаправлена в другое место.
Или есть альтернативный способ определения этой информации без проверки раздела реестра?
Вы можете вызывать внешние общие библиотеки и библиотеки DLL.
http://documentation.progress.com/output/OpenEdge113/pdfs/dvpin/dvpin.pdf
Раздел 3 «Внешние интерфейсы» — это то, что вы ищете.
это http://dbappraise.com/ppt/shlib.pptx также может быть полезным.
C ++ часто проблематичен из-за того, как он называет вещи. Возможно, было бы лучше создать «шим», используя простой старый C для моста между OpenEdge и C ++
Вызывать системные функции Windows обычно легко. Что-то вроде:
procedure SHGetKnownFolderPath external "pathToLibrary":
define parameter a as someType.
define parameter b as someType.
define return parameter x as someType.
end.
Проверьте документ «Интерфейсы программирования», раздел «Интерфейсы внешних программ».
Кроме того, некоторые версии ABL также поддерживают прямые вызовы .NET в качестве опции.