Autostart. CurrentDir spielt verrückt.

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

barratator

Betreff: Autostart. CurrentDir spielt verrückt.

BeitragSo, Jun 29, 2008 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe für ein Programm von mir einen Autostart Eintrag in der Registry angelegt.
Also: Current_User->Software->........->Run und dort eine Zeichenfolge mit einem Namen und dem Wert nach dem Schema von: "C:\XYZ\programm.exe" angelegt (inklusive den Anführungszeichen davor und dahinter).

Dies klappt soweit ganz gut, allerdings gibt CurrentDir immer "C:\Dokumente und Einstellungen\User" zurück, wenn es aus dem Autostart gestartet wurde. Obwohl die *.exe ganz woanders liegt. Wenn ich es normal über den Explorer starte klappt es wunderbar.

Ein weiterer Test:
Ich habe Versucht statt dem Programm, eine Batch-Datei über den Autostart starten zu lassen. Batch und Exe liegen im selben Verzeichnis. Die Batch-Datei wurde gestartet, und sollte dann die Exe starten.

Inhalt der Batch Datei:
Code: [AUSKLAPPEN]

@echo off
start programm.exe
exit


Dies klappt, wenn ich die Batch Datei über den Explorer starte. Aber wenn der Autostart diese startet kommt eine Fehlermeldung, dass die Datei "programm.exe" nicht existiert...
Also "dachte" die Batch-Datei auch, sie würde woanders liegen.

Achja...Alle Dateien, die mein Programm aufrufen soll, also per ReadFile o.Ä. (mit relativen Pfadangaben) findet dieses nicht.
Es wird 0 zurückgegeben. Diese sucht er vermutlich auch in "C:\Dokumente und Einstellungen\User".


Wie kann ich dies jetzt beheben, sodass mein Programm auch genauso klappt, wie es klappen sollte?



gruß
Bastian

DAK

BeitragSo, Jun 29, 2008 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du das ganze per verknüpfung gemacht oder das programm direkt rein geschoben?
Gewinner der 6. und der 68. BlitzCodeCompo

BtbN

BeitragSo, Jun 29, 2008 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Beim starten per Registry wird das Working-Dir zu programm-start auf das home-dir des users gesetzt.
Es ist nicht garantiert, dass das CurrentDir = dem dir, wo die exe liegt ist. Sich darauf zu verlassen könnte demnach nach hinten los gehen.
 

barratator

BeitragSo, Jun 29, 2008 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das weiß ich auch.
Aber bisher hatte es ja geklappt. Das Merkwürde ist ja, dass ReadFile, etc. mit relativer Pfadangabe nicht funktionieren.

-> Was gibt es sonst für möglichkeiten den Speicherort rauszufinden? (Könnte eine DLL in PB weiterhelfen?)
-> Wird das mit dem ReadFile, etc. behoben, wenn ich mit ChangeDir dies dann ändere?


gruß
Bastian
 

barratator

BeitragSo, Jun 29, 2008 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe mir jetzt eine Userlib geschrieben die den Pfad ermittelt.
Klappt jetzt alles super. Danke für die Antworten.


gruß
Bastian

BtbN

BeitragSo, Jun 29, 2008 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Sollte SystemProperty mit APPDIR nicht auch gehen? Gleich ne DLL für so einen Müll halte ich für übertrieben.
 

barratator

BeitragSo, Jun 29, 2008 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit: Ok, klappt doch. Aber ist jetzt eh zu spät. Ob jetzt 55kb unter 20 DLLs noch was ausmachen ist auch egal Wink

gruß
Bastian

The Shark

BeitragFr, Jul 04, 2008 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
1. ein dll aufruf ist langsamer
2. wofür brauchst du 20 dlls?

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group