Hej Jag ska försöka besvara dina frågor. Har inte tid med att göra test så jag tar direkt ur minnet, så det kan helt klart finnas brister i svaren. Använder word.applicationobjektreferens
Jag har en dll som kontrollerar ms word, dvs jag har en applikation som ropar på dll:en och denna dll pratar i sin tur med word. I dll:en ligger metoder som create_table(rows, columns, etc etc) och andra triviala funktioner. Initialt kör jag en metod som registrerar word i running object table, via getobject och ett api anrop (findwindow).
Allt funkar fins, jag har dock 2 frågor:
1) varför behövs ingen objektreferens till word? I dll:en ligger kod som opererar direkt på bl.a selection objektet och tables-collection etc, dvs
kod som tex:
selection.style="normal"
tables(n).rows.....etc
Varför behöver ingen objektreferens (MITTOWORDOBJ.selection.style...och MITTWORDOBJ.Avtivedocument.tables(n)....) ?????
Jag har liknakde automatiserande dll:er som jobbar mot excel och där krävs en objektreferens.
2) Jag har problem med att minnet blir fullt, enda sättet att komma omkring det är att starta om word. Jag garanterar att jag terminerat alla objekt och referenser som dll:en använt sig av, och den anropande applikationen terminerar min dll i sig. Ändå blir minnet fullt. Nån som har några idéer kring detta? Det är vanliga com:dll er jag använder. Samma problem uppstår inte om jag kör motsvarande kod i en activex.exe.., det verkar vara just dll:er som slukar minnet.
tacksam för svar
/AxelSv: objektreferens
Att du inte behöver en referens, beror troligtvis på att du använder late binding (du har declarerat word objectet som "object" och inte som Word.Application eller vad det nu kan vara). '
Vad det gäller att den slukar minne beror kanske på att word inte terminerar när du avslutar din dll. Du kan kolla i taskmanagern om du startar upp ny word instans varje gång. Det finns en property/metod att avsluta word korrekt. Har för mig att den finns på application objectet.
Det kan vara ide att kolla in Excel-dennis sida som innehåller massor av tips & tricks om främst excel (supplies) men även word (har jag för mig). Där kan du säkert hitta mer exakt infoSv: objektreferens
Det är riktigt att word inte avslutas varje gång dll:en slutar köra metoder i word. Word skall ej heller avslutas, syftet med applikationen är att aktiv instant av word letas upp varje gång och registreras i ROT (annars startas en ny instans). Endast dll:en skall termineras varje gång - och det gör den.