Arbeitsverzeichnis wechseln ??
-
Hallöchen,
ich bin "blutiger" Anfänger ! Das sei vorher gesagt, also bitte kein Fachenglisch, danke.
Also, ich hab mein erste kleines ( sehr kleines ) Programm fast fertig. Mein einziges Problem ist, daß ich aus meinem Prog heraus ein anderes starten will.
Mit den Windows Programmen ( Editor, Paint und so ) geht ds, aber wenn ich mein Programm starte, dann kommt immer ein Fehler " VErzeichnis nicht gefunden".
Kopiere ich mein Programm in das Verzeichnis des Programms welches ich starten will, dann geht es.
Also gehe ich mal davon aus, daß ich vor dem starten des anderen Programms das Arbeitsverzeichnis setzen muß, aber wie zum Geier mache ich das ?Vielleicht kann mir ja einer Helfen. Aber bitte verweist mich nicht einfach auf einen anderen Thread sondern erklärt es in "DEUTSCH"
THX Goose
-
Du kannst auch einfach anstatt des Programmnamens den Kompletten Pfad angeben... also z.B. statt "Calc.exe" -> "C:\\windows\\system32\\Calc.exe"
-
void CTag_2Dlg::OnRunpgm()
{
// EIGENER CODE ANFANGUpdateData (TRUE); // Bidschirmanzeige auslesen
// Lokale Variable zur Aufnahme des Programmnamens deklarieren
CString strPgmName;// Programmname in die lokale Variable kopieren
strPgmName = m_strProgToRun;// Programmname in Großbuchstaben umwandeln
strPgmName.MakeUpper();// Programm Paint gewählt?
if (strPgmName == "PAINT")
// Ja, Paint starten
WinExec("pbrush.exe", SW_SHOW);// Editor (Notepad) gewählt?
if (strPgmName == "EDITOR")
// Ja, Editor starten
WinExec("notepad.exe", SW_SHOW);// Solitär gewählt?
if (strPgmName == "SOLITÄR")
// Ja, Solitär starten
WinExec("sol.exe", SW_SHOW);// WhazzUp gewählt
if (strPgmName == "WHAZZUP")
// Jep
WinExec("D:\\Spiele\\WhazzUp\\WhazzUp.exe",SW_SHOW);if (strPgmName == "")
// Kein Programm ausgewählt
MessageBox("Bitte wählen Sie ein Programm aus der Liste !","Fehler");///////////////////////
// EIGENER CODE, ENDE
///////////////////////}
Hallöchen,
danke für Deine schnelle Antwort !
Ja, das habe ich gemacht, nachdem ich endlich rausgefunden hatte wie ich den Backslash in dem Code unterbringen kann. *GRINS*
Ich habe oben mal den Code eingefügt. Es funktioniert bei allen Programmen ausser dem letzten ( WHAZZUP ).
Also die Frage : Kann man irgendwie das arbeitsverzeichnis wechseln oder angeben ? So das zuerst das Arbeitsverzeichnis auf "D:\Spiele\WhazzUp\" gewechselt wird und erst danach das Programm WhazzUp gestartet wird ?
Wenn ja, dann wie ?Big THX Goose
-
Hi goose!
Jeder von uns hat klein angefangenAlso, das aktuelle Arbeitsverzeichnis setzt du mit
SetCurrentDirectory("D:\\Spiele\\WhazzUp");
Danach kannst du normalerweise folgende Anweisung aufrufen:
WinExec(".\\WhazzUp.exe", SW_SHOW);
Aber ich würde dir raten den Aufruf mit ShellExecute(...) durchzuführen, da es sicherer ist.
Aber ich verstehe nicht, warum es nicht mit der normalen Pfadangabe klappt
Ach noch was: Werte mal den Rückgabewert von WinExec(...) aus. Vielleicht kommst du dann drauf, warum es nicht klappt!
[ Dieser Beitrag wurde am 14.10.2002 um 00:25 Uhr von shadow editiert. ]
[ Dieser Beitrag wurde am 14.10.2002 um 00:27 Uhr von shadow editiert. ]
-
Ich danke Dir !
Es funktioniert, allerdings nur mit SetCurrent... .
Mit dem anderen Befehl ShellExecute(...) hab ich es nicht hinbekommen. Hab in der Hilfe nachgsehen, allerdings weiß ich mit den ganzen Parametern nicht so richtig was anzufangen.
Vielleicht kannst Du mir ja mal posten was ich da an Paraetern eingeben muß ?
Jetzt hab ich allerdings ein anderes Problem :
Ich habe (Streng nach anleitung :http://www.mut.de/media/buecher/VCPLUS6/data/start.htm )
ein Projekt erstellt und will ein Menü einfügen, allrdings , sobald ich die Menü Ressource mit dem Dialog verbinde lässt sich das Programm nict mehr starten ????
Also ich hab das jetzt schon x mal versucht, aber es geht irgendwie nicht. Beim Compilieren kommen aber komischerweise auch keine Fehler ????
Weißt Du an was das liegen kann ?
THX Goose
-
Hast du mit dem Klassen-Assi die Dialogklasse mit dem Menü verbunden?
Es reicht nicht aus, wenn du das Menü nur dem Dialog in seinen Eigenschaften hinzufügst. Du musst noch festlegen welche Klasse zur Behandlung der Menü-Ereignisse dienen soll...ShellExecute-Beispiel:
The ShellExecute function opens or prints a specified file. The file can be an executable file or a document file.
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);Beispiel:
ShellExecute(AfxGetInstanceHandle(), "open", "notepad.exe", "C:\\test\\test.txt", NULL, SW_SHOW);
Ist das verständlich?
Mal ne Frage: Hast du erst C++ gelernt oder sofort mit der MFC begonnen?
Ich z. B. habe sofort mit der MFC beginnen müssen, was mir echt Probleme bereitet hatte. Nachdem ich aber C++ "studiert" habe ist alles um vieles leichter und das Verständnis ist größer :p