Quitter excel!!!

Résolu
Signaler
Messages postés
49
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
15 septembre 2005
-
Messages postés
49
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
15 septembre 2005
-
Bonjour tlm,

j'utilise VC++6 avec les MFC pour piloter excel, le problème est que je n'arrive pas à quitter excel : toujours présent dans les processus.
Comment faire?

voila mon code :

=======================================================

HRESULT hr;
Range range;
COleVariant vLong((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
LPDISPATCH pWorkbookDispatch,pWorksheetDispatch;
_Application excel;

// If you have not created Excel, create a new instance.
if (excel.m_lpDispatch == NULL)
{
hr = excel.CreateDispatch("Excel.Application");
}


// If there is any problem to open excel application -> Message Box ("Error")
if(FAILED(hr))
AfxMessageBox("Impossible d'ouvrir l'application Excel");
else
{


excel.SetVisible(true); //Cacher la fenêtre Excel

Workbooks books(excel.GetApplication());
_Workbook book;


books.AttachDispatch(excel.GetWorkbooks());
pWorkbookDispatch = books.Open(m_FileSrc, vLong,vLong, vLong, vLong, vLong, vLong, vLong, vLong,vLong, vLong, vLong, vLong,vLong, vLong);
book.AttachDispatch(excel.GetActiveWorkbook());

Worksheets sheets(book.GetSheets());
_Worksheet sheet;


sheets.AttachDispatch(excel.GetWorksheets());
pWorksheetDispatch = sheets.GetItem(COleVariant((short)1));
sheet.AttachDispatch(excel.GetActiveSheet());

//ici je fais mon traitement

excel.Quit(); //ça ne suffit pas pour quitter apparement

=======================================================

Merci pour votre aide!!!!

3 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
10
Une autre solution, peut être un peu brutale:

HWND hExcel = FindWindow("XLMAIN", 0); // Trouve la fenetre excel
DWORD dwProcessID;
GetWindowThreadProcessId(hExcel, &dwProcessID); // Récupère l'ID du process
HANDLE hExcelProcess = OpenProcess(PROCESS_TERMINATE, 0, dwProcessID); // ouvrir un accès au processus, avec droit de terminaison
TerminateProcess(hExcelProcess); // terminer le processus
CloseHandle(hExcelProcess);
Messages postés
230
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
4 août 2005

Moi ce que je ferais à ta place :
HWND hWnd = FindWindow("Nom de l'application");
SendMessage(hWnd,WM_QUIT,NULL,NULL);
Tout ca sans MFC ;)
Messages postés
49
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
15 septembre 2005

Merci, ça roule!!!