0 / 0 / 0
Регистрация: 04.09.2018
Сообщений: 10
|
|||||||||||
1 | |||||||||||
Builder 6 ShellExecute не работает без OpenDialog, хотя последний там никаким боком04.09.2018, 18:32. Показов 1517. Ответов 14
Всем доброго времени суток.
Пишу простейшую программу, которая открывает файл.
P.S. Form1 и Form2 связаны только одним: одна показывает другую по нажатию на кнопку .Shellapi инклюднут в Unit1.cpp
0
|
04.09.2018, 18:32 | |
Ответы с готовыми решениями:
14
В компе дисковод показывает, что там есть диск (на нём игра, открываются все папки), хотя его там нет! Другие диски не видит. Пишет "Вставьте диск" Почему я не могу ввести строчку используя меню, хотя программа работает без него Диск С переполнен, хотя там файлов на половину объема. Флешка на половину занята, хотя там ничего нет. |
Супер-модератор
|
|
04.09.2018, 18:44 | 2 |
Перед вызовом ShellExecute нужно инициализировать COM, поскольку вызова CoInitialize/CoInitializeEx у тебя в коде нет - ничего и не работает. А вот при вызове OpenDialog1->Execute COM корректно инициализируется, и уже можно продолжать вызывать все зависящие от этого функции API.
Так что курить надо в сторону CoInitialize и не забывать про CoUninitialize
0
|
0 / 0 / 0
Регистрация: 04.09.2018
Сообщений: 10
|
|
04.09.2018, 18:55 [ТС] | 3 |
Спасибо за ответ, но можете подробнее описать, функции CoInitialize и CoUninitialize? Я тут погуглил, но ничего не работает.
0
|
Супер-модератор
|
||||||
04.09.2018, 19:17 | 4 | |||||
Очень интересно. Сделал новый тестовый проект на BCB6, вообще ничего нигде не прописывал, никаких инклудов, просто добавил кнопку и в ее обработчике написал:
0
|
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
|
|
04.09.2018, 19:37 | 5 |
OpenDialog- долгоиграющая процедура... . Я бы присмотрелся к Application->Terminate, ибо всё это в одной упряжке ( ?!! ) _
0
|
0 / 0 / 0
Регистрация: 04.09.2018
Сообщений: 10
|
|
04.09.2018, 21:07 [ТС] | 6 |
0
|
Супер-модератор
|
||||||
04.09.2018, 22:40 | 7 | |||||
Но лучше CoInitialize вызвать в OnCreate формы, а CoUninitialize - в OnDestroy.
0
|
0 / 0 / 0
Регистрация: 04.09.2018
Сообщений: 10
|
|
04.09.2018, 23:11 [ТС] | 8 |
volvo, всё поправил как Вы сказали, но ничего не изменилось.
0
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||
05.09.2018, 09:30 | 9 | |||||
MatveiZ, та зачем тебе этот ShellExecute сдался?
Вот так напиши и будет тебе счастье
0
|
0 / 0 / 0
Регистрация: 04.09.2018
Сообщений: 10
|
|
05.09.2018, 15:27 [ТС] | 10 |
Maluda, выбивает в "Не удаётся найти указанный файл".
0
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|||||||||||
05.09.2018, 16:32 | 11 | ||||||||||
Я же знал, что такое будет Поэтому напиши полный путь к файлу или укажи текущую директорию туда, где он лежит.
Добавлено через 3 минуты Пример 1:
0
|
0 / 0 / 0
Регистрация: 04.09.2018
Сообщений: 10
|
|
05.09.2018, 16:36 [ТС] | 12 |
Maluda, я понимаю, но этот файл может лежать в разных директориях.
P.S. воспользоваться OpenDialog'ом не позволяет религия.
0
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||
05.09.2018, 17:26 | 13 | |||||
Сообщение было отмечено MatveiZ как решение
Решение
CreateProcess без указания пути будет искать:
1. Каталог, из которого загружена прикладная программа. 2. Текущий каталог родительского процесса. 3. 32-разрядный системный каталог Windows. Используйте функцию GetSystemDirectory, чтобы получить путь к этому каталогу. Имя (название) этого каталога - System32. 4. 16-разрядный системный каталог Windows. Нет функции, которая получает путь к этому каталогу, но он находится. Имя этого каталога - SYSTEM. 5. Каталог Windows. Используйте функцию GetWindowsDirectory, чтобы получить путь к этому каталогу. 6. Каталоги, которые внесены в список в PATH переменной окружения. ShellExecute всё тоже самое и 7. The per-application path specified by the App Paths registry key Допил CreateProcess, чтобы открывал файлы идентично ShellExecute В этом примере задача открыть приложение chrome.exe с передачей параметра в виде сайта google.com
2
|
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 255
|
||||||
09.09.2018, 04:12 | 14 | |||||
volvo, вы меня удивляете
0
|
Супер-модератор
|
||||||
09.09.2018, 10:48 | 15 | |||||
Аналогично. Посмотреть исходники метода Execute - никак? Ну хорошо:
0
|
09.09.2018, 10:48 | |
09.09.2018, 10:48 | |
Помогаю со студенческими работами здесь
15
Наушники earpods отображаются как микрофон,хотя его там нет ShellExecute не работает Не работает ShellExecute Не работает ShellExecute! Не работает ShellExecute ShellExecute не работает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |