Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ShellExecute открыть файл в режиме чтения 
:(
    Опции темы
kaprizulina
Дата 30.3.2010, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



Добрый день, подскажите, пожалуйста, как открыть любой файл в родной программе в режиме для чтения. Может проще будет CreateProcess? Мне бы примерчик хотя бы...
Спасибо.
PM MAIL   Вверх
Snowy
Дата 30.3.2010, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вообще-то программа сама решает, как ей открывать файл.
И повлиять на это никк нельзя - открытие файла в коде программы.
PM MAIL   Вверх
kaprizulina
Дата 30.3.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



Спасибо за ответ. 
Т.е открытие файла любого приложения через делфи стандартной процедурой невозможна?((
Есть какой-нить способ это сделать, если заранее неизвестно какие файлы будут открываться? 
PM MAIL   Вверх
Snowy
Дата 30.3.2010, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Мы не можем открыть файл приложением.
Мы всего лишь вызываем ассоциированное приложение и сообщаем ему имя файла.
А что это приложение с этим именем будет делать - это его личное дело.

Цитата(kaprizulina @  30.3.2010,  11:15 Найти цитируемый пост)
открытие файла любого приложения через делфи стандартной процедурой невозможна?((
Что есть стандартная процедура?


Цитата(kaprizulina @  30.3.2010,  11:15 Найти цитируемый пост)
Есть какой-нить способ это сделать, если заранее неизвестно какие файлы будут открываться? 
Сделать что?
PM MAIL   Вверх
kaprizulina
Дата 30.3.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



Цитата(Snowy @ 30.3.2010,  11:25)
Сделать что?

Вызвать ассоциированное приложение файла, передать ему имя файла, которое мы хотим открыть и указать "открыть в режиме чтения". 

Я имею в виду, что если какая-нибудь функция, которая выполняет вышесказанные действия в какой-нибудь библиотеке делфи или такую функцию нужно написать рукчкаме или вообще нельзя в таком режиме и таким способом открыть файл. 
Спасибо.
PM MAIL   Вверх
CodeMonkey
Дата 30.3.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Ну, вы можете заблокировать запись в файл. Тогда приложение при всём желании не сможет его изменить - я думаю, вам это и нужно, когда вы говорите "открыть в режиме чтения".

Это можно сделать:
1). Установим атрибут "read only". Очень просто и документировано. Проблема в том, что некоторые очень кривые хитрые приложения могут сбросить атрибут до записи и установить после.
2). Открыть файл в режиме "deny write". Более надёжно и тоже относительно просто. Проблема в том, что некоторые кривые приложения могут не открыть файл, потому что открывают его на запись.
3). Установить запрет изменения ACL списком. Не просто, но зато самый надёжный и правильный способ. К сожалению, будет работать только в ОС семейства NT и только на NTFS (ну, может и других системах тоже, но точно не на FAT).

Добавлено через 10 минут и 40 секунд
А вообще, существует несколько "действий" (verbs), которые можно выполнять с файлом. open - это открытие файла. Есть ещё view - просмотр файла. Я так понимаю, что это и есть ваше желаемое "открыть в режиме чтения".

Проблема в том, что open на файл регистрируют почти все. А view - только немногие грамотно написанные проги.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Snowy
Дата 30.3.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Если мы заблокируем файл, то программа, пытаясь получить желаемый ею доступ просто не сможет этот файл открыть.
И не откроет...
PM MAIL   Вверх
CodeMonkey
Дата 30.3.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(Snowy @  30.3.2010,  13:31 Найти цитируемый пост)
Если мы заблокируем файл, то программа, пытаясь получить желаемый ею доступ просто не сможет этот файл открыть.

Верно, но только кривые программы. Почему кривые? Потому что тогда они не смогут открыть файл на CD-болванке.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kaprizulina
Дата 30.3.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



всем спасибо)

Это сообщение отредактировал(а) kaprizulina - 30.3.2010, 16:03
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.