AGB  ·  Datenschutz  ·  Impressum  







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

blockierte Datei

Ein Thema von paperboy · begonnen am 24. Jun 2009 · letzter Beitrag vom 24. Jun 2009
Antwort Antwort
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#1

blockierte Datei

  Alt 24. Jun 2009, 08:53
hallo zusammen..

hoffe das passt hier in diesem forumteil...
ich habe eine blockierte datei die ich freigeben möchte um sie löschen zu können...
so wie das programm "Unlocker" dies z.b. tun kann...
habe nun gelesen das man, möchte man herrausfinden welche dateien die zu löschende datei blockieren,
auf treiberebene arbeiten muss...

wie sieht es aber aus wenn ich den Prozess (ist nur einer) bereits kenne der die datei blockiert? gibt es eine
möglichkeit diese dann freizubekommen ohne sich selbst einen treiber basteln zu müssen?
hängt mit folgendem problem zusammen:
http://www.delphipraxis.net/internal...052331#1052331

lg paperboy
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

Re: blockierte Datei

  Alt 24. Jun 2009, 09:01
Das Problem ist, daß du auch noch rausbekommen mußt, welches Handle in der Anwendung zu der Datei gehört und dann mußt du wohl auch noch den Prozess rein und das Handle schließen. OK du bist ja schon drin.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#3

Re: blockierte Datei

  Alt 24. Jun 2009, 10:49
Eine Handle Liste zu holen ist trivial. Das Problem ist diese Handles zu Namen aufzulösen. Einige File Handles (vorzugsweise die von Pipes) sorgen dabei nämlich dafür, daß der Thread der die Namensauflösung macht, blockiert. Wenn Du Dir eine Lösung dafür mal ansehen willst, kannst Du hier mal schauen: http://www.delphipraxis.net/internal...=964475#964475 . Ich würde Dir empfehlen den Code allerdings nicht in Produktivcode einzusetzen.

Zitat von himitsu:
und dann mußt du wohl auch noch den Prozess rein und das Handle schließen.
Selbst wenn er nicht im Prozess wär, wäre diese Aussage falsch. Ich hab eh nie verstanden, wieso Leute einen CloseHandle Call in Prozesse injezieren. Windows hat einen dokumentierten Mechanismus um Handles in fremden Prozessen zu schließen: MSDN-Library durchsuchenDuplicateHandle.
Fridolin Walther
  Mit Zitat antworten Zitat
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: blockierte Datei

  Alt 24. Jun 2009, 13:22
danke 0xF30FC7.. werd das gleich mal versuchen...
hatte das problem nun gelöst indem ich den blockierenden prozess einfach abgeschossen und neu gestartet hab...
fand die lösung aber nicht sehr elegant

lg paperboy
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: blockierte Datei

  Alt 24. Jun 2009, 13:34
Ist aber wahrscheinlich besser, als dem Prozess den Teppich unter den Füßen wegzuziehen. Der Prozess wird die Datei nicht umsonst anlegen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#6

Re: blockierte Datei

  Alt 24. Jun 2009, 14:55
hey luckie,

es geht um eine datei die ich in einem thread über TDownloadUrl lade... dieser lässt sich jedochnicht so einfach beenden
und wenn ich den thread per TerminateThread kille ist die datei immer noch blockiert
ich verstehe nicht wieso es in der OnDwonloadProgress prozedur keine möglichkeit gibt den download zu stoppen

lg paperboy
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: blockierte Datei

  Alt 24. Jun 2009, 15:11
Die Komponente oder Klasse TDownloadUrl kenne ich nicht. Sollte diese Klasse die API-Funktion MSDN-Library durchsuchenUrlDownloadToFile kapseln, dann kann man sehr wohl den Download abbrechen:
Zitat von Windows SDK:
IBindStatusCallback::OnProgress allows a caller to implement a user interface or other progress monitoring functionality. It also allows the download operation to be canceled by returning E_ABORT from the IBindStatusCallback::OnProgress call.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#8

Re: blockierte Datei

  Alt 24. Jun 2009, 15:47
Ja, aber wenn er den Thread schon abschießen muss, kommt er wahrscheinlich nicht mehr dazu, die Callbackroutine zu füttern.

Grüße, Messie
  Mit Zitat antworten Zitat
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#9

Re: blockierte Datei

  Alt 24. Jun 2009, 16:25
uhhh... ich dussel... es gibt für die OnDownloadProgress prozedur die boolean abbruchbedingung Chancel...
ich weis ehrlich nicht wie ich das übersehen konnte bitte vielmals um entschuldigung für die ganze mühe
die meine schusseligkeit hier verursacht hat.. ist mir wirklich sehr sehr peinlich

lg paperboy
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:36 Uhr.
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