powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
10 сообщений из 10, страница 1 из 1
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539081
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
  ShellExecute(0, 'open', PChar(fFileName), nil, nil, SW_SHOWNORMAL);


Если расширение имени файла в fFileName не ассоциировано ни с одной программой - файл, естественно, не открывается.
Как бы сделать так, чтобы в данном случае возникал эксплореровский диалог с предложением выбрать ассоциированное приложение самостоятельно?
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539097
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первая же ссылка в гугле:
https://stackoverflow.com/questions/6364879/how-to-open-a-default-dialog-for-window-if-shellexecute-fails-due-to-no-file-ass
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539234
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Спасибо!
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539249
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=__= Что ещё за вопрос такой ??? Конечно - же, указать исполняемый файл, и передать ему в аргументах нужный файл.


Код: pascal
1.
 ShellExecute(0, 'open', PChar('notepad.exe'), PChar(fFileName), nil, SW_SHOWNORMAL);



Эхх.. чччд...
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539253
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик> указать исполняемый файл, и передать ему в аргументах

А если он его не знает ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539255
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Узнать установлена ли программа (через реестр) узнать путь до неё - проверить в нужном пути - нужный исполняемый файл, и использовать его в качестве запускаемой программы.
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539260
Freedoom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Няшик, а внимательно прочитать, что нужно чччД?
Как бы сделать так, чтобы в данном случае возникал эксплореровский диалог с предложением выбрать ассоциированное приложение самостоятельно?
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539288
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПервая же ссылка в гугле:
https://stackoverflow.com/questions/6364879/how-to-open-a-default-dialog-for-window-if-shellexecute-fails-due-to-no-file-ass

Имхо, самый классный ответ дал Alex (Gunsmoker):

GunsmokerSimply do not use explicit verb. Using a specific verb like 'open' is a big mistake:

'open' may be not a default verb (for example, it may be 'play', 'edit' or 'run')
'open' may not exists
It is a way more correct to simply pass NULL as verb. The system will automatically select most appropriate verb:

Default verb will be used, if it is set
'open' verb will be used, if no default verb is set
first verb will be used, if no default and 'open' verbs are available
if no verbs are assigned - the system will bring "Open with" dialog
In other words, simple

Код: plaintext
1.
ShellExecute(0, NULL, 'C:\MyFile.StrangeExt', ...);

will show "Open with" dialog.

Only use a specific verb if you want a specific action. E.g. 'print', 'explore', 'runas'. Otherwise - just pass nil.
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539372
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДDimitry SibiryakovПервая же ссылка в гугле:
https://stackoverflow.com/questions/6364879/how-to-open-a-default-dialog-for-window-if-shellexecute-fails-due-to-no-file-ass

Имхо, самый классный ответ дал Alex (Gunsmoker):

GunsmokerSimply do not use explicit verb. Using a specific verb like 'open' is a big mistake:

'open' may be not a default verb (for example, it may be 'play', 'edit' or 'run')
'open' may not exists
It is a way more correct to simply pass NULL as verb. The system will automatically select most appropriate verb:

Default verb will be used, if it is set
'open' verb will be used, if no default verb is set
first verb will be used, if no default and 'open' verbs are available
if no verbs are assigned - the system will bring "Open with" dialog
In other words, simple

Код: plaintext
1.
ShellExecute(0, NULL, 'C:\MyFile.StrangeExt', ...);

will show "Open with" dialog.

Only use a specific verb if you want a specific action. E.g. 'print', 'explore', 'runas'. Otherwise - just pass nil.

В копилку, спасибо.
...
Рейтинг: 0 / 0
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
    #39539388
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странные вы... :) Я, правда, из лени 0 писал, а не null/nil.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]