![]() |
Von anderer Anwendung geöffnete Datei lesen
Hi,
Ich möchte eine Datei lesen, die von einer anderen Anwendung bereits geöffnet ist. Geht das überhaupt und wenn ja wie? Ich möchte mir einen Monitor für den Apache-Server schreiben, der u.A. auch die Logdateien auswerten soll. Diese sind aber ständig geöffnet, ein Lesezugriff endet immer mit einer Fehlermeldung. Weiss Jemand Rat? |
Re: Von anderer Anwendung geöffnete Datei lesen
Wie wäre es mit der Forensuche?
Sowas wird öfters mal gefragt. :zwinker: ![]() |
Re: Von anderer Anwendung geöffnete Datei lesen
Dankeeee der Link hat mir geholfen :)
|
Re: Von anderer Anwendung geöffnete Datei lesen
hallo nochmal,
das listing in dem artikel zudem der link führt funktioniert bei mir leider nich. ich benutze delphi 7 und bekomme bei der zeile Zitat:
vom compiler hier nochmal das komplette listing
Delphi-Quellcode:
procedure TLTC2440_DataList.LoadData(AFileName: String);
var AHStream : THandleStream; AFileHandle : THandle; begin FFileName := AFileName; Clear; AFileHandle := CreateFile(PChar(AFileName), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if AFileHandle <> INVALID_HANDLE_VALUE then begin FFileText := TStringList.Create; try AHStream := THandleStream.Create(AFileHandle); try FFileText.LoadFromStream(AHStream); finally FreeAndNil(AHStream); end; finally CloseHandle(AFileHandle); end; DecodeHeaderfromFile(FFileText); DecodeValues(FFileText); finally FreeAndNil(FFileText); end; end; end; ratloser Klaus :) |
Re: Von anderer Anwendung geöffnete Datei lesen
Dieses ist ja auch ein spezieller Code für okis Programm
und die erwähnte Funktion gehört zu dessen Programm. Der für dich interessante Teil ist das CreateFile + der Stream (oder was man sonst für den Zugriff auf dieses Handle verwenden will)
Delphi-Quellcode:
procedure LoadData(const FileName: String);
var Stream : THandleStream; FileHandle : THandle; begin FileHandle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if AFileHandle <> INVALID_HANDLE_VALUE then begin try Stream := THandleStream.Create(FileHandle); try // mach irgendwas mit dem "Stream" finally FreeAndNil(Stream); end; finally CloseHandle(FileHandle); end; end else ShowMessage(SysErrorMessage(GetLastError)); end; |
Re: Von anderer Anwendung geöffnete Datei lesen
hi,
danke, ich hab noch nie was mit streams gemacht, aber ich werde mich mal dransetzen. Klaus |
Re: Von anderer Anwendung geöffnete Datei lesen
Du kannst auch einfach LoadFromStream z.B. von einer TStringList verwenden.
Wie wolltest du denn vorher die Datei öffnen? (also da wo dir die Fehlermeldung auffiehl) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz