Editor mit CreateProcess aufrufen
-
Hallo!
Meine zweite (und dritte) Frage für heute:
Ich möchte in meinem Dialog den Editor mit einer bestimmten
geöffneten Datei aufrufen, beispielsweise Datei.txt.Dazu habe ich zwei Fragen:
- Ich möchte verschiedene Dateien in dem Editor geöffnet haben.
Wenn ich die jeweils verschiedenen Dateinamen an einen String wie folgt
übergebe...
CString CmdLine, totalPath; totalPath = "D:\\Mein_Verzeichnis\\Datei.txt"; CmdLine = "C:\\Windows\\system32\\notepad.exe totalPath";
...sagt mir mein "Computer", daß er die Datei "totalPath.txt" nicht findet!!
Was kann ich tun, damit er das so erkennt, wie ich das meine!?!- In dem Moment, wo in meinem Programm der Editor aufgerufen wird,
soll er mit der entsprechenden Datei ÜBER meinem Dialog erscheinen.
Bei mir macht er das nicht, man sieht lediglich in der Taskleiste,
daß der Editor geöffnet wurde...das ist mir nicht deutlich genug,
der Editor soll mir gleich ins "Gesicht springen"...
Der Aufruf erfolgt folgendermaßen:
LPSTR CmdLineLPSTR; CmdLineLPSTR = strdup(CmdLine); CreateProcess( NULL, // pointer to name of executable module CmdLineLPSTR, // pointer to command line string NULL, // process security attributes NULL, // thread security attributes TRUE, // handle inheritance flag CREATE_NEW_CONSOLE, // creation flags NULL, // pointer to new environment block path, // pointer to current directory name &si, // pointer to STARTUPINFO &pi // pointer to PROCESS_INFORMATION ); free(CmdLineLPSTR);
Für Anregungen wäre ich euch sehr dankbar!!!!
- Ich möchte verschiedene Dateien in dem Editor geöffnet haben.
-
zu 1.
CString CmdLine, totalPath; totalPath = "D:\\Mein_Verzeichnis\\Datei.txt"; CmdLine.Format("C:\\Windows\\system32\\notepad.exe %s",totalPath);
Formatiert die kommandline wie Du sie haben willst.
zu 2.
Benutze einfach ShellExecute.
zB:
CString CmdLine, totalPath; totalPath = "D:\\Mein_Verzeichnis\\Datei.txt"; CmdLine.Format("C:\\Windows\\system32\\notepad.exe %s",totalPath); ShellExecute(this->GetSafeHwnd(),"open",CmdLine,NULL,NULL,SW_SHOWNORMAL);
Gruß
-
Einfacher ist es einfach ShellExecute nur mit dem Dateinamen aufzurufen, dann wird der vom User bestimmte Editor gestartet und nicht zwingend Notepad.