AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IsFileInUse Funktion erstellen

Ein Thema von BlueStarHH · begonnen am 15. Dez 2010 · letzter Beitrag vom 20. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

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

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: Hamburg
856 Beiträge
 
Delphi 11 Alexandria
 
#2

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
 
#3

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: Hamburg
856 Beiträge
 
Delphi 11 Alexandria
 
#4

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

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

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
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
856 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 13:46
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?
Weil man meines Wissens einige Funktionen, die die neue API anbietet, mit dem herkömmlichen weg nicht bewerkstelligen kann. Z.B. den Programmnamen herausfinden, von dem Prog, das die Datei nutzt. Oder das Programm dazu veranlassen die Datei zu schließen. Oder weil man dann laut Deiner Aussage einen Treiber braucht, was umständlich ist als eben mal eine API-Funktion zu nutzen. Vielleicht brauch man die Fallback-Methode auch gar nicht. Das war nur Spekulation. Ich habe mich nicht tief damit beschäftig. Nur mal schnell quergelesen.

Geändert von BlueStarHH (15. Dez 2010 um 13:49 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 16:12
Neben dem sicher erstklassigen Unlocker, der die Bindungen durchbrechen kann, gibt es auch noch zum Zwecke des bloßen Anzeigens solcher Sperren das Programm "Who lock me?".
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
856 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 16:18
Neben dem sicher erstklassigen Unlocker, der die Bindungen durchbrechen kann, gibt es auch noch zum Zwecke des bloßen Anzeigens solcher Sperren das Programm "Who lock me?".
Ich brauche weder einen Unlocker noch ein Programm das mir die Sperren anzeigt. Ich brauche einen Quellcode, den ich in meinem eigenen Programm nutzen kann. Das wird von unbedarften Anwender genutzt, die Dateien immer mit Word oder Excel offen halten und dann in mein Programm importieren möchten. Das geht dann nicht, da Word oder Excel die Dateien exklusiv öffnen. Also sollte da die angesprochene Meldung gezeigt werden.
  Mit Zitat antworten Zitat
tony.huerlimann

Registriert seit: 15. Dez 2010
6 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 16:33
// hier eine Function
// es braucht noch "uses shlobj" zu Beginn der unit Datei
// hope that helps : Gruss Tony

function IsFileInUse(fName:string) : boolean;
var HFileRes : HFILE;
begin
Result := False;
if not FileExists(fName) then
Exit;
HFileRes := CreateFile(pchar(fName),
GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then CloseHandle(HFileRes);
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#10

AW: IsFileInUse Funktion erstellen

  Alt 15. Dez 2010, 16:35
Nunja, damit bekommst Du aber auch nicht raus, welcher Prozess die Datei geöffnet hat.

[edit] Sry, Willkommen in der DP [/edit]
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
Antwort Antwort
Seite 1 von 2  1 2      


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 12:48 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-2025 by Thomas Breitkreuz