![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как считать данные из файла открытого другим приложением [D6, WinXP]
AlexSt © (2007-09-03 17:56:00)Подскажите, кто знает как можно считать данные из файла открытого другим приложением, если скопировать функцией CopyFile я его могу, а открыть только для чтения нет.
Dib@zol (2007-09-03 19:58:00) [1]Поправлюсь: LongInt( Result):=LocalAlloc(GMEM_FIXED, S);
Dib@zol (2007-09-03 19:32:00) [2]function GetFileData(FileName:string):pointer;
F:=CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if F=INVALID_HANDLE_VALUE then exit;
FindFirstFile(PChar(FileName), wfd);
S:=wfd.nFileSizeLow;
LongInt(P):=LocalAlloc(GMEM_FIXED, S);
ReadFile(F, Result^, S, T, nil);
CloseHandle(F);
end;
...
P:pointer;
...
P:=GetFileData('c:\1.txt');
// Некие действия
LocalFree(LongInt(P));
AlexSt (2007-09-03 18:56:00) [3]
> CreateFile + FILE_SHARE_READ or FILE_SHARE_WRITE + F1
Есть пример работы с CreateFile
Dib@zol (2007-09-03 18:34:00) [4]> Как расшарить? Как это сделать?
CreateFile + FILE_SHARE_READ or FILE_SHARE_WRITE + F1
umbra (2007-09-03 18:32:00) [5]Если занятый файл нельзя открыть для чтения с правами на совместный доступ для любых операций, то легче всего подождать, пока файл освободится. Конечно, если это не файл подкачки :)
AlexSt (2007-09-03 18:29:00) [6]Как расшарить? Как это сделать?
Копирование это резервный вариант, если ничего больше не получиться. Неохото делать лишние операции.
Dib@zol (2007-09-03 17:57:00) [7]> скопировать функцией CopyFile я его могу, а открыть только
> для чтения нет.
Дык открывай для чтения/записи и плюс расшаривай доступ!
umbra (2007-09-03 17:57:00) [8]скопировать, открыть копию и читать из нее.