E
eeidfn
Hi,
As you can see xlApp.Quit does not kill the process. I've tried in
desperation in the last few lines to force the process to quit, which also
does not work.
As many times as I call printWithExcel, I get the same number of processes
that are not exited, even the whole Delphi App exits.
I have the following code in Delphi:
procedure printWithExcel(fileName: String);
var
xlApp, workbook: Variant;
ptrToXlApp, ptrToWorkbook: PVarData;
begin
WriteToLogFile('Output.printWithExcel() --->');
if (fileName <> '') then
begin
xlApp := CreateOleObject('Excel.Application');
xlApp.Visible := False;
// Arguments to the Open function
{
function Open(const Filename: WideString; UpdateLinks: OleVariant;
ReadOnly: OleVariant;
Format: OleVariant; Password: OleVariant;
WriteResPassword: OleVariant;
IgnoreReadOnlyRecommended: OleVariant; Origin: OleVariant;
Delimiter: OleVariant;
Editable: OleVariant; Notify: OleVariant; Converter:
OleVariant;
AddToMru: OleVariant; lcid: Integer): ExcelWorkbook;
safecall;
}
workbook := xlApp.Workbooks.Open(fileName, EmptyParam, True);
workbook.Printout;
workbook.Close(False);
xlApp.Quit;
ptrToWorkbook := FindVarData(workbook);
ptrToWorkbook := nil;
ptrToXlApp := FindVarData(xlApp);
ptrToXlApp := nil;
workbook := Unassigned;
xlApp := Unassigned;
end;
WriteToLogFile('Output.printWithExcel() <---');
end;
As you can see xlApp.Quit does not kill the process. I've tried in
desperation in the last few lines to force the process to quit, which also
does not work.
As many times as I call printWithExcel, I get the same number of processes
that are not exited, even the whole Delphi App exits.
I have the following code in Delphi:
procedure printWithExcel(fileName: String);
var
xlApp, workbook: Variant;
ptrToXlApp, ptrToWorkbook: PVarData;
begin
WriteToLogFile('Output.printWithExcel() --->');
if (fileName <> '') then
begin
xlApp := CreateOleObject('Excel.Application');
xlApp.Visible := False;
// Arguments to the Open function
{
function Open(const Filename: WideString; UpdateLinks: OleVariant;
ReadOnly: OleVariant;
Format: OleVariant; Password: OleVariant;
WriteResPassword: OleVariant;
IgnoreReadOnlyRecommended: OleVariant; Origin: OleVariant;
Delimiter: OleVariant;
Editable: OleVariant; Notify: OleVariant; Converter:
OleVariant;
AddToMru: OleVariant; lcid: Integer): ExcelWorkbook;
safecall;
}
workbook := xlApp.Workbooks.Open(fileName, EmptyParam, True);
workbook.Printout;
workbook.Close(False);
xlApp.Quit;
ptrToWorkbook := FindVarData(workbook);
ptrToWorkbook := nil;
ptrToXlApp := FindVarData(xlApp);
ptrToXlApp := nil;
workbook := Unassigned;
xlApp := Unassigned;
end;
WriteToLogFile('Output.printWithExcel() <---');
end;