| Autor |
Beitrag |
Steve1024
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Do 05.04.07 09:22
Grüße,
habe nun mein Add-In fast fertig und festgestellt, dass es sich scheinbar mit Adobe Acrobat nicht verträgt. Mein Kunde verwendet Adobe Acrobat 7 mit dem Adobe PDF Maker.
Habe nun festgestellt, dass wenn ich mein Add-In installiere und Word starte, dass sporadisch der PDF Maker abstürzt. Das äußert sich mit einem Runtime Error von pdfofficeaddin.dll. Word deaktiviert dann das Adobe Add-In.
Hat von euch schon mal jemand dieses Problem gehabt?? Weiss jemand woran das liegt???
Vielen Dank für eure Hilfe schon im Voraus...
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Fr 06.04.07 10:15
Hat der Kunde auch alle Updates von der Adobe-SW eingespielt?
Nach meinen Erfahrungen ist Adobe (hier vor allem alles was mit Acrobat zu tun hat) nicht gerade Fehlerfrei.
|
|
Steve1024 
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Fr 06.04.07 10:32
ja, da bin ich mir sicher...
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Fr 06.04.07 11:32
Dann wäre noch zwei Möglichkeiten:
a, Du läßt dem Kunden ein anders (freies) Word-Plugin installieren um zu zeigen das es an Adobe liegt und du nichts machen kannst
b, du zeigst uns den Code und evtl. ist ja noch ein fehler drin der trotz Interface-Kapslung solche effekte auslösen kann.
|
|
Steve1024 
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Sa 14.04.07 20:24
Den Code darf ich leider nicht hier rein stellen. Bedigung vom Auftraggeber... aber mal so ein bisschen was....
hab da aber jetzt mal die Funktion AddCMDBars:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| var vMenu : CommandBarControl; vMenus : TStrings; vProp : TPCSCmdBarProp; vI : Integer; vType : OleVariant; vBtn : TPCSOfficeButton; begin vMenus := GetCmdBars(Key); try IF vMenus.Count = 0 THEN vType := msoControlButton ELSE vType := msoControlPopup; IF Key <> '' THEN begin vMenu := Parent.Controls.Add(vType,EmptyParam,EmptyParam, EmptyParam,FALSE); IF vType = msoControlButton THEN begin vProp := GetCmdProp(Key); IF vProp.bEnabled = FALSE THEN begin vMenu.Delete(FALSE); exit; end; vMenu.Set_BeginGroup(vProp.bNGroup); vMenu.Set_Caption(vProp.sCaption); vMenu.Set_Enabled(vProp.bEnabled); vMenu.Set_Tag(Factory.ProgID + '_' + ExtractFileName(vProp.sModule) + '_' + IntToStr(vProp.iID)); vMenu.Set_OnAction('!<' + Factory.ProgID +'>'); vBtn := FButtonClass.Create(Self,vProp); vBtn.ConnectTo(vMenu as CommandBarButton); FButtons.Add(vBtn); exit; end else vMenu.Set_Caption(ExtractFileName(Key)); end ELSE vMenu := Parent;
IF (Key <> '') AND (Key[Length(Key)] <> '\') THEN Key := Key + '\'; FOR vI := 0 TO vMenus.Count-1 do AddCMDBars(Key + vMenus.Strings[vI],vMenu as CommandBarPopup); finally vMenus.Free; end; |
und dann noch LoadMenuBar:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var vMenuBar : CommandBar; vMenu : CommandBarPopup; begin IF HostKind <> pcs_ohWord THEN exit; vMenuBar := WordHost.CommandBars.ActiveMenuBar; vMenu := vMenuBar.FindControl(EmptyParam,EmptyParam, CustomName + '_' + ClassName, EmptyParam,TRUE) as CommandBarPopup; IF vMenu <> nil THEN vMenu.Delete(FAlSE); vMenu := vMenuBar.Controls.Add(msoControlPopup,EmptyParam,EmptyParam, EmptyParam,FALSE) as CommandBarPopup; vMenu.Set_Caption(CustomName); vMenu.Set_Tag(CustomName + '_' + ClassName); AddCMDBars('',vMenu); IF vMenu.Controls.Count = 0 THEN vMenu.Set_Enabled(FALSE); |
und noch der connect:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| IF HostKind <> pcs_ohWord THEN exit; IF WordHost <> nil THEN FCustContext := WordHost.NormalTemplate; try vContext := WordHost.CustomizationContext; try WordHost.CustomizationContext := FCustContext; LoadMenuBar; finally WordHost.CustomizationContext := vContext; end; finally IF FCustContext <> nil THEN Variant(FCustContext).Saved := TRUE; end; |
und noch der disconnect:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var vContext : IDispatch; begin inherited; IF HostKind <> pcs_ohWord THEN exit; try vContext := WordHost.CustomizationContext; try WordHost.CustomizationContext := FCustContext; FreeMenuBar; finally WordHost.CustomizationContext := vContext; end; finally IF FCustContext <> nil THEN try Variant(FCustContext).Save; except Variant(FCustContext).Saved := TRUE; end; end; |
|
|
Steve1024 
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Di 19.02.08 18:00
Hab's hinbekommen. Funktioniert nun echt gut.
Ursache war wohl, dass beim Beenden von Word der Disconnect und trotzdem noch anschließend der ShutDown aufgerufen wird und somit im ShutDown das Disconnect Event einen Fehler auslöst.
|
|
|