AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

IsFileInUse Funktion erstellen

Ein Thema von BlueStarHH · begonnen am 15. Dez 2010 · letzter Beitrag vom 20. Dez 2010
Antwort Antwort
Seite 1 von 3  1 23   
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
705 Beiträge
 
Delphi 11 Alexandria
 
#1

IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 10:42
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.473 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 10:49
Sry, wenn ich evtl. jemanden um Geld bringe, aber such doch einmal nach Hier im Forum suchenIsFileInUse, da gibt es schon einige Ansätze.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
705 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 10:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 10:59
Bitte vergiss alle Ansätze ohne Treiber: http://www.michael-puff.de/Artikel/FileUnlocker.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
705 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 11:04
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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 11:09
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
705 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 11:25
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.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 12:45
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.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
705 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 13:06
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 13:19
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf