05.10.2005, 13:07 | #1 |
Участник
|
Как посмотреть через WinAPI информацию о файле?
Имеется задача - посмотреть версию файла.
Вот обнаружил функцию WinAPI::getFileVersionInfoEx очень похоже, что именно она за это дело отвечает пишу простенький джоб, чтобы проверить как оно работает PHP код:
смотрел в MSDN и так и не понял что-ж мне в итоге задавать в качестве параметра, чтобы получить информацию о файле? Подскажите, как проделать требуемое? |
|
05.10.2005, 13:46 | #2 |
Участник
|
"ProductVersion" или "FileVersion"
Кроме того, для просмотра версии для русифицированных файлов необходимо изменить в WinAPI::getFileVersionInfoEx() PHP код:
__________________
Axapta v.3.0 sp5 kr2 |
|
05.10.2005, 14:37 | #3 |
Участник
|
Цитата:
Изначально опубликовано AndyD
"ProductVersion" или "FileVersion" Вставляю, всё равно на выходе - ноль. вот такой код получается: PHP код:
Может всё-ж как-то по другому надо? Цитата:
Кроме того, для просмотра версии для русифицированных файлов необходимо изменить в WinAPI::getFileVersionInfoEx()
PHP код:
int numOfCodePages = 6; |
|
05.10.2005, 15:25 | #4 |
Участник
|
Проверил у себя - Ok. Версия возвращается правильно.
Вы неправильно указываете путь к файлу. Необходимо так (или это форум? Тогда сори) "C:\\Program Files\\Navision\\Client\\Bin\\ax32.exe" Может быть у вас язык для файла указан другой? Посмотрите в свойствах файла язык или language PHP код:
__________________
Axapta v.3.0 sp5 kr2 |
|
05.10.2005, 15:34 | #5 |
Участник
|
Да! Это я, слепой болван, совсем забыл и не заметил, и не вспомнил (давно уже внешние файлы не подключал так) что два слэша надо писать! Простите меня! )
Всё работает, спасибо огромное! |
|
17.06.2013, 13:45 | #6 |
Участник
|
А с закладки "Сводка", как-то можно взять информацию?
|
|
17.06.2013, 14:12 | #7 |
Участник
|
|
|
18.06.2013, 21:03 | #8 |
Участник
|
Хотелось бы конечно API функциями
|
|
20.06.2013, 19:06 | #9 |
Участник
|
API (чисто из аксы) функциями можно конечно, но не за чем. Я считаю акса не для этого сделана, для этого есть .net.
Вот тебе dll Interop.Dsofile.rar (dll от Microsoft, скачал по ссылке выше), ее подключаешь к аксе. И вот тебе код X++: static void Job129(Args _args) { FilePath filePath = "C:\\1.xls"; DSOFile.OleDocumentPropertiesClass oleDocument = new DSOFile.OleDocumentPropertiesClass(); DSOFile.SummaryProperties summaryProperties; ; oleDocument.Open(filePath, true, DSOFile.dsoFileOpenOptions::dsoOptionOpenReadOnlyIfNoWriteAccess); // Extract the properties summaryProperties = oleDocument.get_SummaryProperties(); info(summaryProperties.get_Title()); info(summaryProperties.get_Author()); info(summaryProperties.get_Company()); // Close the DSOFile.OleDocumentPropertiesClass oleDocument.Close(false); } Последний раз редактировалось Kainix; 20.06.2013 в 19:11. |
|
|
За это сообщение автора поблагодарили: Player1 (1). |
20.06.2013, 20:45 | #10 |
Участник
|
|
|
21.06.2013, 07:31 | #11 |
Участник
|
Цитата:
версия Ах3
Регистрируем DLL, копируй win\system32 в командной строке regsvr32 dsofile.dll. Либо в любое место на компе тогда regsvr32 [путь]dsofile.dll. Пишем код X++: static void Job130(Args _args) { Com oleDocument = new Com('{58968145-CF05-4341-995F-2EE093F6ABA3}'); Com summaryProperties; FilePath filePath = "C:\\1.xls"; ; oleDocument.Open(filePath, true, 1); // Extract the properties summaryProperties = oleDocument.SummaryProperties(); info(summaryProperties.Title()); info(summaryProperties.Author()); info(summaryProperties.Company()); // Close the DSOFile.OleDocumentPropertiesClass oleDocument.Close(false); info(""); } |
|