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:

    1. 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!?!

    1. 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!!!! 🙂



  • 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ß


  • Mod

    Einfacher ist es einfach ShellExecute nur mit dem Dateinamen aufzurufen, dann wird der vom User bestimmte Editor gestartet und nicht zwingend Notepad.


Anmelden zum Antworten