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


Если расширение имени файла в fFileName не ассоциировано ни с одной программой - файл, естественно, не открывается.
Как бы сделать так, чтобы в данном случае возникал эксплореровский диалог с предложением выбрать ассоциированное приложение самостоятельно?
...
Рейтинг: 0 / 0
19.10.2017, 18:50:18
    #39539097
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
Первая же ссылка в гугле:
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
19.10.2017, 23:08:47
    #39539234
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
Dimitry Sibiryakov,

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


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



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

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

Узнать установлена ли программа (через реестр) узнать путь до неё - проверить в нужном пути - нужный исполняемый файл, и использовать его в качестве запускаемой программы.
...
Рейтинг: 0 / 0
20.10.2017, 00:30:59
    #39539260
Freedoom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
Няшик, а внимательно прочитать, что нужно чччД?
Как бы сделать так, чтобы в данном случае возникал эксплореровский диалог с предложением выбрать ассоциированное приложение самостоятельно?
...
Рейтинг: 0 / 0
20.10.2017, 04:34:16
    #39539288
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
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
20.10.2017, 10:36:50
    #39539372
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
чччД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
20.10.2017, 10:50:04
    #39539388
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано
Странные вы... :) Я, правда, из лени 0 писал, а не null/nil.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Открыть файл с помощью ShellAPI, если расширение имени файла в системе не зарегистрировано / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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