|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
В своих программах в 32-х битных версиях Access для создания диалога выбора файла я использовал чаще всего функции GetOpenFileName и GetSaveFileName из comdlg32.dll Сейчас мне приходится переписывать одну из моих программ в 64-х битную версию. Я исправил вызов функции в соответствии документа Win32API_PtrSafe (он тут на форуме пару раз выкладывался). Но диалог выбора файла не запускается. В 32-х битных всё работает, а в 64-х - нет. Просто не выводится окно выбора файла. Ни каких сообщений об ошибках. Просто не отрабатывает и всё. Как быть? Тестовый пример прилагаю. ------------------------------------------------------------- А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2019, 21:49 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
Оказывается, этот вопрос уже поднимался GetOpenFileName для 64 битного Access Проверил пример, выложенный там. Тот же результат. Или у меня что-то криво стоит либо это какой-то общий глюк Access 64 бит ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2019, 22:04 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
И вот здесь этот вопрос поднимался Диалог открытия файла, выбора папки Кстати, я его и поднимал. Решение найдено не было. Было предложение перейти на другие способы задания диалога выбора файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2019, 22:20 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
Глянь здесь: Declaring API functions in 64 bit Office . Есть разница между твоей функцией открытия файла и той, что у них написана. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2019, 12:37 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
Stanislav P, спасибо за ссылку, но сейчас проверить не могу Офис 64 бит у меня дома. Что увидел. 1. Деление в примере идёт не между Win64 и Win32, а между VBA7 и VBA6. Хорошо. Считаем VBA7 за Win64. 2. Единственное различие, что я нашел. Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Но 32-х битной версии LenB(OpenFile) = Len(OpenFile) = 76 (это без следующих строк в структуре) Код: vbnet 1. 2. 3.
(они взяты из документа Office 2010 Help Files: Win32API_PtrSafe with 64-bit Support и 32-х битных версий они не задействованы). А вот LenB(OpenFile.lpstrFile) - 1 и Len(OpenFile.lpstrFile) - 1 отличаются в 2 раза. Но опять же для Access 2003 и Access 2010 32-bit это не имеет значения Вечером покручу у себя дома. Но терзают меня смутные сомнения... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2019, 09:38 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
VBA7 умеет сам LongPtr преобразовывать к нужному Long-у в зависимости от разрядности, поэтому, в большинстве случаев, проверка на WIN64 не нужна. Сам этот код не проверял, потому как руки ещё не дошли на виртуалках поднять все возможные варианты для тестов. У себя в проекте использую: Application.Filedialog () для выбора файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2019, 11:56 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
Прогнал программу с этим ветвлением в Access 2010 64 bit - заработало Оказывается всё дело во в этом операторе Код: vbnet 1.
В 64 бит версии LenB(OpenFile) = 152 , а Len(OpenFile) = 140 На счёт Application.Filedialog() , Первые базы я писал ещё на Access 97. И с Filedialog() там были проблемы. А так же в Access 2000, 2002, 2003 (? - точно не помню). Я как отладил этот диалог на API, так и таскал его из программы в программу. О способах задания диалога выбора файла почитай вот тут Диалог выбора файла / папки Там написано, что Application.Filedialog() не работает, если аксесс запущен с опцией /runtime ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2019, 20:40 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
У меня на Access 2016/2019/365 прекрасно работает Application.FileDialog(3) как в полной версии, так и с ключём /runtime и с файлом .accdr ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 00:20 |
|
GetOpenFileName в 64-х битных версиях
|
|||
---|---|---|---|
#18+
Stanislav PУ меня на Access 2016/2019/365 прекрасно работает Application.FileDialog(3) как в полной версии, так и с ключём /runtime и с файлом .accdr Ну, значит, доработали. Если пошарить по форуму, то в старых топиках есть к нему претензии. Сейчас уже нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2019, 08:43 |
|
|
start [/forum/topic.php?fid=45&msg=39756595&tid=1610925]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 315ms |
total: | 486ms |
0 / 0 |