Jeg er ved at lave en applikation som benytter MS-Word som Automationserver, og det virker fint. Problemet er at det tager lang tid inden word er startet op, Og imens står mit program og venter. det ville være bedre hvis jeg havde en separate tråde til at sørge for alle de ting der har med word at gøre. Jeg har imidlertid ikke haft held med at implementere det ( jeg får nogle forskellige kryptiske fejl ), bl.a (\"CoInitialize ikke kaldt\"). Hvis nogen har ideer så ville jeg blive glad.
Hvis du skal bruge automation i en selvstændig tråd skal du bruge CoInitializeEx når tråden startes og CoUninitialize når tråden afsluttes. Nedenstående function bruger jeg når jeg skal spørge på en OPC server state, og det virker fint.
mvh palle
procedure TStateThread.Execute; Var IID_GUIDData : TGUID; Stat : POPCSERVERSTATUS; begin FServerOkay := False; ServerIf := Nil; Try
HR := CoInitializeEx(Nil,COINIT_MULTITHREADED);
If Succeeded(HR) then Begin
If Trim(NodeName) = \'\' Then ServerIf := CreateComObject(ProgIDToClassID(ServerName)) as IOPCServer Else Begin IID_GUIDData := StringToGUID(GUIDStr); ServerIf := CreateRemoteComObject(NodeName,IID_GUIDData) as IOPCServer; End; End;
While (Not Terminated) And (ServerIf <> Nil) Do Begin Updated := Now; FServerOkay := Succeeded(ServerIf.GetStatus(Stat)) And (Stat.dwServerState = OPC_STATUS_RUNNING); Suspend; End;
Except on e: Exception do Failure := E.Message; End;
Jeg har nu fundet ud af at det er proceduren TOleContainer.CreateObjectFromFile , der tager tid.
Har i nogle forslag til hvordan man kan foretage dette i en tråd. Jeg får nogle irriterende fejl når jeg prøver. Det kan godt være jeg anvender CoInitialize og CoUnitialize forkert.
Det er et word dokument jeg åbner i OleContaineren, og jeg har allerede dokumentet i en _document variabel. Det virker lidt åndsvagt at man er nødt til at loade objektet (igen), når man allerede har en pointer til det.
Ps. Palle jeg forstår ikke en hat af det du har skrevet. (Hvad er HR ? ).
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.