TDM Geschrieben 4. September 2007 Geschrieben 4. September 2007 hallo, Ich versuche gerade von einem Programm andere Programme zu starten. Die Informationen für Pfad etc werden korrekt aus einer Datei gelesen. Mein Problem allerdings ist die Parameterübergabe bei CreateProcess - die will irgendwie nicht: int CApplication::startApplication() { int result = 0; if ((CSettings::getRunLevel() >= m_neRunLevel) || (CSettings::getRunLevel() == -1)) { if (m_lpeFile != _T("")) { [B]result = CreateProcess( (LPCTSTR) m_lpeFile, m_lpeParam.GetBuffer(1024), NULL, NULL, FALSE, 0, NULL, NULL, &m_sSi, &m_sPi);[/B] WaitForSingleObject( m_sPi.hProcess, m_neWaitFor*1000 ); } } m_beIsRunning = (result != 0); return result; } Lt. MSDN müsste das (eigentlich) funktionieren, glaub ich. Ich hab das mal mit Notepad getestet. Dieses wird gestartet, allerdings wird der Parameter einfach nicht übergeben. (Der Parameter ist eine externe Datei, aber lt. Debugger stimmt der Wert von m_lpeParam) Anmerkung: Wenn ich den Pfad mitsamt Parameter-Paramter als ersten Parameter übergebe, startet er erst garnicht.
TDM Geschrieben 4. September 2007 Autor Geschrieben 4. September 2007 So, nach langem hin und her hab ichs dann noch rausgefunden. result = CreateProcess( (LPCTSTR) m_lpeFile, (m_lpeFile + _T(" ") + m_lpeParam).GetBuffer(1024), NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &m_sSi, &m_sPi); Ich vergaß (im Sinne von vergessen), dass der erste Parameter (immer) die Anwendung selbst sein muss.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden