Autor Beitrag
Steve1024
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
BeitragVerfasst: Fr 06.04.07 10:32 
ja, da bin ich mir sicher...
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
BeitragVerfasst: 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:

ausblenden volle Höhe Delphi-Quelltext
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:

ausblenden 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:
ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
BeitragVerfasst: 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.