mit VC++ Prozesse im Task-Manager beenden



  • Hallo,

    ich möchte gerne Prozesse im Task-Manager mit VC++ beenden.
    Das Problem bei mir ist, dass ich über VC++ auf Exceldateien zugreife und beim beenden schliesst sich zwar das Fenster, aber im Task-Manager bleibt in der Lasche Prozesse die Excel.exe offen.
    Da ich öfters auf Excel zugreife, hatte ich ich schon bis zu 50 Prozessen offen, die ich alle von Hand schließen musste 😞

    Gibts eine saubere Methode, wie ich einfach alle offenen ExcelProzesse schließen kann?

    MfG,

    Thorsten



  • Hallo,

    Excel schließen würde ich nicht machen,
    check doch ob Excel schon geöffnet ist...

    In einem meiner Projekte habe ich dieses hier gefunden

    ps.:erkären kann ich es dir im Moment leider nicht, wegen Zeitmangel.

    LPDISPATCH lpDisp;
    	LPUNKNOWN pUnk;	
    	CLSID clsid;
    
    	::CLSIDFromProgID(L"Excel.Application", &clsid);
    	if( ::GetActiveObject(clsid, NULL, &pUnk) == S_OK )	// aus Registrierung
    	{
    		VERIFY(pUnk->QueryInterface(IID_IDispatch,
    									(void**)&lpDisp) == S_OK);
    		m_appExcel.AttachDispatch(lpDisp);
    		pUnk->Release();
    		TRACE(" Verknüpfung abgeschlossen\n");
    	}
    	else
    	{
    		if( !m_appExcel.CreateDispatch("Excel.Application") )
    		{
    			AfxMessageBox("Micrsoft Excel nicht gefunden!");
    			return FALSE;
    		}
    		TRACE(" Erstellung abgeschlossen.\n");
    	}
    
        // Set visible.
    	m_appExcel.put_Visible(TRUE);
    /*
    1 Normal (Voreinstellung) 
    2 Minimiert (auf Symbolgröße verkleinert) 
    3 Maximiert (maximale Vergrößerung) 
    */
    	m_appExcel.put_WindowState(2);//WindowState
    

    der Code habe ich in der C...Doc::OnNewDocument()
    musst halt ausprobieren



  • Tupamann schrieb:

    beim beenden schliesst sich zwar das Fenster, aber im Task-Manager bleibt in der Lasche Prozesse die Excel.exe offen.

    Wie "beendest" du denn?



  • Hallo,

    @MFK: ich beende Excel im Moment normal über das "x".
    Die Prozesse beende ich dann manuell über den Task-Manager.
    Ich finde diese Lösung nicht so gut, also wollte ich in den Code einbauen, dass er automatisch beim Starten/Beenden alle ExcelProzesse beendet, und dann beim Aufrufen erst wieder einen öffnet, den er braucht.

    @..J: ich werde mal versuchen durchzusteigen.Thx

    Thorsten


Anmelden zum Antworten