Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Excel-Automatisation und Prozess-ID (https://www.delphipraxis.net/50094-excel-automatisation-und-prozess-id.html)

Bernhard Geyer 20. Jul 2005 15:56


Excel-Automatisation und Prozess-ID
 
Bei der Automatisierung von Excel kommt es hin und wieder vor (beim einlesen von vielen XLS-Dateien), das die Fehlermeldung "Aufruf wurde durch Aufgerufenen Abgelehnt".
Der Fehler dürfte grundlegender COM/Excel-Natur sein, da dieser Fehler manchmal nach 50 und manchmal erst nach 500 eingelesenen XLS-Dateien passiert.

Nun will ich da ja gar nichts mehr mit der aktuellen Excel-Instanz anzufangen ist, diese Instanz beenden. Dazu würde ich die Prozess-Id benötigen um mithilfe der TerminateProcess-Funktion den Prozess abzuschießen.
Nur wie bekomme ich Aufgrund des Interface-Zeigers auf die Excel-Anwendung auf die Prozess-ID?

MosiXXL 20. Jul 2005 17:10

Re: Excel-Automatisation und Prozess-ID
 
wie man die ProzessID feststellen kann, weis ich nicht. Dennoch kommt mir diese Fehlermeldung bekannt vor. Sie ist immer dann aufgetreten, wenn ein Dialogfenster geöffnet war. Kann das eventuell auch bei Dir der Fall sein? Zum Beispiel eine Fehlermeldung oder ähnliches?

Bernhard Geyer 20. Jul 2005 17:34

Re: Excel-Automatisation und Prozess-ID
 
Zitat:

Zitat von MosiXXL
wie man die ProzessID feststellen kann, weis ich nicht. Dennoch kommt mir diese Fehlermeldung bekannt vor. Sie ist immer dann aufgetreten, wenn ein Dialogfenster geöffnet war. Kann das eventuell auch bei Dir der Fall sein? Zum Beispiel eine Fehlermeldung oder ähnliches?

Nein. Ich denke hier eher an eine "Überlastung" der COM-Schnittstelle.

Aber ich schon 'ne Lösung:
1, Prozessliste vor Start der Automatisierung lesen
2, Prozessliste bei Auftritt der Exception lesen
3, Filterung nach Excel.exe
4, Killen dieses Prozesses

Heffalump 22. Aug 2005 12:50

Re: Excel-Automatisation und Prozess-ID
 
Vieleicht ist das was:
Takes a COM Object and return the Process ID of the server that is hosting the object.

Bernhard Geyer 22. Aug 2005 13:19

Re: Excel-Automatisation und Prozess-ID
 
Habe ne einfacher Lösung:
Delphi-Quellcode:
Interactive := False
Das Problem war scheinbar das (durch irgendein Update/Hotfix) Excel nicht mehr komplett "versteckt" arbeitet sondern auch noch kurzzeitig als aktive Fenster läuft und damit Tastaturdrücke/Maustasten empfängt und auswertet. Und wenn jetzt so eine Aktion zufälligerweise einen Menüpunkt aufruft ist es geschehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz