Entwickler-Ecke

Dateizugriff - Aktuelles Verzeichniss ermitteln wo ein Programm gestartet


Biarchiv - Do 05.06.03 13:08
Titel: Aktuelles Verzeichniss ermitteln wo ein Programm gestartet
Hallo,

Wie kann ich wenn mein Program ganz normal läuft.
Das aktuelle Verzeichnis ermitteln wo ZB gerade eine Datei geöffnet wird?

Also Jemand startet Word / C:\programme\office

Danke...


Delete - Do 05.06.03 13:32

Das aktuelle Verzeichnis muss nicht zwangsläufig das Programmverzeichnis einer Datei sein. Vielleicht solltest du zuerst lernen, diese beiden Sachen auseinander zu halten.

Wenn du wissen willst, wo sich z.B. Word befindet, dann mache dich bitte über

Delphi-Quelltext
1:
paramstr(0)                    

schlau.

Wenn du wissen willst, welches Verzeichnis gerade das aktuell eingestellte ist, dann schau dir

Delphi-Quelltext
1:
2:
GetCurrentDir
GetDir

an. Aber wie gesagt: das muss nicht mit dem Verzeichnis der Datei identisch sein!


Biarchiv - Do 05.06.03 19:48

Hallo,

Bei

Quelltext
1:
2:
GetCurrentDir
GetDir


Leider gibt er mir nur das Laufwerk und Pfad von der gestartete Delphi App aus.
Er solte soch wenn gerade beim Explorer bin (blau makiert) und im Verzeichniss
c:\programme solte er das ausgeben.

In der Hilfe steht aber das das aktuelle Verzeichnis ermittelt wird.

Mache ich was falsch?


mimi - Do 05.06.03 20:13

extractfiledir(paramstr(0)) nur das verzeichnis wo deine exe datei liegt


Biarchiv - Fr 06.06.03 13:01

Hallo,

Danke für die Antworten aber ich meinte was anderes.
Sorry ich kann mich nicht so gut ausdrücken.

Also ein Virenscanner überprüft im Hintergrund Dateien.
Er muss aber alle Dateien(Verzeichnisse) ermitteln die gerade aktiv
sind.

Also nicht ParamStr(0) oder das eigene ermitteln.

Wie kann ich das so wie ein Virenscanner das gerade aktuelle Verzeichniss ermitteln.

Danke


del1312 - Fr 06.06.03 13:11

Hab mal auch noch ne Frage, wie ermittelt man den Namen des Programs?
Ich will das Programm im Autostart eintragen. Wie ich nun den Pfad ermitteln weiss ich ja nun :D aber wie bekomme ich noch den Namen der Exe raus?


Biarchiv - Fr 06.06.03 14:10

Hallo ecspooky,

ParamStr(0); Lauferwerk Pfad und Dateiname ZB c:\test\prog.exe
ExtractFileName(ParamStr(0)); nur Dateinamen prog.exe


MaxiTB - Fr 06.06.03 14:42
Titel: Sorry - das ich mich reinwerfe ...
Wie bekommt man eigentlich wirklich das Programmverzeichnis ?

Hab mal gelesen, unter Linux bekomme ich per ParamStr(0) immer './'+Program ... das finde ich aber unlustig, weils gleichbedeutend mit dem aktuellem Verzeichnis ist %-) ... schon jemand Erfahrung damit gemacht ?

Zu deiner Frage ...

Es gibt tatsächlich nur ein aktuelles Verzeichnis, daß bekommst du mit GetCurrentDir ... es gibt auch nur ein Programmverzeichnis, daß kannst du aus ParamStr(0) bei Windows extrahieren.
Zitat:
Er muss aber alle Dateien(Verzeichnisse) ermitteln die gerade aktiv sind.


Meinst du damit vielleicht das aktuelle Verzeichnis von anderen Apps ?
Okay - da bin ich mir nicht sicher, aber ich denke, unter Win ist das aktuelle Verzeichnis global definiert - wenn du also deine App im Hintergrund laufen läßt und regelmäßig mit GetCurrentDir das Verzeicnis ausliest, wird es sich ändern.

Allerdings Vorsicht: Damit gehen viele Zugriffe verloren, weil sich das aktuelle Verzeichnis nur ändert, wenn:
a) Eine neue Applikation gestartet wird,
b) Standard-Windows-Open Dialog,
c) explizite Änderung durch eine andere Anwendung (wozu eigentlich a gehört - Explorer).

Wenn eine App z.B. per C:\Programme\Wuschi\Wuschi.dat auf diese Datei zugreift, dann kanns du das auf diese Weise nicht rausfinden.

Da bleibt dir nur noch etwas anderes - und das heißt ShellChangeNotifier - ist aber schon ein bisserl deftiger :wink:


del1312 - Fr 06.06.03 14:56

Danke klappt wunderbar! :D