2013-12-13 62 views
0

任何人都知道如何为PowerDesigner开发插件?我正在阅读PowerDesigner关于如何创建ActiveX加载项的文档,它说:“ActiveX必须实现一个名为IPDAddIn的特定接口才能成为PowerDesigner加载项。”但是我不知道IPDAddIn接口在哪里,以及如何实现它? 这里是online documentPowerDesigner插件开发

+0

据我所知,各种typelib(pdcommon,pdbpm ... Sybase pd ...东西)都是在安装PowerDesigner时注册的。我认为IPDAddin在其中一个,也许是Sybase PdAddin? – pascal

回答

0

我有这个旧的例子,它可以提供一些想法,即使不是最新的一切。

using PdAddInTypLib; 

namespace MineSpace 
{ 
    [ComVisible(true)] 
    [Guid("A6FA0D26-77E8-4DD3-B27E-F4050C3D5188")] 
    public class Launcher : IPdAddIn { 

     // Main() manages the console or GUI interface 
     // the PdAddIn interface is managed by an instance of Launcher 
     [ComVisible(false)] 
     [STAThread] 
     public static void Main(String[] args) { 
     } 

     public Launcher() { 
     _app = null; 
     } 

     // IPdAddIn implementation 
     public void Initialize(Object anApplication) { 
     try { 
      _app = (PdCommon.Application)anApplication; 
     } 
     catch (Exception e) { 
      // process 
     } 
     } 

     public void Uninitialize() { 
     } 

     public String ProvideMenuItems(String aMenu, Object anObj) { 
      return ""; 
     } 

     public int IsCommandSupported(String aMenu, Object anObj, String aCommand) { 
     return 0; 
     } 

     public void DoCommand(String aMenu, Object anObj, String aCommand) { 
     } 

     private PdCommon.Application _app; 
    } 
} 

在类的声明中相应的部分:

[HKEY_CLASSES_ROOT\MyPlugin.Launcher] 
@="MyPlugin.Launcher" 

[HKEY_CLASSES_ROOT\MyPlugin.Launcher\CLSID] 
@="{13749EFC-1ADA-4451-8C47-FF0B545FF172}" 

[HKEY_CLASSES_ROOT\CLSID\{13749EFC-1ADA-4451-8C47-FF0B545FF172}] 
@="MyPlugin.Launcher" 

[HKEY_CLASSES_ROOT\CLSID\{13749EFC-1ADA-4451-8C47-FF0B545FF172}\InprocServer32] 
@="C:\windows\System32\mscoree.dll" 
"ThreadingModel"="Both" 
"Class"="MyPlugin.Launcher" 
"Assembly"="MyPlugin, Version=1.0.1402.33688, Culture=neutral, PublicKeyToken=null" 
"RuntimeVersion"="v1.0.3705" 

[HKEY_CLASSES_ROOT\CLSID\{13749EFC-1ADA-4451-8C47-FF0B545FF172}\ProgId] 
@="MyPlugin.Launcher" 

[HKEY_CLASSES_ROOT\CLSID\{13749EFC-1ADA-4451-8C47-FF0B545FF172}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}] 

而且相应的代码申报附加在PowerDesigner的。如果File值存在,PowerDesigner可以调用DllRegisterServer,如果该组件尚未注册。

[HKEY_LOCAL_MACHINE\SOFTWARE\Sybase\PowerDesigner 10\Addins\MyPlugin Launcher] 
"Enable"="No" 
"Class"="MyPlugin.Launcher" 
"Type"="ActiveX" 
"File"="d:\\myplugin\\myplugin.exe"