JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=0b4af64b91963e704289c7d8d2ecec11Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Kopierproblem
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Robrunner
Mini JLI'ler


Alter: 32
Anmeldedatum: 08.07.2007
Beiträge: 44
Wohnort: Passau
Medaillen: Keine

BeitragVerfasst am: 01.09.2007, 17:03    Titel: Kopierproblem Antworten mit Zitat

Ich möchte eine Datei in den Autostart von Windows kopieren lassen (Konsolenanwendung). Ich habe mir folgendes überlegt:
Code:
#include<iostream>
int main()
{
    string s="copy \"test.txt\" \"%userprofile%\\startmen";
    s+=129; // ASCII: 129="ü"
    s+="\\autostart\""
    system(s.c_str());
    cin.get();
}


Das ganze klappt nur nicht so ganz: Das ganze bricht mit der Meldung
Zitat:
Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) kopiert.
ab.

Wenn ich dass \\autostart weglasse kopiert er angeblich, aber im startmenü-ordner finde ich nichts.

Noch etwas seltsames:
Wenn ich das ganze manuell in der cmd mache:
Arrow copy "test.txt" "%userprofile%\startmenü": klappt Very Happy
Arrow copy "test.txt" "%userprofile%\startmenü\autostart": klappt nicht Sad
Arrow es passiert folgendes: im ordner startmenü (nicht autostart!!!) erscheint die datei autostart Question

würde mich über hilfe freuen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 01.09.2007, 19:21    Titel: Antworten mit Zitat

Ich würde es dir nicht empfehlen, die Funktion system zu verwenden.
Statt dessen würde ich dir, wenn du schon unter Windows programmierst, CopyFile empfehlen.
CPP:
BOOL CopyFile(
  LPCTSTR lpExistingFileName,
  LPCTSTR lpNewFileName,
  BOOL bFailIfExists
);

Parameters
lpExistingFileName
[in] Pointer to a null-terminated string that specifies the name of an existing file.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File.

Windows Me/98/95:  This string must not exceed MAX_PATH characters.
lpNewFileName
[in] Pointer to a null-terminated string that specifies the name of the new file.
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File.

Windows Me/98/95:  This string must not exceed MAX_PATH characters.
bFailIfExists
[in] If this parameter is TRUE and the new file specified by lpNewFileName already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.
Return Values
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Gruß

FH
_________________
goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 01.09.2007, 19:44    Titel: Re: Kopierproblem Antworten mit Zitat

Robrunner hat Folgendes geschrieben:
Noch etwas seltsames:
Wenn ich das ganze manuell in der cmd mache:
Arrow copy "test.txt" "%userprofile%\startmenü": klappt Very Happy
Arrow copy "test.txt" "%userprofile%\startmenü\autostart": klappt nicht Sad
Arrow es passiert folgendes: im ordner startmenü (nicht autostart!!!) erscheint die datei autostart Question


probier mal: copy "test.txt" "%userprofile%\startmenü\autostart\"
_________________
"A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robrunner
Mini JLI'ler


Alter: 32
Anmeldedatum: 08.07.2007
Beiträge: 44
Wohnort: Passau
Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 06:39    Titel: Antworten mit Zitat

@FH
CopyFile funzt irgendwie auch nicht. Wahrscheinlich mache ich irgendwas mit den Parametern falsch Embarassed ). Könntest du mir mal ein Beispiel geben?

@Asto
Nein jetzt kommt wieder:
Zitat:
Das System kann den angegebenen Pfad nicht finden.
0 Datei(en) kopiert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Asto
JLI'ler


Alter: 37
Anmeldedatum: 30.05.2007
Beiträge: 114
Wohnort: Dortmund
Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 10:58    Titel: Antworten mit Zitat

aso ja, öhm bei mir ist der autostart ordner auch woanders Very Happy

versuchs mal so: "%userprofile%\startmenü\programme\autostart\"

oder is der ordner wirklich bei dir im ordner startmenü? ^^ hmm
_________________
"A programmer started to cuss, Because getting to sleep was a fuss, As he lay there in bed, Looping 'round in his head, was: while(!asleep()) sheep++;", Unbekannt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robrunner
Mini JLI'ler


Alter: 32
Anmeldedatum: 08.07.2007
Beiträge: 44
Wohnort: Passau
Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 11:17    Titel: Antworten mit Zitat

Embarassed Äh..nein!! Hab tatsächlich Programme vergessen Embarassed
So klappts in der cmd!

Aber mit CPP immer noch nicht; wieder dasselbe: Pfad nicht gefunden!
Ich glaube ja, es liegt am startmenü.
Gibts da noch eine andere Lösung als:
Code:
string s="copy \"test.txt\" \"%userprofile%\\startmen";
s+=129; //ASCII: 129="ü"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 02.09.2007, 12:11    Titel: Antworten mit Zitat

Vergiss doch bitte den system-Aufruf und nimm CopyFile. So ein system-Aufruf kann auch ganz Böse enden, was dir mit CopyFile nicht passieren kann.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Robrunner
Mini JLI'ler


Alter: 32
Anmeldedatum: 08.07.2007
Beiträge: 44
Wohnort: Passau
Medaillen: Keine

BeitragVerfasst am: 03.09.2007, 09:43    Titel: Antworten mit Zitat

Zitat:
@FH
CopyFile funzt irgendwie auch nicht. Wahrscheinlich mache ich irgendwas mit den Parametern falsch Embarassed ). Könntest du mir mal ein Beispiel geben?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Deviloper
Junior JLI'ler



Anmeldedatum: 31.05.2006
Beiträge: 77

Medaillen: Keine

BeitragVerfasst am: 03.09.2007, 18:45    Titel: Antworten mit Zitat

Willst uns veräppeln?
CPP:
if (CopyFile("C:\\test.txt", "%%userprofile%%\\startmenü\\programme\\autostart\\test.txt", TRUE) == FALSE)
    MessageBox(NULL, "Die Datei existiert bereits und/oder konnte nicht kopiert werden!", "Fehler", MB_OK | MB_ICONERROR);
...

Zuletzt bearbeitet von Deviloper am 04.09.2007, 12:46, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Robrunner
Mini JLI'ler


Alter: 32
Anmeldedatum: 08.07.2007
Beiträge: 44
Wohnort: Passau
Medaillen: Keine

BeitragVerfasst am: 04.09.2007, 11:15    Titel: Antworten mit Zitat

Nein will ich nicht auch so klappt es nicht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 04.09.2007, 14:56    Titel: Antworten mit Zitat

Das AutoStart-Verzeichnis kann je nach WindowsVersion und Sprache an verschiedenen Stellen sein und / oder anders heissen.
Sicherer ist es, das richtige Verzeichnis in erfahrung zu bringen, bevor man irgendwas wild irgendwohin kopiert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Robrunner
Mini JLI'ler


Alter: 32
Anmeldedatum: 08.07.2007
Beiträge: 44
Wohnort: Passau
Medaillen: Keine

BeitragVerfasst am: 04.09.2007, 15:15    Titel: Antworten mit Zitat

Okok, bei mir befindet es sich aber unter %userprofiles%\startmenü\programme\autostart und es würde mich nur interressieren wieso
Code:
if (CopyFile("C:\\test.txt", "%%userprofile%%\\startmenü\\programme\\autostart\\test.txt", TRUE) == FALSE)
    MessageBox(NULL, "Die Datei existiert bereits und/oder konnte nicht kopiert werden!", "Fehler", MB_OK | MB_ICONERROR);

nicht funzt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 04.09.2007, 17:05    Titel: Antworten mit Zitat

http://msdn2.microsoft.com/en-us/library/aa363851.aspx hat Folgendes geschrieben:
If the function fails, the return value is zero. To get extended error information, call GetLastError.

_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Robrunner
Mini JLI'ler


Alter: 32
Anmeldedatum: 08.07.2007
Beiträge: 44
Wohnort: Passau
Medaillen: Keine

BeitragVerfasst am: 04.09.2007, 19:13    Titel: Antworten mit Zitat

GetLastError() gibt bei mir den Wert 3 zurück.
Embarassed Was heißt das jetzt? Hab in der MSDN nichts gefunden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 04.09.2007, 19:47    Titel: Antworten mit Zitat

http://msdn2.microsoft.com/en-us/library/ms679351.aspx

bzw.

http://msdn2.microsoft.com/en-us/library/ms681382.aspx

ERROR_PATH_NOT_FOUND
3 The system cannot find the path specified.

Wahrscheinlich wird die Umgebungsvariable nicht ersetzt.

Du solltest:
http://msdn2.microsoft.com/en-us/library/ms647764.aspx
SHGetFolderPath
mit
http://msdn2.microsoft.com/en-us/library/ms649274.aspx
CSIDL_STARTUP
aufrufen, um den Autostartordner zu kriegen.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum