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. Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.