Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Job-Börse: Angebote und Gesuche (https://www.delphipraxis.net/66-job-boerse-angebote-und-gesuche/)
-   -   IsFileInUse Funktion erstellen (https://www.delphipraxis.net/156794-isfileinuse-funktion-erstellen.html)

BlueStarHH 15. Dez 2010 09:42

IsFileInUse Funktion erstellen
 
Hallo,

da ich mich momentan um andere Dinge kümmern muss, habe ich einen kleinen Auftrag für eine Funktion zu vergeben. In meinem Programm werden Dateien zum Lesen oder Schreiben geöffnet. Das ist nur möglich, wenn die Datei nicht durch ein anderes Programm geöffnet ist.

Ich möchte in einem Programm mit einer Funktion in der Art
IsFileInUse(const FileName: string; .......): Boolean

abfragen, ob eine bestimmte Datei in Benutzung ist oder nicht. Dabei soll dann der Windows-Standard-Dialog angezeigt werden, der in solchen Fällen auch z.B. vom Explorer angezeigt wird. In diesem Dialog muss angezeigt werden, welches Programm die Datei geöffnet hat und es muss eine Möglichkeit geben, erneut zu Prüfen, ob die Datei geöffnet ist. Man bekommt den Dialog angezeigt, wenn man z.B. ein Worddokuemnt öffnet und versucht es mit dem Explorer zu löschen.

So sieht das Dialog aus:
http://blog.speedproject.de/2007/06/...ird-verwendet/
Dort sind auch links zu Microsoft zu finden, wo das ganze dokumentiert ist.

Hier gibt es schon eine halbe Lösung:
http://blog.delphi-jedi.net/2010/11/14/is-file-in-use/

Ich benötige eine Lösung, die unter Delphi 2010 läuft mit allen Quellcodes. Die Jedi-Komponenten oder andere Komponenten sollen nicht genutzt werden um das ganze möglichst schlank zu halten. Ich möchte nicht wegen nur dieser einen Funktion die ganzen Jedis installieren. Andere Units dürfen nur genutzt werden, wenn diese nur per uses eingebunden werden müssen und in kommerziellen Projekten ohne weitere Kosten genutzt werden dürfen.

Bitte nennt mit per PN wie viel ihr dafür haben wollt. Bezahlt wird per Überweisung oder PayPal nach Eingang des Codes und Prüfung auf vollständige Umsetzung der Anforderungen.

DeddyH 15. Dez 2010 09:49

AW: IsFileInUse Funktion erstellen
 
Sry, wenn ich evtl. jemanden um Geld bringe, aber such doch einmal nach Hier im Forum suchenIsFileInUse, da gibt es schon einige Ansätze.

BlueStarHH 15. Dez 2010 09:54

AW: IsFileInUse Funktion erstellen
 
Zitat:

Zitat von DeddyH (Beitrag 1068616)
Sry, wenn ich evtl. jemanden um Geld bringe, aber such doch einmal nach Hier im Forum suchenIsFileInUse, da gibt es schon einige Ansätze.

Ja es gibt einige Ansätze. Ich habe auch selber einen Ansatz verlinkt. Ich benötige aber eine fertige Lösung. Und in den meisten Ansätzen kann nur abgefragt werden, ob die Datei genutzt wird. Jedoch nicht mit welchem Programm usw. D.h. nicht alle meine Anforderungen werden erfüllt.

Luckie 15. Dez 2010 09:59

AW: IsFileInUse Funktion erstellen
 
Bitte vergiss alle Ansätze ohne Treiber: http://www.michael-puff.de/Artikel/FileUnlocker.shtml

BlueStarHH 15. Dez 2010 10:04

AW: IsFileInUse Funktion erstellen
 
Zitat:

Zitat von Luckie (Beitrag 1068627)
Bitte vergiss alle Ansätze ohne Treiber: http://www.michael-puff.de/Artikel/FileUnlocker.shtml

Ein Treiber ist für meinen Zweck nicht nötig. Es soll einfach die in Windows Vista neu für diesem Zweck eingeführte WinAPI genutzt werden. Der in meinem Beitrag verwendete SpeedCommander nutzt auch keinen Treiber und das Beispiel bei Microsoft setzt diesen auch nich voraus. Bist Du sicher, dass man auch mit der neuen Vista-API einen Treiber braucht?

Luckie 15. Dez 2010 10:09

AW: IsFileInUse Funktion erstellen
 
Ziemlich. Microsoft wird das auch nicht ohne Treiber lösen. Und die API-Funktion wird auch einen Treiber nutzen. Wie heißt denn die API-Funktion, die es seit Vista dafür gibt?

BlueStarHH 15. Dez 2010 10:25

AW: IsFileInUse Funktion erstellen
 
Zitat:

Zitat von Luckie (Beitrag 1068633)
Ziemlich. Microsoft wird das auch nicht ohne Treiber lösen. Und die API-Funktion wird auch einen Treiber nutzen. Wie heißt denn die API-Funktion, die es seit Vista dafür gibt?

Schau Dir mal oben die Links in meinem ersten Post an. Und dort auf den Seiten wiederum die Links. Genauere Infos habe ich leider auch nicht.

Assarbad 15. Dez 2010 11:45

AW: IsFileInUse Funktion erstellen
 
Zitat:

Zitat von BlueStarHH (Beitrag 1068636)
Zitat:

Zitat von Luckie (Beitrag 1068633)
Ziemlich. Microsoft wird das auch nicht ohne Treiber lösen. Und die API-Funktion wird auch einen Treiber nutzen. Wie heißt denn die API-Funktion, die es seit Vista dafür gibt?

Schau Dir mal oben die Links in meinem ersten Post an. Und dort auf den Seiten wiederum die Links. Genauere Infos habe ich leider auch nicht.

Die API (COM) basiert darauf, daß die Programme sich bei Vista/7 melden und eine Datei als in Benutzung angeben. Adobe Reader tut das, viele andere Programme nicht.

BlueStarHH 15. Dez 2010 12:06

AW: IsFileInUse Funktion erstellen
 
Zitat:

Zitat von Assarbad (Beitrag 1068653)
Zitat:

Zitat von BlueStarHH (Beitrag 1068636)
Zitat:

Zitat von Luckie (Beitrag 1068633)
Ziemlich. Microsoft wird das auch nicht ohne Treiber lösen. Und die API-Funktion wird auch einen Treiber nutzen. Wie heißt denn die API-Funktion, die es seit Vista dafür gibt?

Schau Dir mal oben die Links in meinem ersten Post an. Und dort auf den Seiten wiederum die Links. Genauere Infos habe ich leider auch nicht.

Die API (COM) basiert darauf, daß die Programme sich bei Vista/7 melden und eine Datei als in Benutzung angeben. Adobe Reader tut das, viele andere Programme nicht.

Und für die Programme, die sich nicht melden gibt es sicherlich ein Fallback-Mechanismus. Ich vermute mal, dass dann einfach angezeigt wird, dass die Datei in Benutzung ist oder nicht. Alternativ muss man so einen Fallback-Mechanismus eben selbst machen. Wenn die neue API sagt, dass die Datei nicht in Benutzung ist, muss man nochmal mit der herkömlichen Methode prüfen, ob das wirklich stimmt. Also kein Hinderungsgrund die neue API zu nutzen.

Luckie 15. Dez 2010 12:19

AW: IsFileInUse Funktion erstellen
 
Zitat:

Zitat von BlueStarHH (Beitrag 1068659)
Wenn die neue API sagt, dass die Datei nicht in Benutzung ist, muss man nochmal mit der herkömlichen Methode prüfen, ob das wirklich stimmt. Also kein Hinderungsgrund die neue API zu nutzen.

Und warum nicht gleich die Fallback-Methode, wie auch immer sie implementiert ist, verwenden, wenn man sie so wie so zum Nachprüfen nutzt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz