Autor Beitrag
AScomp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Di 28.04.09 12:04 
Hallo zusammen,

gibt es eine Möglichkeit, mit Delphi eine Festplatte aus dem Sleepmodus zu holen?

Grund: Mein Programm greift in bestimmten Intervallen auf Festplatten und Netzwerke zu, die offensichtlich nach einiger Zeit "Stillstand" in eine Art Sleepmodus gelangen. Versucht man dann z.B. per FileStream eine Datei oder einen Ordner auf der Festplatte zu erstellen, erhält man einen EFOpenError:

EFOpenError
exception message : Datei F:\blabla.txt kann nicht geöffnet werden. Das System kann den angegebenen Pfad nicht finden.

Viele Grüße,

Andy
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 28.04.09 13:49 
Selbst wenn die Festplatte in den Sleep Modus geht, so wird diese eigentlich von Windows aufgeweckt, wenn eine Datei angefordert wird.
Sicher, dass es die Datei überhaupt gibt?

_________________
PROGRAMMER: A device for converting coffee into software.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Di 28.04.09 13:55 
Was ich nicht so ganz verstehe:

Du sagst du willst eine Datei aus einem Filestream heraus erstellen bzw. Ordner.
Aber dein Fehler ist Datei kann nicht geöffnet werden und der kommt wohl kaum wenn du was ablegen bzw. erstellen willst?
Oder wie sehe ich das :P
Hört sich eher an wie wenn du auf eine nicht existierende Datei ein open command loslässt. ^^
AScomp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Di 28.04.09 14:44 
War jetzt nur ein Beispiel. In dem Fall sollte eine Datei, die bereits auf der Festplatte existiert, geladen werden.

Das Problem tritt meines Erachtens auch hauptsächlich bei Netzwerkfestplatten auf, die dank Mapping als Laufwerk X: ansprechbar sind. Sobald man die Datei direkt über den UNC-Pfad anspricht, funktioniert es einwandfrei.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Di 28.04.09 15:18 
user profile iconAScomp hat folgendes geschrieben Zum zitierten Posting springen:
Das Problem tritt meines Erachtens auch hauptsächlich bei Netzwerkfestplatten auf, die dank Mapping als Laufwerk X: ansprechbar sind. Sobald man die Datei direkt über den UNC-Pfad anspricht, funktioniert es einwandfrei.

vielleicht ist dasd Netzlaufwerk zu dem Zeitpunkt nicht verbunden?
Oder, brauchst du Benutzername und Kennwort, um darauf zuzugreifen? Gibst du dieses mit an?

_________________
PROGRAMMER: A device for converting coffee into software.
AScomp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Di 28.04.09 15:32 
Nein, benötigt keine Zugangsdaten. Verbunden ist es, aber anscheinend in einer Art Sleepmodus, das ist es ja.

Sobald man z.B. über den Windows Explorer oder einen Datei öffnen-Dialog auf das gemappte Laufwerk zugreift, kann daraufhin auch der Dateizugriff per Delphi-Code ohne Fehler erfolgen.
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 09.05.09 10:56 
Na, dann müsstest Du es eben nach Deiner Möglichkeit machen:
Das ist jetzt aber ziemlich unsauber, aber mir fällt im Moment keine andere Lösung ein:
ausblenden Delphi-Quelltext
1:
2:
3:
System.Execute('explorer.exe '+LwBuchstabe+':\')
PostMessage(FindWindow(nil, NameDesZuSchliessendenFensters), WM_CLOSE, 0, 0);
UndhierDannDeineAuzufuehrendenAnweisungen();