Page 2 of 2 FirstFirst 1 2
Results 16 to 29 of 29

Thread: Word blijft lang actief in TaskMgr na afsluiten Word

  1. #16
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,207
    Volgens mij doet *office gestart over COM dit altijd. Ik kan me herinneren dat ik me er met Excel 2003 al eens op geërgerd heb.

    Ik denk dat het is om bij toegang naar office-over-COM in serie niet in een excel startup/shutdown cyclus te krijgen, die meer tijd vergt dan het werk zelf.

  2. #17
    Nee, is volgens mij nog nooit geweest, anders was ik er al zeker eerder tegenaan gelopen (of in ieder geval heeft dat nooit impact gehad op de applicaties). Maar heb blijkbaar nu weer een update van Office gehad (fijn dat je die Office-updates niet meer kunt zien :-( ), bij afsluiten van Word vanuit de applicatie is de vertraging weg, er blijft ook geen instance meer in de TaskMgr staan.

  3. #18
    Nog even een klein vraagje, gerelateerd aan het sluiten van een Word-document. De applicatie maakt dus een word-object aan (WordApp := TWordApplication.Create(Self)), koppelt een OnBeforeClose-event aan het object, en opent een document. Als de gebruiker daarnaast Word zelf opstart (buiten de applicatie om), een document opent, en deze vervolgens sluit, wordt óók de OnbeforeClose van mijn Word-object aangeroepen. Iemand enig idee hoe dat kan/hoe te omzeilen? Dacht altijd dat een eigen Word-object ook écht een éigen object was, en los stond van Word zelf.

  4. #19
    Oef, dat is even geleden dat ik TWordApplication geprobeerd heb.

    Werkt dit na de create?
    Delphi Code:
    1. WordApp.ConnectKind := ckNewInstance;

    Edit: Grrr. dat gaat waarschijnlijk ook niet werken.
    Als je handmatig Word.exe daarna start kan het wel zijn dat ie een nieuwe instance maakt.
    Maar als je dubbelklikt op een document kan het zijn dat ie een bestaanden instance pakt.
    Kwestie van beide situaties uittesten.

  5. #20
    Nope, werkt ook niet. Handmatig word starten als de applicatie ook al een wordinstance heeft laat de applicatie crashen, zodra ik de handmatige word wil afsluiten.

  6. #21
    Zonder kennis van zaken...
    Je zoekt bij de BeforeClose naar de handle van de Application. Geen idee waarom je controleert of die <> 0 is om de Application naar de voorgrond te plaatsen.
    Kun je bij de aanmaak van WordApp in Button1Click de handle van de WordApp ophalen en gebruiken om te zien of de BeforeClose hiervan gebruik kan maken?

  7. #22
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,207
    Ik ben een nitwit in dit soort zaken, maar zoeken naar een document close ipv de applicatie close event?

    Deze link te suggeren dat er zoiets is:https://stackoverflow.com/questions/...ot-firing-when

  8. #23
    Heb getest met de Handle (via FindWindow), maar zowel de eigen Word-instance als het daarna geopende Word-applicatie (dus 2x Word openstaan) geven beiden in de OnBeforeClose en OnBeforeSave en OnQuit dezelfde handle terug.

    @Marcov, probleem is niet dat het Event niet start (wat op die url staat), dat gaat goed. Het start eigenlijk te vaak :-(

  9. #24
    Quote Originally Posted by TheMadMan View Post
    Heb getest met de Handle (via FindWindow), maar zowel de eigen Word-instance als het daarna geopende Word-applicatie (dus 2x Word openstaan) geven beiden in de OnBeforeClose en OnBeforeSave en OnQuit dezelfde handle terug.
    De Handle is van het complete Word.exe process. Die is dus wel hetzelfde.

    Maar je krijgt bij OnBeforeClose toch ook een Doc: WordDocument terug.
    Die zullen toch wel verschillend zijn?

  10. #25
    Klopt, Doc.Worddocument is inderdaad verschillend, kan ik ook afvangen op die manier. Enige wat ik dus niet kan afvangen (althans, geen onderscheid kan maken) is in de OnQuit, daar heb ik altijd dezelfde Handle. Dus een procedure aanroepen als Word wordt gesloten gebeurt alléén als laatste Word-document wordt gesloten (en het maakt niet uit of dat vanuit mijn Instance is, of de handmatig aangeroepen Word, pas als Word definitief wordt afgesloten wordt de Onquit aangeroepen). En daar ligt nu net het probleem in relatie met het originele probleem: de Onquit-procedure gaat alle Word-instances killen (ivm oorspronkelijk genoemde vertraging). Maar als de gebruiker zelf een tweede of derde Word-document heeft geopend, worden deze ook gekilled.

  11. #26
    Je kunt in TWordApplication.OnQuit toch door je TWordApplication.Documents loopen en kijken of alle documenten afgesloten zijn (behalve eventueel je eigen document).
    Zijn ze allemaal afgesloten kun je een KILL doen.

  12. #27
    Probleem is dus dat die OnQuit pas wordt aangeroepen als allerlaatste document wordt afgesloten, en Word afgesloten. Zolang de gebruiker Word open laat staan met zijn/haar eigen document (en het applicatie-document al heeft afgesloten), komt er dus geen OnQuit, en kan de applicatie niet verder. En ik kan de code niet uit de OnQuit halen, juist ivm voornoemde vertraging van Word.

  13. #28
    Quote Originally Posted by TheMadMan View Post
    Zolang de gebruiker Word open laat staan met zijn/haar eigen document (en het applicatie-document al heeft afgesloten), komt er dus geen OnQuit, en kan de applicatie niet verder.
    Je wilt toch geen KILL op Word.exe doen als een gebruiker (buiten je app) nog in Word zit??

    Waarom zou je applicatie dan niet verder kunnen. Je TWordApplication kan dan toch gewoon op nil gezet worden en dan heb je daar niets meer mee te maken.

  14. #29
    TWordApplication.DisposeOf werd ook aangeroepen (diverse manieren geprobeerd in OnQuit, OnDocumentBeforeClose), maar Word bleef hangen (en daarmee de applicatie). Probleem met Word was onstaan na een Office-update een paar weken geleden (begin van deze thread, applicatie draait al langere tijd bij klant), vandaar de diverse pogingen om Word op een andere manier af te sluiten. Kan wel weer terug naar hoe het was, maar als Word weer zo'n update geeft, blijft de zaak weer hangen. Inmiddels is een nieuwe update van Word uitgerold, en blijft Word niet meer hangen, maar zoals gezegd, ik ben aan het zoeken naar een definitieve manier om te voorkomen dat bij een nieuwe update van Word dit probleem weer optreedt. Vandaar dat ik aan het zoeken/testen was met de Handles;

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •